![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2501
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
|
![]()
Сообщение
#2502
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Мне нужен скрипт, который ставится на область, а не на непися.
|
![]()
Сообщение
#2503
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
QUOTE У меня вопрос, какой нужен скрипт чтобы после смерти непися заработал новый скрипт. И: QUOTE Мне нужен скрипт, который ставится на область, а не на непися. (IMG:style_emoticons/kolobok_light/shok.gif) (IMG:style_emoticons/kolobok_light/swoon.gif) (IMG:style_emoticons/kolobok_light/shok.gif) http://www.city-of-masters.ru/forums/index...p;p=88758&# (Сообщение #2415) ЗЫ: http://www.city-of-masters.ru/forums/index...=Search&f=5 Сообщение отредактировал Waromon - Aug 30 2006, 09:56 |
![]() ![]()
Сообщение
#2504
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
|
![]()
Сообщение
#2505
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Увижу спам в этой теме, головы поотрываю. (IMG:style_emoticons/kolobok_light/big_boss.gif) Касается молодежи... Отвечать не надо.
|
![]()
Сообщение
#2506
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Меня этот скрипт уже бесит. Не желает он работать правильно. Вроде все верно, но значение репутации меняться по отношению к игроку не желает. Сразу обмолвлюсь, пытаюсь восстановить отношение своей (не стандартной) фракции к игроку. Скрипт:
NSS void AdjustFactionReputation(object oPC, object oFaction, int nCurRep, int nSetRep) { object oMember = GetFirstFactionMember(oFaction, FALSE); while (oMember != OBJECT_INVALID) { AdjustReputation(oPC, oMember, nCurRep + nSetRep); oMember = GetNextFactionMember(oFaction, FALSE); } } void main() { object oPC = OBJECT_SELF; location lPC = GetLocation(oPC); object oNeutral = GetObjectByTag("npc_faction"); int nCurRep, nNeutral = 50; object oNPC = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE); while (oNPC != OBJECT_INVALID) { if (GetFactionEqual(oNPC, oNeutral)) { nCurRep = GetReputation(oNPC, oPC); if (nCurRep != nNeutral) { AdjustFactionReputation(oPC, oNPC, nCurRep, nNeutral); } } oNPC = GetNextObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE); } } Пробовал по-разному, работает нормально, если только "AdjustReputation" вытащить из цикла, а вместо него внести "SetIsTemporaryNeutral". Почему значение не хочет устанавливаться без второй функции, я не понимаю. Краткое описание работы скрипта, как я его вижу. В сфере, радиусом 20 метров, ищу любых существ. Внутреннее условие проверки фракции отсекает существ, которые не подпадают под него. Значение во время смерти игрока по отношению к НПС, на которого игрок напал, равно 0. Проверяю, неравно ли полученное значение 50, если неравно, продолжаю выполнение скрипта. С помощью кастомной функции через цикл проверяю, сколько у НПС было существ в партии. Всем пытаюсь установить значение 50 по отношению к игроку. В итоге значение как было 0, так и остается 0. Фракция не имеет глобального эффекта. Обижается только то существо, на которое напали. Кстати, во время мучений со скриптом, заметил некоторую странность в логих. Иногда не пишут, кто же именно убил игрока. Просто фраза "Someone killed Player". Шутку не понимаю, учитывая то, что предыдущая строчка четко показывает, что игрока ударил такой-то. Баг? Из-за этой пакости невозможно вычислить убийцу. Сообщение отредактировал Zirrex - Sep 1 2006, 02:22 |
![]()
Сообщение
#2507
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
AdjustFactionReputation - лишнее. Или по крайней мере она не в том направлении работает.
Тебе не надо искать каждого НПС этой фракции и устанавливать значение общее. Тебе надо установить лидеру фракции репу в 50 у других участников фракции сделать ClearPersonalReputation(oPC,oMember); К тому же, если у твоей фракции не стоит ГЛОБАЛЬНЫЙ эффект, то ничего менять не надо в репе. Только почистить у всех и они забудут старые грешки. Не надо глобально править репутацию у всей фракции. К примеру, если у фракции стоит глобальное отслеживание репы, то меняй у главаря на 50 и чисти у тех, кто видим и все. Вот такой функцией: (примерно...) NSS void ClearFactionReputation(object oPC, object oFaction=OBJECT_SELF)
{ object oMember = GetFirstFactionMember(oFaction, FALSE); while (oMember != OBJECT_INVALID) { ClearPersonalReputation(oPC, oMember); oMember = GetNextFactionMember(oFaction, FALSE); } } |
![]()
Сообщение
#2508
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Aiwan, спасибо, то, что нужно было (IMG:style_emoticons/kolobok_light/smile.gif) Я как раз подумывал использовать эту функцию, тем более, когда искал на форуме что-нибудь про фракции, натолкнулся на нее в твоем скрипте, но решил вначале добить все же ту функцию, которую использовал изначально. Видимо, работает она нормально только тогда, когда эффект у фракции глобальный.
Немного усовершенствовал общий скрипт, добавить перечисление всех своих фракций с помощью цикла, а то писать объект такой-то, и впихивать их все под условие, все же не очень весело, да и лишние проверки для цикла. Получился следующий скрипт, если кому нужен на вооружение, можно использовать, я не буду против (IMG:style_emoticons/kolobok_light/smile.gif) NSS void ClearFactionReputation(object oPC, object oFaction=OBJECT_SELF)
{ object oMember = GetFirstFactionMember(oFaction, FALSE); while (oMember != OBJECT_INVALID) { ClearPersonalReputation(oPC, oMember); oMember = GetNextFactionMember(oFaction, FALSE); } } void main() { object oPC = OBJECT_SELF, oFaction, oNPC; location lPC = GetLocation(oPC); int i, nCurRep, nNeutral = 50; for (i = 1; i <= 7; i++) // значение зависит от количества своих фракций { oFaction = GetObjectByTag("factionnpc_" + IntToString(i)); oNPC = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE); while (oNPC != OBJECT_INVALID) { if (GetFactionEqual(oNPC, oFaction)) { nCurRep = GetReputation(oNPC, oPC); if (nCurRep != nNeutral) { ClearFactionReputation(oPC, oNPC); } } oNPC = GetNextObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE); } } } |
![]()
Сообщение
#2509
|
|
Level 1 Класс: Клерик Характер: Neutral Evil Раса: Дварф ![]() |
Люди, помогите! Кинте ктонить хороший скриптик AI с описанием. Заранее спасибо! (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#2510
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
|
![]() ![]()
Сообщение
#2511
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Получился следующий скрипт, если кому нужен на вооружение, можно использовать, я не буду против :)
а куда скрипт ставить?На персептион модуля? |
![]()
Сообщение
#2512
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Нет, причем тут модуль? Тебе же скрипт не всегда необходим. Скрипт ставится на эвент смерти модуля (OnPlayerDeath), и обрабатывается только тогда, когда умирает персонаж. Чтобы после смерти фракции для персонажа не были злыми, их необходимо обновить. Не забудь сделать куклы с фракциями, которые необходимо разместить где-нибудь в модуле, чтобы скрипт мог к ним обращаться.
Сообщение отредактировал Zirrex - Sep 4 2006, 09:48 |
![]()
Сообщение
#2513
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Так как скриптера у меня *хлюп-хлюп* нету, прошу помочь бедному дроу написать скрипт на исчезновение челов из области на полдня-день в случайное время, но не слишком часто...
|
![]()
Сообщение
#2514
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Опиши ситуацию ПОДРОБНО. Как и при каких обстоятельствах NPC должен исчезать (в диалоге, просто так), в какое время суток (если это критично) и т.д. Здесь нужна конкретика. (IMG:style_emoticons/kolobok_light/wink3.gif)
|
![]()
Сообщение
#2515
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Исчезать должны просто так, вне зависимости от времени суток.
|
![]()
Сообщение
#2516
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Good Раса: Человек ![]() |
Доброго времени суток.
Возникла следующая проблема: Изменил стандартный скрипт заклинания лечения к проверке на андед добавил проверку на субрасу но проверка не срабатывает. Ошибок вроде нет пробовал в отдельном скрипте - работает. Ткните, пожалуйста носом что не так делаю, подозреваю что проблема в руках =) Пробовал просто вносить изменения в тулсете в стандартный скрипт, пробовал вносить изменения в .nss выдраный из .bif'a и ложил его в оверрайд.. Или нужно обязательно делать отдельный скрипт и прописывать его в spells.2da? И еще вопрос теоретический: Какой приоритет использования ресурсов игрой? По моим предположениям: сначала в оверриде смотрит, потом ресурсы хаков и в последнюю очередь использует стандартные ресурсы? |
![]()
Сообщение
#2517
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(windhover @ Sep 6 2006, 03:07) [snapback]91142[/snapback] сначала в оверриде смотрит, потом ресурсы хаков и в последнюю очередь использует стандартные ресурсы Верно. Если отредактировать стандартный скрипт, то будет работать он. Никуда его класть не надо. Если удалить его из модуля то будет пахать дефолтный с таком же именем от Биовар. |
![]()
Сообщение
#2518
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Good Раса: Человек ![]() |
Спасибо, разобрался в чем проблема:
Я вносил изменения в скрипт nw_i0_spells - инклюд. Почитал в лексиконе, что для того чтобы изменения внесенные в инклюд вступили в силу нужно перекомпилировать ВСЕ скрипты которые ссылаються на данный инклюд. Возможно это можно какимто образом обойти? А то слишком много скриптов надо перекомпиливать. (IMG:style_emoticons/kolobok_light/sad.gif) Покачто я решил проблему так: написал свой инклюд и дал ссылку на него в тех скриптах заклинаний, которые мне нужны, перекомпилил все это дело - заработало. Возможно есть решение данной проблемы попроще? |
![]()
Сообщение
#2519
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(windhover @ Sep 7 2006, 19:15) [snapback]91245[/snapback] Возможно это можно какимто образом обойти? нет, но это можно сделать за пару минут. ВТулсете Build - Build Module. Если нужна только копмиляция, ставь галочку в Compile и в Scripts, остальные галочки снимай. |
![]()
Сообщение
#2520
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Good Раса: Человек ![]() |
QUOTE(Lex @ Sep 7 2006, 18:29) [snapback]91246[/snapback] нет, но это можно сделать за пару минут. ВТулсете Build - Build Module. Если нужна только копмиляция, ставь галочку в Compile и в Scripts, остальные галочки снимай. Эм.. Дело в том, что в лексиконе билд модуля тоже описывается как панацея.. но не помогло. (IMG:style_emoticons/kolobok_light/unsure.gif) Я так понял, что стандартные скрипты в которые не вносят изменений не компилируются при билде модуля. Хотя может это у меня глюк, проверял на 1.68. |
![]()
Сообщение
#2521
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
да, стандартные не билдаются, поэтому если ты вносишь изменения в стандартную библу, которая влияет на заклы, тебе еще скрипты этих заклов надо у себя в модуле пересохранить. Вродь только так.
|
![]()
Сообщение
#2522
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Стандартные инклюды типа nw_i0_spells, nwscript очень нежелательно изменять. Ещё раз подумай, надо ли тебе это.
|
![]()
Сообщение
#2523
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Good Раса: Человек ![]() |
QUOTE(virusman @ Sep 7 2006, 21:54) [snapback]91271[/snapback] Стандартные инклюды типа nw_i0_spells, nwscript очень нежелательно изменять. Ещё раз подумай, надо ли тебе это. Да я просто скопировал этот инклюд, внес в него нужные изменения, сохранил с другим названием, прописал его в нужных заклинаниях и все откомпилил.. так вроде проще всего и безопастнее, наверно (IMG:style_emoticons/kolobok_light/smile.gif) Всем спасибо за советы. Сообщение отредактировал windhover - Sep 8 2006, 13:00 |
![]()
Сообщение
#2524
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
У меня проблема. Надо что бы когда игрок наступал на тригер к нему подбегал хенчь и начинал разговор, но если хенчь далеко то он подбегает но разговор не начинает.
Вот скрипт на он энтаре тригера: NSS void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; if (GetLocalInt(OBJECT_SELF,"ACTIVATED")) return; object oIlirin = GetHenchman(oPC); if (GetTag(oIlirin)!="ilirin01") return; SetLocalInt(oIlirin,"D_LINE",GetLocalInt(OBJECT_SELF,"CONVERSATION_LINE")); SetLocalInt(OBJECT_SELF,"ACTIVATED",TRUE); DestroyObject(OBJECT_SELF,5.0); AssignCommand(oIlirin, ClearAllActions(TRUE)); AssignCommand(oPC, ClearAllActions(TRUE)); SetCutsceneMode(oPC,TRUE); AssignCommand(oIlirin, ActionStartConversation(oPC,"plot_ilitrin01")); } Может кто знает в чём ошибка. ЗЫ так же пробовал что бы хенчь сначала подбегал при момощи ActionMoveToObjecy, а только потом начинал разговор, но всё равно не получается. |
![]()
Сообщение
#2525
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Знакомый код (IMG:style_emoticons/kolobok_light/smile.gif) ))
У мну работало. Правда на большой дальности не проверял. Довольно странно, что не работает, если далеко. |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 09:38 |