Giovany Mito Posted June 7, 2020 Share Posted June 7, 2020 Eu vi que no internal todos player q entra no servidor fica com um id fixo, queria saber como faço para usar o id fixo do player em vez do id temporario de quando entra no servidor. function _setPlayerhlp(thePlayer, command, who, amount) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) --if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then if (getAccountData (getPlayerAccount (thePlayer), "Helper") == 4) then if not tonumber ( amount ) then outputChatBox("ERRO:/sethlp <player> <nivel>", thePlayer, 255, 100, 100, true) return end local receiver = getPlayerFromName(who) if not (receiver) then outputChatBox("ERRO : Player OFF/Não Existe", thePlayer, 255, 100, 100, true) return end if not(tonumber ( amount ) <= -1) and not( tonumber ( amount ) >= 5 ) then setPlayerhlpp (receiver, amount) outputChatBox(" Você setou nivel "..amount.." de helper para o "..who:gsub('#%x%x%x%x%x%x', '').."!", thePlayer, 100, 255, 100, true) else outputChatBox("Você não pode setar esse nivel.", thePlayer, 255, 100, 100, true) end end end addCommandHandler("sethlp",_setPlayerhlp) Nesse caso esse script seta apenas usando o nome completo do player, como faço para setar usando o id fixo do player Link to comment
Giovany Mito Posted June 7, 2020 Author Share Posted June 7, 2020 Tentei fazer aqui mais recebo esse erro [2020-06-07 11:20:19] WARNING: [FW]Comandos\Server.Lua:1039: Bad argument @ 'getAccountID' [Expected account at argument 1, got number '1'] function _setPlayerhlp(thePlayer, command, id, amount) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) id = tonumber(id) local receiver = getAccountID(id) --if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then if (getAccountData (getPlayerAccount (thePlayer), "Helper") == 4) then if not tonumber ( amount ) then outputChatBox("ERRO:/sethlp <player> <nivel>", thePlayer, 255, 100, 100, true) return end if not (receiver) then outputChatBox("ERRO : Player OFF/Não Existe", thePlayer, 255, 100, 100, true) return end if not(tonumber ( amount ) <= -1) and not( tonumber ( amount ) >= 5 ) then setPlayerhlpp (receiver, amount) outputChatBox(" Você setou nivel "..amount.." de helper para o "..id:gsub('#%x%x%x%x%x%x', '').."!", thePlayer, 100, 255, 100, true) else outputChatBox("Você não pode setar esse nivel.", thePlayer, 255, 100, 100, true) end end end addCommandHandler("sethlp",_setPlayerhlp) Link to comment
MrKAREEM Posted June 7, 2020 Share Posted June 7, 2020 id é um jogador ou o quê? e getAccountID trabalha com a conta do jogador e não valor numérico Link to comment
Giovany Mito Posted June 7, 2020 Author Share Posted June 7, 2020 2 hours ago, MrKAREEM said: id é um jogador ou o quê? e getAccountID trabalha com a conta do jogador e não valor numérico No caso eu quero pegar o userid do internal para fazer a sentagem em vez de usar o nome do player ou o id temporario do servidor. https://prnt.sc/svgatm Link to comment
Other Languages Moderators Lord Henry Posted June 8, 2020 Other Languages Moderators Share Posted June 8, 2020 Coloque isso no seu script, fora da função. function getAccountFromID (id) if (tonumber (id)) then for i, acc in ipairs (getAccounts()) do if (getAccountID (acc) == tonumber (id)) then return acc end end end return false end E depois lá na sua função, troque o getAccountID por getAccountFromID Link to comment
Giovany Mito Posted June 8, 2020 Author Share Posted June 8, 2020 Agora vem o seguinte erro, https://prnt.sc/svty8a Sera q porque como ta puxando id tem que mudar mais algo no script. function _setPlayerhlp(thePlayer, command, id, amount) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) local receiver = getAccountFromID(id) --if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then if (getAccountData (getPlayerAccount (thePlayer), "Helper") == 4) then if not tonumber ( amount ) then outputChatBox("ERRO:/sethlp <player> <nivel>", thePlayer, 255, 100, 100, true) return end if not (receiver) then outputChatBox("ERRO : Player OFF/Não Existe", thePlayer, 255, 100, 100, true) return end if not(tonumber ( amount ) <= -1) and not( tonumber ( amount ) >= 5 ) then setPlayerhlpp (receiver, amount) outputChatBox(" Você setou nivel "..amount.." de helper para o "..id:gsub('#%x%x%x%x%x%x', '').."!", thePlayer, 100, 255, 100, true) else outputChatBox("Você não pode setar esse nivel.", thePlayer, 255, 100, 100, true) end else outputChatBox("ERRO: Você não tem permissão para usar esse comando.", thePlayer, 255, 100, 100, true) end end addCommandHandler("sethlp",_setPlayerhlp) function getAccountFromID (id) if (tonumber (id)) then for i, acc in ipairs (getAccounts()) do if (getAccountID (acc) == tonumber (id)) then return acc end end end return false end function setPlayerhlpp(thePlayer, number) if ( getElementType ( thePlayer ) == "player" ) then setElementData(thePlayer,"levelhelper",tonumber(number)) end end addEventHandler("onPlayerLogin", root, function() local acc = getPlayerAccount(source) local helpset = (getAccountData(acc,"Helper") or 0) local helpset = getAccountData(acc, "Helper") or 0 setElementData(source, "levelhelper", tonumber(helpset)) end) addEventHandler("onPlayerQuit", root, function() local acc = getPlayerAccount(source) local helpset = getElementData(source, "levelhelper") or 0 setAccountData(acc, "Helper", tonumber(helpset)) end) addEventHandler("onResourceStart", resourceRoot, function() for _, player in pairs(getElementsByType("player")) do local acc = getPlayerAccount(source) local helpset = getAccountData(acc, "Helper") if helpset then setElementData(player, "levelhelper", tonumber(helpset)) end end end) function getPlayerhelp(thePlayer) local data = getElementData(thePlayer, "levelhelper") thePoints = tonumber(data) return thePoints end function takePlayerhelp(thePlayer, number) if ( getElementType ( thePlayer ) == "player" ) then setElementData(thePlayer,"levelhelper",getElementData(thePlayer, "levelhelper")-tonumber(number)) end end Link to comment
Other Languages Moderators Lord Henry Posted June 8, 2020 Other Languages Moderators Share Posted June 8, 2020 Na função setPlayerhlpp, o parâmetro thePlayer agora é uma account. Pois você definiu lá em cima o receiver como sendo uma conta e não como um jogador. Link to comment
Giovany Mito Posted June 8, 2020 Author Share Posted June 8, 2020 (edited) 30 minutes ago, Lord Henry said: Na função setPlayerhlpp, o parâmetro thePlayer agora é uma account. Pois você definiu lá em cima o receiver como sendo uma conta e não como um jogador. Ficaria assim no caso então ? function setPlayerhlpp(getAccountFromID, number) if ( getAccounts ( getAccountFromID ) == "player" ) then setElementData(getAccounts,"levelhelper",tonumber(number)) end end Edited June 8, 2020 by Giovany Mito Link to comment
Other Languages Moderators Lord Henry Posted June 8, 2020 Other Languages Moderators Share Posted June 8, 2020 n Você não pode usar uma função como parâmetro de função. Link to comment
Giovany Mito Posted June 8, 2020 Author Share Posted June 8, 2020 Então no caso oque eu colocaria no lugar do theplayer ? Link to comment
Other Languages Moderators Lord Henry Posted June 9, 2020 Other Languages Moderators Share Posted June 9, 2020 Em vez disso, use essa função: function getPlayerFromAccountID (id) if (tonumber (id)) then for i, player in ipairs (getElementsByType("player")) do if (getAccountID (getPlayerAccount(player)) == tonumber (id)) then return player end end end return false end É que está bem difícil entender sua lógica pois a indentação está terrível. 1 Link to comment
Giovany Mito Posted June 9, 2020 Author Share Posted June 9, 2020 11 hours ago, Lord Henry said: Em vez disso, use essa função: function getPlayerFromAccountID (id) if (tonumber (id)) then for i, player in ipairs (getElementsByType("player")) do if (getAccountID (getPlayerAccount(player)) == tonumber (id)) then return player end end end return false end É que está bem difícil entender sua lógica pois a indentação está terrível. Agora funcionou. Então, O script é de setar um player por level, mais o script funcionava usando o nome do player para setagem, ai queria fazer setagem usando o id fixo do player em vez do nome, mais agora deu certo muito obrigado. Desculpa minha burrice é que sou novo ainda com programação Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now