Изменение тайф-фактора
1)Открываем файл
gamedata/configs/alife.itx
2)Находим строку
Показать код [CODE] time_factor = 10;
Это и есть зависимость игрового времени от реального(системного, того, что в часах в BIOS)
10 означает, что игровое время в 10 раз быстрее реального.
Для замедления я бы советовал ставить 6 или 7. Если поставишь меньше, будет очень долго тянуться время.
Для вступления в силу изменений необходима НОВАЯ ИГРА,
Показать код [CODE] start_time = 9:00:00
Время начала игры .
Показать код [CODE]start_date = 03.08.2012
Дата начала игры.
Показать код [CODE]autosave_interval = 01:05:00
Время через которое создается автосейв, если в течении этого времени не было сохранений.
Зона Алайф.
Показать код [CODE]switch_distance = 150
Дистанция , радиус , когда игра симулирует жизнь. Дальше на 150 м от ГГ, все объекты переходят в оффлайн.
Для слабоватых компьютеров советую снижать этот радиус до 100-110 м. Увеличивать не советую. Так как многие квестовые персонажи могут пойти погулять.... или их убьют.
Добавлено спустя 15 минут 56 секунд:
Создание новых smartterrain
С помощью этого урока можно создавать смарты, как на старых локациях, так и на новых (подключенных к ЗП)
Автор данного пособия nuklia
Для создания смарт-террейна необходимо:
1)
в распакованном all.spawn/alife_escape.ltx создать секцию (урок на примере добавления смартов на подключенный кордонот ЧН)
"alife_escape.ltx"
Показать код [CODE][XXXX]
; cse_abstract properties
section_name =
name = esc_sim_1
position = -131.679443359375,4.54702472686768,223.310623168945
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
custom_data = <<END
[smart_terrain]
cfg = scriptsescapesmartesc_sim_1.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
; se_smart_terrain properties
2)
В файле way_escape.ltx создать точки пути.
"way_escape.ltx"
Показать код [CODE][esc_sim_1_traveller_actor]
points = p0,p1
p0:name = name00
p0:position = -139.976989746094,7.92740631103516,214.180725097656
p0:game_vertex_id = 996
p0:level_vertex_id = 114603
p0:links = p1(1)
p1:name = name01
p1:position = -139.205581665039,7.28326225280762,215.007064819336
p1:game_vertex_id = 996
p1:level_vertex_id = 115432
[esc_sim_1_traveller_squad]
points = p0,p1
p0:name = name00
p0:position = -142.107650756836,8.22405433654785,215.61328125
p0:game_vertex_id = 996
p0:level_vertex_id = 112158
p0:links = p1(1)
p1:name = name01
p1:position = -141.303436279297,7.60641098022461,216.339706420898
p1:game_vertex_id = 996
p1:level_vertex_id = 112975
необходимы для перемещения с главными сталкерами
[esc_sim_1_walker_1_look]
points = p0
p0:name = name00|a=sit_knee
p0:position = -135.264755249023,4.77195262908936,221.322662353516
p0:game_vertex_id = 996
p0:level_vertex_id = 120247
[esc_sim_1_walker_1_walk]
points = p0
p0:name = name00
p0:position = -136.487121582031,4.7488899230957,224.744247436523
p0:game_vertex_id = 996
p0:level_vertex_id = 118676
[esc_sim_1_walker_2_look]
points = p0
p0:name = name00|a=sit_knee
flags = 0x1
p0:position = -134.427719116211,4.65883541107178,224.077484130859
p0:game_vertex_id = 996
p0:level_vertex_id = 121036
[esc_sim_1_walker_2_walk]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position = -133.710815429688,4.751784324646,219.640319824219
p0:game_vertex_id = 996
p0:level_vertex_id = 121821
[esc_sim_1_guard_1_look]
points = p0,p1,p2,p3
p0:name = name00
p0:flags = 0x1
p0:position = -134.901641845703,5.14409446716309,218.546768188477
p0:game_vertex_id = 996
p0:level_vertex_id = 120243
p0:links = p1(1)
p1:name = name01
p1:flags = 0x2
p1:position = -139.994338989258,6.83790016174316,217.731719970703
p1:game_vertex_id = 996
p1:level_vertex_id = 114608
p1:links = p2(1)
p2:name = name02
p2:flags = 0x4
p2:position = -145.01057434082,6.06774806976318,231.564849853516
p2:game_vertex_id = 996
p2:level_vertex_id = 108869
p2:links = p3(1)
p3:name = name03
p3:flags = 0x1
p3:position = -139.35026550293,5.46518325805664,233.197036743164
p3:game_vertex_id = 996
p3:level_vertex_id = 115458
[esc_sim_1_guard_1_walk]
points = p0,p1,p2,p3
p0:name = name00
p0:flags = 0x4
p0:position = -137.187911987305,5.67031574249268,219.150955200195
p0:game_vertex_id = 996
p0:level_vertex_id = 117876
p0:links = p1(1)
p1:name = name01
p1:flags = 0x2
p1:position = -141.437377929688,6.13025951385498,223.992767333984
p1:game_vertex_id = 996
p1:level_vertex_id = 112986
p1:links = p2(1)
p2:name = name02
p2:flags = 0x1
p2:position = -138.589736938477,5.11841583251953,229.624359130859
p2:game_vertex_id = 996
p2:level_vertex_id = 116265
p2:links = p3(1)
p3:name = name03
p3:flags = 0x2
p3:position = -142.148788452148,5.61561870574951,231.084564208984
p3:game_vertex_id = 996
p3:level_vertex_id = 112180
p3:links = p0(1)
Работы в гулаге для симулянтов - на троих.
3)
Прописать в файлах
Показать код [CODE]\"gamedata/configs/game_graphs.ltx\"
ХХХ = \"esc_sim_1\"
"gamedata/configs/misc/simulation_object_props.ltx"
Показать код [CODE][esc_sim_1]:default
territory = 1
sim_avail = true
"gamedata/configs/misc/smart_names.ltx"
Показать код [CODE][escape]
esc_sim_1 = st_esc_sim_1_name
"gamedata/configs/misc/smart_terrain_masks.ltx" (Это расшифровка территорий по которым можно ходить)
Показать код [CODE][esc_sim_1]
255,255,255,152
"gamedata/configs/misc/ravel_manager.ltx"
Показать код [CODE]esc_sim_1 = st_stalker_esc_sim_1
"gamedata/configs/scripts/escape/smart/esc_sim_1.ltx"
Показать код [CODE][smart_terrain] ;(esc_sim_1 это и есть наш смарт-террейн)
squad_id = 27
max_population = 2
respawn_params = respawn@esc_sim_1 ;(- респавн симулянтов)
arrive_dist = 65
[respawn@esc_sim_1]
spawn_stalker@advanced
[spawn_stalker@advanced]
spawn_squads = stalker_sim_squad_advanced, stalker_sim_squad_advanced, stalker_sim_squad_veteran
spawn_num = 2
Зарегистрировать нашу локацию в скриптах
"gamedata/scripts/sim_board.script"
Показать код [CODE]--'* Реестр смарт-террейнов. Игровое поле симуляции.
--'******************************************************
--'******************************************************
--' В этом 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}
"gamedata/scripts/smart_terrain.script"
Показать код [CODE]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\"] = {}
}
"gamedata/scripts/surge_manager.script"
Показать код [CODE]function CSurgeManager:initialize()
self.ini = ini_file(\"misc/surge_manager.ltx\")
self.levels_respawn = {zaton = false, jupiter = false, pripyat = false, escape = false}
Добавлено спустя 15 минут 1 секунду:
Cоздание новых НПС в Зове Припяти на новых локациях(На основе спавна через квад)
С помощью этого урока вы сможете спавнить своих НПС через квады, а не скритом или одиночкой, который даже говорить с вами не хочет.
Автор данного пособия nuklia
Файл зарегистрировать в gamedata/configs/system.ltx
Показать код [CODE]specific_characters_files =....., character_desc_escape
Создаем файл с именем character_desc_escape. В нем вставляем
Показать код [CODE]<?xml version='1.0' encoding=\"windows-1251\"?>
<xml>
.......Свободное место между тегами, тут и пишем все....
<xml>
"gamedata/configs/gameplay/character_desc_escape.xml"
Показать код [CODE]<specific_character id=\"esc_b1_diller\" team_default = \"1\">
<name>esc_b1_diller_name</name>
<icon>ui_inGame2_Sich</icon>
<map_icon x=\"1\" y=\"0\"></map_icon>
<bio>Опытный сталкер. Детальная информация отсутствует.</bio>
<class>esc_b1_diller</class>
<community>stalker</community>
<terrain_sect>stalker_terrain</terrain_sect>
<snd_config>characters_voicehuman_01military</snd_config>
<rank>700</rank>
<reputation>0</reputation>
<visual>actorsstalker_nebostalker_nebo_2_face_3</visual>
<supplies>
[spawn] n
</supplies>
<money min=\"0\" max=\"0\" infinitive=\"0\"/>
#include \"gameplaycharacter_criticals_4.xml\"
<start_dialog>zat_b30_owl_stalker_trader_start_dialog</start_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_choose_task</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_sell_items</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_buy_info</actor_dialog>
<!-- actor_dialog>zat_b30_owl_stalker_trader_b40_about_merc_camp</actor_dialog -->
<actor_dialog>zat_b30_owl_stalker_trader_stages</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_b30_actor_after_barmen</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_about_nimble</actor_dialog>
<actor_dialog>actor_break_dialog</actor_dialog>
</specific_character>
"gamedata/configs/gameplay
pc_profile.xml"
Показать код [CODE]<character id=\"esc_b1_diller\">
<class>esc_b1_diller</class>
</character>
файл зарегистрироватьв gamedata/configs/creatures/spawn_sections.ltx (Написать наподобие других типа #include"spawn_sections_escape.ltx") - и создать наш файл (не забывайте про кодировку, самая верхняя строка и теги, посмотрите в уже зарегистрированных файлах.)
"gamedata/configs/creatures/spawn_sections_escape.ltx"
Показать код [CODE][esc_b1_diller]:stalker
$spawn = \"respawn/esc_b1_diller\"
character_profile =esc_b1_diller
spec_rank = master
community = stalker
story_id = esc_b1_diller_id
Итак мы зарегистрировали нашего НПС и уже можем его заспавнить старыми методами
через All.spawn или всеми нами любимый скрипт.
Однако в ЗП спавн происходит по другой схеме и для этого необходимо создать
КВАД нашему НПС
Этот файл надо зарегистрировать в gamedata/configs/misc/squad_descr.ltx
"gamedata/configs/misc/squad_descr_escape.ltx"
Показать код [CODE][esc_b1_diller_squad]:online_offline_group
faction = stalker
npc = esc_b1_diller
target_smart = esc_b1
story_id = esc_b1_diller_squad
"gamedata/configs/misc/simulation.ltx"
Показать код [CODE];;;;;;;;;;;;;;;;;;;;;; FINAL ESCAPE;;;;;;;;;;;;;;;;;;;;;;;;;
[start_position_escape]
esc_b1_owl_stalker_trader_squad = esc_b1
esc_b1_commander_squad = esc_b1
esc_b1_tech_squad = esc_b1
esc_b1_barmen_squad = esc_b1
esc_b1_diller_squad = esc_b1
"gamedata/configs/misc/simulation_objects_props.ltx"
Показать код [CODE];-----------ESCAPE--------------------------
;--------- ESCAPE UNIQUE SQUADS --------
[esc_b1_owl_stalker_trader_squad]:default_squad
sim_avail = false
[esc_b1_commander_squad]:default_squad
sim_avail = false
[esc_b1_tech_squad]:default_squad
sim_avail = false
[esc_b1_barmen_squad]:default_squad
sim_avail = false
[esc_b1_diller_squad]:default_squad
sim_avail = false
И теперь, когда мы все это прописали в файлах, наш НПС заспавнится на Кордоне без всяких
дополнительных команд - если зайдете на локацию - бегите на блокпост к бывшему выходу с
Болота - там он и появится и пойдет к базе сталкеров т.к. мы его приписали к смарт-террейну esc_b1
Выбор точки спавна я к сожалению до сих пор не понял - вопрос к специалистам !
Другие эксклюзивы спавнятся там-же но подчиняясь прописанной им логике телепортируются
на работы в свои смарт-камеры по условию;-
Показать код [CODE]on_info = {!npc_in_zone(esc_b1_sr_barmen)} %=teleport_npc(esc_b1_stalker_barmen_walk)%
"если не в зоне(..) - телепортировать на точку пути(..)" ! - отрицание.
Но для того чтобы НПС подчинился прописанной ему логике - его надо прописать в эксклюзивы
в смарт-террейн
"gamedata/configs/scripts/escape/smart/esc_b1.ltx"
Показать код [CODE][exclusive]
esc_b1_owl_stalker_trader = escape/esc_b1_owl_stalker_trader.ltx
esc_b1_commander = escape/esc_b1_commander.ltx
esc_b1_tech = escape/esc_b1_tech.ltx
esc_b1_barmen = escape/esc_b1_barmen.ltx
;esc_b1_diller = escape/esc_b1_diller.ltx ; закомментировал т.к. нет файла - попробуйте по аналогичным
А для того чтобы они появлялись в нужный момент - прописывать условия появления , при получении поршня
Показать код [CODE]on_info = {+info} %=teleport_npc(esc_b1_stalker_barmen_walk)%
При получении ГГ поршня получается то, что описывалось вверху.
"gamedata/scripts/xr_effects.script"
Показать код [CODE]function sleep(actor, npc)
local sleep_zones = {
\"zat_a2_sr_sleep\",
\"jup_a6_sr_sleep\",
\"pri_a16_sr_sleep\",
\"esc_b1_sr_sleep\", ; наше место сна
\"actor_surge_hide_2\"
Добавлено спустя 13 минут 19 секунд:
Редактируем acdc_cop.pl
Допустим вы хотите собрать all.spawn но вы понаделали там разных секций, которые в оригинальном acdc_cop.pl нет. И при компиляции он валится.
Для этого открываем
acdc_cop.pl где-то на строке 2100 , вы увидите подобные вещи....
Показать код [CODE]stalker_monolith => 'se_stalker',
stalker_zombied => 'se_stalker',
stalker_trader => 'se_stalker',
Показать код [CODE]m_e_burer => 'se_monster',
Т.е допустим вы добавили профиль
burer_weak и хотите заспавнить бюрера с таким профилем (т.е по профилю), но при компиляции будет обвал....
поэтому каждый новый профиль нужно дописывать в свой
acdc_cop.pl.
Занесение данных при подключении новых локаций в acdc_cop.pl
С помощью
ggtool.pl (Там надо раскоментировать строку $gg->show_level_gvids()) section4.bin)
Выбьет список геймвертексов. Запоминаешь для своего уровня.
Открываем
acdc_cop.pl
Там дописываешь себе по типу:
Показать код [CODE]use constant levels_info => (
{ gvid0 =>yyyy, }, -- yyy - xxx + количество геймвертексов локи (
{ gvid0 => xxx, name => 'твоя_лока' }, -- где xxx - цифра, которую нашел с помощью [b]ggtool.pl[/b]
...
{ gvid0 => nnn , name => 'zaton' },
);
Добавлено спустя 6 минут 40 секунд:
Создание нового места для сна
Создание места для сна в ЗП на добавленных локациях.(Можно и на сарых)
Автор данного пособия nuklia
1)Разместим секцию спейс-рестриктора в олл.спавне(привязка имени к определенному смарт-террейну(
esc_b1) не обязательна но желательна для ясности)
"alife_escape.ltx"
Показать код [CODE][15001]
; cse_abstract properties
section_name = space_restrictor
name = esc_b1_sr_sleep
position = -16.1344470977783,0.959998846054077,259.680816650391
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
custom_data = <<END
[story_object]
story_id = esc_b1_sr_sleep_id
[logic]
cfg = scriptssr_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
2)
Регистрируем наше койкоместо в скриптах.
"pda.script"
Показать код [CODE];стр.-288
local sleep_zones_tbl =
{
{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\"},
}
"xr_effects.script"
Показать код [CODE];стр.-2846
function sleep(actor, npc)
local sleep_zones = {
\"zat_a2_sr_sleep\",
\"jup_a6_sr_sleep\",
\"pri_a16_sr_sleep\",
\"esc_b1_sr_sleep\",
\"actor_surge_hide_2\"
}
Фактически ничего сложного...
Добавление тайников в ЗП
Автор данного пособия Знахарь
Файлы:
all.spawn, secret.ltx
Допустим, у нас есть карта Болота и на ней нужно сделать тайник:
Открываем
configs/misc/secret.ltx
Создаем инклюд на файл с описанием тайников на нашей локации:
Показать код [CODE]#include \"secret_marsh.ltx\"
Далее допысываем в секции
[list] нашу локу с приставкой
list_:
Показать код [CODE][list]:list_zaton, list_pripyat, list_jupiter, list_marsh
Создаем сам файл с описанием тайников
secret_marsh.ltx в папке
misc/.
В нем пишем:
Показать код [CODE][list_marsh]
mar_hiding_place_1
[mar_hiding_place_1]
vodka = 1, 1
Как вы уже поняли, в
[list_marsh] приводится список всех тайников на карте, а затем расписывается каждый тайник.
vodka = 1, 1 - Это список предметов в тайнике, первая цифра обозначает количество, вторая, как мне кажется ни начто не влияет т.к. везде стоит 1.
Теперь
all.spawn. Создаем две секции:
Показать код [CODE][213]
; cse_abstract properties
section_name = space_restrictor
name = mar_hiding_place_1
position = 588.25833447266, 3.165674, 407.9;координаты
direction = 0.00655899988487363,-0.242111995816231,0.0535049997270107
; cse_alife_object properties
game_vertex_id = 1068; гейм-вертекс
distance = 0
level_vertex_id = 519643; лэвэл-вертекс
object_flags = 0xffffef3e
custom_data = <<END
[story_object]
story_id = mar_hiding_place_1; имя нашего тайника в secret_marsh.ltx
[secret]
cfg = misc/secret.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
[214]
; cse_abstract properties
section_name = vodka
name = marsh_hiding_vodka
position = 588.25833447266, 3.165674, 407.9
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 1068
distance = 0
level_vertex_id = 519643
object_flags = 0xffffff0f
custom_data = <<END
[secret]
name = mar_hiding_place_1; сцылка на секцию в secret_marsh.ltx
END
; cse_visual properties
visual_name = dynamicsdevicesdev_vodkadev_vodka
; cse_alife_item properties
condition = 1
upgrades =
Как я понял, первая секция определяет координаты самого тайника, т.е. куда ставить значок на карте.
Вторая и последующие секции описывают каждый предмет в тайнике. У всех предметов относящихся к одному тайнику в
[secret], name должен быть одинаковый.
Все, собираем алл.спавн, кидаем его на место, и получаем бутылку водки за трансформаторной будкой в Северном хуторе. При ее подборе, как и положено, появится сообщение, а в нашу статистику пойдет еще один найденый тайник.
Так же можно добавлять тайники и на старых локациях...