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

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

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