    
  S.T.A.L.K.E.R. Inside Wiki.
 : , 
             .  all.spawn   ,              . 

      freeplay -     -.            -1    (  -)    -1  .   ,    -1,       "",   -  "deadzone".      ,       ""     . 




[] 1.   LEVEL_CHANGER 
  alife():create()     level_changer.            .         Shape.        ACDC (created by bardak). 

    ,     level_changer: 

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_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()) --	news_manager.send_tip(db.actor, "LC creation finished", nil, nil, 30000)end shape  "box"    packet:r_matrix()  .  ,      "offset",    ,         . 
[] 2.    
            .   : 

function exit_monolit()	if (not has_alife_info("freeplay_activated1")) then		create_level_changer(11410, vector():set(-13.26, 47.71, 46.57), 200, 2417,			162109,                        2384,			vector():set( 375.615, 0.224, 27.737 ),			vector():set(     0.0, 0.0  ,  0.0 ),			"L12_Stancia",			1) 		db.actor:give_info_portion("freeplay_activated1")	end 	--      	create_chaes2pripyat_exit() 	--    level_changer,    ,    	db.actor:set_actor_position( vector():set(-13.26, 47.71, 46.57) )end function refuze_o_sozn()	if (not has_alife_info("freeplay_activated2")) then		create_level_changer(21410, vector():set(946.872, 6.0, 167.66), 240852, 2637,			472710,			2280,			vector():set( 1062.15, -0.0982, -3.512 ),			vector():set(    0.0 ,  0.0   , -1.0 ),			"L12_Stancia",			1) 		db.actor:give_info_portion("freeplay_activated2")	end 	--      	create_chaes2pripyat_exit() 	--    level_changer,      	db.actor:set_actor_position( vector():set(946.872, 6.0, 167.66) )end function create_chaes2pripyat_exit()	--      	if (not has_alife_info(	"exit_chaes2pripyat_created" )) then		create_level_changer(31410, vector():set( 917.35, 0.419, -316.35 ), 403866, 2401,			73868,			2117,			vector():set( 31.3, 3.0, 240.0 ),			vector():set(  0.0, 0.0,  -1.0 ),			"L11_Pripyat",			0) 		db.actor:give_info_portion("exit_chaes2pripyat_created")	endend exit_monolit     ,     .  -     :    " "        ... 
 exit_monolit      -1   -    -1    ,        .  refuze_o_sozn   ,           ( ,    ).     info_portions,     ,        . 

 . -    info-portions.       ,     (    )   

config\gameplay\_info_sa.xml : 

<?xml version="1.0" encoding="windows-1251" ?> <game_information_portions> 	<info_portion id="freeplay_activated1"></info_portion>	<info_portion id="freeplay_activated2"></info_portion>	<info_portion id="exit_chaes2pripyat_created"></info_portion> </game_information_portions>        info_portion,       .     system.ltx   info_portions: 

[info_portions]; xml ,  info_portionsfiles = _info_sa, info_portions, ....................,          .       . 


  -     .     

config\ui\ui_movies.xml  mov_desire_ ( ,      -     ).       function_on_stop,   ,    .  : 

<function_on_stop>xr_effects.game_credits</function_on_stop> xr_effects.game_credits   .          _freeplay_sa.exit_monolit.    : 

<function_on_stop>_freeplay_sa.exit_monolit</function_on_stop><!-- original:	<function_on_stop>xr_effects.game_credits</function_on_stop>  -->     ,  . 
  mov_desire_5        -.      -   .     -      -: mov_refuse_osoznanie.       : 

<function_on_stop>_freeplay_sa.refuze_o_sozn</function_on_stop><!-- original:	<function_on_stop>xr_effects.game_credits</function_on_stop>  -->
  ,      / -, .     -       (  p_silent  1).       ,    ...   - ,    (  ,     ). - (,   all.spawn)     ,       .   xr_logic.script,    -  switch_to_section.     : 

--     ,  .--  section == nil,    .function switch_to_section(npc, st, section)  if section == nil or section == "" then    return false  end   -- 15.03.2008 by SA:  --  " "      FREEPLAY  -- 	  ,   ""    if (section == "sr_aes_deadzone") then	if (has_alife_info("freeplay_activated1") or has_alife_info("freeplay_activated2")) then		return false	end  end   ...    ...end           ,    . 

 :  1-    .      .   level_tasks.script     add_lchanger_location  : 

-- aes (++16.03.2008 by SA):		obj = sim:story_object(31410)		if obj then			level.map_add_object_spot(obj.id, "level_changer", "To Pripyat")		end 31410 - story_id  level_changer,     create_chaes2pripyat_exit. 

    (          ).    . 
