Перейти к контенту

Создание NPC "привязанного к точке" без редактирования all.spawn


Рекомендуемые сообщения

Как правильно спавнить патроны в инвентарь НПС? ...

Добавляю через config/gameplay у НПС появляется 9 или 8 патрон, хотя я дабавлял : [ammo _9x39_ap = 15 \n]

Прописанное здесь количество измеряется в штуках или пачках?...

Подскажите пожалуста, почему для того чтобы изменения вступили в силу мне набо начать новую игру? Если загружаю сохранение изменений нет...

Спасибо...

Поделиться этим сообщением


Ссылка на сообщение

Помогите не как не могу создать нпс, вылет и все :ny_unsure:

Подскажите, пожалуйста, где ошибки... Спасибо...

*1
Для начала создадим профиль!
Откроем фаил character_desc_escape.xml
и создаем там новый профиль
Пример:
<specific_character id="esc_luch" team_default = "1">
<name>Luchr</name>
<icon>ui_npc_u_stalker_neytral_balon_1</icon>
<map_icon x="1" y="0"></map_icon>
<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

<class>esc_luch</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
<snd_config>characters_voice\human_01\stalker\</snd_config>

<rank>100</rank>
<reputation>200</reputation>

<visual>actors\neytral\stalker_neytral_balon_1</visual>
<supplies>
[spawn] \n
wpn_ak74 \n
ammo_5.45x39_fmj = 5 \n
</supplies>
#include "gameplay\character_criticals_4.xml"
#include "gameplay\character_dialogs.xml"
</specific_character>

*2
Теперь нужно прописать класс нашего НПС в npc_profile.xml
Пример:
<character id="esc_luch">
<class>esc_luch</class>
<specific_character>esc_luch</specific_character>
</character>

*3
Теперь зарегистрируем Нашего НПС в spawn_section.ltx
[esc_luch_spawn]:stalker
$spawn = "respawn\esc_luch_spawn"
character_profile = esc_luch
spec_rank = regular 
community = stalker (esc_luch)
custom_data = scripts\sniper_addon\sniper_addon_friend_logic.ltx

Вопрос 1: куда здесь писать?... я писал после: ;------Escape------
                                                                      ;------neutrals-----
*4
Потом открываем xr_conditions.script
и добавляем вот такую функцию 

function is_sniper_enemy(enemy, object)
return enemy:id() ~= db.actor:id()
end

Вопрос 2: куда писать? я писал в самый конец дерективы: Special functions for Escape...
*5

5.1 - 5.2 : не выполнял поскольку координаты извесны...

*5.3
Далее создаём скрипт спавна
(создаётся с помощью блокнота)
scripts\Luch_add.script
В нём будем писать функции!

function start_add_spawn()
spawn_sniper_one()
end

function spawn_sniper_one()
local x= -181.15849
local y= -20.21801
local z= -151.88803
local level_vertex= 69494
local game_vertex_id= 52
alife():create("esc_luch_spawn",vector():set(x,y,z),level_vertex,game_vertex_id)
end

function save_variable(variable_name, value)
xr_logic.pstor_store(db.actor, variable_name, value)
end
function load_variable(variable_name, value_if_not_found)
return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found)
end

*5.4
Когда вписали всех наших Снайперов и все функции спавна и внесли их в "список",то добавляем вызов нашей функции в bind_stalker.script

в функцию actor_binder:update(delta)
перед последнем end'ом этой функции
добавляем
if sniper_add.load_variable("spawn_sniper",false)==false then
sniper_add.start_add_spawn()
sniper_add.save_variable("spawn_sniper",true)
end

Сохраняем!(Вопрос 3: что значит сохраняем?... Я все блокноты при закрытии сохраняю...)

*6
Теперь работаем с логикой.
в папке configs/scripts создаём папку с sniper_addon , открываем её
*6.1
Создаём два фаила
sniper_addon_friend_logic.ltx и sniper_addon_enemy_logic.ltx
*6.2
открываем sniper_addon_friend_logic.ltx
и вписываем туда:
;SNIPER ADDON
;Меченый(Стрелок)
[logic]
active = remark@search

[remark@fire]
combat_ignore_cond = {!is_sniper_enemy}
radius = 0
anim = hide
on_info = {=health_le(0.5)} remark@search
wounded = wounded@work
sniper = true

[remark@search]
combat_ignore_cond = true
combat_ignore_keep_when_attacked = false
anim = hide
target = actor
on_info = {=see_enemy} remark@fire
wounded = wounded@work
[smart_terrains]
none = true
[wounded@work]
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

Сохраняем этот фаил и открываем второй
и вставляем туда
;SNIPER ADDON
;Меченый(Стрелок)
[logic]
active = remark@search

[remark@fire]
combat_ignore_cond = {!is_enemy_actor}
radius = 0
anim = hide
on_info = {=health_le(0.5)} remark@search
wounded = wounded@work
sniper = true
[smart_terrains]
none = true
[remark@search]
combat_ignore_cond = true
combat_ignore_keep_when_attacked = false
anim = hide
target = actor
on_info = {=see_actor} remark@fire
wounded = wounded@work

[wounded@work]
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

Изменено пользователем Luch

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...