Создание переходов между уровнями — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
(Новая страница: «Создаем файл '''level_changer.script'''. В него пихаем. <lua> function spawn_level_changer(sid, from_pos, from_level, dest_pos, dest_level, hin...») |
|||
Строка 127: | Строка 127: | ||
-- ЧАЭС2 - ЧАЭС | -- ЧАЭС2 - ЧАЭС | ||
− | |||
spawn_level_changer(6003, vector():set(-42.15,-0.02,56.03), "l12_stancia_2", vector():set(126,-0.1,-76.3), "l12_stancia", "to_aes", 0, vector():set(0,-1.5,0)) | spawn_level_changer(6003, vector():set(-42.15,-0.02,56.03), "l12_stancia_2", vector():set(126,-0.1,-76.3), "l12_stancia", "to_aes", 0, vector():set(0,-1.5,0)) | ||
Текущая версия на 13:26, 12 мая 2012
Создаем файл level_changer.script. В него пихаем.
function spawn_level_changer(sid, from_pos, from_level, dest_pos, dest_level, hint, mode, dest_dir) local vertexes = { l01_escape = {lvid=594266, gvid=0}, l04_darkvalley = {lvid=121712, gvid=815}, l11_pripyat = {lvid=142116, gvid=2270}, l12_stancia = {lvid=405348, gvid=2400}, l12_stancia_2 = {lvid=9914, gvid=2517} -- l12_stancia_2 = {lvid=227423, gvid=2635} } local obj = alife():create("level_changer", from_pos, vertexes[from_level]["lvid"], vertexes[from_level]["gvid"]) if obj then level.map_add_object_spot(obj.id, "level_changer", hint) 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_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() -- свойства cse_shape local shape_count = packet:r_u8() local shape_type local center local radius if shape_count == 0 then shape_type = 0 center = vector():set(0,0,0) radius = 10.0 shape_count = 1 else for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local v1 = packet:r_vec3() local v2 = packet:r_vec3() local v3 = packet:r_vec3() local v4 = packet:r_vec3() end end end -- свойства cse_alife_space_restrictor local restrictor_type = packet:r_u8() -- свойства cse_alife_level_changer local dest_game_vertex_id = packet:r_u16() local dest_level_vertex_id = packet:r_s32() 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() if packet:r_elapsed() ~= 0 then get_console():execute("left="..packet:r_elapsed()) end -- свойства cse_alife_object packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) packet:w_stringZ(custom_data) packet:w_s32(sid) packet:w_s32(cse_alife_object__unk3_u32) -- свойства cse_shape packet:w_u8(shape_count) for i=1,shape_count do packet:w_u8(shape_type) if shape_type == 0 then packet:w_vec3(vector():set(0,0,0)) packet:w_float(3) else packet:w_vec3(vector():set(3,0,0)) packet:w_vec3(vector():set(0,3,0)) packet:w_vec3(vector():set(0,0,3)) packet:w_vec3(vector():set(0,0,0)) end end -- свойства cse_alife_space_restrictor packet:w_u8(restrictor_type) -- свойства cse_alife_level_changer packet:w_u16(vertexes[dest_level]["gvid"]) packet:w_s32(vertexes[dest_level]["lvid"]) packet:w_vec3(dest_pos) if dest_dir then packet:w_vec3(dest_dir) else packet:w_vec3(dest_direction) end packet:w_stringZ(dest_level) packet:w_stringZ(dest_graph_point) packet:w_u8(mode) obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) end
Этому скрипту в обед 100 лет. В этом же файле через две строки пишем:
function start_lc() spawn_level_changer(6001, vector():set(368.9,15.17,-42.65), "l01_escape", vector():set(-44.77, 0.43, -541.35), "l04_darkvalley", "to_darkvalley", 0) -- ЧАЭС - Припять spawn_level_changer(6002, vector():set(918.1,-0.1,-401.96), "l12_stancia", vector():set(31.28,1.135,420.61), "l11_pripyat", "to_pripyat", 0, vector():set(0,-3.1,0)) -- ЧАЭС2 - ЧАЭС spawn_level_changer(6003, vector():set(-42.15,-0.02,56.03), "l12_stancia_2", vector():set(126,-0.1,-76.3), "l12_stancia", "to_aes", 0, vector():set(0,-1.5,0)) -- ЧАЭС - ЧАЭС2 spawn_level_changer(6004, vector():set(117.6,-0.1,-76.3), "l12_stancia", vector():set(-42.15,-0.02,64), "l12_stancia_2", "to_aes", 0) end
Создает до кучи переходов (самых заветных). Чтобы в Интернете небыло больше вопросов "А как сделать переход с ЧАЭС в Припять, с Кордона в ТД?" и прочего.
Подключение
Через диалог:
<action>level_changer.start_lc</action>
После отключения Радара (Мозговыжигателя): <function_on_stop>level_changer.start_lc</function_on_stop>
Тогда после сна при отключении "мозговыжигателя" на Радаре создадутся переходы, которые мы с Вами написали
Автор
На YouTube я vllzl