Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
Sep 3 2017, 15:23
Сообщение
#4911
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Низкий вам поклон за терпение. Я тут сделал нового призываемого спутника через предмет и столкнулся с проблемой, что воспользовавшись этим предметом снова призывается второй спутник, а первый не исчезает, так можно наклепать кучку. Что делать? (IMG:style_emoticons/kolobok_light/unsure.gif)
|
Sep 4 2017, 08:44
Сообщение
#4912
|
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов |
У любого объекта есть тэг. По тэгу можно найти и проверить валидность. Если объект нашёлся, можно не создавать новый или уничтожить старый.
Искать что-то типа: GetObjectByTag, GetIsObjectValid, DestroyObject. |
Sep 4 2017, 13:05
Сообщение
#4913
|
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
Цитата У меня журнал создан, ну вы уж совсем за идиота держите :/ да у меня и в мыслях не было, я ж помочь хочу.. Вы не пишите ошибку, которую выдает компилятор, никакой другой информации, а просто говорите что не работает - так это может быть по десятку причин. Цитата Я тут сделал нового призываемого спутника через предмет и столкнулся с проблемой, что воспользовавшись этим предметом снова призывается второй спутник, а первый не исчезает, так можно наклепать кучку. Что делать? Если вы вызываете спутника через CreateObject, то тогда вам придется проверять через GetObjectTag тэг вызванного спутника, как сказал denis0k Neverwinter Script .... if(GetIsObjectValid(GetObjectByTag("ТЭГ_СПУТНИКА"))) { return; } ... если вы вызовите его как суммона через EffectSummonCreature() то при втором вызове он автоматом пересоздается. Neverwinter Script ...
effect eSummon = EffectSummonCreature("РСЕРЕФ_ВАШЕГО СУЩЕСТВА", VFX_ВИЗУАЛЬНЫЙ ЭФФЕКТ); ApplyEffectAtLocation (DURATION_TYPE_PERMANENT, eSummon, GetLocation(oPlayer)); ... Сообщение отредактировал Melisse - Sep 4 2017, 13:12 |
Sep 4 2017, 14:41
Сообщение
#4914
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Вот так оно выглядит и плодит их безмерно.
Neverwinter Script void main() { object oActivator = GetItemActivator(); object oActivated = GetItemActivated(); string sTag = GetTag(oActivated); if (sTag == "MatildaX") { effect eSummon = EffectSummonCreature("matilda"); ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(eSummon), oActivator); return; } |
Sep 4 2017, 19:49
Сообщение
#4915
|
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
Попробуйте это
Neverwinter Script void main()
{ object oActivator = GetItemActivator(); object oActivated = GetItemActivated(); string sTag = GetTag(oActivated); if (sTag == "MatildaX") { if(!GetIsObjectValid (GetAssociate(ASSOCIATE_TYPE_SUMMONED, oActivator ))) { effect eSummonedMonster = EffectSummonCreature("matilda", SPELL_SUMMON_CREATURE_I); ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetLocation(oActivator), HoursToSeconds(24)); } } } |
Sep 4 2017, 19:56
Сообщение
#4916
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
В строке
Neverwinter Script ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetLocation(oActivator), HoursToSeconds(24)); ОШИБКА: ПЕРЕМЕННАЯ, ОПРЕДЕЛЕННАЯ БЕЗ ТИПА
|
Sep 5 2017, 12:54
Сообщение
#4917
|
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummonedMonster, GetLocation(oActivator), HoursToSeconds(24));
|
Sep 5 2017, 13:25
Сообщение
#4918
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Да, на ошибки больше не ругается, но призывать никого не призывает теперь вообще х)
|
Sep 5 2017, 14:43
Сообщение
#4919
|
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
Neverwinter Script void main() { object oActivator = GetItemActivator(); object oActivated = GetItemActivated(); string sTag = GetTag(oActivated); if (sTag == "MatildaX") { if(!GetIsObjectValid (GetAssociate(ASSOCIATE_TYPE_SUMMONED, oActivator ))) { effect eSummonedMonster = EffectSummonCreature("matilda"); ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummonedMonster, GetLocation(oActivator), HoursToSeconds(24)); } else { SendMessageToPC (oPC, "У вас уже есть призванное существо"); } } } Проверь теги предмета и существа |
Sep 5 2017, 15:23
Сообщение
#4920
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
oPC на oActivator исправил, ибо опять ругалось.
Тег предмета верный, у существа стоял ResRef, раньше через него и работало, но даже если поставить тег - ничего не происходит. В общем раньше можно было наплодить много, а сейчас вообще ни одного. Просто пишет, что используется специальная сила предмета и ничего не происходит. |
Sep 5 2017, 17:12
Сообщение
#4921
|
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
Попробуй так, может быть не читает локацию
Neverwinter Script void main()
{ object oActivator = GetItemActivator(); object oActivated = GetItemActivated(); string sTag = GetTag(oActivated); location lActivator = GetItemActivatedTarget(); if (sTag == "MatildaX") { object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oActivator, 1); if(!GetIsObjectValid (oSummon )) { effect eSummonedMonster = EffectSummonCreature("matilda", VFX_FNF_GAS_EXPLOSION_EVIL, 0.5f); ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummonedMonster, lActivator, HoursToSeconds(24)); } else { SendMessageToPC (oActivator , "У вас уже есть призванное существо"); } } } Сообщение отредактировал Melisse - Sep 5 2017, 17:18 |
Sep 5 2017, 17:24
Сообщение
#4922
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
К сожалению все равно не срабатывает (IMG:style_emoticons/kolobok_light/sad.gif)
|
Sep 5 2017, 17:39
Сообщение
#4923
|
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов |
Как оно скомпилировалось?
location lActivator = GetItemActivatedTarget(); Возвращает object же. |
Sep 5 2017, 18:56
Сообщение
#4924
|
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Elendion, для начала нужны азы программирования. Как определить объект, как его описать, как начать скрипт, как закончить и т.д. Без этого будет каша.
Начать нужно с маленького модуля тестировать простые действия, подошел, поговорил, отошел, сел, встал, пукнул громко и так далее. Потом писать что-то в модуль. ИМХО. |
Sep 6 2017, 12:36
Сообщение
#4925
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Посидел помучался, сделал х)
Можно сделать, чтобы животные дикие разбегались от игрока? |
Sep 6 2017, 15:22
Сообщение
#4926
|
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
|
Sep 6 2017, 16:28
Сообщение
#4927
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Остроумно, маэстро, однако делу это не поможет.
|
Sep 6 2017, 16:39
Сообщение
#4928
|
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Вопросов тут задали много, модулей построили мало (IMG:style_emoticons/kolobok_light/smile.gif) Оттуда и сарказм. Если человек хочет получить ответ на форуме, он должен правильно задать вопрос. Золотое правило общения на форумах.
Задача то какая? Тупо все животные убегают с криками "Аааа! Спасайтесь зоофил!!" И все? |
Sep 6 2017, 16:42
Сообщение
#4929
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Ну допустим стоит себе пасется дикая зёбра, игрок проходит рядом и она отбегает, угроза же.
|
Sep 6 2017, 17:16
Сообщение
#4930
|
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Начерти триггер, на нем определи зёбру, игрок наступил на триггер, зёбра с криками ужаса убежала. Все.
|
Sep 6 2017, 17:26
Сообщение
#4931
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Отбежит она разок, игрок снова подойдет, и? Есть другой вариант? Прописать в скриптах именно самой животинки реакцию на PC, например?
|
Sep 6 2017, 17:34
Сообщение
#4932
|
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов |
ИИ - один из самых сложных аспектов геймдева. Тебе нужен либо программист, либо попытаться найти готовое решение, например, тут в закромах или на https://neverwintervault.org/
Если хочется самому, то копать в сторону события OnHeartbeat моба и функций поиска игрока в определённом радиусе. |
Sep 6 2017, 17:38
Сообщение
#4933
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
Да, спасибо, я на ваулте много интересного находил, буду думать.
|
Sep 6 2017, 20:07
Сообщение
#4934
|
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Залез в базу скриптов для новичков. Переработал скрипт -fenix-а за 1 минуту под твои нужды.
Скрипт ставется на слот OnPerception в св-вах зёбры. Neverwinter Script void main()
{ object oPercep = GetLastPerceived(); // последний воспринятый объект // если последний воспринятый объект был увиден и если он является игроком if ( GetLastPerceptionSeen() && GetIsPC(oPercep)) { SpeakString("Спасайся! ЗООФИЛ!!!"); //сюда вписывай свои действия, типа убежала зёбра на сто метров } } |
Sep 6 2017, 21:14
Сообщение
#4935
|
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек |
О! Спасибо мил человек, низкий поклон (IMG:style_emoticons/kolobok_light/rolleyes.gif)
|
![]() ![]() |
| Текстовая версия | Сейчас: 20th August 2025 - 04:11 |