Создание медика в ЗП
В этом уроке я хочу рассказать, как создать медика в игре. Это не трудно. Начнём!
Создание НПС
Давайте, для начала, создадим нашего НПС, которого мы хотим сделать врачом.
Идём в
gamedata\configs\creatures\spawn_sections_zaton.ltx В самом низу вставляем секцию нашего НПС (сделаем бандита-медика)
Код
[zat_bandit_medic]:stalker
$spawn = "respawn\zat_bandit_medic"
character_profile = zat_bandit_medic
spec_rank = novice
community = bandit
story_id = zat_bandit_medic_id
Далее идём в
gamedata\configs\gameplay\character_desc_zaton.xml Код
<specific_character id="zat_bandit_medic" team_default="1">
<name>Шов</name>
<icon>ui_inGame2_bandit_3</icon>
<map_icon x="1" y="0">
</map_icon>
<bio>Опытный сталкер. Детальная информация отсутствует.</bio>
<class>zat_bandit_medic</class>
<community>bandit</community>
<terrain_sect>stalker_terrain</terrain_sect>
<snd_config>characters_voice\human_02\bandit\</snd_config>
<rank>60</rank>
<reputation>0</reputation>
<money min="480000" max="480000" infinitive="1" />
<visual>actors\stalker_bandit\stalker_bandit_3</visual>
<supplies>
[spawn] \n
wpn_ak74u \n
ammo_5.45x39_fmj = 1 \n
wpn_beretta \n
ammo_9x19_fmj = 1 \n
grenade_rgd5 = 1 \n
#include "gameplay\character_items.xml"
#include "gameplay\character_food.xml"
#include "gameplay\character_drugs.xml"
</supplies>
#include "gameplay\character_criticals_4.xml"
<start_dialog>zat_bandit_medic_hello</start_dialog> ;- стартовый диалог НПС (приветствие)
<actor_dialog>zat_bandit_medic_dialog</actor_dialog> ;- диалог лечения
<actor_dialog>actor_break_dialog</actor_dialog> ;- прощаемся с НПС
</specific_character>
Далее идём в
gamedata\configs\gameplay\npc_profile.xml Код
<character id="zat_bandit_medic">
<class>zat_bandit_medic</class>
</character>
С созданием НПС закончили, теперь надо сделать ему логику.
Логика
Я выбрал местечко на Скадовске рядом с Султаном. Сделаем НПС анимпоинт.
В
gamedata\spawns\alife_zaton.ltx добавим секцию анимпоинта:
Код
[порядковый_номер]
; cse_abstract properties
section_name = smart_cover
name = zat_a2_bandit_medic_animpoint
position = 138.0086517334,-7.3435568809509,180.43949890137
direction = 0,-7.3435568809509,0
; cse_alife_object properties
game_vertex_id = 296
distance = 12.5999994277954
level_vertex_id = 1202662
object_flags = 0xffffffbf
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2
; cse_smart_cover properties
cse_smart_cover__unk1_sz = animpoint_sit_low ;- используем анимку сидячего НПС (в данном случае низко, как НПС на ящиках)
cse_smart_cover__unk2_f32 = 0
enter_min_enemy_distance = 15
exit_min_enemy_distance = 10
; se_smart_cover properties
last_description = animpoint_sit_low
loopholes = animpoint_sit_low,1
По адресу
gamedata\configs\scripts\zaton создаём
zat_bandit_medic (файл логики НПС).
Там пишем следующее:
Код
[logic@zat_a2_bandit_medic]
active = animpoint@medic
suitable = {=check_npc_name(zat_bandit_medic)} true ;- только наш НПС может занимать этот анимпоинт
trade = misc\trade\trade_zat_bandit_medic.ltx ;- файл торговли
level_spot = medic ;- значок медика
prior = 200 ;- приоритет
[animpoint@medic]
use_camp = false ;- может ли юзать кемп-зоны (нет)
avail_animations = animpoint_sit_low ;- имя анимации
cover_name = zat_a2_bandit_medic_animpoint ;- имя анимпоинта
meet = meet@bandit_medic
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true ;- бессмертие
out_restr = zat_a2_sr_noweap
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
[meet@bandit_medic]
close_anim = nil
close_victim = nil
far_anim = nil
far_victim = nil
close_distance = 0
far_distance = 0
use = {=actor_enemy} false, true
trade_enable = true
allow_break = false
close_snd_distance = 3
meet_on_talking = false
С логикой всё, а теперь создадим файл торговли для нашего НПС (он будет торговать медикаментами, как Тремор и Костоправ)
Идём в
gamedata\configs\misc\trade и создаём файл
trade_zat_bandit_medic.ltx и пишем там
это
Диалоги
Теперь создадим наши диалоги.
В
gamedata\configs\gameplay\dialogs_zaton.xml в конце пишем:
Диалог приветствия
Код
<dialog id="zat_bandit_medic_hello">
<phrase_list>
<phrase id="0">
<text>zat_bandit_medic_hello_0</text>
</phrase>
</phrase_list>
</dialog>
Диалог лечения:
Код
<dialog id="zat_bandit_medic_dialog">
<phrase_list>
<phrase id="1">
<text>zat_bandit_medic_dialog_1</text>
<precondition>dialogs.actor_needs_bless</precondition> ;- если ГГ ранен, то лечим.
<next>2</next>
</phrase>
<phrase id="2">
<text>zat_bandit_medic_dialog_2</text>
<action>dialogs.medic_magic_potion</action> ;- лечение
<next>3</next>
</phrase>
<phrase id="0">
<text>zat_bandit_medic_dialog_0</text>
<next>1</next>
<next>4</next>
</phrase>
<phrase id="4">
<text>zat_bandit_medic_dialog_4</text>
<precondition>dialogs.actor_is_damn_healthy</precondition> ;- если актор цел, то шлём его.
</phrase>
<phrase id="3">
<text>zat_bandit_medic_dialog_3</text>
</phrase>
</phrase_list>
</dialog>
Сделаем диалоги пригодными для чтения, лезем в
gamedata\configs\text\rus\st_dialogs_zaton.xml Приветствие:
Код
<string id="zat_bandit_medic_hello_0">
<text>О, припёрся! Чё надо? Залатать или кайфануть? Так я знаю как!</text>
</string>
Лечение:
Код
<string id="zat_bandit_medic_dialog_0">
<text>Чё-то мне хреново, глянь чё там?</text>
</string>
<string id="zat_bandit_medic_dialog_1">
<text>Ща глянем.</text>
</string>
<string id="zat_bandit_medic_dialog_2">
<text>[далее...]</text>
</string>
<string id="zat_bandit_medic_dialog_3">
<text>Во, теперь всё зашибись, наливай!</text>
</string>
<string id="zat_bandit_medic_dialog_4">
<text>Здоров, как бычара, чеши отсюда.</text>
</string>
А теперь заспавним нашего НПС!
Спавн
Я буду спавнить через сквад.
В
gamedata\configs\misc\squad_descr_zaton.ltx создаём сквад нашего НПС:
Код
[zat_bandit_medic_squad]:online_offline_group ;- id
faction = bandit ;- группировка
npc = zat_bandit_medic ;- наш НПС
target_smart = zat_stalker_base_smart ;- цель (Скадовск)
story_id = zat_bandit_medic_squad ;- стори_ид сквада
Адрес
gamedata\configs\misc\simulation_objects_props.ltx Занесём наш сквад в файл симуляции. В секции Код
;--------- ZATON UNIQUE SQUADS --------
пишем: Код
[zat_bandit_medic_squad]:default_squad
sim_avail = false
Ну и в
Код
[start_position_zaton]
пишем:
Код
zat_bandit_medic_squad = zat_stalker_base_smart
Вот и всё!
Удачи в модинге!