GetVersion: Difference between revisions
Jump to navigation
Jump to search
(Example changed to promote secure use of event parameters) |
mNo edit summary |
||
(13 intermediate revisions by 9 users not shown) | |||
Line 3: | Line 3: | ||
This function gives you various version information about MTA and the operating system. | This function gives you various version information about MTA and the operating system. | ||
{{Note|Clientside will return the version from the player, and the server-sided will return version from the server.}} | |||
{{Note|Current <!-- Newest --> server version: {{CurrentVersion}}}} | |||
==Syntax== | ==Syntax== | ||
<syntaxhighlight lang="lua">table getVersion ( )</syntaxhighlight> | <syntaxhighlight lang="lua">table getVersion ( )</syntaxhighlight> | ||
===Returns=== | ===Returns=== | ||
Line 22: | Line 21: | ||
**'''"Release"''' - A build that is publicly released (provisional). | **'''"Release"''' - A build that is publicly released (provisional). | ||
*'''tag:''' the build tag (from 1.0.3 onwards). Contains infomation about the underlying version used. i.e. The final version of 1.0.3 has the build tag of "1.0.3 rc-9". (This can be confirmed by using the console command 'ver'.) | *'''tag:''' the build tag (from 1.0.3 onwards). Contains infomation about the underlying version used. i.e. The final version of 1.0.3 has the build tag of "1.0.3 rc-9". (This can be confirmed by using the console command 'ver'.) | ||
*'''sortable:''' a 15 character sortable version string (from 1.0.4 onwards). Format of the string is described in [[getPlayerVersion]]. | |||
==Example== | ==Example== | ||
Line 27: | Line 27: | ||
<section name="Server" class="server" show="true"> | <section name="Server" class="server" show="true"> | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function setHoboSkin ( playerSource ) | function setHoboSkin(playerSource) | ||
local version = getVersion ( ) | local version = getVersion() | ||
if version.number < 256 then -- MTA 1.0 version number is 0x0100 | if version.number < 256 then -- MTA 1.0 version number is 0x0100 | ||
setPlayerSkin ( playerSource, 137 ) | setPlayerSkin(playerSource, 137) | ||
else | else | ||
setElementModel ( playerSource, 137 ) | setElementModel(playerSource, 137) | ||
end | end | ||
end | end | ||
addCommandHandler ( "hobo", setHoboSkin ) | addCommandHandler("hobo", setHoboSkin) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
Line 42: | Line 42: | ||
<section name="Client" class="client" show="true"> | <section name="Client" class="client" show="true"> | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function sendVersion () | function sendVersion() | ||
-- Send local player version to the server | -- Send local player version to the server | ||
triggerServerEvent ( "onNotifyPlayerVersion", | triggerServerEvent("onNotifyPlayerVersion", resourceRoot, getVersion()) | ||
end | end | ||
addEventHandler ( "onClientResourceStart", | addEventHandler("onClientResourceStart", resourceRoot, sendVersion) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</section><section name="Server" class="server" show="true"> | </section><section name="Server" class="server" show="true"> | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function handlePlayerVersion( version ) | function handlePlayerVersion(version) | ||
if version.number > 256 + 3 then -- Allow anything above 1.0.3 | if version.number > 256 + 3 then -- Allow anything above 1.0.3 | ||
return | return | ||
Line 56: | Line 56: | ||
if version.number == 256 + 3 then -- Check further if it is exactly 1.0.3 | if version.number == 256 + 3 then -- Check further if it is exactly 1.0.3 | ||
if version.type == "Release" then -- Check further if it is the "Release" type | if version.type == "Release" then -- Check further if it is the "Release" type | ||
local _,_,buildnumber = string.find( version.tag or "", "(%d)$" ) -- Extract the build number if there | local _, _, buildnumber = string.find(version.tag or "", "(%d)$") -- Extract the build number if there | ||
buildnumber = tonumber(buildnumber) or 0 | buildnumber = tonumber(buildnumber) or 0 | ||
if buildnumber >= 9 then -- Allow 9 and above | if buildnumber >= 9 then -- Allow 9 and above | ||
Line 63: | Line 63: | ||
end | end | ||
end | end | ||
outputConsole( "Kicking player as below 1.0.3 Release build 9" ) | outputConsole("Kicking player as below 1.0.3 Release build 9") | ||
kickPlayer( client, "Upgrade your version at www.mtasa.com" ) | kickPlayer(client, "Upgrade your version at www.mtasa.com") | ||
end | end | ||
addEvent ( "onNotifyPlayerVersion", true) | addEvent("onNotifyPlayerVersion", true) | ||
addEventHandler ( "onNotifyPlayerVersion", | addEventHandler("onNotifyPlayerVersion", resourceRoot, handlePlayerVersion) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> |
Latest revision as of 19:13, 14 January 2022
This function gives you various version information about MTA and the operating system.
Note: Clientside will return the version from the player, and the server-sided will return version from the server. |
Note: Current server version:
mta -> 1.6 |
Syntax
table getVersion ( )
Returns
Returns a table with version information. Specifically these keys are present in the table:
- number: the MTA server or client version (depending where the function was called) in pure numerical form, e.g. "256"
- mta: the MTA server or client version (depending where the function was called) in textual form, e.g. "1.0"
- name: the full MTA product name, either "MTA:SA Server" or "MTA:SA Client".
- netcode: the netcode version number.
- os: returns the operating system on which the server or client is running
- type: the type of build. can be:
- "Nightly rX" - A nightly development build. X represents the nightly build revision.
- "Custom" - A build compiled manually
- "Release" - A build that is publicly released (provisional).
- tag: the build tag (from 1.0.3 onwards). Contains infomation about the underlying version used. i.e. The final version of 1.0.3 has the build tag of "1.0.3 rc-9". (This can be confirmed by using the console command 'ver'.)
- sortable: a 15 character sortable version string (from 1.0.4 onwards). Format of the string is described in getPlayerVersion.
Example
Example 1: This example will make a script compatible only with version 1.0:
Click to collapse [-]
Serverfunction setHoboSkin(playerSource) local version = getVersion() if version.number < 256 then -- MTA 1.0 version number is 0x0100 setPlayerSkin(playerSource, 137) else setElementModel(playerSource, 137) end end addCommandHandler("hobo", setHoboSkin)
Example 2: This client and server example will kick players that have anything earlier than the final released version of 1.0.3:
Click to collapse [-]
Clientfunction sendVersion() -- Send local player version to the server triggerServerEvent("onNotifyPlayerVersion", resourceRoot, getVersion()) end addEventHandler("onClientResourceStart", resourceRoot, sendVersion)
Click to collapse [-]
Serverfunction handlePlayerVersion(version) if version.number > 256 + 3 then -- Allow anything above 1.0.3 return end if version.number == 256 + 3 then -- Check further if it is exactly 1.0.3 if version.type == "Release" then -- Check further if it is the "Release" type local _, _, buildnumber = string.find(version.tag or "", "(%d)$") -- Extract the build number if there buildnumber = tonumber(buildnumber) or 0 if buildnumber >= 9 then -- Allow 9 and above return end end end outputConsole("Kicking player as below 1.0.3 Release build 9") kickPlayer(client, "Upgrade your version at www.mtasa.com") end addEvent("onNotifyPlayerVersion", true) addEventHandler("onNotifyPlayerVersion", resourceRoot, handlePlayerVersion)
See Also
- getMaxPlayers
- getServerConfigSetting
- getServerHttpPort
- getServerName
- getServerPassword
- getServerPort
- isGlitchEnabled
- setGlitchEnabled
- setMaxPlayers
- setServerConfigSetting
- setServerPassword
- shutdown