Code Snippets General
From Multi Theft Auto: Wiki
This page contains general purpose code snippets.
(You can test your code in http://www.lua.org/demo.html)
Mathematical Snippets
Generating Pseudo-Random Numbers
math.random( 3, 9 ) -- Generates a random integer between 3 and 9 inclusively. math.Rand( 3, 9 ) -- Generates a random real number (floating point) between 3 and 9 inclusively.
Better Rounding
- This allows you to round to a decimal point instead of to a whole number.
-- Rounds to the 2nd decimal point -- Usage: math.AdvRound( 1.6443132, 2 ); -- function math.AdvRound( val, d ) d = d or 0; return math.Round( val * (10 ^ d) ) / (10 ^ d); end
Toggling a Boolean
local Boolean = false -- Toggle the boolean. Boolean = not Boolean -- or, in C-style notation: Boolean = !Boolean
Variables
Defining Multiple Variables
-- X = 1, Y = 2, Z = 3. local X, Y, Z = 1, 2, 3
Using OR
-- If Y is non-nil, set X to Y; otherwise, set X to 0. local X = Y or 0
Switching Two Variables without Making a Third
a,b = b,a
Loops and statements
Looping through Every Character in a String
for i = 1, string.len( strToLoop ) do local Character = string.sub( strToLoop, i, i ) -- Do stuff with Character here. end
Using 'repeat, until'
repeat num = math.random( 200 ) Msg( num .. "\n" ) until( num == 25 )
Doing 'if .. then ... else' in One Line
local value = ( x > 1 ) && "X is greater" || "X isn't greater"; --and in STD. Lua notation: local value = ( x > 1 ) and "X is greater" or "X isn't greater"; --basic format for Inline Conditionals: local value = (Condition) and TrueValue or FalseValue;
Returning 'if .. then ... else'
return current < max and func( current + 1, max ) or nil
Miscellaneous
Convert XYToRelative (by Cazomino05)
Converts an XY co-ordinate to a relative size requires the resolution you tested it on (you can find it in gta display settings)
function ConvertXYToRelative(Resx, Resy, x, y) local Rx = (1/Resx)*x local Ry = (1/Resy)*y return Rx,Ry end -- EXAMPLE function ResourceStarted(resource) if (resource ~= getThisResource()) then return end local x,y = ConvertXYToRelative(800, 600, 400, 300) outputChatBox("Relative sizes: "..x..", "..y) end addEventHandler("onResourceStart", getRootElement(), ResourceStarted)