Gość Diegtiariow Opublikowano 8 Czerwca 2023 Zgłoś Udostępnij Opublikowano 8 Czerwca 2023 NAZWA: Teleportacja przez skrypt [SoC] AUTOR: ? TWORZENIE WŁASNEGO PLIKU: Spoiler Tworzymy własny plik z końcówką .script. Dodajemy do niego to: function create_level_changer( p_story_id, -- STORY_ID nowego level_changer (przyda nam się później) p_position, -- wektor, współrzędne punktu, w którym będzie znajdował się środek nowego level_changer p_lvertex_id, -- level_vertext_id - identyfikuje poziom, na którym będzie stworzony level_changer p_gvertex_id, -- game_vertext_id p_dest_lv, -- level_vertex_id - identyfikuje poziom, na którym level_changer będzie przerzucać gracza p_dest_gv, -- game_vertex_id p_dest_pos, -- współrzędne punktu, w którym na nowym poziomie pojawi się gracz p_dest_dir, -- kierunek, w którym będzie patrzył gracz p_dest_level, -- nazwa poziomu, np. "L11_Pripyat" p_silent -- należy ustawić 1, aby "uciszyć" (aby nie pojawiało się) pytanie o zmianę poziomu (przejście automatyczne) ) local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id) level.map_add_object_spot(obj.id, "level_changer", "") local packet = net_packet() obj:STATE_Write(packet) -- właściwości 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() -- właściwości 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 -- właściwości cse_alife_space_restrictor local restrictor_type = packet:r_u8() -- właściwości 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) -- 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) -- level_vertex_id packet:w_u32( bit_not(193) ) -- object_flags = -193 = 0xFFFFFF3E packet:w_stringZ(custom_data) packet:w_u32(p_story_id) -- story_id packet:w_u32(spawn_story_id) packet:w_u8(1) -- ilość figur -- packet:w_u8(0) -- typ figury: kula -- packet:w_vec3(vector():set(0, 0, 0)) -- sphere_center -- packet:w_float(3.0) packet:w_u8(1) -- typ figury: 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) -- restrictor_type 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 (kierunek patrzenia GG) 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 TELEPORTACJA: Spoiler Funkcja teleportacji - poleteli(): 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 Funkcja usunięcia - delete_poleteli(): function delete_poleteli() -- funkcja usunięcia(jeśli trzeba) 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 Informacja: 20101 - STORY_ID nowego level_changer 10193 - level_vertex_id 2437 - game_vertex_id vector():set(66.210,15.040,4.250) - współrzędne vector():set(0.0, 0.0, 0.0) - kierunek patrzenia aktora "l12u_sarcofag" - nazwa lokacji Funkcję teleportacji można wywołać dowolnym sposobem. ŹRÓDŁO: https://ap-pro.ru/forums/topic/1205-soc-teleportaciya-cherez-skript/ Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.