сталкер скрипт телепорт между локациями
S.T.A.L.K.E.R: консольные команды
Компьютерную игру Сталкер знают все геймеры. Проходя очередной раз «Тень Чернобыля», «Чистое небо» или «Зов Припяти» уже не так интересно снова пешком бродить по карте в поисках тайников или укрытий. Консольные команды для STALKER позволят управлять игрой и добавить в неё разнообразия.
Как включить консоль в Stalker
Во всех играх Сталкера консоль открывается клавишей Тильда. Или Ё в русской раскладке. Окно консоли всегда готово отобразится и не требует активации через настройки.
Консольные команды для телепорта по локациям
Особенно интересными для игроков являются коды для телепортирования по местам мутированной Зоны в неофициальном моде Сталкер: Lost Alfa. Для всех любителей этой игры предлагаем коды на быстрое перемещение. Команду следует писать с приставкой: jump_to_level и самой командой через пробел.
Команда | Локация |
La07_military | Армейские склады |
La03_agroprom | НИИ Агропром |
La01_escape | Кордон |
La04_darkdolina | Тёмная долина |
La06_yantar | Янтарь |
La08_deadcity | Мёртвый Город |
La10_radar | Радар |
La02_garbage | Свалка |
La05_bar_rostok | Бар |
La12_stancia | ЧАЭС |
La13_generators | Генераторы |
La16u_labx16 | X16 |
La09_swamp | Болота |
La11_pripyat | Припять |
La12u_sarcofag | Саркофаг |
La14_rostok_factory | Завод Росток |
La15_darkspace | Тёмная лощина |
La13u_oso | Осознание |
La13u_warlab | Варлаб |
La17_outskirts | Чернобыль |
La20_fargotten | Стройплощадка |
La22_forest | Лес |
La19_country | Деревня |
La16_lost_factory | Цементный завод |
La14u_secret_lab | X-14 |
La21_generators_2 | Генераторы 2 |
La10u_bunker | X-10 |
La17u_labx7 | X-7 |
La04u_darklab | X-18 |
Как посмотреть все существующие команды Stalker
Сборник всех консольных команды S.T.A.L.K.E.R можно увидеть в самой игре. Для этого откройте окно и введите следующий код: help. На экране должен появится список команд для разных параметров и действий в игре.
На максимальных настройках Сталкер лагает
Вы приобрели новый игровой компьютер. И первая мысль – сейчас я поиграю в старые любимые игрушки на «максималках». Но каково же ваше удивление, когда вы понимаете, что ваш мощный «зверь» должным образом не тянет Stalker. На экране вы видите микролаги, какие-то странные задержки.
Всё дело в том, что игра была создана давно. Тогда ещё основным форматом картинки на старых мониторах выступал 3:4. Сейчас большинство мониторов ориентированы на формат 16:9. Чтобы избавиться от лагов, вводим это в консоли: r2_sun_near_border 1. Игру перезагружать не нужно.
Самые полезные команды в Stalker
Кодов для записи в строке консоли очень много. Но не все они полезны для игроков. Этот список команд ищут чаще других.
Как включить «Режим Бога» в Сталкер через папку с игрой
Обязательно сохраните эти настройки перед закрытием окна блокнота. Игру следует перезагрузить.
Что делать, если в папке gamedata ничего нет
В папке игрока в одной из частей Stalker может ничего не быть. Эти файлы нужно распаковать для того, чтобы компьютер смог отобразить их. Уже существует специальный распаковщик, который можно скачать на игровом портале PlayGround. Запустите эту маленькую программку на ПК и настройте.
Многие консольный команды предназначены для настройки игры на сервере. И для изменения параметров графики. Большинство из этих настроек можно изменить через главное меню.
Присоединяйся к нашей ВК-группе.
Сталкер скрипт телепорт между локациями
local packet = net_packet()
obj:STATE_Write(packet)
— свойства cse_alife_object
local game_vertex_id = packet:r_u16()
local cse_alife_object__unk1_f32 = packet:r_float()
local cse_alife_object__unk2_u32 = packet:r_u32()
local level_vertex_id = packet:r_u32()
local object_flags = packet:r_u32()
local custom_data = packet:r_stringZ()
local story_id = packet:r_u32()
local spawn_story_id = packet:r_u32()
— свойства cse_shape
local shape_count = packet:r_u8()
for i=1,shape_count do
local shape_type = packet:r_u8()
if shape_type == 0 then
— sphere
local center = packet:r_vec3()
local radius = packet:r_float()
else
— box
local axis_x_x = packet:r_float()
local axis_x_y = packet:r_float()
local axis_x_z = packet:r_float()
local axis_y_x = packet:r_float()
local axis_y_y = packet:r_float()
local axis_y_z = packet:r_float()
local axis_z_x = packet:r_float()
local axis_z_y = packet:r_float()
local axis_z_z = packet:r_float()
local offset_x = packet:r_float()
local offset_y = packet:r_float()
local offset_z = packet:r_float()
end
end
— свойства cse_alife_space_restrictor
local restrictor_type = packet:r_u8()
— свойства cse_level_changer
local dest_game_vertex_id = packet:r_u16()
local dest_level_vertex_id = packet:r_u32()
local dest_position = packet:r_vec3()
local dest_direction = packet:r_vec3()
local dest_level_name = packet:r_stringZ()
local dest_graph_point = packet:r_stringZ()
local silent_mode = packet:r_u8()
Сталкер скрипт телепорт между локациями
Секция в alife_локация:
[1]
; cse_abstract properties
section_name = space_restrictor
name = moy_teleport_0001
position = 118.185966491699,8.19023418426514,-49.18896484375
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 979
distance = 0
level_vertex_id = 314612
object_flags = 0xffffff3e
custom_data = Рассмотрим что нам из этого можно менять для создания своего телепорта:
1.
[1] номер секции. номера в alif_локация должны идти строго по порядку
2.
name = moy_teleport_0001 здесь пишется имя телепорта(любое), единственно на что надо обратить внимание – это то, что если вам лень менять имена, то номер телепорта менять придется обязательно т.е. создадим несколько телепортов с одним именем, это будут такие телепорты:
name = moy_teleport_0001
name = moy_teleport_0002
name = moy_teleport_0003
……………………………
name = moy_teleport_xxxx
3.
position = 118.185966491699,8.19023418426514,-49.18896484375 это точка, на которой появится наш телепорт
5.
game_vertex_id = 979 и level_vertex_id = 314612 гейм- и левел-вертексы
Это логика нашего телепорта, а именно:
point1 = moy_teleport_walk_polet1 это ссылка на секцию в way_локация (точка телепортации)
look1 = moy_teleport_look_polet1 это ссылка на секцию в way_локация (направление взгляда ГГ при телепортации)
Одно замечание: если вам не важно, куда будет смотреть ГГ после «перелета», то строку
look1 = moy_teleport_look_polet1 можно вырезать, тогда отпадает необходимость создания секции [moy_teleport_look_polet1] в way-локация.
7.
shape0:radius = 2.5 это радиус «захвата» нашего телепорта, чем меньше радиус – тем меньше телепорт и соответсвенно чем больше радиус – тем больше телепорт.
Секции в way_локация:
[moy_teleport_walk_polet1]
points = p0
p0:name = wp00
p0:position = 35.1104850769043,8.06270122528076,-53.6832122802734
p0:game_vertex_id = 1074
p0:level_vertex_id = 217665
[moy_teleport_look_polet1]
points = p0
p0:name = wp00
p0:position = 35.1104850769043,8.06270122528076,-53.6832122802734
p0:game_vertex_id = 1074
p0:level_vertex_id = 217665
1.
p0:position = 35.1104850769043,8.06270122528076,-53.6832122802734
в секции [moy_teleport_walk_polet1] это «точка приземления»
в секции [moy_teleport_look_polet1] это направление взгляда ГГ
p0:game_vertex_id = 1074
p0:level_vertex_id = 217665
гейм- и левел-вертексы соответственно «точки приземления» и направления взгляда.
Одно важное замечание!
1.
Если вы создавая телепорт в его секции напишете только ссылку на «путь»(walk) к точке переноса, но не напишете ссылку на «взгляд»(look), а в way_локация создадите обе секции «путь» и «взгляд»(walk и look), ничего страшного не случится, но если наоборот, в секции телепорта напишете ссылки и на «путь» и на «взгляд»(walk и look) а в way_локации создадите только одну секцию( или «путь» или «взгляд»), то ждите вылетов или как минимум некорректной работы вашего телепорта.
2.
Этот телепорт «работает только в пределах одной локации.
Вот и весь урок. Надеюсь теперь вы сможете без проблем создавать свои телепорты в игре.
В следующем уроке мы рассмотрим пример создания телепортов через скрипт.
[960]
; cse_abstract properties
section_name = zone_teleport
name = teleport_visual
position = 134.899993896484,5.5,-51.5
direction = 1.5,0,0
; cse_alife_object properties
game_vertex_id = 2245
distance = 10
level_vertex_id = 75918
object_flags = 0xffffff3e
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 1.5
; cse_alife_space_restrictor properties
restrictor_type = 3
; cse_alife_custom_zone properties
max_power = 0
; cse_alife_anomalous_zone properties
offline_interactive_radius = 30
artefact_spawn_count = 32
artefact_position_offset = 0xa12b
Располагать логичнее на тех же координатах, что и сам телепорт, и «привинчивать» ту же ориентацию, что и у его невидимой «активной» части.
Итак, создадим телепорт для ТЧ через скрипт.
Что для этого надо? Немногое:
1.
По пути gamedata\scripts\ создадим скриптовый файл с именем bind_mteleport.script и в этот файл помещаем следующее:
function abs_comp(a,b)
— Служебная функция вычисления разности
if( a 2.
Чтобы наш телепорт работал необходимо прицепить функцию actor_update() к биндеру актера, для чего в файле bind_stalker.script найдем функцию:
function actor_binder:update(delta)
В ней найдем вызов обновления рестрикторов bind_restrictor.actor_update(delta) под которым вставим строку с вызовом нашей функции обновления: bind_mteleport.actor_update(delta)
т.е. оригинальный биндер актора выглядит так:
Далее, открываем файл zone_teleport.ltx по пути gamedata\config\misc и в самый конец его вставляем:
200?’200px’:»+(this.scrollHeight+5)+’px’);»> [m_teleport_1]:zone_teleport
teleport = standart
script_binding = bind_mteleport.bind
;Параметры нашего телепорта
radius = 1
;Высота захвата телепорта
z_radius = 1
;Куда телепортируемся (телепортация всегда идет в пределах карты)
poz_x = 106.72
poz_y = 18.09
poz_z = 169.16
; Угол зрения при появлении. Если параметра нет то не меняется
rotate = 3.8
это секция нашего телепорта
Далее создадим любой скриптовый файл, ну например ddd.script и в этот файл помещаем функцию спавна нашего телепорта:
где:
spawn_perebros название функции(для каждого создаваемого телепорта свое)
m_teleport_1 имя телепорта в файле zone_teleport.ltx
(-90.52,1.23,-37.37),119023,321) координаты,левел и гейм вертексы точки спавна нашего телепорта
Ну и последнее. Надо как-то вызвать наш телепорт. Для этого можно такую конструкцию:
например, вставить в любой диалог, любому НПС и после диалога с ним появится наш телепорт по заданным координатам (-90.52,1.23,-37.37),119023,321)
[kordon_teleport_1]:zone_teleport
teleport = standart
script_binding = bind_mteleport.bind
;Параметры нашего телепорта
radius = 2
;Высота захвата телепорта
z_radius = 1
;Куда телепортируемся (телепортация всегда идет в пределах карты)
poz_x = 16.418500900269
poz_y = 16.154039382935
poz_z = 670.52667236328
; Угол зрения при появлении. Если параметра нет то не меняется
rotate = 3.8
Сейчас новая проблема))), а как его сделать разовым, что-бы после использования он ликвидировался.
Опять прописываем в диалог Фанату отключение телепорта: ddd_del.del_tele_lov
И на заданный ему вопрос: «А что ты думаешь о ЗОНЕ?» и его диалога, телепорт отключится.
Конечно, можно бы было вообще дописать диалог Фанату вкл./выкл. телепорта, но это уже уроки моддингаот volazar – «создание диалогов».
Внимание!. Данный телепорт делался на сборке: ТЧ 1.0004+НС+допа+ОПП+(ЧШ), и координаты могут не совпать с другими сборками, лучше их устанавливать самостоятельно.
Все это проделано буквально за 20 минут, и все работает. Из этого значит, что ты где-то ошибся. где. Отгадать не могу. Проверяй все свои файлы, при отрицательном результате, выложи сюда свои правки, попробуем помочь.
local packet = net_packet()
obj:STATE_Write(packet)
— свойства cse_alife_object
local game_vertex_id = packet:r_u16()
local cse_alife_object__unk1_f32 = packet:r_float()
local cse_alife_object__unk2_u32 = packet:r_u32()
local level_vertex_id = packet:r_u32()
local object_flags = packet:r_u32()
local custom_data = packet:r_stringZ()
local story_id = packet:r_u32()
local spawn_story_id = packet:r_u32()
— свойства cse_shape
local shape_count = packet:r_u8()
for i=1,shape_count do
local shape_type = packet:r_u8()
if shape_type == 0 then
— sphere
local center = packet:r_vec3()
local radius = packet:r_float()
else
— box
local axis_x_x = packet:r_float()
local axis_x_y = packet:r_float()
local axis_x_z = packet:r_float()
local axis_y_x = packet:r_float()
local axis_y_y = packet:r_float()
local axis_y_z = packet:r_float()
local axis_z_x = packet:r_float()
local axis_z_y = packet:r_float()
local axis_z_z = packet:r_float()
local offset_x = packet:r_float()
local offset_y = packet:r_float()
local offset_z = packet:r_float()
end
end
— свойства cse_alife_space_restrictor
local restrictor_type = packet:r_u8()
— свойства cse_level_changer
local dest_game_vertex_id = packet:r_u16()
local dest_level_vertex_id = packet:r_u32()
local dest_position = packet:r_vec3()
local dest_direction = packet:r_vec3()
local dest_level_name = packet:r_stringZ()
local dest_graph_point = packet:r_stringZ()
local silent_mode = packet:r_u8()
Функции script_stalker
11. Привязка сталкера к конкретной позиции ( к vertex _ id )
xr_position. setPosition(obj, position)
position – vertex _ id ноды, к которой он будет привязан.
Если вам нужно, чтобы в каком то экшине он был в данной позиции, то нужно сделать:
action:add_precondition (world_property(properties[«position»], true))
где properties[«position»]= xr_evaluators_id.position
2. Смена положений тела
object – объект, которому нужно изменить положение тела
new – id нового положения тела
Чтобы во время смены положений избежать действий ваших экшнов, нужно сделать следующее
action:add_precondition (world_property(properties[«state_end»], true))
где properties[«state_end»] = xr_evaluators_id.state_change
— ОПИСАНИЕ ИДЕНТИФИКАТОРОВ ПОЗИЦИЙ:
Xr_state.sit _ wait
3. Рандомное проигрывание звуков
Xr_sound.set_sound(npc, sound, now)
— Пример конструктора, описывающего звуки
— Проигрыш саундов ( By Stohe )
4. Проверка, находится ли объект в онлайне
передавать ID объекта
5. Проверка, является ли данный итем оружием
передавать cls _ id объекта
6. Настройка реакций
Реакции можно настраивать через кастом дату и в рантайме.
В рантайме можно добавлять и удалять правила
где obj – объект, которому вы добавляете правило
В кастом дате правила нужно писать без кавычек, а в функциях – в кавычках.
Список поддерживаемых правил:
“ignore” – игнорирует все раздражители
“ silence ” – не издавать звук (не говорить реплики)
7. Время суток в мс
8. Время суток в часах
function parse_names( s )
Возвращает один из obj. Веса >= 0
function random_choice_weighted( a )
function play_sound (obj, delay, theme, sub_theme, phrase_set, sub_phrase)
phrase _ set – набор фраз в подтеме, sub _ phrase – номер фразы в наборе.
Первые 3 параметра обязательны, остальные нет. Для необязательных параметров
Будут выбраны рандомные значения.
function create_sound_constructor (theme, sub_theme) – возвращает sound constructor. Параметры обязательны и соответствуют тому, что изложено выше.
Пример конструктора, описывающего звуки
Добавление своих тем.
Тема – ассоциативный массив (таблица) в которой хранятся таблицы подтем. Подтема – таблица, в которой хранится идентификатор загруженных звуков и их количество. Пример :
sounds_base,
obj:add_sound («script_replics\\radio\\message\\radio_turn_on_», 30,
snd_type.talk, 2, 1, sounds_base + 0),
obj:add_sound («script_replics\\radio\\commander\\radio_start_», 30,
snd_type.talk, 2, 1, sounds_base + 1),
obj:add_sound («script_replics\\radio\\message\\radio_voice_», 30,
snd_type.talk, 2, 1, sounds_base + 2),
obj:add_sound («script_replics\\radio\\commander\\radio_reply_», 30,
snd_type.talk, 2, 1, sounds_base + 3),
obj:add_sound («script_replics\\radio\\message\\radio_voice_», 30,
snd_type.talk, 2, 1, sounds_base + 4),
obj:add_sound («script_replics\\radio\\commander\\radio_finish_», 30,
snd_type.talk, 2, 1, sounds_base + 5),
obj:add_sound («script_replics\\radio\\message\\radio_turn_off_», 30,
snd_type.talk, 2, 1, sounds_base + 6)
>
>
Здесь объявлена тема commander _ radio с одной подтемой. Для добавления еще одной подтемы нужно добавить еще одну таблицу к теме и прописать по аналогии с существующей (соответственно с нужными параметрами).
Необходимо, чтобы поле sound _ base четко соответствовало своему значению, иначе может произойти вылет движка.
11. Прекращение проигрывания звука