DestroyElement: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
m (Changed comment above destroyElement ( root ) line)
Line 21: Line 21:
-- Find the root element (the element that contains all others)
-- Find the root element (the element that contains all others)
root = getRootElement ()
root = getRootElement ()
-- Destroy it and it's children.
-- Destroy all its children, except players.
destroyElement ( root )
destroyElement ( root )
</syntaxhighlight>
</syntaxhighlight>
Line 57: Line 57:
--remove the event handler for the colshape
--remove the event handler for the colshape
removeEventHandler ( "onColShapeHit", source, claymoreHit )
removeEventHandler ( "onColShapeHit", source, claymoreHit )
--destroy the claymore object, and the col shape so it doesnt trigger again.
--destroy the claymore object, and the col shape so it doesn't trigger again.
destroyElement ( claymoreObject )
destroyElement ( claymoreObject )
destroyElement ( source )
destroyElement ( source )

Revision as of 14:32, 15 August 2007

This function destroys an element, and all the elements within it in the hierarchy (i.e. it's children and their children etc). Player elements cannot be destroyed using this function. A player can only be removed from the hierarchy when they quit or are kicked. The root element also cannot be destroyed, however, passing the root as an argument will wipe all elements from the map, except for the players, which will be placed as child elements just off the root node.

Players are not the only elements that cannot be deleted. This list also includes remoteclinets, and console elements.

Syntax

bool destroyElement ( element elementToDestroy )

Required Arguments

  • elementToDestroy: The element you wish to destroy.

Returns

Returns true if the element was destroyed successfully, false if either the element passed to it was invalid or it could not be destroyed for some other reason.

Example

Example 1: This example would destroy every element in the map, with the exception of players and the root element itself.

-- Find the root element (the element that contains all others)
root = getRootElement ()
-- Destroy all its children, except players.
destroyElement ( root )

Example 2: This example destroys all the vehicles of the specified model:

function destroyVehiclesOfModel(modelID)
	-- get a table of all the vehicles that exist and loop through it
	local vehicles = getElementsByType("vehicle")
	for i,v in ipairs(vehicles) do
		-- if the vehicle's ID is the one provided, destroy it
		if (getVehicleID(v) == modelID) then
			destroyElement(v)
		end
	end
end

Example 3: This example allows creation of claymores, which trigger and explode. When they explode, the colshape and object for the claymore are destroyed.

function createClaymore ( x,y,z, creator )
	local claymoreObject = createObject ( 1945, x, y, z - 1, 0, 0, 90 ) --create an object which looks like a claymore
	local claymoreCol = createColSphere ( x, y, z, 1 ) --create a col sphere with radius 1
	setElementData ( claymoreCol, "object", claymoreObject ) --store the object of the claymore
	setElementData ( claymoreCol, "creatorPlayer", creator ) --store the person who created it
	addEventHandler ( "onColShapeHit", claymoreCol, claymoreHit ) --add an event handler to the colshape
end

function claymoreHit ( player, matchingDimension )
	--retrieve the object associated to the claymore, and who created it
	local claymoreObject = getElementData ( source, "object" )
	local claymoreCreator = getElementData ( source, "creatorPlayer" )
	--get the position of the claymore
	local x,y,z = getElementPosition ( source )
	createExplosion ( x,y,z, 12, claymoreCreator ) --create an explosion, associated to the creator, of a small size at the col's position
	--remove the event handler for the colshape
	removeEventHandler ( "onColShapeHit", source, claymoreHit )
	--destroy the claymore object, and the col shape so it doesn't trigger again.
	destroyElement ( claymoreObject )
	destroyElement ( source )
end

See Also