Перейти к содержимому



Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5578

#2121   nuklia

nuklia
  • Группа: Опытные
  • Сообщений: 337
  • Регистрация: 18.12.2009
  • Пользователь: 15090

Отправлено 10 09 2010 - 09:01

Народ, а кто знает, как сделать ANM файл движения камеры над каким-либо местом локации,
такие как в папке scenario_cam. Хочу сделать сценку застолья на пенечке с анимациями выпивки
и закуски по типу клипа с отключением UI. В левел-эдиторе нашел какой-то редактор ANM - но разобраться
не могу, записывает всег один кадр.


MustaNG, вот посмотри - здесь при разговоре будет держать оружие в руках
[spoiler="логика"][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][/spoiler]

Сообщение отредактировал nuklia: 10 09 2010 - 16:15


#2122   stalker.odinochka

stalker.odinochka
  • С наступающим!

  • Группа: Пользователи
  • Сообщений: 131
  • Регистрация: 07.07.2010
  • Пользователь: 17966

Отправлено 10 09 2010 - 15:59

Люди, кто знает, как сделать подствольный дробовик? unsure.gif
Ну чтоб дробь вылетала, а не балончик подствольной гранаты.
Заранее благодарен. good.gif

Сообщение отредактировал stalker.odinochka: 10 09 2010 - 16:00


#2123 Гость_БолотныйДоктор_*

Гость_БолотныйДоктор_*
  • Группа: Гости

Отправлено 10 09 2010 - 17:46

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

#2124   Z.I.R.D.

Z.I.R.D.
  • Группа: Проверенные
  • Сообщений: 91
  • Регистрация: 19.06.2008
  • Пользователь: 3337

Отправлено 11 09 2010 - 02:18

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

#2125   nuklia

nuklia
  • Группа: Опытные
  • Сообщений: 337
  • Регистрация: 18.12.2009
  • Пользователь: 15090

Отправлено 11 09 2010 - 13:44

stalker.odinochk..., лучше пропиши патрон дробовика стволу и в энциклопедию - типа ствол
рассверлен умельцами под охотничий патрон и имеет в наличии ствольные вкладыши под различные патроны,
чем гранатомет уродовать.

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

#2126   stalker.odinochka

stalker.odinochka
  • С наступающим!

  • Группа: Пользователи
  • Сообщений: 131
  • Регистрация: 07.07.2010
  • Пользователь: 17966

Отправлено 11 09 2010 - 14:07

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

#2127   Серый Волк

Серый Волк
  • в процессе ЛА...

  • Группа: Жители
  • Сообщений: 581
  • Регистрация: 10.07.2010
  • Пользователь: 17968

Отправлено 11 09 2010 - 18:28

Подскажите, чем и как редактировать xrGame.dll ?

Сообщение отредактировал Серый Волк: 11 09 2010 - 18:29


#2128   DiXares

DiXares
  • Группа: Жители
  • Сообщений: 717
  • Регистрация: 07.11.2008
  • Пользователь: 5958

Отправлено 11 09 2010 - 19:04

Серый Волк, hex редактор в руки и в перёд!
Нет такой утилиты... Библиотеки движка - скрытая ф****.

#2129   goroskob

goroskob
  • Анархия - мать порядка

  • Группа: Жители
  • Сообщений: 651
  • Регистрация: 26.08.2009
  • Пользователь: 12654

Отправлено 11 09 2010 - 23:33

Как лечится этот вылет? Вылетает при взятии нового оружия в руки.
Expression    : error handler is invoked!
Function      : handler_base
File          : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
Line          : 764
Description   : application is aborting
Поиск выдал несколько подобных логов, но они были связаны с костюмами. На них внятного ответа не было.

Сообщение отредактировал goroskob: 11 09 2010 - 23:37


#2130 Гость_БолотныйДоктор_*

Гость_БолотныйДоктор_*
  • Группа: Гости

Отправлено 12 09 2010 - 09:12

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 создавал смарты так же как и ты в твоем туторе про созданию смартов...

Сообщение отредактировал БолотныйДоктор: 12 09 2010 - 11:51


#2131   nuklia

nuklia
  • Группа: Опытные
  • Сообщений: 337
  • Регистрация: 18.12.2009
  • Пользователь: 15090

Отправлено 12 09 2010 - 11:53

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

#2132 Гость_БолотныйДоктор_*

Гость_БолотныйДоктор_*
  • Группа: Гости

Отправлено 12 09 2010 - 14:17

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

Сообщение отредактировал БолотныйДоктор: 12 09 2010 - 14:18


#2133   nuklia

nuklia
  • Группа: Опытные
  • Сообщений: 337
  • Регистрация: 18.12.2009
  • Пользователь: 15090

Отправлено 12 09 2010 - 15:34

Похоже, что эксклюзивные сквады (у которых прописаны таргет_смарт и спавн_поинт) записаны
в респавн. Просмотри, есть-ли подобные сквады в файлах configs/scripts/..../smart/ в секциях респавна.
Респавнить нужно только сквады симулянтов из squad_descr.ltx , а эксклюзивные сквады спавнить
путем записи их в секцию [start_position_...] в simulation.ltx или функцией сreate_squad в логике
рестриктора(или еще чего) к примеру zat_b14_spawner.ltx .
А вот почему такой частый респавн - наверное в скриптах где-то частота респавна изменена.

Сообщение отредактировал nuklia: 12 09 2010 - 15:38


#2134 Гость_БолотныйДоктор_*

Гость_БолотныйДоктор_*
  • Группа: Гости

Отправлено 13 09 2010 - 14:35

nuklia глянь пожалуйста мою логику смартов http://narod.ru/disk.../smart.rar.html

#2135   nuklia

nuklia
  • Группа: Опытные
  • Сообщений: 337
  • Регистрация: 18.12.2009
  • Пользователь: 15090

Отправлено 13 09 2010 - 16:27

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

#2136   Серый Волк

Серый Волк
  • в процессе ЛА...

  • Группа: Жители
  • Сообщений: 581
  • Регистрация: 10.07.2010
  • Пользователь: 17968

Отправлено 13 09 2010 - 16:59

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

Сообщение отредактировал Серый Волк: 13 09 2010 - 17:01


#2137 Гость_БолотныйДоктор_*

Гость_БолотныйДоктор_*
  • Группа: Гости

Отправлено 13 09 2010 - 18:54

nuklia Можешь по подробнее пожалуйста) на примере) Пожалуйста буду очень благодарен)

#2138   nuklia

nuklia
  • Группа: Опытные
  • Сообщений: 337
  • Регистрация: 18.12.2009
  • Пользователь: 15090

Отправлено 14 09 2010 - 00:07

В этой теме вопросы создания сквадов тесно обсуждались в мае-июне.
Вот нашел свою старую статью:
Спавн эксклюзивных сквадов
(буду делать для Затона - иначе запутаемся в террейнах и путях):
Создадим сквад из имеющегося уже специфик характера первого попавшегося
к примеру долговца - sim_default_duty_4, определим его в ближайший от начала игры
смарт-террейн - это zat_a1 , а так-же определим точку его спавна из этого смарта -
zat_a1_guard_1_walk (смотрим way_zaton.ltx) - точка двойная, будет ходить по ней
и смотреть в точки zat_a1_guard_1_look
[spoiler="gamedata\configs\misc\squad_descr_zaton.ltx"]; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.
[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
[/spoiler]
Теперь добавим этот сквад в стартовую позицию Затона
[spoiler="gamedata\configs\misc\simulation.ltx"];;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;;

[start_position_zaton]
zat_bolvan_1_squad = zat_a1
[/spoiler]
и в уникальные сквады Затона
[spoiler="gamedata\configs\misc\simulation_objects_props.ltx"];--------- ZATON UNIQUE SQUADS --------
[zat_bolvan_1_squad]:default_squad
sim_avail = false
[/spoiler]
Все - сквад готов, команда на спавн получена, начинайте новую игру и
встретите его у камней. У нас получился одиночный дефолтный сквад

Теперь пойдем дальше - создадим настоящего эксклюзива с индивидуальной
логикой. Прежде всего создаем специфик характер:
[spoiler="gamedata\configs\gameplay\character_desc_zaton.ltx"]<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>
[/spoiler]
[spoiler="gamedata\configs\gameplay\npc_profile.ltx"] <character id="val_freedom_trader">
<class>val_freedom_trader</class>
</character>
[/spoiler]
[spoiler="gamedata\configs\creatures\spawn_sections_zaton.ltx"];-------------------------наш свободовец------------------
[val_freedom_trader]:stalker
$spawn = "respawn\val_freedom_trader"
character_profile = val_freedom_trader
spec_rank = regular
community = freedom
story_id = val_freedom_trader
[/spoiler]
Создаем сквад
[spoiler="gamedata\configs\misc\squad_descr_zaton.ltx"]; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.
[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
[/spoiler]
[spoiler="gamedata\configs\misc\simulation.ltx"];;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;;

[start_position_zaton]
val_freedom_trader_squad = zat_a1
[/spoiler]
[spoiler="gamedata\configs\misc\simulation_objects_props.ltx"];--------- ZATON UNIQUE SQUADS --------
[val_freedom_trader_squad]:default_squad
sim_avail = false
[/spoiler]
Пропишем в смарт-террейне путь к файлу логики чувака
[spoiler="gamedata\configs\script\zaton\smart\zat_a1.ltx"][smart_terrain];zat_a1
squad_id = 54
max_population = 3

[exclusive] ; пропишем нашего свободовца в эксклюзивы
val_freedom_trader = zaton\val_freedom_trader.ltx ; где лежит файл логики
[/spoiler]
И в заключение сам файл логики
[spoiler="gamedata\configs\script\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]
[/spoiler]
Сами понимаете, что если сразу двоих сделаете - передерутся и
долговец скорее всего победит - надо кому-нибудь группировку сменить.

Создание эксклюзивного сквада из трех человек.
Сперва создадим три специфик-характера для нашего сквада;
[spoiler="gamedata\configs\gameplay\character_desc_zaton.ltx"] <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>

<!----------------------------------------------------------------------------------------------------->
[/spoiler]
[spoiler="gamedata\configs\gameplay\npc_profile.ltx"] <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>
[/spoiler]
[spoiler="gamedata\configs\creatures\spawn_sections_zaton.ltx"];------------------трое из ларца---------------------
[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
[/spoiler]
Создаем сквад
[spoiler="gamedata\configs\misc\squad_descr_zaton.ltx"]; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.
[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
[/spoiler]
[spoiler="gamedata\configs\misc\simulation_objects_props.ltx"];--------- ZATON UNIQUE SQUADS --------
[zat_a1_brigada_squad]:default_squad
sim_avail = false
[/spoiler]
А теперь внимание! Мы не будем прописывать наш сквад в стартовую позицию Затона
т.к. спавнить будем функцией "create_squad" которую поместим в логику спейс-рестриктора.
Это будет альтернативой всеми нами любимого скрипта alife():create(".....")
Для этого создадим спейс-рестриктор в олл.спавне
[spoiler="alife_zaton.ltx"][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
[/spoiler]
Секцию можно воткнуть и в начало файла. Место расположения рестриктора
чуть вперед от начальной точки спавна актора в начале игры между
наклоненным сухим деревом и камнем, чтобы сработала логика, надо
пройти между ними.
Создаем логику рестриктора:
[spoiler="gamedata\configs\scripts\zaton\zat_a1_spawner.ltx"]
[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]
[/spoiler]
В логику рестриктора добавил еще функцию "spawn_object" для спавна предметов
(кому-то на голову свалится дизель-генератор через 15 секунд после спавна сквада)
Так-же обратите внимание на то что в логике рестриктора можно указать или смарт-террейн
для спавна(zat_a1_brigada_squad:zat_a1) или точку пути (disel_generator:zat_a1_walker_4_walk).

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


Смарт-каверы в ЗП.
Применяются в основном в двух случаях:
1.- вместо точек путей в логике эксклюзивов.
2.- для кампов - посиделки у костра.
Начнем с посиделок.Добавим в олл.спавн в зону нужного нам смарт-террейна
несколько смарт-каверов и камп-зону
[spoiler="alife_zaton.ltx"][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
[/spoiler]
Все - лагерь для посиделок готов, собираем все с предыдущими наработками.
Важный момент - шейп камп-зоны должен покрывать смарт-каверы, иначе получатся
слишком скучные посиделки - не будут травить анекдоты и прочее.
За направление взгляда отвечает дирекшн смарт-кавера.

p.s. Вот еще кое-что нашел:
Создание места для сна в ЗП на добавленных локациях.
Разместим секцию спейс-рестриктора в олл.спавне(привязка имени к
определенному смарт-террейну(esc_b1) не обязательна но желательна для ясности)
[spoiler="alife_escape.ltx"][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
[/spoiler]
Регистрируем наше койкоместо в скриптах.
[spoiler="pda.script"];стр.-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()
[/spoiler]
[spoiler="xr_effects.script"];стр.-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
[/spoiler]

Создание укрытия от выброса - surge_hide :
Пропишем нужному нам смарт-терейну укрытие
[spoiler="gamedata\configs\misc\simulation_objects_props.ltx"][esc_sim_13]:default
surge = 1 ; прописали возможность укрытия
territory = 1
sim_avail = true
[/spoiler]
Регистрируем наше укрытие
[spoiler="gamedata\configs\misc\surge_manager.ltx"];escape
esc_surge_hide_sim_13
[/spoiler]
Зарегистрируем нашу локацию в скриптах
[spoiler="gamedata\scripts\sim_board.script"]--'******************************************************
--'* Реестр смарт-террейнов. Игровое поле симуляции.
--'******************************************************

--' В этом 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}
[/spoiler]
[spoiler="gamedata\scripts\smart_terrain.script"]строка 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")
[/spoiler]
[spoiler="gamedata\scripts\surge_manager.script"]строка 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()
[/spoiler]
переходим к олл.спавн - создаем секцию укрытия
[spoiler="alife_escape.ltx"][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
[/spoiler]
Создаем точки пути по колличеству мест в укрытии
[spoiler="way_escape.ltx"][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
[/spoiler]

Сообщение отредактировал nuklia: 14 09 2010 - 00:24


#2139 Гость_БолотныйДоктор_*

Гость_БолотныйДоктор_*
  • Группа: Гости

Отправлено 14 09 2010 - 12:28

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

Сообщение отредактировал БолотныйДоктор: 14 09 2010 - 12:28


#2140   nuklia

nuklia
  • Группа: Опытные
  • Сообщений: 337
  • Регистрация: 18.12.2009
  • Пользователь: 15090

Отправлено 14 09 2010 - 15:47

Попробуй удалить все секции респавнов во всех смартах в тех файлах, что выкладывал - с твоими
смартами сплошная бойня на кордоне - одних убивают, вместо них новые респавнятся, у них и времени
то нет до работ в гулагах дойти. Да еще и тормозит из-за столпотворения.
Так не стоит заселять локации, не получится мало-мальский сюжетец создать. Заселяй эксклюзивными
сквадами, а респавн делай с условием, чтобы не плодились бесконтрольно.
Кстати у меня тоже на кордоне половина спавнится в тоннеле возле блокпоста, хотя им прописаны
конкретные точки спавна - почему так происходит, я так и не понял, потому некоторых ответственных
товарищей спавнил через олл.спавн.

Сообщение отредактировал nuklia: 14 09 2010 - 15:54



Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

2007-2014 © AMK TEAM