Здравствуйте. По просьбе одного знакомого на форуме, решил написать «тутор» о том: Как создавать пути path_walk. Попытаюсь объяснить довольно понятно, по крайней мере на сколько это мне возможно. Итак, думаю можно приступить. Для того чтобы создать так называемые path_walk точки путей, нам понадобится: Распакованный all.spawn (что это такое даже объяснять не буду!). Когда мы смотрим на распакованный файл all.spawn мы видим довольно обширную структуру из файлов типа “ltx”. Есть файлы с аббревиатурой “alife_название локации”, а есть “way_название локации”. На данный момент нам понадобится файл way_***(для примера я беру Болота из ЧН), то есть way_marsh. Открыв его, мы видим не знакомые буквы и числа:
Как мы видим данная секция представляется из себя путь из двух точек: (р0) и (р1), сейчас попытаюсь кратко объяснить где что:
[название секции*можно вводить любое после используется в логике] points = p0,p1 - количество точек, из которых будет состоять патрульный путь p0:name = wp00 – Имя для точки можно назначать абсолютно любое(wp00, wp01, wp02 или way_kap_say_1 и т.д.) p0:position = позиция (x,y,z) p0:game_vertex_id = гейм вертекс p0:level_vertex_id = левел вертекс p0:links = p1(1) – Это то в какую точку НПС пойдёт после данной точки
Вроде с секциями разобрались, теперь можно пробовать создать путь. Для примера я создам путь из двух точек, в которых нпс будет ходить туда-сюда. То есть от 1-й ко 2-й от 2-й к 1-й. Приступим. В файле way_mars.ltx (у вас например кордон) создаем секцию:
Внимание! Предварительно вам нужно снять координаты точек, например 2-х, у меня координаты не рабочие*взяты для примера! Если задать p1:links = p2(2), то нпс останется в точке 2, так что всегда будьте внимательны с это строкой. После того как пути созданы, осталось прицепить этот путь к НПС(надеюсь вы создали нового? Если нет то создайте).Делается это путем не сложной логики. В папке gamedata\configs\scripts\название вашего файла.ltx Делаем так:
[logic] active = walker
[walker] path_walk = urok_badqvik_1
Все, после закрываем, сохраняем и например если вы спавнили нпс через all.spawn ищите секцию с вашим неписем, находим там: custom_data = <<END пишем [logic] cfg = scripts\название вашего файла.ltx END Все закрываем, компилируем all.spawn и идем смотреть творение. Наш непись должен ходить туда сюда до бесконечности, конечно пока его не убьют. Я преподнес вам самый простой пример того, как можно создавать пути path_walk, можно сделать очень сложный с анимацией и звуком. Но это будет в следующем уроке. Спасибо за внимание. С вами был BadQvik, статья написана BadQvik из личных источников.
Сообщение отредактировал BadQvik - Четверг, 24.01.2013, 13:29
Спасибо BadQvik ты просто полезная статья для тех кто хочет научится создавать пути для новых неписей
Добавлено (24.01.2013, 09:25) --------------------------------------------- а как например сделать так чтобы их было например 2 и они когда достигали своей точки (например дошли до лагеря или костра) и присели отдохнуть? как так сделать?
Добавлено (24.01.2013, 09:26) --------------------------------------------- ну потом конечно же ушли опять чтоб там вечно не сидели
BadQvik, хорошая статья, хоть и с недочётами, но правда хорошая. По традиции, не могу удержатся от нескольких реплик, касаемо ошибок/недочётов.
Цитата (BadQvik)
points = p0,p1 - точки
Лучше будет сказать, количество точек, из которых будет состоять патрульный путь, либо путь для точек look. Несущественно, но нагляднее.
Цитата (BadQvik)
p0:name = wp00 – имя лучше оставлять так(wp00, wp01, wp02 и т.д.)
Имя для точки можно назначать абсолютно любое, игра не парсит имя, а учитывает только флаги, которые будут идти после символа "|". Поэтому для наглядности того, где эта точка пути находится, можно задавать весьма информативные имена, например: way_point_sidor_enter_door.
Цитата (BadQvik)
p0:links = p1(1) – обозначает с какой точки начинать путь.
А вот это уже ошибка. Это то в какую точку НПС пойдёт после данной точки. НПС начинает своё движение всегда с первой точки патрульного пути. Цифра в скобках обозначает вероятность с которой НПС пойдёт в следующую точку. Для одной точки это не имеет значение. Но! Можно задавать несколько точек в которые может пойти НПС, т.е. простыми словами можно задавать путь в котором НПС будет ходить по рандомным точкам. Остановлюсь немного подробнее...
Например у нас есть такой предполагаемый патрульный путь: Он предельно прост и мы хотим сделать чтобы НПС ходил вот так: Это примитивный путь, он весьма предсказуем и скучен. Для него точки пути будут выглядеть так (я упущу из виду некоторые параметры, чтобы уменьшить код и напишу лишь основное, что реализует перемещение по этому пути):
Код
[my_patrol_path] points = p1, p2, p3, p4, p5, p6
p1:links = p2(1)
p2:links = p3(1)
p3:links = p4(1)
p4:links = p5(1)
p5:links = p6(1)
p6:links = p1(1)
Но что если мы сделаем вот так: Это уже интереснее и свежее. Для такого патрульного пути точки будут выглядеть так:
Это несколько сложнее и требует небольшого объяснения... хотя интуитивно всё предельно ясно. Начинается путь с точки p1. Далее обязательно выберет точку p2. А вот дальше выберет (с указанной вероятность) одну из точек p3 и p5. Причём в точку p3 он пойдёт с вероятностью 75%, а в точку p5 с вероятностью 25%. И так далее в зависимости от того, какую следующую точку выберет НПС. Как просчитывается вероятность? Элементарной пропорцией. Возьмём к примеру переход с точки p2. Считается, что сумма чисел в скобках равна 100%. Если составить пропорцию, то будет выглядеть так: 3+1 = 100% 1 = Х%
x = 100/4 1 = 25% 3 = 75%
Для остальных чисел всё считается аналогично. Можно указывать не только две точки из которых будет происходить выбор, но и больше - три, четыре, но главное не переусердствовать, существует ли предел я не знаю, но пять точек можно использовать точно.
Green_Men, На данный момент сам разбираюсь как это сделать. Наверное создаются смарт_террейны, где нпс будет выполнять работу которую задашь в логике. А так в принципе, все то что ты сказал можно сделать в ltx файле логики. То есть прописать в логике анимации и действия и все будет:) Врать не буду, но в этой я пока и сам не разобрался толком...
Добавлено (24.01.2013, 12:07) --------------------------------------------- ColR_iT, Спасибо за поправку, очень благодарен
а как например сделать так чтобы их было например 2 и они когда достигали своей точки (например дошли до лагеря или костра) и присели отдохнуть? как так сделать?
Можно через remark и таймер .
Добавлено (24.01.2013, 13:20) --------------------------------------------- [logic] active = walker level_spot = quest_npc on_death = death
[remark2] anim = bar_head on_timer = 30000|remark@lem То есть наш НПС пройдет по пути urok_badqvik_1 отыграет анимацию bar_head и спустя 30 секунд перейдет к схеме remark@lem после этой схемы пойдет следом remark2 через 40 секунд, а после нее через 30 секунд вернется к схеме remark@lem
Привет всем, помогите плиз с патрулем: хотел сделать 3 патруля новой группировки на Юпитере(ЗП), на самом заводе, в итоге пошёл только один. Если нужно, вот логика:
То есть наш НПС пройдет по пути urok_badqvik_1 отыграет анимацию bar_head и спустя 30 секунд перейдет к схеме remark@lem
Не знаю, плакать или смеяться. Может быть тебе рановато писать туторы? Пара вопросов. 1. Каким образом непись поймёт, что он дошел до конца пути, чтобы отыграть анимацию? 2. А вообще в схеме волкер отыгрываются анимации - прописанные подобным способом? По крайней мере в ТЧ этого нет. Подскажу, как на самом деле будет действовать непись согласно твоей логике. Он потянется, почешет задницу, возьмет оружие в дефолтное(ибо другого у тебя не прописано) положение и попытается пойти. Не факт, что за 30 секунд, прописанные для перехода в ремарку, он пройдет(с учетом почесываний) шагов десять...ну и само собой перейдет в ремарку, пройдя этих десять шагов. А если непись заспавнен не в первой точке пути, то учитывая то, что сказал BozKurt, получится, что находясь уже под схемой волкер, он почешет задницу...и через 30 секунд перейдет в ремарку, даже не успев дойти не то что до конца пути, а до первой точки. И дело тут не в таймере.
Сообщение отредактировал _Val_ - Вторник, 28.11.2017, 20:44