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

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


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

Народ, а кто знает, как сделать ANM файл движения камеры над каким-либо местом локации,

такие как в папке scenario_cam. Хочу сделать сценку застолья на пенечке с анимациями выпивки

и закуски по типу клипа с отключением UI. В левел-эдиторе нашел какой-то редактор ANM - но разобраться

не могу, записывает всег один кадр.

 

 

MustaNG, вот посмотри - здесь при разговоре будет держать оружие в руках

[logic@val_freedom_trader]

active = walker@freedom ; активируем первую схему - патруль между двумя точками

suitable = {=check_npc_name(val_freedom_trader)} ; проверяем - наш ли этот чувак

prior = 100

on_hit = hit

on_death = death

 

 

[walker@freedom]

path_look = guard_1_look ;вейпоинты в way_zaton.ltx - куда смотрит

path_walk = guard_1_walk ;вейпоинты в way_zaton.ltx - где ходит

def_state_standing = guard_na ;анимация с оружием в руках

meet = meet ;разговаривать будет

 

[meet]

close_snd_hello = zat_a2_stalker_barmen_greeting ; озвучка - приветствие, без звука - nil

close_snd_bye = zat_a2_stalker_barmen_farewell ; озвучка - прощание, без звука - nil

close_anim = guard_na ;при разговоре оружие в руках

close_victim = actor

far_anim = hello ;анимация на расстоянии far_distance

far_victim = actor

close_distance = 3

far_distance = 5

close_snd_distance = 2 ;расстояние отыгрывания озвучки приветствия-прощания при подходе-отходе

abuse = false

use = 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

 

[hit]

 

[death]

 

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

Люди, кто знает, как сделать подствольный дробовик? :unsure:

Ну чтоб дробь вылетала, а не балончик подствольной гранаты.

Заранее благодарен. :good:

Изменено пользователем stalker.odinochka

Срочно ищу опытного скриптёра и модельера, нужна помощь в создании мода.

Готовность мода Новый мир 85%.

Мод Огнемёт для ЗП v1.0 Скачать

 

 

Гость БолотныйДоктор

Вот бы кто помог... Создавал смарты на новой локации и все получилось кроме того что в определенном месте через каждые несколько секунды спавнются копии смартов и при том бесконечное количество раз.... Помогите как исправить...

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

Наёмники - лучшие убивцы в Зоне!

По заказам обращаться на сайт www.vsehporeshimzadengi.org

stalker.odinochk..., лучше пропиши патрон дробовика стволу и в энциклопедию - типа ствол

рассверлен умельцами под охотничий патрон и имеет в наличии ствольные вкладыши под различные патроны,

чем гранатомет уродовать.

 

БолотныйДоктор, подробно опиши метод создания, на кофейной гуще трудно гадать.

nuklia То то и оно, что стволу легко прописать дробь.

А я хочу сделать именно подствольный дробовик.

Срочно ищу опытного скриптёра и модельера, нужна помощь в создании мода.

Готовность мода Новый мир 85%.

Мод Огнемёт для ЗП v1.0 Скачать

 

 

Серый Волк, hex редактор в руки и в перёд!

Нет такой утилиты... Библиотеки движка - скрытая ф****.

Как лечится этот вылет? Вылетает при взятии нового оружия в руки.

Expression    : error handler is invoked!
Function      : handler_base
File          : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
Line          : 764
Description   : application is aborting

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

Изменено пользователем goroskob
Моё новое оружие здесь.

Гость БолотныйДоктор

andref

function level_changer()

if not has_alife_info("info_new_level") then

put_spots()

db.actor:give_info_portion("info_new_level")

end

end

 

function put_spots()

for i=1,65534 do

local obj = alife():object(i)

if obj then

if obj:name() == "Название 1-го левел чэнджера" then

level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 1")

elseif obj:name() == "Название 2-го левел чэнджера" then

level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 2")

elseif .....

end

end

end

С обозначением переходов получилось вот только в этой функции упущен один завершающий оператор END, а также допущена ошибка в условии "elseif ....." должно быть "elseif твоё условие then" или просто "else".

А так большое спасибо)

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

 

nuklia создавал смарты так же как и ты в твоем туторе про созданию смартов...

Изменено пользователем БолотныйДоктор

Что-то я не понял - что плодится, смарт-террейн не может - он в алл.спавне создается.

А если сквады(неписи) - то может что в респавне не то или скрипты респавна изменены.

Гость БолотныйДоктор

копии моих всех моих новых сквадов помимо положенных мест спавнятся все ещё в одной точке притом очень часто буквально каждые 5 секунд... И все эти копии бегут на свои положенные места хотя там уже оригеналы есть....

Изменено пользователем БолотныйДоктор

Похоже, что эксклюзивные сквады (у которых прописаны таргет_смарт и спавн_поинт) записаны

в респавн. Просмотри, есть-ли подобные сквады в файлах configs/scripts/..../smart/ в секциях респавна.

Респавнить нужно только сквады симулянтов из squad_descr.ltx , а эксклюзивные сквады спавнить

путем записи их в секцию [start_position_...] в simulation.ltx или функцией сreate_squad в логике

рестриктора(или еще чего) к примеру zat_b14_spawner.ltx .

А вот почему такой частый респавн - наверное в скриптах где-то частота респавна изменена.

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

В респавнах сквады симулянтов - это правильно, но зачем респавнить в каждом смарте - это будет

бесконечная бойня и горы трупов. Лучше убрать большую часть респавнов, оставить немного, да и еще

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

Посмотри стандартные смарты того-же Затона - там большая часть пустых.

Подскажет кто? ситуация:

Вылет происходит изредка, выдает "Submit bug", на этом зависает и всё (но лог не выдает).

Изменено пользователем Серый Волк
Гость БолотныйДоктор
nuklia Можешь по подробнее пожалуйста) на примере) Пожалуйста буду очень благодарен)

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

Вот нашел свою старую статью:

Спавн эксклюзивных сквадов

(буду делать для Затона - иначе запутаемся в террейнах и путях):

Создадим сквад из имеющегося уже специфик характера первого попавшегося

к примеру долговца - sim_default_duty_4, определим его в ближайший от начала игры

смарт-террейн - это zat_a1 , а так-же определим точку его спавна из этого смарта -

zat_a1_guard_1_walk (смотрим way_zaton.ltx) - точка двойная, будет ходить по ней

и смотреть в точки zat_a1_guard_1_look

; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.

[zat_bolvan_1_squad]:online_offline_group

faction = stalker

npc = sim_default_duty_4

target_smart = zat_a1

spawn_point = zat_a1_guard_1_walk

story_id = zat_bolvan_1_squad

 

 

Теперь добавим этот сквад в стартовую позицию Затона

;;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;;

 

[start_position_zaton]

zat_bolvan_1_squad = zat_a1

 

 

и в уникальные сквады Затона

;--------- ZATON UNIQUE SQUADS --------

[zat_bolvan_1_squad]:default_squad

sim_avail = false

 

 

Все - сквад готов, команда на спавн получена, начинайте новую игру и

встретите его у камней. У нас получился одиночный дефолтный сквад

 

Теперь пойдем дальше - создадим настоящего эксклюзива с индивидуальной

логикой. Прежде всего создаем специфик характер:

<specific_character id="val_freedom_trader" team_default = "1">

<name>val_freedom_trader_name</name>

<icon>ui_npc_u_freedom_2_mask</icon>

<map_icon x="1" y="0"></map_icon>

<bio></bio>

 

<class>val_freedom_trader</class>

<community>freedom</community> <terrain_sect>stalker_terrain</terrain_sect>

 

<rank>450</rank>

<reputation>0</reputation>

<money min="10000" max="27500" infinitive="1"/>

<visual>actors\stalker_freedom\stalker_freedom_2_mask</visual>

<snd_config>characters_voice\human_01\freedom\</snd_config>

<supplies>

[spawn] \n

device_torch \n

wpn_lr300 \n

ammo_5.56x45_ss190 = 5 \n

wpn_hpsa \n

ammo_9x19_fmj = 5 \n

grenade_f1 = 10 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

</supplies>

#include "gameplay\character_criticals_1.xml"

<start_dialog>zat_a2_stalker_barmen_start_dialog</start_dialog>

 

<actor_dialog>zat_a2_linker_b14_quest_init</actor_dialog>

<actor_dialog>zat_a2_linker_b14_quest_done</actor_dialog>

<actor_dialog>zat_a2_linker_b14_quest_strange_item</actor_dialog>

<actor_dialog>zat_a2_linker_b14_quest_sell_artefact</actor_dialog>

<actor_dialog>zat_a2_linker_b14_quest_wrong</actor_dialog>

<actor_dialog>zat_b57_barmen_about_bloodsucker_lair_dialog</actor_dialog>

<actor_dialog>zat_b57_barman_reward_dialog</actor_dialog>

<actor_dialog>zat_b22_barmen_about_vampire_actor1</actor_dialog>

<actor_dialog>zat_b22_barmen_about_vampire_actor2</actor_dialog>

<actor_dialog>zat_b22_barmen_about_vampire_actor3</actor_dialog>

<actor_dialog>zat_b22_barmen_about_vampire_actor4</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b7_actor_start</actor_dialog>

<actor_dialog>zat_b22_barmen_b5_daring_quest_stalkers</actor_dialog>

<actor_dialog>zat_b22_barmen_about_after_quest_b5_dealer_actor4</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_about_new_detector</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_about_compass</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_compass_give_dialog</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_compass_double_dialog</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_compass_revert_dialog</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_take_business_actor_dialog</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_army</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_about_sci_guards</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_about_sci_helpers</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_about_halfart_jup_b1</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_oasis_art_sell</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b52_about_snag</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b52_about_nimble</actor_dialog>

<actor_dialog>zat_a2_linker_b29_actor_info</actor_dialog>

<actor_dialog>zat_a2_linker_b29_actor_get_adv_task</actor_dialog>

<actor_dialog>zat_a2_linker_b29_actor_give_adv_task</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_b30_take_money_actor_dialog</actor_dialog>

<actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog>

 

<actor_dialog>actor_break_dialog</actor_dialog>

 

</specific_character>

 

 

<character id="val_freedom_trader">

<class>val_freedom_trader</class>

</character>

 

 

;-------------------------наш свободовец------------------

[val_freedom_trader]:stalker

$spawn = "respawn\val_freedom_trader"

character_profile = val_freedom_trader

spec_rank = regular

community = freedom

story_id = val_freedom_trader

 

 

Создаем сквад

; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.

[val_freedom_trader_squad]:online_offline_group ; наш свободовец

faction = freedom

npc = val_freedom_trader

target_smart = zat_a1

spawn_point = zat_a1_walker_1_walk

story_id = val_freedom_trader_squad

 

 

;;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;;

 

[start_position_zaton]

val_freedom_trader_squad = zat_a1

 

 

;--------- ZATON UNIQUE SQUADS --------

[val_freedom_trader_squad]:default_squad

sim_avail = false

 

 

Пропишем в смарт-террейне путь к файлу логики чувака

[smart_terrain];zat_a1

squad_id = 54

max_population = 3

 

[exclusive] ; пропишем нашего свободовца в эксклюзивы

val_freedom_trader = zaton\val_freedom_trader.ltx ; где лежит файл логики

 

 

И в заключение сам файл логики

[logic@val_freedom_trader]

active = walker@freedom ; активируем первую схему - патруль между двумя точками

suitable = {=check_npc_name(val_freedom_trader)} ; проверяем - наш ли этот чувак

prior = 100

on_hit = hit

on_death = death

 

 

[walker@freedom]

path_look = guard_1_look ;вейпоинты в way_zaton.ltx - куда смотрит

path_walk = guard_1_walk ;вейпоинты в way_zaton.ltx - где ходит

def_state_standing = guard_na

on_actor_dist_le_nvis = 10 | walker@freedom_1 ;дистанция до игрока <= 10 без проверки на видимость | переход на др схему

;on_info = {=actor_has_item(detector_advanced)} %=teleport_npc(esc_a1_freedom_guard_1_walk)%

meet = no_meet

 

[walker@freedom_1]:walker@freedom ; производная от первой схемы с изменениями

path_walk = guard_2_walk

path_look = guard_2_look

on_actor_dist_ge_nvis = 10 | walker@freedom ;если дистанция до игрока > 8 без проверки на видимость | возврат в первую схему

meet = meet

 

[meet]

close_snd_hello = zat_a2_stalker_barmen_greeting ; озвучка - приветствие, без звука - nil

close_snd_bye = zat_a2_stalker_barmen_farewell ; озвучка - прощание, без звука - 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 = {=actor_has_item(detector_advanced)} true, false ;условие диалога -есть детектор"медведь" -говорит

use = 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

 

[hit]

 

[death]

 

 

Сами понимаете, что если сразу двоих сделаете - передерутся и

долговец скорее всего победит - надо кому-нибудь группировку сменить.

 

Создание эксклюзивного сквада из трех человек.

Сперва создадим три специфик-характера для нашего сквада;

<specific_character id="zat_a1_stalker_cop" team_default="1">

<name>st_zat_a1_stalker_cop_name</name>

<icon>ui_inGame2_Gluhar</icon>

<map_icon x="1" y="0">

</map_icon>

<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

<class>zat_a1_stalker_cop</class>

<community>stalker</community>

<terrain_sect>stalker_terrain</terrain_sect>

<snd_config>characters_voice\human_02\stalker\</snd_config>

<rank>55</rank>

<reputation>0</reputation>

<money min="8000" max="8000" infinitive="0" />

<visual>actors\stalker_neutral\stalker_neutral_2_face_2</visual>

 

<supplies>

[spawn] \n

wpn_ak74u \n

ammo_5.45x39_fmj = 1 \n

wpn_pm \n

ammo_9x18_pmm = 1 \n

 

#include "gameplay\character_items_nd.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs_2.xml"

</supplies>

#include "gameplay\character_criticals_4.xml"

 

<start_dialog>zat_b38_stalker_cop_start_dialog</start_dialog>

 

<actor_dialog>zat_a2_stalker_barmen_b7_actor_start</actor_dialog>

<actor_dialog>zat_b38_stalker_cop_task_dialog</actor_dialog>

<actor_dialog>zat_b38_cop_about_himself_dialog</actor_dialog>

<actor_dialog>zat_b38_stalker_cop_b52_about_nimble</actor_dialog>

<actor_dialog>zat_b38_stalker_cop_b52_about_snag</actor_dialog>

<actor_dialog>zat_b38_stalker_cop_about_sci_guards</actor_dialog>

<actor_dialog>zat_b38_stalker_cop_about_sci_helpers</actor_dialog>

 

<actor_dialog>actor_break_dialog</actor_dialog>

 

</specific_character>

 

<!---------------------------------------------------------------------------------------------------->

<specific_character id="zat_a1_helper_1" team_default="1">

<name>zat_a1_helper_1_name</name>

<icon>ui_inGame2_neutral_2</icon>

<map_icon x="1" y="0">

</map_icon>

<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

<class>zat_a1_helper_1</class>

<community>stalker</community>

<terrain_sect>stalker_terrain</terrain_sect>

<snd_config>characters_voice\human_03\stalker\</snd_config>

 

<rank>35</rank>

<reputation>0</reputation>

 

<visual>actors\stalker_neutral\stalker_neutral_2</visual>

<supplies>

 

[spawn] \n

wpn_binoc \n

detector_advanced = 1 \n

device_torch \n

wpn_mp5 \n

wpn_beretta = 1 \n

ammo_9x19_fmj = 1 \n

af_fireball = 1 \n

 

</supplies>

<start_dialog>zat_b53_artefact_hunter_1_gathering_artefacts</start_dialog>

#include "gameplay\character_criticals_4.xml"

 

#include "gameplay\character_dialogs_no_guide.xml"

</specific_character>

 

<!--------------------------------------------------------------------------------------------------->

<specific_character id="zat_a1_helper_2" team_default="1">

<name>zat_a1_helper_2_name</name>

<icon>ui_inGame2_neutral_1</icon>

<map_icon x="1" y="0">

</map_icon>

<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

<class>zat_a1_helper_2</class>

<community>stalker</community>

<terrain_sect>stalker_terrain</terrain_sect>

<snd_config>characters_voice\human_02\stalker\</snd_config>

 

<rank>20</rank>

<reputation>0</reputation>

 

<visual>actors\stalker_neutral\stalker_neutral_1</visual>

<supplies>

 

[spawn] \n

wpn_toz34 \n

ammo_12x70_buck = 1 \n

wpn_pm \n

ammo_9x19_fmj = 1 \n

medkit = 1 \n

 

#include "gameplay\character_items_nd.xml"

#include "gameplay\character_food.xml"

</supplies>

 

<start_dialog>zat_b53_artefact_hunter_2_gathering_artefacts</start_dialog>

 

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

</specific_character>

 

<!----------------------------------------------------------------------------------------------------->

 

 

<character id="zat_a1_stalker_cop">

<class>zat_a1_stalker_cop</class>

</character>

 

<character id="zat_a1_helper_1">

<class>zat_a1_helper_1</class>

</character>

 

<character id="zat_a1_helper_2">

<class>zat_a1_helper_2</class>

</character>

 

 

;------------------трое из ларца---------------------

[zat_a1_stalker_cop]:stalker

$spawn = "respawn\zat_a1_stalker_cop"

character_profile = zat_a1_stalker_cop

spec_rank = regular

community = stalker

story_id = zat_a1_stalker_cop

 

[zat_a1_helper_1]:stalker

$spawn = "respawn\zat_a1_helper_1"

character_profile = zat_a1_helper_1

spec_rank = regular

community = stalker

story_id = zat_a1_helper_1

 

[zat_a1_helper_2]:stalker

$spawn = "respawn\zat_a1_helper_2"

character_profile = zat_a1_helper_2

spec_rank = regular

community = stalker

story_id = zat_a1_helper_2

 

 

Создаем сквад

; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.

[zat_a1_brigada_squad]:online_offline_group

faction = stalker

target_smart = zat_a1

spawn_point = zat_a1_walker_3_walk

npc = zat_a1_stalker_cop, zat_a1_helper_1, zat_a1_helper_2

 

 

;--------- ZATON UNIQUE SQUADS --------

[zat_a1_brigada_squad]:default_squad

sim_avail = false

 

 

А теперь внимание! Мы не будем прописывать наш сквад в стартовую позицию Затона

т.к. спавнить будем функцией "create_squad" которую поместим в логику спейс-рестриктора.

Это будет альтернативой всеми нами любимого скрипта alife():create(".....")

Для этого создадим спейс-рестриктор в олл.спавне

[20000]

; cse_abstract properties

section_name = space_restrictor

name = zat_a1_spawner

position = 244.724090576172,18.1142883300781,530.155517578125

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 292

distance = 0

level_vertex_id = 1385170

object_flags = 0xffffff3e

custom_data = <<END

[logic]

cfg = scripts\zaton\zat_a1_spawner.ltx

END

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 1

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

 

Секцию можно воткнуть и в начало файла. Место расположения рестриктора

чуть вперед от начальной точки спавна актора в начале игры между

наклоненным сухим деревом и камнем, чтобы сработала логика, надо

пройти между ними.

Создаем логику рестриктора:

[logic]

active = sr_idle@spawn_stalker

 

[sr_idle@spawn_stalker]

on_info = {=actor_in_zone(zat_a1_spawner)} sr_idle@item_spawn %=create_squad(zat_a1_brigada_squad:zat_a1)%

 

[sr_idle@item_spawn]

on_game_timer = 150 | sr_idle@nil %=spawn_object(disel_generator:zat_a1_walker_4_walk)%

 

[sr_idle@nil]

 

 

В логику рестриктора добавил еще функцию "spawn_object" для спавна предметов

(кому-то на голову свалится дизель-генератор через 15 секунд после спавна сквада)

Так-же обратите внимание на то что в логике рестриктора можно указать или смарт-террейн

для спавна(zat_a1_brigada_squad:zat_a1) или точку пути (disel_generator:zat_a1_walker_4_walk).

 

Пока все. Собираем - запускаем - наблюдаем.

Логику чувакам пока не подключал - делается так-же как и для одиночного эксклюзива.

Но пока стоит обратить внимание на то, что и без логики, если у командира сквада

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

для простых сцен.

 

 

Смарт-каверы в ЗП.

Применяются в основном в двух случаях:

1.- вместо точек путей в логике эксклюзивов.

2.- для кампов - посиделки у костра.

Начнем с посиделок.Добавим в олл.спавн в зону нужного нам смарт-террейна

несколько смарт-каверов и камп-зону

[20001]

; cse_abstract properties

section_name = camp_zone

name = zat_a1_camp

position = 241.788421630859,14.009066619873,467.594360351563

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

object_flags = 0xffffff3e

custom_data = <<END

[camp]

cfg = scripts\camp.ltx

END

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 5.84479999542236

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

 

[20002]

; cse_abstract properties

section_name = smart_cover

name = zat_a1_animpoint_1

position = 241.788421630859,14.009066619873,466.594360351563

direction = 0,3.13,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

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

 

 

[20003]

; cse_abstract properties

section_name = smart_cover

name = zat_a1_animpoint_2

position = 240.788421630859,14.009066619873,468.594360351563

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

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

 

 

[20004]

; cse_abstract properties

section_name = smart_cover

name = zat_a1_animpoint_3

position = 242.788421630859,14.009066619873,468.594360351563

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

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

 

 

Все - лагерь для посиделок готов, собираем все с предыдущими наработками.

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

слишком скучные посиделки - не будут травить анекдоты и прочее.

За направление взгляда отвечает дирекшн смарт-кавера.

 

p.s. Вот еще кое-что нашел:

Создание места для сна в ЗП на добавленных локациях.

Разместим секцию спейс-рестриктора в олл.спавне(привязка имени к

определенному смарт-террейну(esc_b1) не обязательна но желательна для ясности)

[15001]

; cse_abstract properties

section_name = space_restrictor

name = bar_dolg_bunker_sr_sleep

position = 219.5344470977783,-5.39998846054077,123.680816650391

direction = 0,0,0

version = 0x7c

script_version = 8

 

; cse_alife_object properties

game_vertex_id = 2746

distance = 0

level_vertex_id = 54650

object_flags = 0xffffff3e

custom_data = <<END

[story_object]

story_id = bar_dolg_bunker_sr_sleep_id

 

[logic]

cfg = scripts\sr_sleep.ltx

END

 

; cse_shape properties

shapes = shape0

shape0:type = box

shape0:axis_x = 5.02119588851929,0,0

shape0:axis_y = 0,5.0482006072998,0

shape0:axis_z = 0,0,2.23479747772217

shape0:offset = 0,0,0

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

 

Регистрируем наше койкоместо в скриптах.

;стр.-288

local sleep_zones_tbl =

{

{target = "marsh_baza_sr_sleep_id", hint = "st_ui_pda_sleep_place"},

{target = "marsh_baza_sr_sleep_kazarm_id", hint = "st_ui_pda_sleep_place"},

{target = "zat_a2_sr_sleep_id", hint = "st_ui_pda_sleep_place"},

{target = "jup_a6_sr_sleep_id", hint = "st_ui_pda_sleep_place"},

{target = "pri_a16_sr_sleep_id", hint = "st_ui_pda_sleep_place"},

{target = "esc_b1_sr_sleep_id", hint = "st_ui_pda_sleep_place"},

{target = "bar_dolg_bunker_sr_sleep_id", hint = "st_ui_pda_sleep_place"},

}

 

function fill_primary_objects()

 

 

;стр.-2846

function sleep(actor, npc)

local sleep_zones = {

"zat_a2_sr_sleep",

"jup_a6_sr_sleep",

"pri_a16_sr_sleep",

"esc_b1_sr_sleep",

"marsh_baza_sr_sleep",

"marsh_baza_sr_sleep_kazarm",

"bar_dolg_bunker_sr_sleep",

"actor_surge_hide_2"

}

 

for k,v in pairs(sleep_zones) do

 

 

 

Создание укрытия от выброса - surge_hide :

Пропишем нужному нам смарт-терейну укрытие

[esc_sim_13]:default

surge = 1 ; прописали возможность укрытия

territory = 1

sim_avail = true

 

 

Регистрируем наше укрытие

;escape

esc_surge_hide_sim_13

 

 

Зарегистрируем нашу локацию в скриптах

--'******************************************************

--'* Реестр смарт-террейнов. Игровое поле симуляции.

--'******************************************************

 

--' В этом ltx хранятся дескрипторы сквадов.

squad_ltx = system_ini()

setting_ini = ini_file("misc\\simulation.ltx")

 

local group_id_by_levels = {zaton = 1,

pripyat = 2,

jupiter = 3,

labx8 = 4,

jupiter_underground = 5,

escape = 6}

 

 

строка 1196

function surge_stats()

local sim_obj_registry = simulation_objects.get_sim_obj_registry().objects

local sim_squads = {

["zaton"] = {},

["jupiter"] = {},

["pripyat"] = {},

["escape"] = {}

}

local sim_smarts = {

["zaton"] = {},

["jupiter"] = {},

["pripyat"] = {},

["escape"] = {}

}

строка 1241

print_smarts_and_squads_by_level("zaton")

print_smarts_and_squads_by_level("jupiter")

print_smarts_and_squads_by_level("pripyat")

print_smarts_and_squads_by_level("escape")

 

 

строка 38

self.levels_respawn = {zaton = false, jupiter = false, pripyat = false, escape = false}

строка 194

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_after_surge")

elseif(level.name()=="jupiter") then

xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_after_surge")

elseif not has_alife_info("pri_b305_fifth_cam_end") then

xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_after_surge")

elseif(level.name()=="escape") then

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_after_surge")

строка 249

if(level.name()=="zaton") then

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_2")

elseif(level.name()=="jupiter") then

xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_phase_2")

elseif not has_alife_info("pri_b305_fifth_cam_end") then

xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_surge_phase_2")

elseif(level.name()=="escape") then

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_2")

строка 273

if(level.name()=="zaton") then

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_1")

elseif(level.name()=="jupiter") then

xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_phase_1")

elseif not has_alife_info("pri_b305_fifth_cam_end") then

xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_surge_phase_1")

elseif(level.name()=="escape") then

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_1")

строка 329

self.levels_respawn = {zaton = true, jupiter = true, pripyat = true, escape = true}

строка 352

self.levels_respawn = {zaton = true, jupiter = true, pripyat = true, escape = true}

строка 638

packet:w_bool(self.levels_respawn.zaton)

packet:w_bool(self.levels_respawn.jupiter)

packet:w_bool(self.levels_respawn.pripyat)

packet:w_bool(self.levels_respawn.escape)

строка 665

self.levels_respawn.zaton = packet:r_bool()

self.levels_respawn.jupiter = packet:r_bool()

self.levels_respawn.pripyat = packet:r_bool()

self.levels_respawn.escape = packet:r_bool()

 

 

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

[xxxx]

; cse_abstract properties

section_name = space_restrictor

name = esc_surge_hide_sim_13

position = -11.2279901504517,2.46390247344971,57.3380393981934

direction = 0,0,0

version = 0x7c

script_version = 8

 

; cse_alife_object properties

game_vertex_id = 934

distance = 0

level_vertex_id = 3366

object_flags = 0xffffff3e

 

; cse_shape properties

shapes = shape0

shape0:type = box

shape0:axis_x = 3.27519989013672,0,0

shape0:axis_y = 0,5.44060039520264,0

shape0:axis_z = 0,0,7.41159915924072

shape0:offset = 0,0,0

 

; cse_alife_space_restrictor properties

restrictor_type = 0

 

 

Создаем точки пути по колличеству мест в укрытии

[esc_sim_13_surge_1_look]

points = p0

p0:name = name00

p0:position = -11.0934257507324,2.45600557327271,56.0012626647949

p0:game_vertex_id = 1051

p0:level_vertex_id = 286804

 

 

[esc_sim_13_surge_1_walk]

points = p0

p0:name = name00

p0:position = -12.587254524231,2.45982217788696,54.6062545776367

p0:game_vertex_id = 1051

p0:level_vertex_id = 284937

 

 

[esc_sim_13_surge_2_look]

points = p0

p0:name = name00

p0:position = -11.7026491165161,2.45731353759766,55.4043731689453

p0:game_vertex_id = 1051

p0:level_vertex_id = 285862

 

 

[esc_sim_13_surge_2_walk]

points = p0

p0:name = name00

p0:position = -11.7085494995117,2.45401954650879,54.6906051635742

p0:game_vertex_id = 1051

p0:level_vertex_id = 285861

 

 

[esc_sim_13_surge_3_look]

points = p0

p0:name = name00

p0:position = -11.700403213501,2.46191310882568,55.9261016845703

p0:game_vertex_id = 1051

p0:level_vertex_id = 285863

 

 

[esc_sim_13_surge_3_walk]

points = p0

p0:name = name00

p0:position = -10.5211238861084,2.45401906967163,54.5706977844238

p0:game_vertex_id = 1051

p0:level_vertex_id = 287736

 

 

[esc_sim_13_surge_4_look]

points = p0

p0:name = name00

p0:position = -12.1378507614136,2.46710777282715,55.9775772094727

p0:game_vertex_id = 1051

p0:level_vertex_id = 285863

 

 

[esc_sim_13_surge_4_walk]

points = p0

p0:name = name00

p0:position = -12.5659475326538,2.4704270362854,55.9364585876465

p0:game_vertex_id = 1051

p0:level_vertex_id = 284939

 

 

[esc_sim_13_surge_5_look]

points = p0

p0:name = name00

p0:position = -11.3268537521362,2.45915699005127,56.0716171264648

p0:game_vertex_id = 1051

p0:level_vertex_id = 286804

 

 

[esc_sim_13_surge_5_walk]

points = p0

p0:name = name00

p0:position = -11.4233283996582,2.45504951477051,55.4901466369629

p0:game_vertex_id = 1051

p0:level_vertex_id = 286803

 

 

[esc_sim_13_surge_6_look]

points = p0

p0:name = name00

p0:position = -11.951548576355,2.46743059158325,56.5034790039063

p0:game_vertex_id = 1051

p0:level_vertex_id = 285864

 

 

[esc_sim_13_surge_6_walk]

points = p0

p0:name = name00

p0:position = -10.5399560928345,2.45401906967163,55.9832763671875

p0:game_vertex_id = 1051

p0:level_vertex_id = 287738

 

 

[esc_sim_13_surge_7_look]

points = p0

p0:name = name00

p0:position = -11.060601234436,2.46146583557129,56.6575355529785

p0:game_vertex_id = 1051

p0:level_vertex_id = 286805

 

 

[esc_sim_13_surge_7_walk]

points = p0

p0:name = name00

p0:position = -12.5727767944336,2.47284889221191,57.334114074707

p0:game_vertex_id = 1051

p0:level_vertex_id = 284941

 

 

[esc_sim_13_surge_8_look]

points = p0

p0:name = name00

p0:position = -11.7709636688232,2.46654939651489,57.2202682495117

p0:game_vertex_id = 1051

p0:level_vertex_id = 285865

 

 

[esc_sim_13_surge_8_walk]

points = p0

p0:name = name00

p0:position = -11.6660528182983,2.4660382270813,56.7951736450195

p0:game_vertex_id = 1051

p0:level_vertex_id = 285864

 

 

[esc_sim_13_surge_9_look]

points = p0

p0:name = name00

p0:position = -11.4014568328857,2.4647479057312,57.3022918701172

p0:game_vertex_id = 1051

p0:level_vertex_id = 286806

 

 

[esc_sim_13_surge_9_walk]

points = p0

p0:name = name00

p0:position = -10.5875377655029,2.46077871322632,57.3240737915039

p0:game_vertex_id = 1051

p0:level_vertex_id = 287740

 

 

[esc_sim_13_surge_10_look]

points = p0

p0:name = name00

p0:position = -12.009449005127,2.47024631500244,58.7685432434082

p0:game_vertex_id = 1051

p0:level_vertex_id = 285867

 

 

[esc_sim_13_surge_10_walk]

points = p0

p0:name = name00

p0:position = -12.5359506607056,2.47053003311157,58.6904754638672

p0:game_vertex_id = 1051

p0:level_vertex_id = 284943

 

 

[esc_sim_13_surge_11_look]

points = p0

p0:name = name00

p0:position = -11.6696643829346,2.47010707855225,58.7928047180176

p0:game_vertex_id = 1051

p0:level_vertex_id = 285867

 

 

[esc_sim_13_surge_11_walk]

points = p0

p0:name = name00

p0:position = -11.7617807388306,2.47143888473511,58.0255508422852

p0:game_vertex_id = 1051

p0:level_vertex_id = 285866

 

 

[esc_sim_13_surge_12_look]

points = p0

p0:name = name00

p0:position = -11.1556959152222,2.46973323822021,58.9260101318359

p0:game_vertex_id = 1051

p0:level_vertex_id = 286808

 

 

[esc_sim_13_surge_12_walk]

points = p0

p0:name = name00

p0:position = -10.5822420120239,2.46985769271851,58.7564964294434

p0:game_vertex_id = 1051

p0:level_vertex_id = 287742

 

 

Изменено пользователем nuklia
Гость БолотныйДоктор

Да вроде все так делаю ну из одной точки у меня все равно лезут копии сквадов и получется месиво большое :wacko2:

Изменено пользователем БолотныйДоктор

Попробуй удалить все секции респавнов во всех смартах в тех файлах, что выкладывал - с твоими

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

то нет до работ в гулагах дойти. Да еще и тормозит из-за столпотворения.

Так не стоит заселять локации, не получится мало-мальский сюжетец создать. Заселяй эксклюзивными

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

Кстати у меня тоже на кордоне половина спавнится в тоннеле возле блокпоста, хотя им прописаны

конкретные точки спавна - почему так происходит, я так и не понял, потому некоторых ответственных

товарищей спавнил через олл.спавн.

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

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

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

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

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

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

Войти

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

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

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