Jump to content

Get account name for a player


stefutz101

Recommended Posts

Hi i want to make make a script what help me to set lvl to a player

  
addCommandHandler("setlvl", 
     function(playerSource, cmd, thePlayeracc, amount) 
        local nume = getAccountName ( getPlayerAccount ( playerSource )) 
        if isObjectInACLGroup ( "user." .. nume, aclGetGroup ( "Admin" )) then 
                if thePlayeracc then 
                    if tonumber(amount) then 
                        setAccountData(thePlayeracc, "lvl" , amount) 
                        outputChatBox("I-ai setat lvl lui ".. thePlayeracc.."la "..amount , playerSource) 
                    end 
                     
               end 
        end 
     end 
) 

warning at setaccount data expected account at argument 1 , got string "...".

how i cant get account name for a another player ?

Link to comment

Try to use getPlayerFromPartialName if you don't know how post here again.

function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name then 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 

Link to comment

No , i want a script what set player lvl to level . But i have 1 warning : expected account at argument 1 , but argument 1 is Playeraccount . Player account its writed by me when i use command .

Syntax : /setlvl

But thancks for that script i need that to the future scripts :D

Link to comment

lol i already gave you the solution but i think you want me to do it for you ;) anyways this how you can do it :

addCommandHandler("setlvl", 
     function(player, cmd, playerToAdd, amount) 
        local account = getPlayerAccount ( player) 
        if account and isGuestAccount(account) then  
        local accountName = getAccountName (account) 
            if isObjectInACLGroup ( "user." ..accountName, aclGetGroup ( "Admin" )) then 
            local playerToAdd = getPlayerFromPartialName(playerToAdd) 
                if (isElement(playerToAdd)) then 
                local playerAccount = getPlayerAccount(playerToAdd) 
                    if tonumber(amount) then 
                    setAccountData(playerAccount, "lvl" , tonumber(amount)) 
                    outputChatBox("I-ai setat lvl lui "..getAccountName(playerAccount).." la "..amount ,player,0,255,0) 
                end 
                    else 
                    outputChatBox("No player with that name", player, 255, 0, 0) 
                end 
            end  
        end 
    end 
) 
  
function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name then 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 

Syntax : /setlvl

Edited by Guest
Link to comment
Oh thancks , but i dont want the solution i just dont know why i had that warning . Btw dont work

" if isObjectInACLGroup ( "user." .. nume, aclGetGroup ( "Admin" )) then" there is the problem replaced with accountName didn't work

it's working fine check my code i edit it.

Link to comment

The value stored in the account must be a string.

Also, the if statement at line 4 is checking if it's a guest account.

I've edited Walid's code, so try this:

addCommandHandler( "setlvl", 
    function(player, cmd, playerToAdd, amount) 
        if tonumber(amount) and not isGuestAccount(getPlayerAccount(player)) then 
            if isObjectInACLGroup ( "user." ..getAccountName( getPlayerAccount(player) ), aclGetGroup ( "Admin" )) then 
                local playerToAdd = getPlayerFromPartialName(playerToAdd) 
                if (isElement(playerToAdd)) and not isGuestAccount(getPlayerAccount(playerToAdd)) then 
                    setAccountData(getPlayerAccount(playerToAdd), "lvl" , tostring(amount)) 
                    outputChatBox("I-ai setat lvl lui "..getAccountName(getPlayerAccount(playerToAdd)).." la "..tostring(amount), player,0,255,0) 
                else 
                    outputChatBox("No player with that name or that player isn't logged in", player, 255, 0, 0) 
                end 
            end 
        end 
    end 
) 
  
function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name then 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...