SoC. Спавн дополнительных точек перехода между уровнями. — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
(Новая страница: «Если Вам не хватает переходов между уровнями и Вы хотите быстрее пройти Тени Чернобыля, то...») |
(<<< aka_sektor) |
||
Строка 279: | Строка 279: | ||
Любую из функций вызываете из диалога. Их также можно вызвать как функции для фриплея. С уважением, chip7277 | Любую из функций вызываете из диалога. Их также можно вызвать как функции для фриплея. С уважением, chip7277 | ||
+ | [[Категория:Неоформленные статьи]] |
Текущая версия на 01:19, 20 марта 2014
Если Вам не хватает переходов между уровнями и Вы хотите быстрее пройти Тени Чернобыля, то создайте дополнительные точки перехода. Создайте новый скрипт и запишите в него:
function spawn_level_dark() -- создается переход из ТЕМНОЙ ДОЛИНЫ НА РАДАР if (not has_alife_info( "saharov_dark_radar" )) then level_new.create_level_changer(31000, vector():set(157.544,-4.795,-88.7233),357929, 919,227097, 1914, vector():set(660.463,-43.8839,173.0097 ), vector():set(0,-0.281389117240906,0),"l10_radar",0) db.actor:give_info_portion("saharov_dark_radar") end -- создается переход с РАДАРА в ТЕМНУЮ ДОЛИНУ if (not has_alife_info( "saharov_radar_dark" )) then level_new.create_level_changer(31050, vector():set(660.2858,-43.876,168.832),227063, 1915,359929, 919, vector():set(160.9338989,-4.352917,-82.83966), vector():set(0,0,0),"l04_darkvalley",0) db.actor:give_info_portion("saharov_radar_dark") end end function spawn_level_agro() -- создается переход с АГРОПРОМА НА ЯНТАРЬ if (not has_alife_info( "levsha_agro_yan" )) then level_new.create_level_changer(31100, vector():set(-129.02766,14.4666,199.999),111251, 522,15229, 1487, vector():set(-68.1646,1.669,-357.0758 ), vector():set(0.219999998807907,-0.349999994039536,0.62),"l08_yantar",0) db.actor:give_info_portion("levsha_agro_yan") end -- создается переход с ЯНТАРЯ НА АГРОПРОМ if (not has_alife_info( "levsha_yan_agro" )) then level_new.create_level_changer(31150, vector():set(-69.8496,3.838,-362.1278),15229, 1487,117966, 520, vector():set(-122.43,11.38,185.53999), vector():set(0,-2.6800000667572,0),"l03_agroprom",0) db.actor:give_info_portion("levsha_yan_agro") end end function spawn_yan_sarc() -- создается переход с ЯНТАРЯ В САРКОФАГ if (not has_alife_info( "zombi_yan_sarc" )) then level_new.create_level_changer(31200, vector():set(-25.6117,-18.152,-85.55978 ),29509, 1492,643, 2417, vector():set(-6.636368,51.11847,25.6256), vector():set(0.14012610912323,0,-0.99013364315033),"l12u_sarcofag",0) db.actor:give_info_portion("zombi_yan_sarc") end -- создается переход с САРКОФАГА НА ЯНТАРЬ if (not has_alife_info( "zombi_sarc_yan" )) then level_new.create_level_changer(31250, vector():set(-13.26, 47.71, 46.57 ),200, 2417,29509, 1492, vector():set(-25.6117,-18.152,-85.55978), vector():set(-0.12247440963984,0,-0.99247169494629),"l08_yantar",0) db.actor:give_info_portion("zombi_sarc_yan") end end function spawn_sar_chaes2() -- создается переход с САРКОФАГА НА ЧАЭС2 if (not has_alife_info( "digger_sar_chaes2" )) then level_new.create_level_changer(31300, vector():set(77.10116577,58.2671585,51.8668289 ),6406,2417,53648, 2537, vector():set( 67.8906097,5.04050731,97.7711 ), vector():set( -0.8196038,0,0.57293063 ),"l12_stancia_2",0) db.actor:give_info_portion("digger_sar_chaes2") end -- создается переход с ЧАЭС2 В САРКОФАГ if (not has_alife_info( "digger_chaes2_sar" )) then level_new.create_level_changer(31320, vector():set( 663.8462524,0.355151146,140.6202697 ),192695, 2623,6321,2417, vector():set(85.1118,60.11035,50.743), vector():set( -0.997,0,0.06419 ),"l12u_sarcofag",0) db.actor:give_info_portion("digger_chaes2_sar") end end function spawn_rad_yan() -- создается переход с РАДАРА НА ЯНТАРЬ if (not has_alife_info( "info_rad_yan" )) then level_new.create_level_changer(31340, vector():set(-33.8359031677246,4.1663,-92.70242 ),469,1959,132440, 1521, vector():set(176.82000732,14.0399999,81.319999), vector():set(0,2.07999992370605,0),"l08_yantar",0) db.actor:give_info_portion("info_rad_yan") end -- создается переход с ЯНТАРЯ НА РАДАР if (not has_alife_info( "info_yan_rad" )) then level_new.create_level_changer(31350, vector():set(181.97956848,19.407814,83.3477859),132440,1521,794,1959, vector():set(-30.9628868103027,2.09963,-91.5933761 ), vector():set( -0.997,0,0.06419 ),"l10_radar",0) db.actor:give_info_portion("info_yan_rad") end end function spawn_sarc_chaes() -- создается переход с ЧАЭС В САРКОФАГ if (not has_alife_info( "info_chaes_sarc" )) then level_new.create_level_changer(31370, vector():set(388.24746,0.14821225,65.81998443),169331,2385,101, 2419, vector():set(-27.261982,0.2294,40.4672), vector():set(-0.53295302391052,0,-0.84614479541779),"l12u_sarcofag",0) db.actor:give_info_portion("info_chaes_sarc") end -- создается переход с САРКОФАГА НА ЧАЭС if (not has_alife_info( "info_sarc_chaes" )) then level_new.create_level_changer(31390, vector():set(-30.6271,0.232626,45.8944),40, 2403,172158,2385, vector():set(393.82781,-0.0035887,63.712), vector():set(-0.88621181249619,0,0.46328029036522),"l12_stancia",0) db.actor:give_info_portion("info_sarc_chaes") end end function atp_kordon() -- создается переход с КОРДОНА НА АТП if (not has_alife_info( "info_kordon_atp" )) then level_new.create_level_changer(9700, vector():set(-117.3414459,16.527434,134.185),137234,84,2195, 2792, vector():set(29.3787,-7.2591,-6.956), vector():set(0.50699234008789,0,0.86195057630539 ),"atp_for_test22",0) db.actor:give_info_portion("info_kordon_atp") end -- создается переход с АТП НА КОРДОН if (not has_alife_info( "info_atp_kordon" )) then level_new.create_level_changer(9702, vector():set(27.2626438,-6.9951,-15.2436),1207, 2792,137234,84, vector():set(-117.3414459,16.527434,134.185), vector():set(0,0,0),"l01_escape",0) db.actor:give_info_portion("info_atp_kordon") end end function atp_military() -- создается переход с МИЛИТАРИ НА АТП if (not has_alife_info( "info_military_atp" )) then level_new.create_level_changer(31920, vector():set(-269.6032,-22.0931473,245.0633),68097,1786,1207, 2792, vector():set(268.886779,-9.673,-19.23756), vector():set(0,0,0 ),"atp_for_test22",0) db.actor:give_info_portion("info_military_atp") end end function create_sarkbunker_exit() -- создается переход c САРКОФАГА В ЛАБ Х-10 if (not has_alife_info( "level_newtri" )) then level_new.create_level_changer(31410, vector():set( -13.26, 47.71, 46.57 ),200, 2417,7698, 2773, vector():set( 7.6585369,-23.5286808,17.2495479 ), vector():set( -0.00754,0,-0.999971508 ),"l10u_bunker",0) db.actor:give_info_portion("level_newtri") end -- создается переход из ЛАБ Х-10 в САРКОФАГ if (not has_alife_info( "level_newtwo" )) then level_new.create_level_changer(31510, vector():set( 7.6585369,-23.5286808,17.2495479 ),7698, 2773,200, 2417, vector():set( -13.26, 47.71, 46.57 ), vector():set( 0.0, 0.0, -1.0 ),"l12u_sarcofag",0) db.actor:give_info_portion("level_newtwo") end end function create_sarchaes2_exit() -- создается переход c САРКОФАГА на ЧАЕС2 if (not has_alife_info( "level_newfive" )) then level_new.create_level_changer(31610, vector():set(77.10116577,58.2671585,51.8668289 ),6406,2417,53648, 2537, vector():set( 67.8906097,5.04050731,97.7711 ), vector():set( -0.8196038,0,0.57293063 ),"l12_stancia_2",0) db.actor:give_info_portion("level_newfive") end -- создается переход c ЧАЕС2 в САРКОФАГ if (not has_alife_info( "level_newfour" )) then level_new.create_level_changer(31710, vector():set( 663.8462524,0.355151146,140.6202697 ),192695, 2623,6406,2417, vector():set( 77.10116577,58.2671585,51.8668289 ), vector():set( -0.997,0,0.06419 ),"l12u_sarcofag",0) db.actor:give_info_portion("level_newfour") end end 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) level.map_add_object_spot(obj.id, "level_changer", "") 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) -- 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) -- количество фигур -- packet:w_u8(0) -- тип фигуры: сфера -- packet:w_vec3(vector():set(0, 0, 0)) -- sphere_center -- packet:w_float(3.0) 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) -- 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 (направление взгляда) 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()) news_manager.send_tip(db.actor, "Новый путь", nil, nil, 30000) end
Любую из функций вызываете из диалога. Их также можно вызвать как функции для фриплея. С уважением, chip7277