Как редактировать нпс в сталкере
max_item_mass = 999 ; Стоит указывать значения меньше параметра max_walk_weight (см.выше).
jump_speed = 60 ; Высота прыжка. Не указывайте астрономические значения. Гл. герой всё равно не улетит в космос ))
crouch_coef = 1 ; Скорость ползагия "очень сидя" (Ctrl + Shift по умолчанию)
climb_coef = 2 ; Вроде присев (Ctrl)
run_coef = 3 ; Обычный бег с параметром консоли "g_always_run" равным 1
sprint_koef = 4 ; спринт
run_back_coef = 3 ; бег назад
walk_back_coef = 2 ; ходьба назад с клавишей Shift
air_control_param = 1 ; контроль полёта. Выгоден при высоких значениях jump_speed, т.к. можно быстро перемещаться по карте
walk_accel = 17 ; неизвестный параметр
pickup_info_radius = 5 ;радиус, в котором над предметами выводятся их названия при нажатии клавиши "F".
Далее параметры 3d и т.п. смотрим поэтому дальше.
camera_height_factor = 0.85 ; определяет высоту взгляда. Увеличиваем и игрок станет зрительно выше
disp_base = 0 ;угол (в градусах) разлета пуль, когда актер стоит на месте
disp_aim = 0
disp_vel_factor = 0 ;на сколько увеличится дисперсия при скорости в 10 м/с (не обязательно при беге)
disp_accel_factor = 0 ;еще на сколько увеличится, если актер бежит (+ скорость)
disp_crouch_factor = 0 ;уменьшение если актер сидит
disp_crouch_no_acc_factor = 0 ;уменьшение если актер сидит + no acceleration
Чтобы уменьшить размер прицела можно сделать так.
Дальше увидим секцию [actor_immunities_gd_***] (вместо *** нужный ранг)
Чтобы увеличить живучесть - меняем значение ниже.
burn_immunity = 0.0
strike_immunity = 0.0
shock_immunity = 0.0
wound_immunity = 0.0
radiation_immunity = 0.0
telepatic_immunity = 0.0
chemical_burn_immunity = 0.0
explosion_immunity = 0.0
fire_wound_immunity = 0.0
Дальше видим [actor_condition]
И настройка в лучшую сторону будет таковой:
satiety_v = 0 ;скорость уменьшения сытости со временем
radiation_v = 1 ;скорость уменьшения радиации
satiety_power_v = 1 ;увеличение силы при уменьшении сытости
satiety_health_v = 1 ;увеличение здоровья при уменьшении сытости
satiety_critical = 0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начинает уменьшаться
radiation_health_v = 0 ;уменьшение здоровья при воздействии радиации
morale_v = 1 ;скорость восстановления морали
psy_health_v = 1 ;скорость восстановления psy-здоровья
alcohol_v = -1
health_hit_part = 0 ;процент хита, уходящий на отнимание здоровья
power_hit_part = 0 ;процент хита, уходящий на отнимание силы
max_power_leak_speed = 0 ;накопление усталости (макс граница, до которой восстанавливается сила) в секунду игрового времени
max_walk_weight = 1000 ; Вес, при котором игрок не может двигаться. Указать можно любое значение.
bleeding_v = 0 ;потеря крови при номинальной ране в секунду
wound_incarnation_v = 1 ;скорость заживления раны
min_wound_size = 0 ;минимальный размер раны, после которого она считается зажившей
min_wound_size,satiety_v,satiety_power,satiety_health,satiety_critical,alcohol_v можно было и не настраивать, если вам нужно бессмертие
Будем настраивать выносливость.
Назодим строку "jump_power"
Меняем так, чтобы игрок никогда не уставал, разве что если нацепит на себя 5 огненных шаров ))
jump_power = 0 ;умешьшение силы с прыжком без учета веса ноши
jump_weight_power = 0 ;умешьшение силы с прыжком с учетом веса ноши, для максимального допустимого веса
overweight_jump_k = 1 ;коэффициент влияние перегрузки прыжок с весом (умножается на jump_weight_power)
stand_power = 0
walk_power = 0 ;умешьшение силы за секнду во время ходьбы без учета веса ноши
walk_weight_power = 0 ;умешьшение силы за секнду во время ходьбы с учетом веса ноши, для максимального допустимого веса
overweight_walk_k = 1 ;коэффициент влияние перегрузки ноши (умножается на walk_weight_power)
accel_k = 1;коэффициент на бег (умножается walk_power, walk_weight_power)
sprint_k = 1 ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)
Значения с комментом "коофициент" и значениями более 1 (необязательно) рекомендую менять на 1.
limping_health_begin = 0 ;порог здоровья меньше которого актер начинает хромать
limping_health_end = 0;порог здоровья больше которого актер перестает хромать
limping_power_begin = 0 ;порог силы меньше которого актер начинает хромать
limping_power_end = 0 ;порог силы больше которого актер перестает хромать
cant_walk_power_begin = 0 ;порог силы меньше которого актер не может двигаться
cant_walk_power_end = 0 ;порог силы больше которого актер сможет двигаться
cant_sprint_power_begin = 0 ;порог силы меньше которого актер не может бежать в спринте
cant_sprint_power_end = 0 ;порог силы больше которого актер сможет бежать в спринте
Дальше идут кости, работающие в 3d, и их тоже можно менять, чтобы уменьшить уязвимость, но пока их настройка не столь нужна. Я лишь скажу, что нужно настраивать 1 (первый) параметр. Чем меньше, тем лучше.
Как редактировать нпс в сталкере
<specific_character team_default = "1">
<name>esc_wolf_name</name>
<icon>ui_npc_u_stalker_neytral_balon_1</icon>
<bio>esc_wolf_bio</bio>
<class>esc_wolf</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
<rank>434</rank>
<reputation>5</reputation>
<money min="600" max="2000" infinitive="0"/>
<start_dialog>escape_lager_volk_talk</start_dialog>
<start_dialog>dm_hello_dialog</start_dialog>
<actor_dialog>dm_cool_info_dialog</actor_dialog>
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog>
<actor_dialog>tm_wolf_dialog</actor_dialog>
<actor_dialog>tm_wolf_reward</actor_dialog>
</specific_character>
Создание и редактирование НПС
Все профили НПС прописываются в файлах character_desc_локация.
Для раскладывания по полочкам, возьмем профиль Волка:
И разложим все по полочкам.
Внутри этой конструкции располагается все остальное. id - идентификатор Волка, team_default не изменяйте.
Имя НПС, которое будет отображаться в игре. Здесь содержится ссылка на текст, но можно писать имя прямо здесь (если вы хотите, чтобы это был обычный непись с рандомным именем, то прописываете здесь: "GENERATE_NAME_нужная-группировка" (без кавычек).
Здесь указывается иконка НПС, которая будет отображаться в диалоге.
На сколько я знаю, разрабы планировали кажому неписю сделать биографию, но так и не реализовали. Так что можете скопировать с любого профиля.
Класс НПС. Используется для респавна НПС. Для того, чтобы у нас не создавалось куча наших "уникальных" НПС, то мы создадим свой класс.
Группировка (stalker - одиночки, bandit - бандит, dolg - Долг и т.д.)
Ранг НПС (новичок, опытный и т.д.)
Количество денег, которое может быть у НПС. Соотвественно минимальное значение и максимальное. Если поставить infinitive="1", то у НПС будут бесконечные деньги (как у торговца).
Ссылка на папку с голосом и фразами НПС.
На сколько знаю, этот параметр отвечает за тип приседания. Ни разу не использовал, поэтому ничего советовать не буду.
Ссылка на визуальную модель НПС. Но если указать к примеру визуал экзоскелета, то и защитными характеристиками НПС будет обладать, как у экзоскелета.
Здесь указывается список предметов, которые будут появлятся у НПС.
Ну а далее идут диалоги.
Используется, если нужно, чтобы диалог начинал НПС, а
если нужно, чтобы диалог начинал ГГ.
Итак, приступим к практике.
Откроем файл character_desc_escape и создадим профиль нашему НПС. Назовем его Викинг, id у него будет escape_viking, оденем в экзоскелет, группировка - одиночка, оружие - Винторез, класс - esc_viking, а так же пропишем диалоговую иконку НПС в экзоскелете:
Теперь нужно прописать нашего НПС в файле config/gameplay/npc_profile.xml:
Класс ОБЯЗАТЕЛЬНО должен совпадать с тем, который прописан в character_desc_escape, а specific_character должен совпадать с id нашего НПС в character_desc_escape.
Далее происываем нашего НПС в файле config/creatures/spawn_sections.ltx:
В квадратных скобках прописываете любое свое название, spawn ставите от любого НПС, с character_profile все понятно, spec_rank оставляйте regular, community тоже все ясно.
Эээ.
Ну статья и проверялась через скрипт и АСДС.
Можно поподробней как "напрямую через СДК" это делается, и непомешало бы название секции, а еще лучше - лог. Ибо по одному описанию я вряд ли чем то помогу (тебе ли модеру это не знать).
____________________
Я вроде как лог попросил.
Ну нет так нет.
Ошибки которые нашел:
- У ворона была прописана группировка dark_stalker, хотя ты ее НЕ создал, так что пока заменил ее на одиночку.
- Если уж создал свой файл Character_desc_локация, то это еще не значит, что игра его прочитает. Его нужно прописывать в system.ltx, что я и сделал.
- Ты в spawn_sections прописал респавн у ворона свой, а не как в уроке от стандартного НПС. Я не знаю каким ты АСДС компилил спавн, поэтому не смог посмотреть создал ли ты респавнер, и прописал ли туда Ворона. Поэтому я заменил строчку респавнера, на ту, что из урока, ибо она от стандартного непися, то бишь рабочая.
ЗЫ: Без обид, но мне сейчас не для придумывания сюжета и квестов, уж звиняй. Работы и так хватает.
ЗЗЫ: давай все таки на "ты")))
Помоему я итак с тобой на ты
Причин может быть много, и возможно много и сразу.
Получается гадаем.
Размышляющий над сущим
Такие вопросы:
1: Как сделать,так чтоб НПС смотрел/стоял лицом в нужном мне направлении? После прописывания мной координат спавна, НПС всё время смотрит/стоит лицом в одном и том же направлении. Какие строки за это отвечают?
2. Как сделать чтоб НПС стоял на месте в любом случае и вел огонь со своего места спавна (хочу сделать часового, как на вышках). Я, ПЫСУ прописал эти строки:
[logic]
active = remark1
danger = danger_ignore
[danger_ignore]
ignore_distance = 5
[remark1]
no_move = true,
Но, во время атаки этот НПС сходит с места и ломится всех врагов отстреливать.
3: Как прописать НПС путь по которому я хочу чтоб он ходил (рейд, как у военных между блок постом и деревней новичков)?
У меня такой вопрос: После спауна, непись стоит по умолчанию с оружием за спиной. А можно ли как нибудь сделать так, чтобы он стоял с оружием в руках?
Только сейчас заметил проблему. Если сохраниться после того как НПС заспавнится, а потом загрузить это сохранение, игра вылетает со странным логом
J-DOGНе находит файл . ltx. логики для НПС
Larry76,
1.Через аллспавн как правило спавнят уникальных НПС у которых квесты и т д
Пример в секции alife_zaton.ltx прописывается сам НПС
[593]
; cse_abstract properties
section_name = smart_cover
name = zat_a2_sc_zat_b7_sultan -- это Султан
position = 139.320007324219,-7.34000015258789,178.610000610352
direction = 0,-1.57079601287842,0
; cse_alife_object properties
game_vertex_id = 296
distance = 16.1000003814697
level_vertex_id = 1204862
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_normal
cse_smart_cover__unk2_f32 = 0
enter_min_enemy_distance = 15
exit_min_enemy_distance = 10
; se_smart_cover properties
last_description = animpoint_sit_normal
loopholes = animpoint_sit_normal,1
[zat_a1_a_look]
points = p0,p1
p0:name = wp00|a=threat|t=1000 - тут будет целится 1000 милисекунд
p0:flags = 0x1p0:position = 256.240051269531,19.8124237060547,550.824279785156 --первая точка куда будет смотреть НПС
p0:game_vertex_id = 292
p0:level_vertex_id = 1405060
p0:links = p1(1)
p1:name = wp01|a=threat|t=1000 -тут будет целится 1000 милисекунд
p1:flags = 0x1
p1:position = 125.961219787598,-7.31970977783203,178.054428100586 --вторая точка куда будет смотреть НПС
p1:game_vertex_id = 297
p1:level_vertex_id = 1182877
p1:links = p0(1)
[zat_a1_a_walk] тут одна точка движения,т е стоит на месте и целится смотрит в двух направлениях через определённое время
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 356.438110351563,-1.82260000705719,296.487701416016
p0:game_vertex_id = 67
p0:level_vertex_id = 1558980
<actor_dialog>zat_b7_bandit_boss_sultan_b7_give_task_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b30_start_actor_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b30_detectors_actor_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b30_compass_actor_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b30_compass_give_actor_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b30_compass_revert_actor_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b30_ruin_actor_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b30_barmen_under_actor_dialog</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b52_about_snag</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_b52_about_nimble</actor_dialog>
<actor_dialog>zat_b7_bandit_boss_sultan_about</actor_dialog>
</character>
[zat_b7_bandit_boss_sultan_squad]:online_offline_group --это сквад Султана
faction = bandit
npc = zat_b7_bandit_boss_sultan
target_smart = zat_stalker_base_smart-- работа на Скадовске
story_id = zat_b7_bandit_boss_sultan_squad [zat_b7_bandit_boss_sultan_squad]:default_squad
sim_avail = false Приписываем сквад НПС к месту где он должен появится сразу или с каким то условием
;;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;;
zat_b7_bandit_boss_sultan_squad = zat_stalker_base_smart --тут Скадовск
[animpoint@base]
use_camp = false
avail_animations = animpoint_sit_normal
cover_name = zat_a2_sc_zat_b7_sultan
;reach_distance = 1.5
meet = meet@base
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@base]
close_snd_hello = zat_b7_bandit_boss_sultan_greeting
close_snd_bye = zat_b7_bandit_boss_sultan_farewell
close_anim = nil
close_victim = nil
far_anim = nil
far_victim = nil
close_distance = 0
far_distance = 0
use = false, true
trade_enable = false
allow_break = false
close_snd_distance = 3
meet_dialog = zat_b7_bandit_boss_sultan_intro, zat_b7_bandit_boss_sultan_b30_refuse_af_dialog, zat_b7_bandit_boss_sultan_b30_refuse_af_dialog, zat_b7_bandit_boss_sultan_b5_give_task_dialog
meet_on_talking = false
Создаём smart_terrain для сквада НПС в секциях алл.
[578]
; cse_abstract properties
section_name = smart_terrain
name = zat_stalker_base_smart--Это Скадовск
position = 123.900001525879,-7.34000015258789,183.559997558594
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 297
distance = 7
level_vertex_id = 1179320
object_flags = 0xffffff3e
custom_data = <<END
[story_object]
story_id = zat_stalker_base_smart
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2.50760293006897
; cse_alife_space_restrictor properties
restrictor_type = 3
Фсякченские модЫфикации смАтреть тута пАд сполером
Напримере моего случая можно.
Условие: Имеем голую новую локацию escape( кордон)
1.В точке возле самого входа на локацию надо создать бойца(который просто встречает ГГ)
никуда ходить он не будет,будет просто тупо стоять на одном месте.
Итого файл alife_escape.ltx у нас естесственно есть
[593]
; cse_abstract properties
section_name = smart_cover что означает эта строка?
name = можно ли взять из файла припяти? pri_a17_military_sergeant_morozov или же придётся создать файл character_desc_escape где скопировать pri_a17_military_sergeant_morozov но назвать его esc_a17_military_sergeant_morozov .
position = 139.320007324219,-7.34000015258789,178.610000610352
direction = 0,-1.57079601287842,0
; cse_alife_object properties
game_vertex_id = 296
distance = 16.1000003814697
level_vertex_id = 1204862
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_normal тут вроде понятно,что перс сидячий, а если он стоит??
cse_smart_cover__unk2_f32 = 0
enter_min_enemy_distance = 15
exit_min_enemy_distance = 10
; se_smart_cover properties
last_description = animpoint_sit_normal
loopholes = animpoint_sit_normal,1
[zat_a1_a_look]
points = p0,p1
p0:name = wp00|a=threat|t=1000 - тут будет целится 1000 милисекунд
p0:flags = 0x1p0:position = 256.240051269531,19.8124237060547,550.824279785156 --первая точка куда будет смотреть НПС
p0:game_vertex_id = 292
p0:level_vertex_id = 1405060
p0:links = p1(1)
p1:name = wp01|a=threat|t=1000 -тут будет целится 1000 милисекунд
p1:flags = 0x1
p1:position = 125.961219787598,-7.31970977783203,178.054428100586 --вторая точка куда будет смотреть НПС
p1:game_vertex_id = 297
p1:level_vertex_id = 1182877
p1:links = p0(1)
[zat_a1_a_walk] тут одна точка движения,т е стоит на месте и целится смотрит в двух направлениях через определённое время
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 356.438110351563,-1.82260000705719,296.487701416016
p0:game_vertex_id = 67
p0:level_vertex_id = 1558980
Тут вроде тоже ясно,обзовём только секции esc_a1_a_look и esc_a1_a_walk ну и пропишем свои координаты и куда башкой крутить.
А вот из какого файла к этим секциям путь указать??
далее создаём файл character_desc_escape.xml и в нём пишем(тупо копируем всё из файлика припяти про этого вояку заменяя только название локации)
<actor_dialog>actor_break_dialog</actor_dialog> это понятно. диалог стандартный- привет-пока
<character /> <class>esc_a17_military_sergeant_morozov</class></character> Larry76,
Бысрее скриптом распаунить твоего НПС
if мой_spawn_nps.load_variable("мой_spawn_nps_p_",false)==false then
мой_spawn_nps.start_мой_spawn_nps()
мой_spawn_nps.save_variable("мой_spawn_nps_p_",true)
end
==================================================================================
Далее создаём в папке scripts создаём свой скрипт спавна НПС мой_spawn_nps.script
==================================================================================
Далее в мой_spawn_nps.script пишем функцию спавна
function start_мой_spawn_nps()
swm_spawn_nps_01()
end
function мой_spawn_nps_01()
alife():create("esc_a17_military_sergeant_morozov",vector():set(516.90234375,13.481066703796,589.25476074219),1797242,28)--тут позиция спавна НПС,левел-вертекс и гаме-вертекс спавна НПС
end
function save_variable(variable_name, value)
xr_logic.pstor_store(db.actor, variable_name, value)
end
[walker@esc_a17_military_sergeant_morozov]
path_walk = esc_a1_a_walk-путь брожения
path_look = esc_a1_a_look-куда смотрит
combat_ignore_cond = false
combat_ignore_keep_when_attacked = false
meet = meet
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
use_camp = false
def_state_standing = ward_noweap
def_state_moving1 = patrol
no_retreat = true
target = story | actor
wounded = wounded
danger = danger
[meet]
close_snd_hello = = nil
close_snd_bye = = nil
close_anim = guard_na
close_victim = actor
far_anim = nil
far_victim = nil
close_distance = 2
far_distance = 0
close_snd_distance = 3
abuse = false
use = false, true
allow_break = false
meet_on_talking = false
[wounded]
hp_state = 0|wounded_heavy@help_heavy
hp_state_see = 0|wounded_heavy@help_heavy
hp_victim = 0|nil
hp_fight = 0|false
hp_cover = 0|false
[danger]
ignore_distance = 0
ignore_distance_grenade = 0
ignore_distance_corpse = 0
ignore_distance_hit = 0
ignore_distance_sound = 0
Фсякченские модЫфикации смАтреть тута пАд сполером
Создание нового персонажа в ЗП,ЧН и ТЧ
Уроков по созданию npc много, но многие из них не понятны, поэтому я сделал свою статью по этой теме.
Урок прменим и к ТЧ, и к ЧН, и к ЗП.
Для работы нужна программа Active Perl (её нужно просто скачать и установить) и ACDC (в ней мы и будем работать) Замечу, что для каждого Сталкера нужен свой ACDC.
После того как скачали эти программы в папке с ACDC создаём .bat файлы: decompile и compile. Первый батник будет распаковывать all.spawn, второй запаковывать обратно изменённый all.spawn. В батнике decompile прописываем вот это:
perl acdc.pl -d all.spawn
pause - для ТЧ
perl acdccop.pl -d all.spawn
pause - для ЗП
perl acdc_cs.pl -d all.spawn
pause - для ЧН
в батнике compile прописываем:
acdc.pl -c all.ltx
pause - для ТЧ
acdccop.pl -c all.ltx
pause - для ЗП и т.д.
Теперь приступаем к работе. Я буду показывать пример на базе ЗП.
-открываем alife_zaton
-в самый конец добавляем нашего сталкера
[1865] -номер объекта должен быть выше последнего объекта в файле
; cse_abstract properties
section_name = stalker
name = mudak -имя объекта
position = 62.0999984741211,-3.55999994277954,37.5999984741211 - место где он появится(рассмотрим позже)
direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535 - угол поворота сталкера
; cse_alife_trader_abstract properties
money = 416
character_profile = mudak -имя в character desc.
; cse_alife_object properties
game_vertex_id = 292 - для каждого уровня это значение своё
distance = 0
level_vertex_id = 76655 - не трогаем
object_flags = 0xffffffbf
custom_data = <<END
; cse
[smart_terrains]
none = true
END
story_id = 10000 - будем считать его порядковым номером (для новых npc лучше ставить больше 10000)
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 2
health = 1 -поставим 0 будет лежать труп
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 62.0999984741211,-3.55999994277954,37.5999984741211 - место где он появится(рассмотрим позже) Важно! Нужно писать то же самое что и в строке position
upd:o_model = 0
upd:o_torso = 2.81339907646179,-0.0120869996026158,0
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 2
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,2,2,1,2
predicate4 = 0,1,1,1
ПРИМЕР БЕЗ КОМЕНТОВ:
[1865]
; cse_abstract properties
section_name = stalker
name = mudak
position = 62.0999984741211,-3.55999994277954,37.5999984741211
direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535
; cse_alife_trader_abstract properties
money = 416
character_profile = mudak
; cse_alife_object properties
game_vertex_id = 292
distance = 0
level_vertex_id = 76655
object_flags = 0xffffffbf
custom_data = <<END
; cse
[smart_terrains]
none = true
END
story_id = 10000
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 2
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 62.0999984741211,-3.55999994277954,37.5999984741211
upd:o_model = 0
upd:o_torso = 2.81339907646179,-0.0120869996026158,0
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 2
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,2,2,1,2
predicate4 = 0,1,1,1
Осталась работа в скриптах и конфигах
<character >
<class>mudak</class>
<specific_character>mudak</specific_character>
</character>
<class>mudak</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
<rank>434</rank>
<reputation>5</reputation>
<money min="10000" max="10000" infinitive="0"/>
[logic]
active = remark1
danger = danger_ignore
[danger_ignore]
ignore_distance = 5
[remark1]
no_move = true
Теперь можно поглазеть на нашего сталкера в игре (Он должен появится на Шевченко)
Но хочу обратить внимание, что для упрощения снятия координат месторасположения npc в ТЧ можно воспользоваться во время игры консольной командой rs_stats on, а в ЗП rs_camera on
Читайте также: