![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#4761
|
|
Level 1 Класс: Убийца Характер: Chaotic Good Раса: Полуэльф ![]() |
Здравствуйте. Вот решил немного отвлечься от моддинга одной игры и выбрал Невервинтер, ибо игрушка мне очень нравится и первая часть больше второй. Скажите - можно ли сделать так, чтобы при незаконных действиях стражники пытались тебя оглушить и после того ты попадал в тюрьму, но потом тебя выпускают? Пример:
1. Ты украл что-то и спалился 2. Стражники начинают тебя чморить и всё таки завалили 3. При системе отрицательного здоровья(потеря сознания при "здоровье<0") ты оказываешься в тюремной камере. 4. Либо "Прошло 2 года" и тебя выпустили, либо тебя отмазали влиятельные персоны(К примеру батя-староста посёлка или друг-принц и т.д.) 5. Отмазывать тебя будут раза 2 или 3 - далее на тебя плюнут и ты просидишь в карцере до конца дней. |
![]()
Сообщение
#4762
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Можно, но очень сложно и с некоторыми нюансами. Боюсь то, что получиться в результате долгих мучений и настроек/устранения багов всего этого - вас не устроит.
|
![]()
Сообщение
#4763
|
|
Level 1 Класс: Убийца Характер: Chaotic Good Раса: Полуэльф ![]() |
А систему голода кто-нибудь создавал? К примеру 0-8 часов после поедания чего-нибудь у тебя сытость, 8-11 слабый голод, 11-17 голод(тут минус к хар-кам), 17+ сильный голод(сильный минус к хар-кам и нанесение дамага в геометрической прогрессии(Чем у тя больше КЗ и ХП тем больше проживёшь голодным))
Вот возник вопрос по существу - как сделать так, чтобы NPC подходил к игроку при его входе в локацию(модуль)? |
![]()
Сообщение
#4764
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
1. Делали. На буржуйских шарда очень часто можно увидеть.
2. Тут 2 варианта - либо через персиптион эвент, либо через триггер. Все это можно заскриптовать в нвн-скриптинге в той или иной форме. Вопрос в другом - как это будет работать. Потому что мало написать код - его еще надо отшлифовать и обезбажить. (IMG:style_emoticons/kolobok_light/smile.gif) Вы такие вопросы задаете - характера, выдать готовое решение вопроса - это никто не будет так делать. Вряд ли кто-то захочет делать это за вас. |
![]()
Сообщение
#4765
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Вот возник вопрос по существу - как сделать так, чтобы NPC подходил к игроку при его входе в локацию(модуль)? читайте пост: http://www.city-of-masters.ru/forums/index...st&p=110735 Скажите - можно ли сделать так, чтобы при незаконных действиях стражники пытались тебя оглушить и после того ты попадал в тюрьму, но потом тебя выпускают? Можно, и уже реализовано Aiwan-ном в Монете судьбы: http://wrg.ru/download.php?list.2 и в нашем модуле тоже есть такая фишка... Сообщение отредактировал gennady - Jun 3 2013, 21:30 |
![]()
Сообщение
#4766
|
|
Level 1 Класс: Убийца Характер: Chaotic Good Раса: Полуэльф ![]() |
Можно, и уже реализовано Aiwan-ном в Монете судьбы и в нашем модуле тоже есть такая фишка... Я знаю, но там ты со стражей не дерёшься - тебя просто на 3-4 раз открывания сундука или если ты своровал, когда тя заметили. За это упекает в тюрьму - стража пришла сказала реплику и если ты не убедил их то ушла и ты оказываешься в тюрьме. Просто от стражи то можно и убежать, от стражи можно избавиться. |
![]()
Сообщение
#4767
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Доброго времени суток, господа! Это «ошибка класса пурпурно дракона» - про нее на этом форуме время от времени поднимают вопросы.После застоя лет в пять взялся за "Аврору" и не могу понять, почему созданные НПС (уникальные для пишущегося мода) не появляются в самом моде, когда я пытаюсь его потестить? Можете подсказать, на что обратить внимание? По поводу всего остального - так же ранее много раз уже отсылал: Как поймать лису за хвост, Как достать рукой до звезд, Как из камня сделать пар, Знает доктор наш Гаспар! (с) P.S.: А систему голода кто-нибудь создавал? Создавали ее все, кому не лень. И все по примерно этому же принципу. Лично я, а так же многие другие знакомые мне игроки считают все это одним большим геморроем – даже для синглплеера это выглядит, по меньшей мере, глупо и жутко неудобно. Тут упоминали проекты – недавно посмотрел модуль Рыцарская Сага, про который тут на форуме писали, там такая система так же есть, если говорить о примерах. И она так же выглядит скорее не как усталость от недосыпания, а как «тыквенное проклятие» Золушки, которое превращает с 12 ударом часов карету в тыкву, в данном случае персонажа - в неповоротливую флудящую об усталости тыкву, медленно ползущую битый километр до своей кровати, чтоб от этого проклятия избавиться. Не поймите неправильно - сам модуль вполне хорош и продолжает традиции Проклятия Левора, но такие моменты мой мозг всегда просто убивают. Кстати в своем онлайн-модуле и я сделал для персонажей голод и усталости, однако, недоедание и недосыпание к примеру там вызывает лишь небольшие штрафы к скорости передвижения (-10% и -15% соответственно). Так что штрафы за них не то что геморрой привносят в игру, а даже не сразу в глаза бросаются и ощущаются только в сумме с другими. Чего и всем желаю. (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Flaristan - Jun 6 2013, 04:55 |
![]()
Сообщение
#4768
|
|
Level 1 Класс: Убийца Характер: Chaotic Good Раса: Полуэльф ![]() |
Русификатора к скриптгену нету случаем? (IMG:style_emoticons/kolobok_light/rolleyes.gif) Никак не могу заставить сидеть людишек всё время(отдыхать). Это точно скриптами делается(перековырял компании, в монету судьбы залез - всё бестолку, несгибаемые стражники)?
|
![]()
Сообщение
#4769
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Он не нужен.
Что значит сидеть? На земле? или что? Выражайте мысли яснее. подобного рода скриптов навалом. Ставьте на OnSpawn существа Neverwinter Script void main()
{ DelayCommand(1.0f, AssignCommand(OBJECT_SELF, ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 99999.0))); DelayCommand(3.0, SetCommandable(FALSE, OBJECT_SELF)); } |
![]()
Сообщение
#4770
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Русификации к скрипт-генератору насколько мне известно нет. Хотя конечно можно попробовать поискать – но вряд ли. Переводить там немного и вполне можно самостоятельно, хотя бы с помощью этого. Однако большинство ситуаций предполагает, что пользователь хоть сколько-нибудь знаком с тулсетом, а так же терминологией модулестроения. Поэтому советую читать Lexicon. Полных переводов его тоже нет, равно как и перевода на русский язык языка программирования С++ использующегося в скриптах НВН. Поэтому английский учить советую в любом случае. (IMG:style_emoticons/kolobok_light/smile.gif)
Так же существует несколько неплохих русских обучалок по тулсету которые рекомендованы к прочтению любому модульмейкеру: - оригинальный; - от создателей ПЛ; - от создателей РС. По поводу сидения НПС на стульях/чем угодно: на самом деле если вам нужен скрипт (особенно для онлайн модуля) который заставит определенного НПС все время сидеть на стуле/чем-либо – то это лучше всего делать скриптом на OnHeartbeat, который запускается с объекта постоянно с интервалом в 6 секунд. В противном случае сидение НПС может быть прервано и не возобновлено никак (если это OnSpawn эвент – то он сработает только единожды при спавне НПС, причем при этом еще не следует путать спавн НПС и размещение его в модуле вручную, чем последнее не является). Плюс в скрипт на OnHeartbeat можно добавлять массу условий которые вместе со спецификой автовыполнения его постоянно превратят простую команду для НПС в его поведение. Например с помощью скриптгена создание такого скрипта будет выглядеть так: - Normal script - NPC heartbeat - (Okay, Cansel) - Other actions and action queues - SCRIPT - Assign queue to the owner of the script - Sit down on object - (ввести/скопировать таг объекта) - Okay – exit! - Close Результат: Neverwinter Script void main() Помещать его стоит соответственно на OnHeartbeat НПС – скрипт заставить его всегда сидеть на объекте с указанным тагом исключая ситуации боя и диалога.
{ object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN); if (IsInConversation(OBJECT_SELF) || GetIsInCombat()) return; ActionSit(GetObjectByTag("TAG_OF_SIT")); } Сообщение отредактировал Flaristan - Jun 17 2013, 06:40 |
![]()
Сообщение
#4771
|
|
Level 6 ![]() ![]() Класс: Друид Характер: Chaotic Neutral Раса: Гном ![]() |
|
![]()
Сообщение
#4772
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Цитата Neverwinter Script void main() { object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN); if (IsInConversation(OBJECT_SELF) || GetIsInCombat()) return; ActionSit(GetObjectByTag("TAG_OF_SIT")); } ужос на хербит такое автопрограммы написания скриптов всегда удивляли на ваулте полно скриптов с сидением, тут на форуме тоже. Есть даже база скриптов - наверняка там будет что-то такое. если уж делать на OnHearbit, то по уму: Neverwinter Script void main()
{ object oNPC = OBJECT_SELF; if (IsInConversation(oNPC ) || GetIsInCombat()) return; if (GetCurrentAction(oNPC ) != ACTION_SIT) // Проверим сидит ли уже { object oSit = GetNearestObjectByTag("PLC_NPC_BENCH", oNPC ); // стул рядом с тэгом if(GetIsObjectValid(oSit) && GetIsObjectValid(GetSittingCreature(oSit))) // Стул есть и на нем никто не сидит { AssignCommand(oNPC , ActionSit(oSit)); // присаживаемся } } } Сообщение отредактировал Melisse - Jun 19 2013, 19:00 |
![]()
Сообщение
#4773
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Однако же спаун уже размещенных при старте модуля запускается) Запускается… но не всегда. В свое время вроде боролся с подобным.если уж делать на OnHearbit, то по уму Ну, если по уму, то там и Neverwinter Script SetCommandable(FALSE, OBJECT_SELF); можно добавить тоже… и еще по обстоятельствам - просто фишка в том, что и такой вариант будет вполне рабочий в большинстве ситуаций, а получить его можно не зная С++ вообще. (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#4774
|
|
Level 1 Класс: Друид Характер: Lawful Neutral Раса: Полуэльф ![]() |
Здравствуйте снова.
Такой вопрос возник - отчего-то не хочет работать простенький скрипт. Цитата void main() { object oPC = GetEnteringObject(); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionSpeakString("Как только Вы подходите к северной границе, тучи сгущаются и отдалённый рокот грозы разносится вдалеке. Лес словно зовёт Вас обратно.")); } Как пишет моя корявая русификация "Авроры", ОШИБКА: НЕПОНЯТНОЕ УСЛОВИЕ КОМПИЛЯТОРА. При этом вполне спокойно сохраняет текст латиницей или не превышающий где-то 50 символов. В чём проблема и как её решить? |
![]()
Сообщение
#4775
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
mrKilljoy
Патч дамбо стоит на букву "я"? Может быть из-за нее. В оригинальном тулсете она вылетала при компиляции как ошибка. http://wrg.ru/download.php?view.109 Flaristan Запускается… но не всегда. В свое время вроде боролся с подобным. Ну, если по уму, то там и Neverwinter Script SetCommandable(FALSE, OBJECT_SELF); можно добавить тоже… и еще по обстоятельствам - просто фишка в том, что и такой вариант будет вполне рабочий в большинстве ситуаций, а получить его можно не зная С++ вообще. (IMG:style_emoticons/kolobok_light/smile.gif) Neverwinter Script SetCommandable(FALSE, OBJECT_SELF); В данном случае (с отключением стэка) по уму лучше на OnSpawn. У такого рода НПЦ (которые садятся и все и вставать не должны) лучше вообще вырубить все скрипты, кроме одного OnSpawn, в котором будет усаживаться НПС и потом стэк команд отключаться. Если хочется чтобы он говорил - можно еще скрипт на диалоге оставить. Остальные скрипты, когда стэк команд off не нужны, особено хеарбит и персеапшен.
Сообщение отредактировал Melisse - Jun 20 2013, 17:00 |
![]()
Сообщение
#4776
|
|
Level 1 Класс: Друид Характер: Lawful Neutral Раса: Полуэльф ![]() |
Melisse, он понимает кирилицу, но сообщения на ней, как выше, выдает чудовищно короткие. Но за ссылку благодарю, обязательно воспользуюсь.
Алсо, такой вопрос: можно ли заставить НПС рандомно бродить по локации, без применения waypoint'ов? |
![]()
Сообщение
#4777
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Может.
Neverwinter Script void ActionRandomWalk(); Описание функции из лексикона: Цитата Description The action subject will generate a random location near its current location and pathfind to it. This behavior will continue every so often until cancelled with a ClearAllActions() command. No return value, but if an error occurs the log file will contain "ActionRandomWalk failed." Remarks ActionRandomWalk never ends meaning that it is necessary to call the ClearAllActions function in order to stop it. The subject will not stray far from the location where it was when this function is called. У вас там проблема именно в том что не компилится из-за русской строчной буквы "я". Вообще-то не должно быть такого ограничения. В лексиконе об этом ни слова. Сообщение отредактировал Melisse - Jun 20 2013, 19:17 |
![]()
Сообщение
#4778
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
В данном случае (с отключением стэка) по уму лучше на OnSpawn. У такого рода НПЦ (которые садятся и все и вставать не должны) лучше вообще вырубить все скрипты, кроме одного OnSpawn, в котором будет усаживаться НПС и потом стэк команд отключаться. Если хочется чтобы он говорил - можно еще скрипт на диалоге оставить. Остальные скрипты, когда стэк команд off не нужны, особено хеарбит и персеапшен. Очень даже нужны, если ты хочешь чтоб НПС не был просто мебелью и заговорил с игроком при встрече или чтоб игрок при виде этого НПС высказал что-нибудь; или если НПС должен сидеть сиднем только днем, а ночью идти в кровать. (IMG:style_emoticons/kolobok_light/smile.gif) А онспавн, как я уже и писал – не так надежен и гибок.По поводу патча Думбы – лично у меня он не работает, равно как и прочие методы кроме Айвановского финта с вейпоинтом: «Вы заметили, что в скриптах в комментариях я не использовал ни одной буквы "я"? Дело в том, что компилятор не воспринимает эту букву, и скрипт не компилируется. Для того, чтобы использовать ее в скриптах мы создадим в любой локации Waypoint с тэгом "YA" и именем "я". И если нам понадобится строчная "я", мы вставим ее таким образом: Neverwinter Script string ya = GetName(GetWaypointByTag("YA")); Наш текст будет выглядеть так: "Да. Ключика у теб"+ya+" нет". Вместо буквы "я" подставим имя нашего поинта "+ya+".» (с)(кстати зачем-то вейпоинт иногда обзывают прописной «Я» вместо строчной «я», хотя в текстах она используется на порядки реже и «выделЯющЯЯсЯ большаЯ Я» во всплывающих фразах выглядит совсем не красиво – так что лучше делать либо строчную либо обе) Сообщение отредактировал Flaristan - Jun 21 2013, 10:19 |
![]()
Сообщение
#4779
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Цитата А онспавн, как я уже и писал – не так надежен и гибок. OnSpawn запускает все остальные события существа, в том числе и хеарбит при запуске модуля, если в нем уже выставлены существа или при создании существа встречей или скриптово. Ну да ладно, думай как хочешь, мне все равно собственно. Цитата По поводу патча Думбы – лично у меня он не работает Даже на моем пиратском нвн времен 2003 года патч дамбо работает идеально. Он собственно там ничего такого не изменяет, пару цифр правит просто в toolset.exe и все. С тех пор как дамбо сделал это патч уже давно никто не юзает этот извр-костыль с буквой "я" через waypoint. |
![]()
Сообщение
#4780
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Факт того, что скрипт был запущен – вовсе не гарант его исполнения.
А русская «я» у меня не работала ни с патчем Думбы, ни со сменой шрифтов, ни еще с чем-то там - и кириллица так и отображается в редакторе скриптов абракадаброй. Так что работа в одном месте так же вовсе не гарантирует работу в другом. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#4781
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Цитата Факт того, что скрипт был запущен – вовсе не гарант его исполнения. о_О. Цитата А русская «я» у меня не работала ни с патчем Думбы, ни со сменой шрифтов, ни еще с чем-то там - и кириллица так и отображается в редакторе скриптов абракадаброй. Так что работа в одном месте так же вовсе не гарантирует работу в другом. Абракадабра убирается через простую смену шрифта в самом редакторе. Нужно зайти в редакторе скриптов в настройки и выбрать шрифт Courier. Ну не работает патч, что делать... не повезло тебе. Сообщение отредактировал Melisse - Jun 21 2013, 12:07 |
![]()
Сообщение
#4782
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Патч в принципе не может не работать, там довольно-таки "лобовой" фикс. Проблема в биоварях - ни одна их игра (даже последний свтор) не поддерживает юникод и любые кодировки, не зашитые на производстве. Они как сбербанк и почта - стабильно неизменны (IMG:style_emoticons/kolobok_light/smile.gif) С 1841 года... В случае с нвн1 есть некое везение - у тулсета в ini достаточно к шрифту подписать " Cyr", и кириллица-таки появится! Ну а с патчем Дамбо можно будет даже якать.
|
![]()
Сообщение
#4783
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Абракадабра убирается через простую смену шрифта в самом редакторе. Нужно зайти в редакторе скриптов в настройки и выбрать шрифт Courier. >>>А русская «я» у меня не работала ни с патчем Думбы, ни со сменой шрифтов, ни еще с чем-то там - и кириллица так и отображается в редакторе скриптов абракадаброй. Скрипт может не сработать после запуска по разным причинам: например если он стоял в очереди в списке наименее важных и был сброшен из-за чрезмерной нагрузки… или например если объект который запустил скрипт внезапно перестал существовать… (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#4784
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Цитата Скрипт может не сработать после запуска по разным причинам: например если он стоял в очереди в списке наименее важных и был сброшен из-за чрезмерной нагрузки… или например если объект который запустил скрипт внезапно перестал существовать… Простите за иронию, но если запустить тулсет и начать делать локацию, а ногой в это время нажать кнопку рестарта на системном блоке, то шард не удастся сделать. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#4785
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Ирония – это конечно хорошо, но путаница обычно возникает там, где есть чему спутаться. А в большом модуле с кучей объектов и скриптов – есть чему спутаться. Так что ситуация вполне обыденная, особенно для новичков.
P.S.: Кстати если в скриптах из «группы риска» указывать исполнителя скрипта (чем менять его с дефолтного «OBJECT_SELF» на указанный - например выполнять их от имени самого модуля «GetModule()»), то они выполнятся даже в случае потери объекта инициатора в процессе выполнения. Сообщение отредактировал Flaristan - Jun 22 2013, 16:52 |
![]() ![]() |
Текстовая версия | Сейчас: 19th August 2025 - 23:54 |