Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 193 194 195 196 197 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
greye
сообщение May 12 2015, 14:04
Сообщение #4836


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Цитата(Aztec2012 @ May 12 2015, 14:24) *
Доброго времени суток!

Известно что после установки дополнения Hordes of the Underdark в тулсете появляется опция по установке времени исчезновения трупов существ. Значение по умолчанию 5 секунд.

Через NWN Explorer решил покопаться в 2da файлах игры и найти это значение и поставить своё, но не могу найти файл который отвечает за это. Есть всё (существа, классы, расы, заклинания т .п.) кроме этого.

Прошу знающих подсказать в каком файле искать этот параметр. Заранее спасибо.

В 2да этого нет, насколько мне известно. Для каждого существа время определяется записью DecayTime в соответствующем GFF файле.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aztec2012
сообщение May 12 2015, 18:42
Сообщение #4837


Level 2
*

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гигант



Цитата
В 2да этого нет, насколько мне известно. Для каждого существа время определяется записью DecayTime в соответствующем GFF файле.


Спасибо за ответ. Так а GFF файлы где?

Нашёл utc файлы существ в них есть DecayTime, но он есть только у существ из второго аддона. У существ из первого аддона и основой игры такого пункта нет. Хотя в тулсете он есть у всех.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 12 2015, 19:58
Сообщение #4838


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(Aztec2012 @ May 12 2015, 12:24) *
Значение по умолчанию 5 секунд.
Гхм.

Сообщение отредактировал Flaristan - May 12 2015, 19:59
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение May 12 2015, 20:00
Сообщение #4839


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Так смени значение на другое. Если тебе нужно чтобы труп не исчезал, нужно сделать скриптами тело не удаляемое. SetDestroyable (FALSE, FALSE , FALSE);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aztec2012
сообщение May 12 2015, 21:57
Сообщение #4840


Level 2
*

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гигант



Цитата
Так смени значение на другое. Если тебе нужно чтобы труп не исчезал, нужно сделать скриптами тело не удаляемое. SetDestroyable (FALSE, FALSE , FALSE);


Спасибо. Но мне нужно чтобы это значение распространилось на все существа всех модулей игры, а в ручную каждое редактировать довольно долго. А скрипт врядли будет работать с теми существа у которых не стандартный скрипт смерти, типа Маугрима или Мораг.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ud4ever
сообщение May 19 2015, 10:40
Сообщение #4841


Level 3
*

Класс: Бард
Характер: Neutral Evil
Раса: Человек



Прошу помочь со скриптом проверки наличия игрока враждебной фракции в локации. Необходимо для того, чтобы добавить эту проверку в скрипт при активации телепорта.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение May 19 2015, 14:11
Сообщение #4842


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Neverwinter Script
//Смотря как у тебя активируется телепорт - игрок, активирующий, будет определятся для диалога через функцию = GetPCSpeaker();
//или если на юз = GetObjectLastUsedBy();
object oPC =  // Игрок тут выбрать того как определяется игрок, активирующий телепорт

object oNearestPCEnemy = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oPC, 1, CREATURE_TYPE_REPUTATION,  REPUTATION_TYPE_ENEMY);

if (GetIsObjectValid (oNearestPCEnemy)) // проверка наличия. Сюда можно еще проверку расстояния вставить
{

// Тут то что тебе нужно

}


О функции GetNearestCreature можно почитать тут

Сообщение отредактировал Melisse - May 19 2015, 14:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ud4ever
сообщение May 19 2015, 17:49
Сообщение #4843


Level 3
*

Класс: Бард
Характер: Neutral Evil
Раса: Человек



Спасибо за подробный ответ)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 20 2015, 05:04
Сообщение #4844


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(Melisse @ May 19 2015, 13:11) *
Neverwinter Script
object oNearestPCEnemy = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oPC, 1, CREATURE_TYPE_REPUTATION,  REPUTATION_TYPE_ENEMY);

if (GetIsObjectValid (oNearestPCEnemy)) // проверка наличия. Сюда можно еще проверку расстояния вставить
{
}
И вот тут мы сразу ловим баг, который делает нашу проверку всегда TRUE, если в модуле присутствует хотя бы 1 враждебный игрок. (IMG:style_emoticons/kolobok_light/biggrin.gif)
На сколько я успел наобщаться со скриптами НВН, если мне не изменяет сей опыт - GetNearestCreature вполне успешно считает расстояние между объектами в разных локациях и оно равно -1. И в этом случае GetIsObjectValid будет совершенно валиден, если он будет где-то (не важно где) в модуле, а исходная задача была сделать проверку по конкретной локации.
Итого, чтоб это было без подобного бага - сделать нужно вот так:..
Neverwinter Script
object oPC = GetObjectLastUsedByGetLastUsedBy(); //к примеру для варианта на OnUse

object oNearestPCEnemy = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oPC, 1, CREATURE_TYPE_REPUTATION,  REPUTATION_TYPE_ENEMY);

if ((GetIsObjectValid (oNearestPCEnemy))
    &&(GetArea(oPC)== GetArea(oNearestPCEnemy))) //приклеиваем чудную проверочку, что наш oNearestPCEnemy находится в той же локации, что и oPC
    {
    //тыры-пыры
    }
...Вот так будет работать без сбоев. (IMG:style_emoticons/kolobok_light/rolleyes.gif)

Сообщение отредактировал Flaristan - May 20 2015, 20:29
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ud4ever
сообщение May 20 2015, 09:54
Сообщение #4845


Level 3
*

Класс: Бард
Характер: Neutral Evil
Раса: Человек



Цитата(Flaristan @ May 20 2015, 06:04) *
И вот тут мы сразу ловим баг, который делает нашу проверку всегда TRUE, если в модуле присутствует хотя бы 1 враждебный игрок. (IMG:style_emoticons/kolobok_light/biggrin.gif)
На сколько я успел наобщаться со скриптами НВН, если мне не изменяет сей опыт - GetNearestCreature вполне успешно считает расстояние между объектами в разных локациях и оно равно -1. И в этом случае GetIsObjectValid будет совершенно валиден, если он будет где-то (не важно где) в модуле, а исходная задача была сделать проверку по конкретной локации.
Итого, чтоб это было без подобного бага - сделать нужно вот так:..
Neverwinter Script
object oPC =  = GetObjectLastUsedBy(); //к примеру для варианта на OnUse

object oNearestPCEnemy = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oPC, 1, CREATURE_TYPE_REPUTATION,  REPUTATION_TYPE_ENEMY);

if ((GetIsObjectValid (oNearestPCEnemy))
    &&(GetArea(oPC)== GetArea(oNearestPCEnemy))) //приклеиваем чудную проверочку, что наш oNearestPCEnemy находится в той же локации, что и oPC
    {
    //тыры-пыры
    }
...Вот так будет работать без сбоев. (IMG:style_emoticons/kolobok_light/rolleyes.gif)


Спасибо за дополнение) скорее всего оно сэкономило ощутимый отрезок времени)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение May 20 2015, 14:29
Сообщение #4846


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Цитата
И вот тут мы сразу ловим баг, который делает нашу проверку всегда TRUE, если в модуле присутствует хотя бы 1 враждебный игрок.

Вообще-то приставка Nearest говорит о поиске по списку объектов в локации, а не в модуле в целом. Чтобы объекты искались в модуле используется, для игроков - GetFirstPC() с GetNextPC(), в цикле while, а для других объектов по тегу - GetObjectByTag().

Вот тут я ведь не просто так дала ссылку на lexicon, чтобы человек почитал
Цитата
О функции GetNearestCreature можно почитать тут


Цитата
На сколько я успел наобщаться со скриптами НВН, если мне не изменяет сей опыт - GetNearestCreature вполне успешно считает расстояние между объектами в разных локациях и оно равно -1.

Изменяет. GetNearestCreature не считывает расстояние, он просто берет самый близкий к субъекту объект в локации из которой его запускают.
Расстояние считывает GetDistanceToObject() и вот именно у него в описании сказано что
Цитата
Note that it of course can be invalid (-1.0) if they are in different areas, one object is not something that has a distance (Area's, module's), although items probably return the distance to the person that possess it (if it is possessed by a creature).

Поэтому когда мы после поиска по функции GetNearestCreature() делаем проверку через if (GetIsObjecValid()) то при возвращении TRUE это утверждает что объект находиться в одной локации с тем, от которого происходит поиск.

Сообщение отредактировал Melisse - May 20 2015, 14:38
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 20 2015, 20:19
Сообщение #4847


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(Melisse @ May 20 2015, 13:29) *
Вообще-то приставка Nearest говорит о поиске по списку объектов в локации, а не в модуле в целом.
Вот тут я ведь не просто так дала ссылку на lexicon, чтобы человек почитал
Вообще-то не говорит. Во всяком случае как раз в лексиконе нигде не упоминается, что поиск происходит в пределах одной локации.
Цитата(Melisse @ May 20 2015, 13:29) *
GetNearestCreature не считывает расстояние, он просто берет самый близкий к субъекту объект в локации из которой его запускают.
Считает расстояние не в смысле как GetDistanceToObject - в метрах, а в значениях (и не в локации, в которой его запускают, а в локации, в которой находится указанный объект, по умолчанию объект запускающий скрипт).
Цитата(Melisse @ May 20 2015, 13:29) *
Поэтому когда мы после поиска по функции GetNearestCreature() делаем проверку через if (GetIsObjecValid()) то при возвращении TRUE это утверждает что объект находиться в одной локации с тем, от которого происходит поиск.
Ну - это хорошо тогда (не -1 значит считает а OBJECT_INVALID, наверное это 0), спс - буду знать, но все равно кашу маслом не испортишь, а то знаем мы эти скрипты...
Цитата(Melisse @ May 19 2015, 13:11) *
Neverwinter Script
//Смотря как у тебя активируется телепорт - игрок, активирующий, будет определятся для диалога через функцию = GetPCSpeaker();
//или если на юз = GetObjectLastUsedBy();
А еще нет такой функции "GetObjectLastUsedBy" - есть только "GetLastUsedBy". (IMG:style_emoticons/kolobok_light/biggrin.gif)

Сообщение отредактировал Flaristan - May 20 2015, 20:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение May 20 2015, 21:04
Сообщение #4848


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Цитата
Вообще-то не говорит. Во всяком случае как раз в лексиконе нигде не упоминается, что поиск происходит в пределах одной локации.
Потому что этот поиск за пределами локации абсолютно бессмысленен. Во-первых, чисто логически. Во-вторых, например, потому, что эта функция возвращает энный объект, а за пределами локации сортировка невозможна, т.к. внутренние координаты разных локаций связать нельзя никак. Биовари, конечно, славятся своими кривыми руками, но не настолько же (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 21 2015, 03:50
Сообщение #4849


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(denis0k @ May 20 2015, 20:04) *
Потому что этот поиск за пределами локации абсолютно бессмысленен. Во-первых, чисто логически. Во-вторых, например, потому, что эта функция возвращает энный объект, а за пределами локации сортировка невозможна, т.к. внутренние координаты разных локаций связать нельзя никак. Биовари, конечно, славятся своими кривыми руками, но не настолько же (IMG:style_emoticons/kolobok_light/smile.gif)
Ну почему же - он был бы очень полезен для динамического АИ неписей. Ну например задать алгоритм его перемещения по модулю...

Ну например создаем локацию/ии леса и размещаем в них грибочки, которые можно собирать; рядом делаем деревню и размещаем в ней непися девочку, которая каждый день в определенное время начинает двигаться к ближайшему грибочку, дабы их собрать в лукошко и принести домой; тут нам понадобится искать ближайший грибочек и разумеется он не будет в одной локации с девочкой, а чтоб АИ было пластичным (ну например грибочки у нас тоже не деревянные, а имеют скрипт эмуляции роста и могут появиться в определенные дни годичных сезонов в произвольной локации с тайлом леса в произвольной точке), нужно чтоб поиск производился не по установленному списку локаций, а по всему модулю.
Внутренние координаты локаций связать можно - тут главное просто задать логику связки. Ну например перед измерением расстояния - проложить маршрут от НПС к требуемому объекту: делаем цикл, прокладываем от НПС маршрут к ближайшему триггеру перехода, отмечаем стартовую локацию и вычеркиваем ее из списка локаций модуля, далее повторяем операцию с нахождением ближайшего триггера и вычеркиванием локации (чтоб не прокладывать маршрут через 1 локацию дважды), повторяем, пока не кончатся не вычеркнутые локации модуля или пока мы не обнаруживаем в локаци с проверяемым триггером целевой объект, в случае последнего - суммируем расстояния от НПС до триггира, от триггеров до триггеров, от триггера до целевого объекта, получаем расстояние до ближайшего объекта в модуле, прогоняем цикл для следующего триггера в стартовой локации и далее для каждого триггера в каждой следующей локации маршрута, пока не находим кратчайший маршрут... ППЦки громоздко, но теоретически вполне возможно. (IMG:style_emoticons/kolobok_light/ph34r.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение May 21 2015, 07:55
Сообщение #4850


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Ну грибочки через GetNearestCreature ты всё равно не найдёшь (IMG:style_emoticons/kolobok_light/smile.gif)

Но если это просто грубый пример, то возможности нвскрипта всё равно не позволят сделать такой поиск пути адекватным. Даже в сингле можно было заставить ИИ тупить, если для прохода в соседнюю комнату персонажу приходилось делать крюк через пол-локации. Поиск пути автоматически проваливался, и персонаж утыкался носом в стену.

Единственный работающий вариант, который я нашёл, - натыкать везде вейпоинтов, связать их локалками (а-ля podbot для cs) и ходить по ним, привязывая к ним все прочие объекты. Нужен гриб? Ищем ближайшие к грибу и неписю вейпоинты и прокладываем кратчайший путь по какому-нить A* или Дейкстре. Правда на вложенных циклах нвскрипт стопудово вылетит в тми, поэтому часть логики придётся вынести наружу, я считал это в mysql, очень удобно - сразу и кэшировать можно. Со временем при неизменных вейпоинтах база данных наполняется маршрутами, и даже считать не надо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение May 21 2015, 16:39
Сообщение #4851


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Да, без сомнения очень удобно, только кэш вылетает на 110+ точек в тми, потому что ты сначала кэшируешь, потом еще 2 раза гоняешь по точкам запросы, но идея очень клевая. При некоторых изменениях позволяет запустить фишки аля обливион/скайрим - нпц ходят и делают свои дела, а не стоят истуканами.

По поводу поиска пути я могу добавить то что проблемы бывают даже тайлах без объектов plc. Поиск пути просто очень криво работает и кушает много ресурсов, На стандартных тайлах работает лучше, чем на кастомных. Но сильные проблемы начинаются когда на тайлах размещают плэйсы, просто у проходимости там 3 вида видимо, те что на объектах и дверях наслаиваются на тайлы и каким-то образом часто глючат. Думаю система сродни таковой с 2да файлами - сначала загружаются все стандартные, потом то что в хаках переписыват стандартные, и сверху переписывается все это тем что в овверррайде. (IMG:style_emoticons/kolobok_light/smile.gif)
В любом случае, по проверкам, поиск пути всегда затрачивает в 10 раз больше времени чем самый сложный скрипт и очень часто выдает что путь не найден, особенно плохо работает для нпц.

Сообщение отредактировал Melisse - May 21 2015, 16:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 21 2015, 22:35
Сообщение #4852


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(denis0k @ May 21 2015, 06:55) *
Ну грибочки через GetNearestCreature ты всё равно не найдёшь (IMG:style_emoticons/kolobok_light/smile.gif)

Но если это просто грубый пример, то возможности нвскрипта всё равно не позволят сделать такой поиск пути адекватным. Даже в сингле можно было заставить ИИ тупить, если для прохода в соседнюю комнату персонажу приходилось делать крюк через пол-локации. Поиск пути автоматически проваливался, и персонаж утыкался носом в стену.

Единственный работающий вариант, который я нашёл, - натыкать везде вейпоинтов, связать их локалками (а-ля podbot для cs) и ходить по ним, привязывая к ним все прочие объекты. Нужен гриб? Ищем ближайшие к грибу и неписю вейпоинты и прокладываем кратчайший путь по какому-нить A* или Дейкстре. Правда на вложенных циклах нвскрипт стопудово вылетит в тми, поэтому часть логики придётся вынести наружу, я считал это в mysql, очень удобно - сразу и кэшировать можно. Со временем при неизменных вейпоинтах база данных наполняется маршрутами, и даже считать не надо.
Ну так он и на объекты есть. А вообще смотря какие грибочки же. (IMG:style_emoticons/kolobok_light/biggrin.gif)

Я потому и приписал, что теоретически. Однако в других играх же есть это! Про "носом в стену" отпишу ниже.

С вейпоинтами у меня есть реализация в тренлагере своего модуля - там стражи по задумке патрулируют периметр интерьера и полностью автономный маршрутизатор не подошел, т.к. тогда они делали это хаотично (не используя прогулочные дорожки и часто застревая по текстурным закоулкам), а не так, как положено патрульным по идее. Однако даже и с вейпоинтами система не выглядит просто и тупо "из пункта-А в пункт-Б" и потребовалось писать отдельно АИ-деблокатор для ситуаций, когда неписи к примеру заходили случайно за забор, застревая в нем и прочих других текстурах. Там это было сделать легко - НПС теперь просто в случае длительной блокировки "перепрыгивает" через него.
Так же на 2 этаже есть пару неписей, которых по задумке нужно было жестко привязать к своим позициям, причем оставляя им при этом возможность реагировать на внешние условия и покидать свои "рабочие места". Проблема состояла в том, что одно из таких мест было в сложном "Г"-образном закутке обставленном большими и малыми плейсеблами. То есть для нормального НВН-ского АИ ситуация практически неразрешимая без мини-телепорта, как со стражниками. Но такие методы я всегда оставляю на крайний случай и мне таки удалось написать очень удачный АИ-деблокиратор и научить НПС "обходить" любые сложные препятствия, не "перепрыгивая" их и без сильных ресурсозатрат. (IMG:style_emoticons/kolobok_light/smile.gif) Успешно использую модификации этого деблокатора для всех прочих АИ модуля.

Цитата(Melisse @ May 21 2015, 15:39) *
Да, без сомнения очень удобно, только кэш вылетает на 110+ точек в тми, потому что ты сначала кэшируешь, потом еще 2 раза гоняешь по точкам запросы, но идея очень клевая. При некоторых изменениях позволяет запустить фишки аля обливион/скайрим - нпц ходят и делают свои дела, а не стоят истуканами.

По поводу поиска пути я могу добавить то что проблемы бывают даже тайлах без объектов plc. Поиск пути просто очень криво работает и кушает много ресурсов, На стандартных тайлах работает лучше, чем на кастомных. Но сильные проблемы начинаются когда на тайлах размещают плэйсы, просто у проходимости там 3 вида видимо, те что на объектах и дверях наслаиваются на тайлы и каким-то образом часто глючат. Думаю система сродни таковой с 2да файлами - сначала загружаются все стандартные, потом то что в хаках переписыват стандартные, и сверху переписывается все это тем что в овверррайде. (IMG:style_emoticons/kolobok_light/smile.gif)
В любом случае, по проверкам, поиск пути всегда затрачивает в 10 раз больше времени чем самый сложный скрипт и очень часто выдает что путь не найден, особенно плохо работает для нпц.
Именно такой у меня подход к АИ не только и сколько НПС, а всех мобов в модуле, и такие системы мне очень нужны для качественной реализации.
Конечно большинство АИ (особенно самых примитивных существ) сводится к рендумной ходьбе, но и в большинстве случаев же оно дополняется комплексом ситуативных функций - к примеру:
- АИ крыс включает в себя помимо стандартной ходьбы и агрессии "санитарный комплекс" (уничтожение трупов съедобных существ), "собирательский" (различают и подбирают еду с земли в виде итемов), "поведенческий" (боятся дневного света или света факела), "стайный" (если есть возможности - крыса может вызвать подмогу в неравном бою из крысиной норы поблизости), "поисковый" (система отрабатывает дополнительные органы чувств у моба - обоняние), ну и конечно "АИ-деблокираторы" (у крыс стоит на данный момент самый реакционный деблокиратор среди мобов, позволяющий им почти моментально находить путь даже из "П"-образных тупиков по вектору движения, обходя их по кривой);
- АИ термитов для сравнения включает в себя помимо стандартной ходьбы и модифицированной агрессии (не агрятся перманентно - только временно "отгоняют" приблизившихся к ним посторонних) тот же "санитарный комплекс", "собирательский" без ограничения (собирают любой лут с пола в виде итемов, а так же обчищают лутбэги мобов), "поведенческий" (носят все собранное в свой "муравейник" который выступает чем-то вроде склада, который может при желании обнести РС, как не запертый сундучок), имеют самый простой и топорный "АИ-деблокиратор" среди имеющихся мобов в угоду отыгрыша своего биологического вида. (IMG:style_emoticons/kolobok_light/smile.gif)
У других типов мобов АИ попроще, но тоже обязательно имеет свои поведенческие особенности олицетворяющие собсно вид криттера наряду со скином его модельки в игре.

Я давно понял, что писать стационарный АИ бесполезно. Программирование жесткого алгоритм поведения, основанного на константах вроде конкретных объектов - рано или поздно ведет к "носу в стенке". Поэтому АИ я пишу всегда по принципу "десантника" - ориентирующееся в любой обстановке, в каком бы ни оказался моб-хозяин. Собственно крысы в модуле и есть у меня эдакие "десантники" - только они высаживаются не с воздуха, а из-под земли.
АИ чаще всего имеет "свободный поиск", позволяющий монстру бродить в случайных направлениях, исследуя локацию, блок "агрессии" (различающийся главным образом от рода вида/фракции - травоядный/хищник/всеядный и от вида конкретного монстра) и батарею "поведенческих" блоков (чем сложнее "отыгрываемый" вид - тем их больше), которые прерывают свободный поиск, как только АИ видит поддающуюся его обработке ситуацию. Таким образом возможно включать в поведенческие блоки встроенные "задания", которые позволят отрабатывать НПС/мобу весьма сложные поведенческие акты (типа "грибочков"). Например термиты завладев какими-либо вещами включают свой АИ-блок транспортировки их к ближайшей своей норе; будучи заблокированными по дороге к ней - переходят автоматически к блоку АИ-деблокиратора; сложив все имеющиеся у себя вещи в нору, снова переходят в режим свободного поиска и исследуют локацию, и т.д...

Сообщение отредактировал Flaristan - May 21 2015, 23:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение May 21 2015, 22:56
Сообщение #4853


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Цитата
Однако в других играх же есть это!
Другие игры пишут не биовари (IMG:style_emoticons/kolobok_light/smile.gif) Что ещё ожидать от программистов, у которых игры даже 2010+ года не используют юникод и глючат при установке в папку с кириллицей в имени? (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 21 2015, 23:16
Сообщение #4854


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(denis0k @ May 21 2015, 21:56) *
Другие игры пишут не биовари (IMG:style_emoticons/kolobok_light/smile.gif) Что ещё ожидать от программистов, у которых игры даже 2010+ года не используют юникод и глючат при установке в папку с кириллицей в имени? (IMG:style_emoticons/kolobok_light/biggrin.gif)
Но сама игра то вышла годной! (IMG:style_emoticons/kolobok_light/prankster2.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aztec2012
сообщение May 29 2015, 16:12
Сообщение #4855


Level 2
*

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гигант



Доброго времени суток!

Как сделать доступными для навешивания на предметы заклинания монстров? В spells.2da похожего не нашёл.

Заранее спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение May 29 2015, 19:20
Сообщение #4856


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Потому что в спелл.2да ничего нет (IMG:style_emoticons/kolobok_light/angel.gif)

Тебе нужен следующий 2да файл: iprp_spells.2da
Заносишь туда нужный спелл.
Описание столбцов:
Порядковый номер|Метка (для тебя)|Название из тлк |уровень каста| врожденый уровень(круг видимо)| стоимость на итеме|номер спелла из spell.2da| используется ли снадобьями| используется ли вандами | используется ли всеми остальными итемами|последняя графа отвечает за иконку.


а в itemprops.2da можно вообще редактировать какие куда можно наносить свойства.

Сообщение отредактировал Melisse - May 29 2015, 19:26
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aztec2012
сообщение May 31 2015, 23:30
Сообщение #4857


Level 2
*

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гигант



Спасибо.

Навесил через Spells.2da заклинания монстров на чародея, но появились у него далеко не все заклинания.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RusIvan
сообщение Jun 27 2015, 17:49
Сообщение #4858


Level 2
*

Класс: Некромант
Характер: Lawful Evil
Раса: Нежить



Прошу помочь реализовать идею призыва монстров через диалог на объекте. Создал нужный объект, путевую точку, призываемое существо, использовал простейший скрипт из призыва существа (из 2-й главы кампании, алтарь в лесу призывает медведя). Но монстр упорно не желает появляться. Что я делаю не так?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NumberOne
сообщение Jun 27 2015, 18:26
Сообщение #4859


Level 4
**

Класс: Воин
Характер: Chaotic Good
Раса: Человек



RusIvan, не знаю точно, какой скрипт ты использовал, но зайдя в свои наработки, я нашел вот это:

Код
#include "nw_i0_2q4luskan"

void main()
{
object oWP = GetWaypointByTag("ТОЧКА ПРИЗЫВА");

location lTarget = GetLocation(oWP);

DelayCommand(0.5, CreateObjectVoid(OBJECT_TYPE_CREATURE, "МОНСТР", lTarget));
}


И ради интереса, скинь скрипт, который у тебя упорно не призывает.

Сообщение отредактировал NumberOne - Jun 27 2015, 18:28
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StasMokos
сообщение Jan 14 2016, 01:03
Сообщение #4860


Level 3
*

Класс: Воин
Характер: True Neutral
Раса: Эльф



Пожалуйста, скажите, сюда кто-то заходит еще и сможет помочь? (IMG:style_emoticons/kolobok_light/shout.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 193 194 195 196 197 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 20th August 2025 - 01:45