CallServerFunction
From Multi Theft Auto: Wiki
Note:
It is strongly advised that you validate the functions being called or potentially a client can do anything they want with your server - banning players, adding themselves as admin (depending how well your ACL is set up) etc. This is why this function is not built into MTA.
This function allows you to call any serverside function from the client's side. Of course only those which are available serverside. It doesn't matter if it's a MTA function, a Lua standard function or a custom function.
Numbers are automatically converted to a string and vice versa serverside to avoid data being lost. If you don't need this feature just delete it.
Important Note: Bear in mind that the funcname has to be a string!
Syntax
void callServerFunction( string funcname, [ var arg1, ... ] )
Required Arguments
- funcname: The name of the function that should be called serverside. May also be a function in a table, e.g. "math.round".
Optional Arguments
NOTE: When using optional arguments, you must supply all arguments before the one you wish to use. For more information on optional arguments, see Optional Arguments.
- arg1-argn: The arguments that should be passed to the function.
Code
Click to collapse [-]
Clientside Scriptfunction callServerFunction(funcname, ...) local arg = { ... } if (arg[1]) then for key, value in next, arg do if (type(value) == "number") then arg[key] = tostring(value) end end end -- If the serverside event handler is not in the same resource, replace 'resourceRoot' with the appropriate element triggerServerEvent("onClientCallsServerFunction", resourceRoot , funcname, unpack(arg)) end
Click to collapse [-]
Serverside Scriptfunction callServerFunction(funcname, ...) local arg = { ... } if (arg[1]) then for key, value in next, arg do arg[key] = tonumber(value) or value end end loadstring("return "..funcname)()(unpack(arg)) end addEvent("onClientCallsServerFunction", true) addEventHandler("onClientCallsServerFunction", resourceRoot , callServerFunction)
Example
Click to collapse [-]
ClientThis example removes the player from his team.
-- get the local player element local _local = getLocalPlayer() -- define the leaveTeam command handler function function cmdLeaveTeam() -- set the player's team to nil callServerFunction("setPlayerTeam", _local) end -- add the command handler addCommandHandler("leaveTeam", cmdLeaveTeam, false)
Author: NeonBlack
See Also
- callClientFunction » This function allows you to call any clientside function from the server's side.
- callServerFunction » This function allows you to call any server-side function from the client's side.
- Check » This function checks if it's arguments are of the right types and calls the error-function if one isn't.
- doForAllElements » This function can be used to execute a specified function for all elements of a specified type.
- iterElements » Returns an iterator for your for loops saving time typing ipairs( getElementsByType( type ) ), instead you type: iterElements( type ).
- findRotation » Takes two points and returns the direction from point A to point B.
- FormatDate » Formats a date on the basis of a format string and returns it.
- getAge » This function calculates the age of a birthday.
- getPointFromDistanceRotation » Finds a point based on a starting point, direction and distance.
- getTimestamp » With this function you can get the UNIX timestamp.
- IfElse » Returns one of two values based on a boolean expression.
- isLeapYear » Checks if the given year is a leap year.
- math.round » Rounds a number whereas the number of decimals to keep and the method may be set.
- setTableProtected » Protects a table and makes it read-only.
- setVehicleGravityPoint » This clientside function sets a vehicle's gravity in the direction of a 3 dimensional coordinate with the strength specified.
- string.explode » This function splits a string at a given separator pattern and returns a table with the pieces.
- table.copy » This function copies a whole table and all the tables in that table.
- table.map » This function goes through a table and replaces every field with the return of the passed function, where the field's value is passed as first argument and optionally more arguments.
- table.size » Finds the absolute size of a table.
- var_dump »This function outputs information about one or more variables using outputConsole().
- RGBToHex » This function returns a string representing the color in hexadecimal.
- getAlivePlayersInTeam » This function returns a table of the alive players in a team.
- getResourceSettings » This function returns a table of the resource settings.
- onVehicleWeaponFire » This code implements an event that is triggered when a player in a vehicle fires a vehicles weapon.
- toHex » This function converts a decimal number to a hexadecimal number, as a fix to be used clientside.
- getElementSpeed » This function allows you to get element speed in kph or mph units.
- setElementSpeed » This function allows you to set moving element speed in kph or mph units.
- centerWindow » This function center the window in any resolution.
- coroutine.resume » Fix for hidden coroutine error messages
- getPlayerFromNamePart » This function allows you to get player From his Name part.