Делаем однотипные квесты для нового нпс Материал из S.T.A.L.K.E.R. Inside Wiki. Перейти к: навигация, поиск [править] Прописываем однотипные квесты для нового нпс
Распаковываем алл.спавн с помощю acdc Находим файл alife_l01_escape(это на пример) и вставляем в конец это
[18240] ;это уникальный номер не должен повторятся
cse_abstract properties
section_name = stalker ;секция того что спавним name = esc_kvestodatel ;имя может быть любое position = -212.877227783203,-23.1829051971436,-122.68586730957 ;позиция я использовал скрипт от бардака direction = 0.0285909995436668,0,-0.999590992927551 ;разворот в скрипте от бардака есть эта ф-ция
cse_alife_trader_abstract properties
money = 6000 ;количество денег с которым создастся этот нпс(файл профиля нпс перекроет это значение) character_profile = kvestodatel ;профиль нпс
cse_alife_object properties
game_vertex_id = 59 ;гейм вертекс можно узнать в скрипте
distance = 0 ;дистанция вокруг вокруг позиции в которой спавним(если 0 то заспавница точно в позиции которую мы указали)
level_vertex_id = 40610 ;левел вертекс можно узнать в скрипте
object_flags = 0xffffffbf
custom_data = <<END
[logic] ;настройки логики
cfg = scripts\kvestodatel.ltx ;ссылка на логику
[smart_terrains] ;настройки смартов
none = true ;к какому смарту относится нпс(если none не берется под гулаг)
END Жирный шрифт story_id = 93 ;уникальный стори ид
cse_visual properties
visual_name = actors\ecolog\stalker_ecolog ;визуал нпса
cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 3
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 3
upd:timestamp = 0x6d6d695f
upd:creature_flags = 0x75
upd:position = -212.877227783203,-23.1829051971436,-122.68586730957 ;сюда надо вписать теже кординаты что и в позицию
upd:o_model = 0
upd:o_torso = 0.0285909995436668,0,-0.999590992927551
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0
cse_alife_monster_abstract properties
upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0
cse_alife_human_abstract properties
predicate5 = 1,0,0,2,0
predicate4 = 2,2,1,2
cse_ph_skeleton properties
upd:start_dialog =
se_stalker properties
теперь переходим к путям открываем файл way_l01_escape и вставляем туда это(все настройки аналогичны как и в alife_l01_escape)
[esc_lager_kvesto_look]
points = p0
p0:name = wp00
p0:position = -213.064239501953,-22.4240226745605,-126.251586914063
p0:game_vertex_id = 59
p0:level_vertex_id = 41279
[esc_lager_kvesto_pack]
points = p0
p0:name = wp00
p0:position = -212.877227783203,-23.1829051971436,-122.68586730957
p0:game_vertex_id = 59
Жирный шрифтp0:level_vertex_id = 40610
Все со спавном покончено переходим к профилю думаю вы умеете работать с профилем поэтому разжевывать не буду(есть много статей по этому) я сделал профиль так:
<specific_character id="kvestodatel" team_default = "1"> <name>kvestodatel</name> <icon>ui_npc_u_stalker_ecolog</icon> <bio>esc_stalker_novice_bio</bio> <class>kvestodatel</class> <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect> <rank>400</rank> <reputation>30</reputation> <money min="20000" max="600000" infinitive="1"/> <snd_config>characters_voice\human_03\ecolog\</snd_config> <crouch_type>-1</crouch_type> <visual>actors\ecolog\stalker_ecolog</visual> <supplies> [spawn] \n wpn_pm \n ammo_9x18_fmj = 1 \n wpn_bm16 \n ammo_12x70_buck \n device_torch \n #include "gameplay\character_items.xml" \n #include "gameplay\character_food.xml" </supplies> #include "gameplay\character_criticals_3.xml" <start_dialog>hello_dialog</start_dialog> <actor_dialog>tm_kvestovik_dialog</actor_dialog> ;ссылка на диалог однотипного квеста
<actor_dialog>tm_kvestovik_reward</actor_dialog> ;ссылка на награду за выполнения квеста
</specific_character>
теперь создадим класс и спавн секцию открываем файл npc_profile он находится в config\gameplay добавляем пам дето вот это
<character id="kvestodatel">
<class>kvestodatel</class> </character>
в спавн секции добавляем такую секцию
[esc_kvest]:stalker $spawn = "respawn\esc_kvest" character_profile = kvestodatel spec_rank = regular community = ecolog
теперь логика создайте файл kvestodatel.ltx в config\scripts
пропишите в нем
[logic] active = walker inv_max_weight = 10000 on_death = death combat_ignore = combat_ignore
[walker] path_walk = esc_lager_kvesto_pack path_look = esc_lager_kvesto_look meet = meet
[meet] use = true use_wpn = true meet_talk_enabled = true
[combat_ignore] combat_ignore_cond = always
компилируйте алл.спавн ну вот и все нпс готов он заспавница в подвале новичков и будет стоять на месте
теперь пропишем ему однотипные квесты найдите файл game_story_ids в \config и после
092 = "escape_provodnik" напишите 093 = "kvestovik"
все, дальше переходим к файлу \scripts находим task_manager
и там видем в самом начале
local parent_by_story = { [003] = "trader", [500] = "barman", [902] = "ecolog", [507] = "dolg", [707] = "freedom", [006] = "wolf", [004] = "shustriy", [510] = "drunk_dolg", [504] = "hunter", [518] = "zastava_commander", [506] = "petrenko", [607] = "lisiy", [515] = "mercenary",
допишем своего мужика(незабудте запятую после предыдущей строчки) [093] = "kvestovik"
}
дальше видим
local story_by_parent = { trader = 003, barman = 500, ecolog = 902, dolg = 507, freedom = 707, wolf = 006, shustriy = 004, drunk_dolg = 510, hunter = 504, zastava_commander = 518, petrenko = 506, lisiy = 607, mercenary = 515,
прописываем нпса(незабудте запятую после предыдущей строки kvestovik = 093
}
потом в конце находим function init_mercenary_task_dialog(dlg) get_random_task():init_task_dialog(dlg, "mercenary") end и после него пишем по аналогии
function init_kvestovik_task_dialog(dlg) get_random_task():init_task_dialog(dlg, "kvestovik") end
и ниже после function init_mercenary_reward_dialog(dlg) get_random_task():init_reward_dialog(dlg, "mercenary") end
пишем по аналогии
function init_kvestovik_reward_dialog(dlg) get_random_task():init_reward_dialog(dlg, "kvestovik") end
так с скриптом все далее идем в config\gameplay
открываем dialogs
добавим в конец <dialog id="tm_kvestovik_dialog" priority="-1"> <init_func>task_manager.init_kvestovik_task_dialog</init_func>
</dialog> <dialog id="tm_kvestovik_reward" priority="0">
<init_func>task_manager.init_kvestovik_reward_dialog</init_func> <precondition>task_manager.has_active_vendor_task</precondition>
</dialog>
так и последние откройте game_tasks_by_vendor в config\gameplay добавте туда
<game_task id="eliminate_lager_kvestovik">
<title>title</title> <objective>
objective
<icon>ui_iconsTotal_eliminate_lager</icon> <function_complete>task_manager.task_complete</function_complete> <function_fail>task_manager.task_fail</function_fail> </objective> </game_task> <game_task id="defend_lager_kvestovik"> <title>title</title> <objective>
objective
<icon>ui_iconsTotal_defend_lager</icon> <function_complete>task_manager.task_complete</function_complete> <function_fail>task_manager.task_fail</function_fail> </objective> </game_task> <game_task id="artefact_kvestovik"> <title>title</title> <objective>
objective
<icon>ui_iconsTotal_artefact</icon> <function_complete>task_manager.task_complete</function_complete> <function_fail>task_manager.task_fail</function_fail> </objective> </game_task> <game_task id="kill_stalker_kvestovik"> <title>title</title> <objective>
objective
<icon>ui_iconsTotal_kill_stalker</icon> <function_complete>task_manager.task_complete</function_complete> <function_fail>task_manager.task_fail</function_fail> </objective> </game_task> <game_task id="monster_part_kvestovik"> <title>title</title> <objective>
objective
<icon>ui_iconsTotal_monster_part</icon> <function_complete>task_manager.task_complete</function_complete> <function_fail>task_manager.task_fail</function_fail> </objective> </game_task> <game_task id="find_item_kvestovik"> <title>title</title> <objective>
objective
<icon>ui_iconsTotal_find_item</icon> <function_complete>task_manager.task_complete</function_complete> <function_fail>task_manager.task_fail</function_fail> </objective> </game_task>
И вот еще забыл откройте \config\text\rus файл stable_task_manager
добавте это
<string id="tm_kvestovik_has_no_job">
Пока ничего.
</string> <string id="tm_kvestovik_job_ask">
По поводу какого задания ты хочешь поговорить?
</string> <string id="tm_kvestovik_job_complete">
Вот вознаграждение
</string> <string id="tm_kvestovik_job_what">
Что по заданию?
</string> <string id="tm_kvestovik_list_job">
Есть кое-что:
</string>
все теперь создайте однотипный квест, останавливаться на этом я не буду есть много статей на эту тему просто чтоб добавить этому нпсу задания когда будете делать квест в misc\task_manager в строке parent пропишите = kvestovik все
УДАЧНОГО МОДОСТРОЕНИЯ
|