Функция доступна только для Тень Чернобыля, в остальных сериях наблюдаются вылеты!
Создаем скрипт, в него вставляем:
Цитата
function create_level_changer( p_story_id, -- STORY_ID нового level_changer (понадобится нам позже) p_position, -- вектор, координаты точки, в которой будет располагаться центр нового level_changer p_lvertex_id, -- level_vertext_id - идентифицируют уровень, на котором будет создан level_changer p_gvertex_id, -- game_vertext_id
p_dest_lv, -- level_vertex_id - идентифицируют уровень, на который level_changer будет перебрасывать игрока p_dest_gv, -- game_vertex_id p_dest_pos, -- координаты точки, в которой на новом уровне окажется игрок p_dest_dir, -- направрение взгляда игрока p_dest_level, -- название уровня, например "L11_Pripyat" p_silent -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход) ) local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)
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()
packet:w_u16(p_dest_gv) -- destination game_vertex_id packet:w_s32(p_dest_lv) -- destination level_vertex_id packet:w_vec3(p_dest_pos) -- destination position packet:w_vec3(p_dest_dir) -- destination direction (направление взгляда) packet:w_stringZ(p_dest_level) -- destination level name packet:w_stringZ("start_actor_02") -- some string, always const packet:w_u8(p_silent) -- 1 for silent level changing
packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) level.add_pp_effector ("teleport.ppe", 2006, false) end
Телепортация:
function poleteli() create_level_changer(20101, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 10193, 2437, vector():set(66.210,15.040,4.250), vector():set(0.0, 0.0, 0.0), "l12u_sarcofag", 1) end
function delete_poleteli() -- функция удаления(если нужно) local sim = alife() local se_obj = sim:story_object(20101) if se_obj then sim:release(se_obj, true) end local actor = db.actor end
Информация:
20101 - STORY_ID нового level_changer 10193 - level_vertex_id 2437 - game_vertex_id vector():set(66.210,15.040,4.250) - координаты vector():set(0.0, 0.0, 0.0) - направление взгляда актёра "l12u_sarcofag" - название локации
Функцию телепортации, можно вызывать любым способом.
Сообщение отредактировал Stalker_Monstr - Пятница, 15.11.2013, 12:58
Извиняйте нуба но... y_level.create_level_changer(20015, vector():set(293.04870605469,6.9405741691589,67.496566772461),1785536,4398 418002, 118, Эти 4 числа что значат? Последние 2 это level id и vertex id, но первые два...?
strchi, первые два числа - это левел и гейм вертексы для спавна самого перехода, а последние два числа - это тоже левел и гейм вертексы, только уже места назначения.
name = mar_teloport_to_agr -- Это значит, что телепортация идет с Болот на Агропром, эта телепортация тихая и была создана, для того что бы быстро передвигаться по локации.