GetPlayerSerial: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Removed all the ugly server sections and refactored the last two examples to be more correct and potentially less offensive)
No edit summary
 
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
{{Server function}}
{{Shared function}}
This function returns the [[serial]] for a specified [[player]].
This function returns the [[serial]] for a specified [[player]].
{{Note|The client side version of [[getPlayerSerial]] has been deprecated as it can return the wrong value for some players, and is potentially insecure. The following article assumes that the function is serverside only.}}
{{Note|It's possible for a player to fake the value returned from getPlayerSerial when used on the clientside. For this reason you should only trust the value returned by this function when used serverside. }}
{{Important Note|You should '''use this function''' in conjunction '''with account system''' (e.g: '''login & password''') - especially for critical things, because '''serials could be invalid''' (as in, '''non-unique''' or '''faked'''). See: [https://wiki.multitheftauto.com/wiki/Script_security Script security].}}


==Syntax==
==Syntax==
<section name="Server" class="server" show="true">
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
string getPlayerSerial ( player thePlayer )
string getPlayerSerial ( player thePlayer )
Line 14: Line 16:
==Returns==
==Returns==
Returns the serial as a ''string'' if it was found, ''false'' otherwise.
Returns the serial as a ''string'' if it was found, ''false'' otherwise.
</section>
==Syntax==
<section name="Client" class="client" show="true">
<syntaxhighlight lang="lua">
string getPlayerSerial ( )
</syntaxhighlight>
{{OOP||[[localPlayer]]:getSerial||}}
===Required Arguments===
None
==Returns==
Returns the serial as a ''string'' if it was found, ''false'' otherwise.
</section>


==Serverside examples==
==Serverside examples==
<section name="Server" class="server" show="true">
This example creates a command with which player can check their own serial.
This example creates a command with which player can check their own serial.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
Line 56: Line 73:
         -- Get the player serial and the allowed serial list for that account
         -- Get the player serial and the allowed serial list for that account
         -- (If no serial is allowed for the account, do not allow the player to log in as a safety measure)
         -- (If no serial is allowed for the account, do not allow the player to log in as a safety measure)
         local playerSerial, allowedSerials = getPlayerSerial(source), allowedAccountSerials[getAccountName(account)] or ""
         local playerSerial, allowedSerials = getPlayerSerial(source), allowedAccountSerials[getAccountName(account)] or {}
         -- Check whether the client has an allowed serial or not
         -- Check whether the client has an allowed serial or not
         for i = 1, #allowedSerials do
         for i = 1, #allowedSerials do
Line 69: Line 86:
)
)
</syntaxhighlight>
</syntaxhighlight>
 
</section>
==See Also==
==See Also==
{{Player functions}}
{{Player functions}}
[[ar:getPlayerSerial]]
[[en:GetPlayerSerial]]

Latest revision as of 16:15, 2 February 2024

This function returns the serial for a specified player.

[[{{{image}}}|link=|]] Note: It's possible for a player to fake the value returned from getPlayerSerial when used on the clientside. For this reason you should only trust the value returned by this function when used serverside.
[[{{{image}}}|link=|]] Important Note: You should use this function in conjunction with account system (e.g: login & password) - especially for critical things, because serials could be invalid (as in, non-unique or faked). See: Script security.

Syntax

Click to collapse [-]
Server
string getPlayerSerial ( player thePlayer )

OOP Syntax Help! I don't understand this!

Method: player:getSerial(...)
Variable: .serial


Required Arguments

  • thePlayer: A player object referencing the specified player.

Returns

Returns the serial as a string if it was found, false otherwise.

Syntax

Click to collapse [-]
Client
string getPlayerSerial ( )

OOP Syntax Help! I don't understand this!

Method: localPlayer:getSerial(...)


Required Arguments

None

Returns

Returns the serial as a string if it was found, false otherwise.

Serverside examples

Click to collapse [-]
Server

This example creates a command with which player can check their own serial.

function checkMySerial( thePlayer, command )
    local theSerial = getPlayerSerial( thePlayer )
    if theSerial then
        outputChatBox( "Your serial is: " .. theSerial, thePlayer )
    else
        outputChatBox( "Sorry, you have no serial. =(", thePlayer )
    end
end
addCommandHandler( "myserial", checkMySerial )

This example adds a command to ban a player's serial.

local function banSerialCommand ( source, command, playerName, reason )
   if playerName then
      local player, serial = getPlayerFromName ( playerName ), getPlayerSerial ( playerName )
      if player then
         addBan ( serial, source, reason )
      end
   end
end
addCommandHandler ( "banplayerserial", banSerialCommand )

This example only allows clients with a certain serial to log in into an account.

local allowedAccountSerials = 
{
    -- List of allowed serials to log in into an account. Format:
    -- [ Account name ] = { Allowed serial array }
    [ "3ash8" ] = { "9C9F3B55D9D7BB7135FF274D3BF444E4" },
    [ "test5" ] = { "1D6F76CF8D7193792D13789849498452" },
}
 
addEventHandler("onPlayerLogin", root,
    function(_, account)
        -- Get the player serial and the allowed serial list for that account
        -- (If no serial is allowed for the account, do not allow the player to log in as a safety measure)
        local playerSerial, allowedSerials = getPlayerSerial(source), allowedAccountSerials[getAccountName(account)] or {}
        -- Check whether the client has an allowed serial or not
        for i = 1, #allowedSerials do
            if allowedSerials[i] == playerSerial then
                -- The serial is allowed. Proceed with the normal log in proccess
                return
            end
        end
        -- If we reach this point the serial is not allowed. Do not let the player log in
        cancelEvent(true, "Client serial not allowed to log in into the account")
    end
)

See Also