GetVersion: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
(7 intermediate revisions by 6 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:'' Clientside will return the version from the player, and the server-sided will return version from the server.


==Syntax==
==Syntax==
<syntaxhighlight lang="lua">table getVersion (1.4 )</syntaxhighlight>
<syntaxhighlight lang="lua">table getVersion ( )</syntaxhighlight>
 
===Required Arguments===
''None.''


===Returns===
===Returns===
Line 30: Line 26:
<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 45: Line 41:
<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", getResourceRootElement(), getVersion() )
   triggerServerEvent("onNotifyPlayerVersion", resourceRoot, getVersion())
end
end
addEventHandler ( "onClientResourceStart", getResourceRootElement(), sendVersion )
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 59: Line 55:
   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 66: Line 62:
     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", getResourceRootElement(), handlePlayerVersion )
addEventHandler("onNotifyPlayerVersion", resourceRoot, handlePlayerVersion)
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>

Revision as of 05:21, 11 August 2019

This function gives you various version information about MTA and the operating system.

[[{{{image}}}|link=|]] Note: Clientside will return the version from the player, and the server-sided will return version from the server.

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 [-]
Server
function 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 [-]
Client
function sendVersion()
  -- Send local player version to the server
  triggerServerEvent("onNotifyPlayerVersion", resourceRoot, getVersion())
end
addEventHandler("onClientResourceStart", resourceRoot, sendVersion)
Click to collapse [-]
Server
function 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