![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2011
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
mamuc, спасибо, я попробую этот скрипт, только есть несколько но, переменную 'WorkArena' мне нужно изменять только тогда, когда нет игрока, с которого создалась копия, если он вышел с поля Арены или из игры.
|
![]()
Сообщение
#2012
|
|||||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Цитата 2. В скрипте Кат Сценки Проверяю на Локалку. И канечно же ничо не Пашит Хелп. плиз. И правильно делает, я бы то же не пахал, когда говорят не пахать!!!
У тебя тут отрицание стоит, при чем очень странное - этот скрипт вообще ни когда не выполнится, так как в проверке локалка забыта. Ты зачем-то устанавливаешь в nDED единицу, а потом ставешь отрицание. Выглядеть должно так
Сообщение отредактировал -fenix- - Feb 24 2006, 01:31 |
||||
![]() ![]()
Сообщение
#2013
|
|||
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
NedWarN, скрипт конечно еще тот. Учись писать красиво скрипты, иначе сразу разобраться очень тяжело. Переписал его, кое-что подправив. Не знаю для чего именно тебе две переменных, но видимо где-то используются, поэтому оставил.
Сообщение отредактировал Zirrex - Feb 24 2006, 05:08 |
||
![]() ![]()
Сообщение
#2014
|
|
Лорд AxisTown'a ![]() Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг ![]() |
Цитата mamuc, спасибо, я попробую этот скрипт, только есть несколько но, переменную 'WorkArena' мне нужно изменять только тогда, когда нет игрока, с которого создалась копия, если он вышел с поля Арены или из игры. ... а оно и меняеться реально только тогда , когда на арене нету игрока..а в остальное время оно FALSE (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#2015
|
|||
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Вот кусок скрипта официантки. Нужно, чтобы она шла так, как нужно, и при этом не зависала и не прерывалась. Попробовал делать блокировку/разблокировку очереди - официантка подбегает и ничего не делает. (Скрипт висит на OnConversation)
Сообщение отредактировал virusman - Feb 27 2006, 20:42 |
||
![]()
Сообщение
#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 Раса: Животное ![]() |
Как вариант - поставить средние настройки сложности сервера.
|
![]() ![]() |
Текстовая версия | Сейчас: 30th April 2025 - 04:50 |