Главная > Модостроение > Учимся создавать NPC и спавнить
Учимся создавать NPC и спавнить20-07-2011, 18:42. Разместил: realstalker1 |
Итак, для создания своего НПЦ (я буду говорить о уникальных) нам потребуется: 1. Готовим описание НПЦ- В папке gamedata\config\gameplay Создать xml файл, содержащий описание. Назовем его к примеру Character_unique_by_pereiro.xml (вообще называть как угодно). В нем пишем: Ингви-Сталкер characters_voice\human_02\stalker\ 0 [spawn] \n wpn_pm \n ammo_9x18_fmj = 1 \n wpn_ak74u \n ammo_5.45x39_fmj = 1 \n #include "gameplay\character_items.xml" \n #include "gameplay\character_drugs.xml" \n #include "gameplay\character_food.xml" #include "gameplay\character_criticals_5.xml" #include "gameplay\character_dialogs.xml" hello_dialog Тут вроде всё ясно. Для примера можно глянуть описания персонажей из файлов character_desc_*****, где ***** - имя уровня или группировки. Да, важно: класс НПЦ (а соответственно его иммунитеты, сопротивления и шансы на попадание) будет зависеть от значения Секция диалогов может содержать и другие (не только старт_дайлог, но и актор_дайлог – если вдруг квест прикрутить надо будет). Секция #include может содержать не все инклюды, а только часть. Или вообще ничего. не забываем заглянуть в файл gamedata\config\gameplay\npc_profile.xml (или создать свой - только не забыть его записать в system.ltx в секцию [profiles] - кому как удобней). там перед первым описанием вставляем ingvi_stalker --------------------------------------------- 2. Откуда спавним. В папке gamedata\config\creatures есть замечательный файл (в ресурсах естессно) spawn_sections.ltx Будем править его. Дабы не путаться потом, в самое его начало пишем: [ingvi_stalker_spawn]:stalker $spawn = "respawn\ ingvi_stalker _spawn" character_profile = ingvi_stalker spec_rank = veteran community = stalker В общем последние 2 строчки можно и не писать, т.к. ранг и группировка определяются в описании перса в главе 1. --------------------------------------------- 3. Как спавним.Собственно как спавнить – дело вкуса и обстоятельств. 3.1. Если мы хотим использовать перса в каком-то квесте, то логичнее спавнить его вызовом из диалога, дабы не болтался он по карте и приключений на жопу не искал. То есть: Создаем в gamedata\scripts файл ну скажем ingvi_spawn.script И в нем пишем: function ingvi_sp() alife():create("ingvi_stalker_spawn",vector():set(44.87,0.92,241.6),218598,359) end после чего добавляем вызов функции 3.2. Можно расставить всех НПЦ сразу в начале игры: - поместить в bind_stalker.script ф-я net_spawn(data) примерно такую конструкцию: if xr_logic.pstor_retrieve(db.actor, "first_run", 0)==0 then alife():create("ingvi_stalker_spawn ",vector():set(44.87,0.92,241.6),218598,359) xr_logic.pstor_store(db.actor, "first_run", 1) end 3.3. Или расставлять НПЦ на нужных уровнях по мере захода на них: поместить в bind_stalker.script в конце ф-ии actor_update(delta). if not has_alife_info("is_ingvi") and (level.name() == "l02_garbage") then self.object:give_info_portion("is_ingvi") alife():create("ingvi_satlker_spawn",vector():set(44.87,0.92,241.6),2185 98,359) end В этом случае не забываем объявить инфопоршен “is_ingvi”. Такой способ мне нравится ещё и тем, что для добавления персонажей не надо начинать игру заново. --------------------------------------------- 4. Итоги.Итак, в результате вышеперечисленных манипуляций с файлами мы создаём персонажа по имени Ингви-Стралкер, класс ing_stal_1 на Свалке в вагончике Долга. Если надо добавить в игру уже существующих НПЦ , то читайте сразу главу 3. Да, чуть не забыл… В файл gamedata\config\system.ltx в секцию [profiles] дописать в конец после запятой Character_unique_by_pereiro. Источник http://stalkerhuman.clan.su {SL} Вернуться назад |