GetVersion

From Multi Theft Auto: Wiki
Revision as of 13:47, 2 April 2019 by NanoBob (talk | contribs) (The point of this example was to implement a fallback to a method when running an older version. However someone (4 years ago) changed this which ended up with the example making no sense at all.)
Jump to navigation Jump to search

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.

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