CoP. Спавн точек перехода между локациями — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

CoP. Спавн точек перехода между локациями — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Новая страница: «Создание точек перехода между локациями. <lua> function create_level_changer( p_story_id, -- STORY_ID нового level_changer p...»)
 
(<<< aka_sektor)
Строка 121: Строка 121:
 
== Автор ==
 
== Автор ==
 
vllzl
 
vllzl
 +
[[Категория:Неоформленные статьи]]

Версия 23:47, 19 марта 2014

Создание точек перехода между локациями.

 
function create_level_changer(
p_story_id, -- STORY_ID нового level_changer
p_position, -- вектор, центр нового level_changer
p_lvertex_id, -- level_vertext_id
p_gvertex_id, -- game_vertext_id 
p_dest_lv, -- level_vertex_id 
p_dest_gv, -- game_vertex_id
p_dest_pos, -- координаты на новом уровне
p_dest_dir, -- направление взгляда игрока
p_dest_level, -- название уровня
p_silent, -- 1 автоматический переход
P_spotdir, -- метка на карте
p_desr -- описание 
)
local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)
level.map_add_object_spot_ser(obj.id,P_spotdir,p_desr)
 
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_begin(game_vertex_id) 
packet:w_float(cse_alife_object__unk1_f32)
packet:w_u32(cse_alife_object__unk2_u32) 
packet:w_u32(level_vertex_id) 
packet:w_u32( bit_not(193) ) 
packet:w_stringZ(custom_data)
packet:w_u32(p_story_id) 
packet:w_u32(spawn_story_id)
 
packet:w_u8(1) -- количество фигур
packet:w_u8(1) -- тип фигуры: box
packet:w_float(2) -- axis_x_x
packet:w_float(0) -- axis_x_y
packet:w_float(0) -- axis_x_z
packet:w_float(0) -- axis_y_x
packet:w_float(4) -- axis_y_y
packet:w_float(0) -- axis_y_z
packet:w_float(0) -- axis_z_x
packet:w_float(0) -- axis_z_y
packet:w_float(4) -- axis_z_z
packet:w_float(0) -- offset_x
packet:w_float(0) -- offset_y
packet:w_float(0) -- offset_z
 
packet:w_u8(3)
 
packet:w_u16(p_dest_gv) -- destination game_vertex_id
packet:w_u32(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_99") -- 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())
 
end
 

Пример перехода с Затона в Окрестности "Юпитера".

function nlc()
-- создается переход с Затона на Юпитер
create_level_changer(52000, vector():set(32.82,0.39,612.30), 1011443, 192, 81204, 422, vector():set(-376.06,6.46,412.87), vector():set(0.0, 0.0, 0.0), "jupiter", 1, "exit_to_jupiter", "на Янов")
end

Вот так создается переход через скрипт.

Автор

vllzl

Другие места
LANGUAGE