[CoP] Ковыряемся в файлах - Страница 165 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

[CoP] Ковыряемся в файлах


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

iDreD, имелось ввиду - где-нибудь можно отрегулировать, чтобы, например, НПС одевали фонари раньше/все время их носили и включали позже? Название файла логики в общем интересует...

Antnigm, можно. Если я не ошибаюсь, то в файле sr_light.script найди вот эти строки:

if not forced then

--' Проверка по времени суток (ночью всегда включено)

local htime = level.get_time_hours()

if htime <= 4 or htime >= 22 then

light = true

end

 

Думаю, далее ты и сам разберешься, что править.

Изменено пользователем PavelSnork
Жду ли я Сталкер 2? Хм...
PavelSnork, это как раз и есть файл с настройками логики для того самого рестриктора. К НПС находящимся в симуляции это не имеет никакого отношения.

iDreD, это как? Да, в том скрипте есть одна маленькая проверка на зоны выключения фонарика, но я писал о проверке на время суток, что и просил подсказать Antnigm. Я только что сам все протестировал (поменял время включения фонарика):

477202.jpg

 

Жду ли я Сталкер 2? Хм...
PavelSnork, странное дело. Просто [sr_light] это секция настроек для рестриктора, юзающаяся в его же логике. Не знал, что этот скрипт применим к сталкерам.

Кто может подсказать логику для того, что бы монстры передвигались между смарт_терейнами?

Например, есть два смарт терейна pred1 и pred2. Что надо писать им в логику? Нужно ли создавать пути для передвижения монстров?

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

karavan, если ты имеешь ввиду передвижение сквадов монстров, то в описании сквада нужно делать так:

target_smart = pred1:pred2

Если хочешь чтобы они зацикленно ходили между смартами то так:

target_smart = pred1:pred2:loop

Можно добавлять условия стандартые из xr_condition:

target_smart = {+info} pred1, {=is_rain} pred2, pred3

- т.е. при наличии инфопоршня идут в первый смарт, если нет, но идет дождь то во второй, если не то не то, то в третий...ну и так далее.

Еще можно такую интересную схему:

target_smart = pred1:nil

- сквад идет в смарт pred1 а потом становится свободным, т.е. уходит в симуляцию.

 

 

Clayman

 

А если скажем три смарта, то по такой схеме target_smart = pred1:pred2:pred3:loop они будут передвигатся из pred1 в pred2 и потом в pred3 и наконец вернутся в pred1? Или же передвижение будет случайным выбором?

 

 

karavan, да, именно так и будут передвигаться, по порядку. Если нужно случайность, то бишь симуляция, то вообще target_smart не указывай, но у смарт-террейнов должен стоять параметр sim_avail = true, чтобы он мог "принимать" сквады.

Кто может подсказать как создать скользящую дверь как на Свалке?

Дело в том, что заселяю Предбанник от АМК, там есть две скользяшие двери и при прописывании им логики для дверей, причём любой, получаю вылет:

[error]Expression : assertion failed

[error]Function : doors::door::door

[error]File : D:\prog_repository\sources\trunk\xrGame\doors_door.cpp

[error]Line : 36

[error]Description : m_object.get_door_vectors( m_closed_vector, m_open_vector )

 

 

 

 

Логика вот:

 

[logic]

active = ph_door@close

 

[ph_door@close]

locked = false

closed = true

snd_open_start = trader_door_open_start

snd_close_start = trader_door_close_start

snd_close_stop = trader_door_close_stop

on_use = ph_door@open

 

[ph_door@open]

locked = false

closed = false

snd_open_start = trader_door_open_start

snd_close_start = trader_door_close_start

snd_close_stop = trader_door_close_stop

on_use = ph_door@close

 

 

 

Может быть у кого есть рабочая логика? Или способ создания полноценных дверей?

Изменено пользователем Cyclone
karavan, да писали уже много, что в ЗП скользящие двери не работают как класс, логика тут не причем. Самому хотелось бы узнать, если кто решил эту проблему.

Кубанец, это тема "Ковыряемся в файлах ЗП".

 

Вот такое заметил: допустим пошел дождь на уровне, все нормально, шум дождя...перехожу в это время на другую локу - дождь продолжает идти, но звук дождя пропадает. Или та-же ситуация с сохранением: дождь идет, F5-F9, дождь идет, но звука нету... Это баги оригинальной игры или что-то еще?

Сразу говорю, погодные конфиги не трогал, погада везде на локах dynamic_default...

Clayman Спасибо за совет по поводу передвижения НПС между смартами, все работает.

------------------------------------

Вот возник вопрос. Что нужно прописывать в логику смарта и возможно в логику эксклюзива для того что бы сталкер патрулировал по путям?

Пытался писать эксклюзив с путями для НПС, но что-то ничего не происходило. Этого самого эксклюзива даже не появлялось.

И еще нжно ли в путях писать например, wp00|a=sprint, что бы бежал и т.п.?

 

karavan, наздоровье:)

А насчет работ и путей столько уже всего писалось и на сталкер-вики куча статей по логике и путям-работам, и описанием как и что в вей-поинтах писать, что честное слово, лень повторять.

Насчет эксклюзивов, ту надо понимать, что когда ты пишешь в конфиге смарт-террейна:

[exclusive]

что_то_там = папка_уровня\файл.ltx,

то ты даешь ссылку на логику эксклюзивной работы для этого смарта.

 

Далее в файл.ltx ты пишешь секцию логики этой работы:

[logic@что_то_там]

а в этой секции нужно взять под эту логику нужного нпс:

suitable = {=check_npc_name(твой_нпс)}

или:

suitable = {=target_squad_name(нужный_сквад)}

 

Естественно, нужный нпс - сквад должен присутствовать в смарте. Если нужно конкретного непися, то конечно нужно создавать его профиль и все такое, а если напишешь к примеру такое:

suitable = {=is_monster_dog} true,

то под эту логику возьмется первая попавшая собачка в смарте.

 

Т.е. как я понимаю все это, дается ссылка на эксклюзивную работу (с логикой) для смарта, а в логике ты определяешь, кого под эту работу взять.

 

Добавлено через 18 мин.:

И еще, выжный момент, о который спотыкаются многие начинающие (и я не исключение) и о котором я нигде не видел упоминания в туторах:

Когда создаешь вей-поинты для своего эксклюзива, называешь их с именем смарта вначале, например:

zat_a1_supersniper_walk

zat_a1_supersniper_look,

то потом в логике обязательно опускаешь имя смарт-террейна:

[camper@zat_a1_supersniper]

path_walk = supersniper_walk

path_look = supersniper_look

 

И вообще советую внимательно изучать пысовские файлы настроек и логики, находишь много нового :)

Товарищи нужна помощь.

Добавил новую групировку "csky". При попытке поговорить с НПС этой группировки получаю вылет:

[error]Expression : !phrase_dialog->m_PhraseVector.empty()

[error]Function : CPhraseDialog::SayPhrase

[error]File : D:\prog_repository\sources\trunk\xrGame\PhraseDialog.cpp

[error]Line : 146

[error]Description : No available phrase to say, dialog[hello_dialog]

 

 

Регистрировал группировку в файлах game_relations.ltx, death_manager.script, death_items_by_communities.ltx

Подумал что не зарегестрировал где-то начал смотреть в dialog_manager.script дописал в функцию

function uni_dialog_precond(first_speaker, second_speaker)

local npc = dialogs.who_is_npc(first_speaker, second_speaker)

return character_community(npc) == "stalker" or

character_community(npc) == "bandit" or

character_community(npc) == "freedom" or

character_community(npc) == "dolg" or

 

character_community(npc) == "csky"

end

 

 

 

 

Вылет при попытке поговорить всеравно происходит. :(

 

-------------------------------------------

 

И еще подскажите пожалуйста функцию для проверки через диалог "Если НПС ранен..."? Не могу найти в ЗП подходящий пример.

karavan, возможно это не в группировке дело, а в самом неписе: в его секции должен быть прописан #include "gameplay\character_dialogs.xml" или <start_dialog>hello_dialog</start_dialog>
EuShikari.png

Po-meceniy Да всё это есть. Я вот и не могу понять в чем проблема, если новый НПС со старой группировкой то все в порядке, если новая группировка то вылет.

 

Добавлено через 11 мин.:

Товарищи, подскажите пожалуйста, нужна функция для диалога (прекондишн) с провркой если НПС, с которым разговариваеш раненый?

Ох и много же вопросов накопилось! :)

1) Можно ли сделать постоянно респаунищиеся мины? Чтобы после взрыва, спустя несколько секунд, мина появлялась на том же месте?

2) Захотел сделать аномалию (эта :russian_ru:, которая летает, fireball_acidic), но не понял, как задать ей логику... И причём в этой аномалии *anm?

3) Начал ковырять смарты, накопилась пара вопросов:

[smart_terrain]
squad_id = 34                                             -- ???
max_population = 3                    --понятно
respawn_only_smart = true                --понятно
respawn_params = respawn@pri_sim_12            --понятно
arrive_dist = 100                    --понятно
def_restr = pri_a16_sr_noweap                --понятно
safe_restr = pri_surge_hide_a16; pri_a16_sr_light    --???
smart_control = smart_control                --понятно
spawn_point = zat_sim_16_spawn_point             --???
respawn_radius = 150                    --понятно
respawn_sector = default                --????
до 1. Рабочих примеров нет. Работоспособность сомнительна
mutant_lair =                        --не работает.
no_mutant =                        --не работает.
forbidden_point =                    --не работает.

[respawn@pri_sim_12]                    --понятно
sim_tushkano

[sim_tushkano]
spawn_squads = simulation_tushkano            --понятно
spawn_num = {+pri_a18_use_idol_done}2, 0        --понятно

[smart_control]
noweap_zone = pri_a16_sr_noweap                --понятно
ignore_zone = pri_surge_hide_a16; pri_a16_sr_light    --????
combat_ignore_keep_when_attacked = true
alarm_start_sound = {-pri_b305_fifth_cam_end} pri_a16_base_alarm, nil    --понятно
alarm_stop_sound = {-pri_b305_fifth_cam_end} pri_a16_base_relax, nil    --понятно

[exclusive]
pri_b35_envoy_after = pripyat\pri_b35_envoy_logic.ltx            --понятно

 

 

Причём удалив некоторые вещи, игра вылетела с error is handler evonkled! Что вообще можно трогать и с чем связан вылет?

 

4)Заспаунил НПС через скрипт, получил вылет.

Вот так прописал:

чертердескл11припять
<?xml version='1.0' encoding="windows-1251"?>

<xml>

<specific_character id="l11_pripyat_trader" team_default = "1"> 
<name>Олег "Демон" Гусаров</name> 
<icon>ui_inGame2_neutral_2_mask</icon> 
<map_icon x="1" y="0"></map_icon> 
<bio>Опытный сталкер. Детальная информация отсутствует.</bio> 

<class>my_stalker</class> 
<community>stalker</community> 
<terrain_sect>stalker_terrain</terrain_sect> 
<snd_config>characters_voice\human_03\stalker\</snd_config> 

<rank>65</rank> 
<reputation>0</reputation> 

<visual>actors\stalker_neutral\stalker_neutral_2_mask</visual> 
<supplies> 
[spawn]
wpn_beretta = 1 \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" 
<actor_dialog>actor_break_dialog</actor_dialog> 
</specific_character> 



</xml>



нпцпрофиль
<character id="l11_pripyat_trader"> 
<class>l11_pripyat_trader</class> 
</character>




спаунсекшонсл11припять
[l11_pripyat_trader]:stalker 
$spawn = "respawn\l11_pripyat_trader" 
character_profile = l11_pripyat_trader 
spec_rank = master 
community = stalker 
custom_data = scripts\l11_pripyat\Oleg_Gusarov_logic.ltx 



логика
[logic] 
active = remark1 
danger = danger_ignore 

[danger_ignore] 
ignore_distance = 5 

[remark1] 
no_move = true 



л11_олег_гусаров (ИНГЛИШ)
function start_add_spawn()--\\ 
--\\ 
-- 
spawn_l11_oleg_gusarov() 
end 

function spawn_l11_oleg_gusarov_one() 
local x= -109.224472
local y= -2.230958 
local z= 6.826965
local level_vertex= 11884 
local game_vertex_id= 1323
alife():create("l11_pripyat_trader",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 




бинд_сталкирь
function actor_binder:update(delta)
    object_binder.update(self, delta)

    if string.find(command_line(), "-designer") then
        return
    end

    if self.already_jumped==false and jump_level.need_jump==true and (device().frame > self.spawn_frame+2000) then
        jump_level.try_to_jump()
        self.already_jumped = true
        return
    end
if l11_oleg_gusarov.load_variable("spawn_l11_oleg_gusarov",false)==false then 
l11_oleg_gusarov.start_add_spawn() 
l11_oleg_gusarov.save_variable("spawn_l11_oleg_gusarov",true) 
end

 

 

Выводы модмейкера:

1)Вылетает - это хорошо. Значит, работает :)

2) Если хочешь сделать что-то хорошо, делай сам!

3) Если падёшь духом, падёт и мод.

4) Он живой... :o

SibireaStalker, летающие аномалии летают по путям, а не с помощью логики, причем имеют особый класс - zone_torrid. Для того там в конфиге и anm.

А по смарт-террейнам есть же статья на вики.

Есть ряд вопросов:

1) Каким образом можно убрать спавн бандитов на складовске? Утром, сталкеры и бандиты дружно выбегают из люка складовска и отбежав некоторое расстояние, начинают также дружно друг по другу стрелять...

 

2) Как убрать аларм при стрельбе по бандитам поблизости складовска? Стрельнув с палубы по какому-нибудь бандиту, включается аларм "складовск атакован, мы задраиваем люки". И все кому не лень начинают по мне стрелять.

 

3) Где подкрутить логику (думаю, дело в ней) у нпц, чтобы при стрельбе по ним с расстояния, они не игнорировали?

Пример: идет отряд бандитов, а по ним издалека стреляют сталкеры. Бандиты игнорируют попадания и идут дальше, пока их не перестреляют.

 

Правила форума, 3.6. Предупреждение.

ЛС закрыта.

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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