Difference between revisions of "S PreserveEnts"

From Valve Developer Community
Jump to: navigation, search
(Updated tf2)
Line 122: Line 122:
 
static const char *s_PreserveEnts[] =
 
static const char *s_PreserveEnts[] =
 
{
 
{
 +
"player",
 +
"viewmodel",
 +
"worldspawn",
 +
"soundent",
 +
"ai_network",
 +
"ai_hint",
 +
"env_soundscape",
 +
"env_soundscape_proxy",
 +
"env_soundscape_triggerable",
 +
"env_sprite",
 +
"env_sun",
 +
"env_wind",
 +
"env_fog_controller",
 +
"func_wall",
 +
"func_illusionary",
 +
"info_node",
 +
"info_target",
 +
"info_node_hint",
 +
"point_commentary_node",
 +
"point_viewcontrol",
 +
"func_precipitation",
 +
"func_team_wall",
 +
"shadow_control",
 +
"sky_camera",
 +
"scene_manager",
 +
"trigger_soundscape",
 +
"commentary_auto",
 +
"point_commentary_node",
 +
"point_commentary_viewpoint",
 +
"bot_roster",
 +
"info_populator",
 
"tf_gamerules",
 
"tf_gamerules",
 
"tf_team_manager",
 
"tf_team_manager",
Line 129: Line 160:
 
"keyframe_rope",
 
"keyframe_rope",
 
"move_rope",
 
"move_rope",
"tf_",
+
"tf_viewmodel",
        "tf_logic_training",
+
"tf_logic_training",
 
"tf_logic_training_mode",
 
"tf_logic_training_mode",
        "tf_powerup_bottle",
+
"tf_logic_raid",
 +
"tf_powerup_bottle",
 
"tf_mann_vs_machine_stats",
 
"tf_mann_vs_machine_stats",
        "tf_viewmodel"
+
"tf_wearable",
        "tf_wearable",
 
 
"tf_wearable_demoshield",
 
"tf_wearable_demoshield",
        "tf_wearable_robot_arm",
+
"tf_wearable_robot_arm",
 
"tf_wearable_vm",
 
"tf_wearable_vm",
        "tf_logic_bonusround",
+
"tf_logic_bonusround",
 
"vote_controller",
 
"vote_controller",
        "monster_resource",
+
"monster_resource",
 
"tf_logic_medieval",
 
"tf_logic_medieval",
        "tf_logic_cp_timer",
+
"tf_logic_cp_timer",
 
"tf_logic_tower_defense",
 
"tf_logic_tower_defense",
        "func_upgradestation",
+
"tf_logic_mann_vs_machine",
 +
"func_upgradestation",
 
"entity_rocket",
 
"entity_rocket",
        "entity_carrier",
+
"entity_carrier",
 
"entity_sign",
 
"entity_sign",
        "entity_saucer",
+
"entity_saucer",
        "tf_halloween_gift_pickup",
+
"tf_halloween_gift_pickup",
        "tf_logic_competitive",
+
"tf_logic_competitive",
        "tf_wearable_razorback",
+
"", // END Marker
 
};
 
};
 
</pre>
 
</pre>
Line 202: Line 234:
 
};
 
};
 
</pre>
 
</pre>
=={{csgo}}csgo/cs_gamerules.cpp==
+
=={{csgo}}cstrike15/cs_gamerules.cpp==
 
<pre>
 
<pre>
 
static const char *s_PreserveEnts[] =
 
static const char *s_PreserveEnts[] =

Revision as of 10:14, 8 February 2021

In multiplayer Source games, when a round is reset in some way, all entities are deleted and then respawned to quickly reset the map. However, a list of entities to not reset exists. Usually these entities have special code to handle the resetting process. The player entity for example, should not ever be erased unless the client disconnects from the server.

Some entities in this list however, do not have any code for handling round resets, so when the reset occurs, those entities will behave in unwanted ways as they have carried over all their properties (including position) from the last round.

To do: Attempt to finish this table. Some games might not have any way to reset the round (even through mp_forcewin or mp_restartgame).

Alien Swarm Counter-Strike: Global Offensive Counter-Strike: Source Day of Defeat: Source Half-Life 2 HL2:DM HL2:Ep1 HL2:Ep2 Left 4 Dead Left 4 Dead 2 Portal Portal 2 Team Fortress 2
Affects: Yes Yes Yes Yes N/A Yes N/A N/A Unsure Unsure Yes Unsure Yes

Half-Life 2hl2mp/hl2mp_gamerules.cpp

static const char *s_PreserveEnts[] =
{
	"ai_network",
	"ai_hint",
	"hl2mp_gamerules",
	"team_manager",
	"player_manager",
	"env_soundscape",
	"env_soundscape_proxy",
	"env_soundscape_triggerable",
	"env_sun",
	"env_wind",
	"env_fog_controller",
	"func_brush",
	"func_wall",
	"func_buyzone",
	"func_illusionary",
	"infodecal",
	"info_projecteddecal",
	"info_node",
	"info_target",
	"info_node_hint",
	"info_player_deathmatch",
	"info_player_combine",
	"info_player_rebel",
	"info_map_parameters",
	"keyframe_rope",
	"move_rope",
	"info_ladder",
	"player",
	"point_viewcontrol",
	"scene_manager",
	"shadow_control",
	"sky_camera",
	"soundent",
	"trigger_soundscape",
	"viewmodel",
	"predicted_viewmodel",
	"worldspawn",
	"point_devshot_camera",
	"", // END Marker
};

Portalportal/portal_mp_gamerules.cpp

static const char *s_PreserveEnts[] =
{
	"ai_network",
	"ai_hint",
	"hl2mp_gamerules",
	"team_manager",
	"player_manager",
	"env_soundscape",
	"env_soundscape_proxy",
	"env_soundscape_triggerable",
	"env_sun",
	"env_wind",
	"env_fog_controller",
	"func_brush",
	"func_wall",
	"func_buyzone",
	"func_illusionary",
	"infodecal",
	"info_projecteddecal",
	"info_node",
	"info_target",
	"info_node_hint",
	"info_player_deathmatch",
	"info_player_combine",
	"info_player_rebel",
	"info_map_parameters",
	"keyframe_rope",
	"move_rope",
	"info_ladder",
	"player",
	"point_viewcontrol",
	"scene_manager",
	"shadow_control",
	"sky_camera",
	"soundent",
	"trigger_soundscape",
	"viewmodel",
	"predicted_viewmodel",
	"worldspawn",
	"point_devshot_camera",
	"", // END Marker
};

Team Fortress 2tf/tf_gamerules.cpp

static const char *s_PreserveEnts[] =
{
	"player",
	"viewmodel",
	"worldspawn",
	"soundent",
	"ai_network",
	"ai_hint",
	"env_soundscape",
	"env_soundscape_proxy",
	"env_soundscape_triggerable",
	"env_sprite",
	"env_sun",
	"env_wind",
	"env_fog_controller",
	"func_wall",
	"func_illusionary",
	"info_node",
	"info_target",
	"info_node_hint",
	"point_commentary_node",
	"point_viewcontrol",
	"func_precipitation",
	"func_team_wall",
	"shadow_control",
	"sky_camera",
	"scene_manager",
	"trigger_soundscape",
	"commentary_auto",
	"point_commentary_node",
	"point_commentary_viewpoint",
	"bot_roster",
	"info_populator",
	"tf_gamerules",
	"tf_team_manager",
	"tf_player_manager",
	"tf_team",
	"tf_objective_resource",
	"keyframe_rope",
	"move_rope",
	"tf_viewmodel",
	"tf_logic_training",
	"tf_logic_training_mode",
	"tf_logic_raid",
	"tf_powerup_bottle",
	"tf_mann_vs_machine_stats",
	"tf_wearable",
	"tf_wearable_demoshield",
	"tf_wearable_robot_arm",
	"tf_wearable_vm",
	"tf_logic_bonusround",
	"vote_controller",
	"monster_resource",
	"tf_logic_medieval",
	"tf_logic_cp_timer",
	"tf_logic_tower_defense",
	"tf_logic_mann_vs_machine",
	"func_upgradestation",
	"entity_rocket",
	"entity_carrier",
	"entity_sign",
	"entity_saucer",
	"tf_halloween_gift_pickup",
	"tf_logic_competitive",
	"", // END Marker
};

Counter-Strike: Sourcecstrike/cs_gamerules.cpp

static const char *s_PreserveEnts[] =
{
	"ai_network",
	"ai_hint",
	"cs_gamerules",
	"cs_team_manager",
	"cs_player_manager",
	"env_soundscape",
	"env_soundscape_proxy",
	"env_soundscape_triggerable",
	"env_sun",
	"env_wind",
	"env_fog_controller",
	"func_brush",
	"func_wall",
	"func_buyzone",
	"func_illusionary",
	"func_hostage_rescue",
	"func_bomb_target",
	"infodecal",
	"info_projecteddecal",
	"info_node",
	"info_target",
	"info_node_hint",
	"info_player_counterterrorist",
	"info_player_terrorist",
	"info_map_parameters",
	"keyframe_rope",
	"move_rope",
	"info_ladder",
	"player",
	"point_viewcontrol",
	"scene_manager",
	"shadow_control",
	"sky_camera",
	"soundent",
	"trigger_soundscape",
	"viewmodel",
	"predicted_viewmodel",
	"worldspawn",
	"point_devshot_camera",
	"", // END Marker
};

Counter-Strike: Global Offensivecstrike15/cs_gamerules.cpp

static const char *s_PreserveEnts[] =
{
	"ai_network",
	"ai_hint",
	"cs_gamerules",
	"cs_team_manager",
	"cs_player_manager",
	"env_soundscape",
	"env_soundscape_proxy",
	"env_soundscape_triggerable",
	"env_sun",
	"env_wind",
	"env_fog_controller",
	"env_tonemap_controller",
	"env_cascade_light",
	"func_brush",
	"func_wall",
	"func_buyzone",
	"func_illusionary",
	"func_hostage_rescue",
	"func_bomb_target",
	"infodecal",
	"info_projecteddecal",
	"info_node",
	"info_target",
	"info_node_hint",
	"info_player_counterterrorist",
	"info_player_terrorist",
	"info_enemy_terrorist_spawn",
	"info_deathmatch_spawn",
	"info_armsrace_counterterrorist",
	"info_armsrace_terrorist",
	"info_map_parameters",
	"keyframe_rope",
	"move_rope",
	"info_ladder",
	"player",
	"point_viewcontrol",
	"point_viewcontrol_multiplayer",
	"scene_manager",
	"shadow_control",
	"sky_camera",
	"soundent",
	"trigger_soundscape",
	"viewmodel",
	"predicted_viewmodel",
	"worldspawn",
	"point_devshot_camera",
	"logic_choreographed_scene",
	"cfe_player_decal",
	"info_bomb_target_hint_A",
	"info_bomb_target_hint_B",
	"info_hostage_rescue_zone_hint",
	"generic_actor",
	"vote_controller",
	"wearable_item",
	"point_hiding_spot",
	"game_coopmission_manager",
	"chicken",
	"", // END Marker
};

Day of Defeat: Sourcedod/dod_gamerules.cpp

static const char *s_PreserveEnts[] =
{
	"player",
	"viewmodel",
	"worldspawn",
	"soundent",
	"ai_network",
	"ai_hint",
	"dod_gamerules",
	"dod_team_manager",
	"dod_player_manager",
	"dod_objective_resource",
	"env_soundscape",
	"env_soundscape_proxy",
	"env_soundscape_triggerable",
	"env_sprite",
	"env_sun",
	"env_wind",
	"env_fog_controller",
	"func_brush",
	"func_wall",
	"func_illusionary",
	"info_node",
	"info_target",
	"info_node_hint",
	"info_player_allies",
	"info_player_axis",
	"point_viewcontrol",
	"shadow_control",
	"sky_camera",
	"scene_manager",
	"trigger_soundscape",
	"info_dod_detect",
	"dod_team_allies",
	"dod_team_axis",
	"point_commentary_node",
	"dod_round_timer",
	"func_precipitation",
	"func_team_wall",
	"", // END Marker
};

Alien Swarmswarm/asw_gamerules.cpp

CAlienSwarm::CAlienSwarm()
{
	// set which entities should stay around when we restart the mission
	m_MapResetFilter.AddKeepEntity("worldspawn");
	m_MapResetFilter.AddKeepEntity("soundent");
	m_MapResetFilter.AddKeepEntity("asw_gamerules");
	m_MapResetFilter.AddKeepEntity("player");
	m_MapResetFilter.AddKeepEntity("asw_player");
	m_MapResetFilter.AddKeepEntity("player_manager");	
	m_MapResetFilter.AddKeepEntity("predicted_viewmodel");
	m_MapResetFilter.AddKeepEntity("sdk_team_manager");
	m_MapResetFilter.AddKeepEntity("scene_manager");
	m_MapResetFilter.AddKeepEntity("event_queue_saveload_proxy");
	m_MapResetFilter.AddKeepEntity("ai_network");
}