CreateWater: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
m (3rd water crashes the server. Removed it.)
(37 intermediate revisions by 13 users not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
{{Client function}}
{{Server client function}}


Creates an area of water.
Creates an area of [[water]].


The largest possible size of a water area is 5996×5996. Also be aware that the function will change all x and y coordinates you specify into even integer numbers if necessary: this is because of a limitation of San Andreas.
You are able to give the water a shallow water effect, which practically changes the water invisible to the eye. However, all elements still work the same way as without the shallow effect - allowing swimming, diving, vehicles to sink, etc.
{{Note|X and Y positions will be changed to an even integer. i.e. -2, 0, 2, 4 etc.}}
{{Important Note|If you're working with dimensions, be sure to apply it by using [[setElementDimension]].}}
==Syntax==
==Syntax==
<syntaxhighlight lang="lua">bool createWater ( float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4, [bool shallow = false] )
<syntaxhighlight lang="lua">water createWater ( float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3 [, float x4, float y4, float z4 ] [, bool bShallow = false ] )</syntaxhighlight>
bool createWater ( float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, [bool shallow = false] )</syntaxhighlight>
[[Image:WaterAreas.jpg|thumb|Example of water quadrant.|284x230px]]
[[Image:WaterAreas tmb.jpg|frame|Example of water quadrant.]]
===Required Arguments===
For creating a water quadrant:
*'''x1, y1, z1:''' position of bottom left corner. (south-west)
*'''x2, y2, z2:''' position of bottom right corner. (south-east)
*'''x3, y3, z3:''' position of top left corner. (north-west)
*'''x4, y4, z4:''' position of top right corner. (north-east)


For creating a water triangle:
{{OOP||[[Water]]}}
*'''x1, y1, z1:''' position of bottom/top left corner.
*'''x2, y2, z2:''' position of bottom/top right corner.
*'''x3, y3, z3:''' position of top/bottom corner.


The largest possible size of a water area is 2998&#0215;2998.
===Required Arguments===
*'''x1, y1, z1:''' position of bottom left (south-west) corner.
*'''x2, y2, z2:''' position of bottom right (south-east) corner.
*'''x3, y3, z3:''' position of top left (north-west) corner.
''Note: Only 3 coords creates a triangle''


===Optional Arguments===
===Optional Arguments===
*'''shallow:''' makes the water shallow if true. Practically speaking there is no visible water surface in this case, only the splashes when someone walks through it.
*'''x4, y4, z4:''' position of top right (north-east) corner.
*'''bShallow:''' gives the water a shallow water effect.


===Returns===
===Returns===
Returns ''true'' if successful, ''false'' otherwise.
Returns a water element if successful, ''false'' otherwise. The water element can be repositioned with [[setElementPosition]] and destroyed with [[destroyElement]].


==Example==  
==Example==  
<section name="Client" class="client" show="true">
<section name="Client" class="client" show="true">
Example code for creating a water area to cover the entire San Andreas Map. (Flood the cities)
Example code for creating a water area to cover the entire San Andreas Map (flood the cities). Also, [[setWaterLevel]] is used to raise the existing rivers and lakes.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
-- Setting water properties.
-- Setting water properties.
Line 47: Line 47:
-- OnClientResourceStart function that creates the water.
-- OnClientResourceStart function that creates the water.
function thaResourceStarting( )
function thaResourceStarting( )
outputChatBox("water stuffz created - " .. southEast_X .. "x" .. southEast_X .. " - Height: " .. height .. " - Shallow: False")
    water = createWater ( southWest_X, southWest_Y, height, southEast_X, southEast_Y, height, northWest_X, northWest_Y, height, northEast_X, northEast_Y, height )
water = createWater ( southWest_X, southWest_Y, height, southEast_X, southEast_Y, height, northWest_X, northWest_Y, height, northEast_X, northEast_Y, height )
    setWaterLevel ( height )
end
addEventHandler("onClientResourceStart", resourceRoot, thaResourceStarting)
</syntaxhighlight>
</section>
<section name="Client" class="client" show="true">
This example creates water at the given coordinates and sets the height of the water level to 20 for when the client joins.
<syntaxhighlight lang="lua">
function thaResourceStarting( )
    water = createWater ( 1866, -1444, 10, 1968, -1442, 10, 1866, -1372, 10, 1968, -1370, 10 )
    setWaterLevel ( water, 20 )
end
end
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), thaResourceStarting)
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), thaResourceStarting)
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>
<section name="Server" class="server" show="true">
This example fills the Easter Basin with water.
<syntaxhighlight lang="lua">
function fillDock()
    waters = {
        createWater (-1612, 108, 0, -1550, 108, 0, -1612, 170, 0),
        createWater (-1733, 48, 0, -1612, 48, 0, -1612, 170, 0),
        createWater (-1673, 48, 0, -1612, 48, 0, -1673, -13, 0),
        createWater (-1612, 86, 0, -1574, 86, 0, -1612, 48, 0),
        createWater (-1612, 86, 0, -1574, 86, 0, -1612, 108, 0, -1574, 108, 0), -- Rectangle
        createWater (-1610, 168, 0, -1600, 168, 0, -1610, 170, 0, -1600, 170, 0), -- Rectangle
        createWater (-1612, 170, 0, -1610, 170, 0, -1610, 168, 0),
    }
end
addEventHandler ("onResourceStart", resourceRoot, fillDock)
</syntaxhighlight>
</section>
== Issues ==
{{Issues|
{{Issue|7542|Water functions in general do not work outside the -3000 -3000 3000 3000 bounds}}
{{Issue|9608|(Fixed in r13987) "shallow" argument only works client-side}}
}}


==See Also==
==See Also==
{{Client world functions}}
{{Client water functions}}

Revision as of 23:45, 14 September 2019

Creates an area of water.

The largest possible size of a water area is 5996×5996. Also be aware that the function will change all x and y coordinates you specify into even integer numbers if necessary: this is because of a limitation of San Andreas.

You are able to give the water a shallow water effect, which practically changes the water invisible to the eye. However, all elements still work the same way as without the shallow effect - allowing swimming, diving, vehicles to sink, etc.

[[{{{image}}}|link=|]] Note: X and Y positions will be changed to an even integer. i.e. -2, 0, 2, 4 etc.
[[{{{image}}}|link=|]] Important Note: If you're working with dimensions, be sure to apply it by using setElementDimension.

Syntax

water createWater ( float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3 [, float x4, float y4, float z4 ] [, bool bShallow = false ] )
Example of water quadrant.


OOP Syntax Help! I don't understand this!

Method: Water(...)


Required Arguments

  • x1, y1, z1: position of bottom left (south-west) corner.
  • x2, y2, z2: position of bottom right (south-east) corner.
  • x3, y3, z3: position of top left (north-west) corner.

Note: Only 3 coords creates a triangle

Optional Arguments

  • x4, y4, z4: position of top right (north-east) corner.
  • bShallow: gives the water a shallow water effect.

Returns

Returns a water element if successful, false otherwise. The water element can be repositioned with setElementPosition and destroyed with destroyElement.

Example

Click to collapse [-]
Client

Example code for creating a water area to cover the entire San Andreas Map (flood the cities). Also, setWaterLevel is used to raise the existing rivers and lakes.

-- Setting water properties.
height = 40
SizeVal = 2998
-- Defining variables.
southWest_X = -SizeVal
southWest_Y = -SizeVal
southEast_X = SizeVal
southEast_Y = -SizeVal
northWest_X = -SizeVal
northWest_Y = SizeVal
northEast_X = SizeVal
northEast_Y = SizeVal

-- OnClientResourceStart function that creates the water.
function thaResourceStarting( )
    water = createWater ( southWest_X, southWest_Y, height, southEast_X, southEast_Y, height, northWest_X, northWest_Y, height, northEast_X, northEast_Y, height )
    setWaterLevel ( height )
end
addEventHandler("onClientResourceStart", resourceRoot, thaResourceStarting)
Click to collapse [-]
Client

This example creates water at the given coordinates and sets the height of the water level to 20 for when the client joins.

function thaResourceStarting( )
    water = createWater ( 1866, -1444, 10, 1968, -1442, 10, 1866, -1372, 10, 1968, -1370, 10 )
    setWaterLevel ( water, 20 )
end
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), thaResourceStarting)
Click to collapse [-]
Server

This example fills the Easter Basin with water.

function fillDock()
    waters = {
        createWater (-1612, 108, 0, -1550, 108, 0, -1612, 170, 0),
        createWater (-1733, 48, 0, -1612, 48, 0, -1612, 170, 0),
        createWater (-1673, 48, 0, -1612, 48, 0, -1673, -13, 0),
        createWater (-1612, 86, 0, -1574, 86, 0, -1612, 48, 0),
        createWater (-1612, 86, 0, -1574, 86, 0, -1612, 108, 0, -1574, 108, 0), -- Rectangle
        createWater (-1610, 168, 0, -1600, 168, 0, -1610, 170, 0, -1600, 170, 0), -- Rectangle
        createWater (-1612, 170, 0, -1610, 170, 0, -1610, 168, 0),
    }
end
addEventHandler ("onResourceStart", resourceRoot, fillDock)

Issues

Issue ID Description
#7542 Water functions in general do not work outside the -3000 -3000 3000 3000 bounds
#9608 (Fixed in r13987) "shallow" argument only works client-side

See Also