CreateColCuboid: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(correct the example)
m (Added another example for centered cuboids)
 
(2 intermediate revisions by one other user not shown)
Line 21: Line 21:
Returns a [[colshape]] element if successful, ''false'' if invalid arguments were passed to the function.
Returns a [[colshape]] element if successful, ''false'' if invalid arguments were passed to the function.


==Example==  
==Examples==
<section name="Server" class="server" show="true">
<section name="Server" class="server" show="true">
This example displays a chat message when a player enters the colshape and allows the colshape to be created using a console function ''set_zone''.
This example displays a chat message when a player enters the colshape and allows the colshape to be created using a console function ''set_zone''.
Line 32: Line 32:


function setZone(playerSource, commandName, fX, fY, fZ, fWidth, fDepth, fHeight)
function setZone(playerSource, commandName, fX, fY, fZ, fWidth, fDepth, fHeight)
     local fX, fY, fWidth, fDepth, fHeight = tonumber(fX), tonumber(fY), tonumber(fWidth), tonumber(fDepth), tonumber(fHeight)
     local fX, fY, fZ, fWidth, fDepth, fHeight = tonumber(fX), tonumber(fY), tonumber(fZ), tonumber(fWidth), tonumber(fDepth), tonumber(fHeight)
     if (not fX) or (not fY) or (not fWidth) or (not fHeight) then
     if (not fX) or (not fY) or (not fZ) or (not fWidth) or (not fDepth) or (not fHeight) then
         outputChatBox("Syntax: /"..commandName.." [X] [Y] [Width] [Depth] [Height]", playerSource)
         outputChatBox("Syntax: /"..commandName.." [X] [Y] [Z] [Width] [Depth] [Height]", playerSource)
     else
     else
         if (theZone ~= nil) then
         if (theZone ~= nil) then
             destroyElement(theZone)
             destroyElement(theZone)
         end
         end
         local tempCol = createColCuboid(fX, fY, fWidth, fDepth, fHeight)
         local tempCol = createColCuboid(fX, fY, fZ, fWidth, fDepth, fHeight)
         addEventHandler("onColShapeHit", tempCol, shapeHit)
         addEventHandler("onColShapeHit", tempCol, shapeHit)
         outputChatBox("Zone has "..(theZone ~= nil and "moved" or "created").."!", playerSource)
         outputChatBox("Zone has "..(theZone ~= nil and "moved" or "created").."!", playerSource)
Line 46: Line 46:
end
end
addCommandHandler("set_zone", setZone, false, false)
addCommandHandler("set_zone", setZone, false, false)
</syntaxhighlight>
</section>
<section name="Server" class="server" show="true">
This function creates a cuboid and centers it to given coordinates
<syntaxhighlight lang="lua">
addCommandHandler('createCenteredCuboid', function(player, cmd, posX, posY, posZ, sizeX, sizeY, sizeZ)
posX = posX - sizeX / 2
posY = posY - sizeY / 2
posZ = posZ - sizeZ / 2
createCuboid(posX, posY, posZ, sizeX, sizeY, sizeZ)
end)
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>

Latest revision as of 14:29, 31 January 2024

This function creates a collision cuboid. This is a shape that has a position, width, depth and height. See Wikipedia for a definition of a cuboid. The XYZ of the col starts at the southwest bottom corner of the shape.

[[{{{image}}}|link=|]] Tip: To visualize a colshape when writing scripts, use the client console command showcol
[[{{{image}}}|link=|]] Note: Attaching a cuboid colshape to another element may give unexpected results as the origin is not at the cuboid centre. Try using a collision sphere for attaching instead

Syntax

colshape createColCuboid ( float fX, float fY, float fZ, float fWidth, float fDepth, float fHeight )
A cuboid created using this function

OOP Syntax Help! I don't understand this!

Method: ColShape.Cuboid(...)


Required Arguments

  • fX: The X position of the collision cuboid's western side.
  • fY: The Y position of the collision cuboid's southern side.
  • fZ: The Z position of the collision cuboid's lowest side.
  • fWidth: The collision cuboid's width.
  • fDepth: The collision cuboid's depth.
  • fHeight: The collision cuboid's height.

Returns

Returns a colshape element if successful, false if invalid arguments were passed to the function.

Examples

Click to collapse [-]
Server

This example displays a chat message when a player enters the colshape and allows the colshape to be created using a console function set_zone.

local theZone

function shapeHit(thePlayer)
    outputChatBox(getPlayerName(thePlayer).. " is in the zone!")
end

function setZone(playerSource, commandName, fX, fY, fZ, fWidth, fDepth, fHeight)
    local fX, fY, fZ, fWidth, fDepth, fHeight = tonumber(fX), tonumber(fY), tonumber(fZ), tonumber(fWidth), tonumber(fDepth), tonumber(fHeight)
    if (not fX) or (not fY) or (not fZ) or (not fWidth) or (not fDepth) or (not fHeight) then
        outputChatBox("Syntax: /"..commandName.." [X] [Y] [Z] [Width] [Depth] [Height]", playerSource)
    else
        if (theZone ~= nil) then
            destroyElement(theZone)
        end
        local tempCol = createColCuboid(fX, fY, fZ, fWidth, fDepth, fHeight)
        addEventHandler("onColShapeHit", tempCol, shapeHit)
        outputChatBox("Zone has "..(theZone ~= nil and "moved" or "created").."!", playerSource)
        theZone = tempCol
    end
end
addCommandHandler("set_zone", setZone, false, false)
Click to collapse [-]
Server

This function creates a cuboid and centers it to given coordinates

addCommandHandler('createCenteredCuboid', function(player, cmd, posX, posY, posZ, sizeX, sizeY, sizeZ)
	posX = posX - sizeX / 2
	posY = posY - sizeY / 2
	posZ = posZ - sizeZ / 2
	createCuboid(posX, posY, posZ, sizeX, sizeY, sizeZ)
end)

See Also