Garry's Mod Wiki

game.CleanUpMap

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

Description

If called serverside it will remove ALL entities which were not created by the map (not players or weapons held by players).
It won't remove Entities who have the EFL_KEEP_ON_RECREATE_ENTITIES Flag set.

On the client it will remove decals, sounds, gibs, dead NPCs, and entities created via ents.CreateClientProp.

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

Calling this in a ENTITY:StartTouch or ENTITY:Touch hook will crash the game.

Issue Tracker: 1142
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

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. The callback function will be called after the map cleanup has been performed.
This was recently added in version (2024.01.04). It might only be available on the Dev Branch right now.

Example

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

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