Распаковываем алл.спавн с помощю 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 все
УДАЧНОГО МОДОСТРОЕНИЯ
|