![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2016
|
|
Level 7 ![]() ![]() Класс: Маг Характер: Lawful Neutral Раса: Эльф ![]() |
А нельзя сделать что бы она просто шла по вейпоинтам? Например пошла к такому-то вейпоинты, через пять сек к другому и т.д. Или я чего-то не понял...
|
![]()
Сообщение
#2017
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Везде где юзаешь Делей, попробуй сделать так:
|
||
![]()
Сообщение
#2018
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Спасибо, завтра попробую..
Но всё же, как я понимаю, многократная блокировка-разблокировка оставляет возможность (в течение 0.2-0.3 с) сбить работу официантки. |
![]()
Сообщение
#2019
|
|
Level 5 ![]() ![]() Класс: Маг Характер: Lawful Good Раса: Тварь ![]() |
-fenix- Zirrex.
Сорри когда писал немного "Принял" ибо без смазки немагу. Аба на трезвую голову взглянул и всё заработало гг. if (!(nDED == 1)) return; вот так надо! было. хоть бы один сказал. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]() ![]()
Сообщение
#2020
|
|
Лорд AxisTown'a ![]() Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг ![]() |
Цитата if (!(nDED == 1)) return; а не проще ли if (nDED != 1) return; |
![]()
Сообщение
#2021
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(mamuc @ Сегодня, 11:51) [snapback]71557[/snapback] а не проще ли if (nDED != 1) return; Проще так:
|
||
![]()
Сообщение
#2022
|
|||||
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
NedWarN, обычно пишут так:
Это будет правильней, чем то что ты написал. Если же у тебя много отрицаний, то можно написать так:
Aiwan, а я бы все же проверял так, как описали мы с Мамуком, потому что такой способ более надежный. Сообщение отредактировал Zirrex - Mar 3 2006, 10:27 |
||||
![]() ![]()
Сообщение
#2023
|
|
Лорд AxisTown'a ![]() Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг ![]() |
Цитата Проще так: Neverwinter Script Source if (!nDED) return; Aiwan это только когда nDED может принять лишь 2 значения(0 и 1 или TRUE/FALSE) ..а если их больше 2 используються, то лучше как мы с Zirrex написали Сообщение отредактировал mamuc - Mar 3 2006, 10:27 |
![]()
Сообщение
#2024
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(mamuc @ Сегодня, 12:24) [snapback]71570[/snapback] Aiwan это только когда nDED может принять лишь 2 значения(0 и 1 или TRUE/FALSE) ..а если их больше 2 используються, то лучше как мы с Zirrex написали Сорри. Я то не глянул, сколько у вас значений (IMG:style_emoticons/kolobok_light/pardon.gif) Цитата(Zirrex @ Сегодня, 12:01) [snapback]71566[/snapback] Aiwan, а я бы все же проверял так, как описали мы с Мамуком, потому что такой способ более надежный. Там же у Мамука было слово ПРОЩЕ. (IMG:style_emoticons/kolobok_light/pleasantry.gif) Про НАДЕЖНО никто не говорил. (IMG:style_emoticons/kolobok_light/blum3.gif) |
![]()
Сообщение
#2025
|
|
Level 1 Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Люди, подскажите пожалуйсто. Как мне сделать так, что-бы когда я кольцо одевал сразу появлялся эффект невидимости? или перехода местности
|
![]()
Сообщение
#2026
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Neutral Раса: Человек ![]() |
Помогите чайнику пожалуйста!
Мне нужно, чтобы с убитым монстром (медведь) можно было начать диалог (вырезка шкуры), и чтобы труп пропал через столько-то секунд. Спасибо за внимание. |
![]()
Сообщение
#2027
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
QUOTE Люди, подскажите пожалуйсто. Как мне сделать так, что-бы когда я кольцо одевал сразу появлялся эффект невидимости? или перехода местности Отследить надевание кольца событием OnPlayerEquipItem и наложить эффект / телепортировать. QUOTE(Nuprahtor @ Сегодня, 10:34) [snapback]71727[/snapback] Мне нужно, чтобы с убитым монстром (медведь) можно было начать диалог (вырезка шкуры), и чтобы труп пропал через столько-то секунд. С самим убитым монстром поговорить не удастся. После смерти монстра (медведя) создавай невидимый объект, на OnUsed которого и начинай диалог (через действие ActionStartConversation). Нужно чтобы труп пропал через сколько-то секунд после чего? Вот отследи это что-то и удали невидимый объект с медведем через задержку: NSS // Delay aActionToDelay by fSeconds.
// * No return value, but if an error occurs, the log file will contain // "DelayCommand failed.". // It is suggested that functions which create effects should not be used // as parameters to delayed actions. Instead, the effect should be created in the // script and then passed into the action. For example: // effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL); // DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget); void DelayCommand(float fSeconds, action aActionToDelay) |
![]()
Сообщение
#2028
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Neutral Раса: Человек ![]() |
Я же пока ЧАЙНИК!
Хотя генератор скриптов Лилака поможет создать обьект, но как его удалить через какой нибудь промежуток времени? Например через 120 секунд?На хертбит.А как? И, если не трудно, можете написать скрипт?Пожалуйста, и спасибо за все! Сообщение отредактировал Nuprahtor - Mar 5 2006, 12:13 |
![]()
Сообщение
#2029
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
На хатбит неудобно.
Вот примерно как может выглядеть эта часть (ОnDeath существа): NSS void main() { // создание невидимого объекта на месте смерти миши location lLocation = GetLocation(OBJECT_SELF); object oInvisible = CreateObject(OBJECT_TYPE_PLACEABLE, "XXX", lLocation); // убирание объекта DelayCommand(120.0, DestroyObject(oInvisible)); } , где XXX - чертеж невидимого тела также можешь использовать такое удаление с задержкой: NSS DestroyObject(oInvisible, 120.0); , но обычно перед удалением нужно делать различные проверки, например не идет ли сейчас разговор и игроком. Сообщение отредактировал azathoth - Mar 5 2006, 12:27 |
![]() ![]()
Сообщение
#2030
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
azathoth, зачем через Delay? Есть же хорошая функция:
NSS // Set the destroyable status of the caller. // - bDestroyable: If this is FALSE, the caller does not fade out on death, but // sticks around as a corpse. // - bRaiseable: If this is TRUE, the caller can be raised via resurrection. // - bSelectableWhenDead: If this is TRUE, the caller is selectable after death. void SetIsDestroyable(int bDestroyable, int bRaiseable=TRUE, int bSelectableWhenDead=FALSE) Проверяется раса, а если уж нужно точно, то тэг существа. В момент смерти для него переключается флажок, не удалять существо: NSS SetIsDestroyable(FALSE, FALSE, FALSE); На невидимый объект вешается скрипт, который проверяет в момент закрытия инвентаря, осталось там что-нибудь, если нет, удалить все содержимое, и конечно же сбросить функцию: NSS SetIsDestroyable(TRUE, FALSE, FALSE); Nuprahtor В скрипте "nw_c2_default7" NSS // Очистка всего инвентаря и удаление экипировки, если есть void ClearInventory(object oCorpse) { int nGold = GetGold(oCorpse); if (nGold) TakeGoldFromCreature(nGold, oCorpse, TRUE); int i; for (i = 0; i < 18 ; i++) { object oEquip = GetItemInSlot(i, oCorpse); if (GetIsObjectValid(oEquip)) { DestroyObject(oEquip); } } object oLoot = GetFirstItemInInventory(oCorpse); while (GetIsObjectValid(oLoot)) { DestroyObject(oLoot); oLoot = GetNextItemInInventory(oCorpse); } } void CreateCorpse(object oCreature) { object oKiller = GetLastKiller(); // Убийца object oCreature = OBJECT_SELF; // Погибшее существо string sTag = GetTag(oCreature); // Тэг существа int nCorpseFade = 120; // Задержка исчезновения тела существа. int nKeepEmpties = FALSE; // Вкл., если хотите удалять тела существ моментально. // Узнать точку гибели существа location lCorpse = GetLocation(oCreature); // Защита существа от удаления SetIsDestroyable(FALSE, FALSE, FALSE); if (nKeepEmpties) { nCorpseFade = 0; } // Создание пятна крови object oBlood = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_bloodstain", lCorpse, FALSE); // Создание невидимого объекта, который можно открыть object oCorpse = CreateObject(OBJECT_TYPE_PLACEABLE, "corpse_object", lCorpse, FALSE); // Сохранение объектов, с которыми надо еше работать SetLocalObject(oCorpse, "Blood", oBlood); SetLocalObject(oCorpse, "Corpse", oCreature); SetLocalInt(oCorpse, "KeepEmpty", nKeepEmpties); // Создание шкурки медвеля if (GetTag(oCreature) == "tag_creature") { object oSkin = CreateItemOnObject("skin_bear", oCorpse) } // Проверка первой вещи в инвенторе object oHasInventory = GetFirstItemInInventory(oCorpse); // Если в инвентаре существа ничего нет, то удалить тело if (oHasInventory == OBJECT_INVALID) { ClearInventory(oCreature); ClearInventory(oCorpse); DestroyObject(oCorpse); DestroyObject(oBlood); SetIsDestroyable(TRUE, FALSE, FALSE); DestroyObject(oCreature, 1.0); } // Удаление тела существа по истечение времени else if (nCorpseFade > 0) { float fCorpseFade = IntToFloat(nCorpseFade); DelayCommand(fCorpseFade, ClearInventory(oCreature)); DelayCommand(fCorpseFade, ClearInventory(oCorpse)); DelayCommand(fCorpseFade, DestroyObject(oBlood)); DelayCommand(fCorpseFade + 0.1, DestroyObject(oCorpse)); DelayCommand(fCorpseFade + 0.2, SetIsDestroyable(TRUE, FALSE, FALSE)); DelayCommand(fCorpseFade + 0.2, DestroyObject(oCreature)); } } void main() { object oKiller = GetLastKiller(); if (GetLastKiller() == OBJECT_SELF) return; if (GetRacialType(OBJECT_SELF) == RACIAL_TYPE_ANIMAL) { CreateCorpse(OBJECT_SELF); } } На предмете "corpse_object" в действии OnDisturbed NSS // Очистка всего инвентаря и удаление экипировки void ClearInventory(object oCorpse) { // аналогичен скрипту выше } void main() { object oCorpse = OBJECT_SELF; // Просмотр нужных объектов и переменных object oBlood = GetLocalObject(oCorpse, "Blood"); object oBody = GetLocalObject(oCorpse, "Corpse"); int nKeepEmpty = GetLocalInt(oCorpse, "KeepEmpty"); // Проверка первой ячейки инвентаря object oHasInventory = GetFirstItemInInventory(oCorpse); // Если инвентарь пуст, проверить значение "KeepEmpty" if (oHasInventory == OBJECT_INVALID) { if (!nKeepEmpty) { ClearInventory(oBody); ClearInventory(oCorpse); DestroyObject(oCorpse); DestroyObject(oBlood); AssignCommand(oBody, SetIsDestroyable(TRUE, FALSE, FALSE)); DestroyObject(oBody, 1.0); } } } Чтобы начать диалог, необходимо повесить на объект "corpse_object" в действии OnUsed скрипт: NSS void main() { ActionStartConversation(GetLastUsedBy(), "dialog", TRUE, FALSE); } В диалоге можно запустить тот же скрипт, что находится на OnDisturbed, когда шкурка будет снята. Правда, его надо немного изменить, чтобы скрипт адресовался именно невидимому объекту, а не говорящему. Но я бы так не делал, а просто бы создавал шкурку в инвентарь медведя, которую можно собрать с него, просто открыв невидимый объект. Если не все понятно, или не работает, пиши. Полностью все не проверял, потому что брал готовый скрипт, где гораздо больше объектов. |
![]()
Сообщение
#2031
|
|
Level 1 Класс: Варвар Характер: Lawful Good Раса: Полуэльф ![]() |
Люди подскажите пажаласта как можно сделать чтобы монстры не мочили друг-друга магией если они в одной фракции.
Извените если на этот вопрос уже отвечали. |
![]()
Сообщение
#2032
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
В каком смысле? Объясни ситуацию? Идет бой, монстры сражаются и задевают друг друга магией? Верно?
|
![]()
Сообщение
#2033
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
QUOTE(Dimanische @ Сегодня, 14:12) [snapback]71834[/snapback] Люди подскажите пажаласта как можно сделать чтобы монстры не мочили друг-друга магией если они в одной фракции. если я правильно въехал в вопрос, то в свойствах локации Area -> Properties -> Advanced -> Player vs. Player = Party protected. также есть глобальная опция с тем же смыслом. |
![]()
Сообщение
#2034
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
dumbo, а если на всех локациях стоит Full PvP, и именно такая политика шарда? Нет, это не годится. Лишь как крайняя мера.
Dimanische, можно пойти путем, как описал dumbo, а можно подредактировать все площадные заклинания, в которых указать, что если противник враг, то атаковать его, а если нет, то игнорировать. |
![]()
Сообщение
#2035
|
|
Level 6 ![]() ![]() Класс: Разведчик Арфистов Характер: True Neutral Раса: Животное ![]() |
Как вариант - поставить средние настройки сложности сервера.
|
![]()
Сообщение
#2036
|
|
Level 1 Класс: Варвар Характер: Lawful Good Раса: Полуэльф ![]() |
Про средние настройки сложности понятно. Мне просто хотелось бы чтобы на максимальной сложности они не задевали друг-друга.
QUOTE Объясни ситуацию? Я не знаю важно ли это, но я забыл сказать что монстры эти вылазят когда наступаешь на триггер, тоесть я их через редактор встреч сделал. Ну а подробнее если: вот я вхожу в него они вылазят, начинают меня мочить, как и другие монстры которые рядом в этот момент были, потом я юзую камень возврата, потом телепортируюсь обратно к монстрам, а они там во всю гасятся магией(такой как стена огня, инферно и все что с огнем короче связано у них есть). Вот. QUOTE Dimanische, можно пойти путем, как описал dumbo, а можно подредактировать все площадные заклинания, в которых указать, что если противник враг, то атаковать его, а если нет, то игнорировать. - я в этом деле новичок и че-то не врубаюсь как так сделать. Может у меня версия ToolSet Старая и нет такого? Ваще спасибо что не пропустили мимо мой вопрос. И еще можно вопросик? Какой скрипт делает завершение игры после выполнения последного задания. Выложите пожалуйста если не лень. Сообщение отредактировал Dimanische - Mar 7 2006, 10:01 |
![]()
Сообщение
#2037
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
NSS void main() { string sMovie = "Твой финальный ролик"; EndGame(sMovie); } QUOTE(Dimanische @ Сегодня, 11:51) [snapback]71930[/snapback] И еще можно вопросик? Какой скрипт делает завершение игры после выполнения последного задания. Выложите пожалуйста если не лень. |
![]()
Сообщение
#2038
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
QUOTE(Aiwan @ Feb 27 2006, 22:09) [snapback]71209[/snapback] Везде где юзаешь Делей, попробуй сделать так: NSS void ActionCreateObject(int nObjType, string sCreature, location lLoc, int iAnimation, string sNewTag="") { CreateObject(nObjType, sCreature, lLoc, FALSE, sNewTag); } void CheckIsHere(object oTarget, string sOrder) { object oSelf = OBJECT_SELF; if(GetDistanceBetween(oSelf, oTarget) < 4.0) { AssignCommand(oSelf, PlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 1.0)); CreateItemOnObject(sOrder, oTarget, 1); } else { SpeakString("Куда вы ушли??"); ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 1.0, 1.0); ActionCreateObject(OBJECT_TYPE_ITEM, sOrder, GetLocation(OBJECT_SELF), TRUE); } AssignCommand(oSelf, ActionDoCommand(SetLocalInt(oSelf, "vir_waiter_busy", FALSE))); //заблокировать и разблокировать очередь AssignCommand(oSelf, ActionDoCommand(SetCommandable(TRUE, oSelf))); DelayCommand(0.3, SetCommandable(FALSE, oSelf)); } Тот же результат... Ничего не изменилось. Сообщение отредактировал virusman - Mar 8 2006, 00:39 |
![]()
Сообщение
#2039
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
а что не так?
|
![]()
Сообщение
#2040
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
QUOTE(Lex @ Mar 8 2006, 01:35) [snapback]72016[/snapback] а что не так? http://www.wrg.ru/forums/index.php?s=&show...indpost&p=71193 Если снять блокировки/разблокировки - всё работает, но тогда официантку легко сбить. |
![]() ![]() |
Текстовая версия | Сейчас: 30th April 2025 - 10:54 |