Garry's Mod Wiki

game.CleanUpMap

  game.CleanUpMap( boolean dontSendToClients = false, table extraFilters = {}, function callback = nil )

Description

Removes most entities, and then respawns entities created by the map, as if the map was just loaded.

There are certain exclusions, such as players or weapons held by players, soundscapes and others.
EFL_KEEP_ON_RECREATE_ENTITIES can be set on entities to preserve them through a map cleanup.

On the client it will remove decals, sounds, gibs, dead NPCs, and entities created via ents.CreateClientProp. This function is ran on all clients from server automatically, when it is called on the server.

This function calls GM:PreCleanupMap before cleaning up the map and GM:PostCleanupMap after cleaning up the map.

Beware of calling this function in hooks that may be called on map clean up (such as ENTITY:StartTouch) to avoid infinite loops.

Calling this destroys all BASS streams.

Issue Tracker: 2874
This can crash when removing _firesmoke entities. You can use the example below to workaround this issue.

Issue Tracker: 3637
The EFL_KEEP_ON_RECREATE_ENTITIES flag doesn't prevent an entity from being recreated, which means flagged entities will be duplicated since they are both kept and recreated.

Issue Tracker: 6105

Arguments

1 boolean dontSendToClients = false
If set to true, don't run this functions on all clients.
2 table extraFilters = {}
Entity classes not to reset during cleanup.
3 function callback = nil
If set, delays the map cleanup until the end of a server tick, allowing bypassing the entity limit on maps with large amounts of them. Otherwise the entities will not be cleaned up until the end of the server tick.

The callback function will be called after the map cleanup has been performed.

Example

Quick fix for issue #3637 (from Garry's Mod Github).

game.CleanUpMap( false, { "env_fire", "entityflame", "_firesmoke" } )