keven Posted May 21, 2021 Share Posted May 21, 2021 Estou tentando setar skin no player por ID. alguém pode me ajudar??? exemplo de comando /skin 1( player ) 16(ID SKIN) Sou muito novo nessa de Script. Então me perdoe pelos erros... ---------------------------------------------------- function getSkinNameFromID(i) local id = tonumber (i) assert(id, "Bad argument 1 @ getSkinFromID [Number expected, got " .. type(i) .. "]") local name = skinsTable[id] assert(name,"Bad argument 1 @ getSkinFromID [Invaild skin ID]") return name end addCommandHandler('skin', function() local name = getSkinNameFromID(getElementModel(localPlayer)) if name then outputChatBox('SkinName : ('..name..') of ID ('..getElementModel(localPlayer)..')',255,255,0) else outputChatBox('Falha ao obter skin. ID errado ou não encontrado na tabela',255,255,0) end end) Link to comment
Doongogar Posted August 27, 2021 Share Posted August 27, 2021 function setPlayerSkin2(thePlayer, commandName, skin) if isObjectInACLGroup ( "user." ..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup ("Staff")) then if getElementModel(thePlayer) == skin then outputChatBox(error .. "O Jogador Ja Possui Esta Skin!", thePlayer, 255, 255, 255, true) return end setElementModel(thePlayer, skin) outputChatBox("A Skin Foi Alterada Com Exitô", thePlayer, 255, 255, 255, true) end end addCommandHandler("setskin", setPlayerSkin2, false, false) o script nao e meu!, apenas editei, nao consegui fazer por id, o script funciona assim /setskin (nome do player) (id da skin) espero que ajude mesmo nao sendo oque estava buscando Link to comment
Boechat Posted September 1, 2021 Share Posted September 1, 2021 On 21/05/2021 at 14:09, keven said: Estou tentando setar skin no player por ID. alguém pode me ajudar??? exemplo de comando /skin 1( player ) 16(ID SKIN) Sou muito novo nessa de Script. Então me perdoe pelos erros... ---------------------------------------------------- function getSkinNameFromID(i) local id = tonumber (i) assert(id, "Bad argument 1 @ getSkinFromID [Number expected, got " .. type(i) .. "]") local name = skinsTable[id] assert(name,"Bad argument 1 @ getSkinFromID [Invaild skin ID]") return name end addCommandHandler('skin', function() local name = getSkinNameFromID(getElementModel(localPlayer)) if name then outputChatBox('SkinName : ('..name..') of ID ('..getElementModel(localPlayer)..')',255,255,0) else outputChatBox('Falha ao obter skin. ID errado ou não encontrado na tabela',255,255,0) end end) Para setar uma skin você deve usar a função setElementModel que recebe o elemento (no caso o player) e o ID do model (skin). Como você quer passar o ID do player, antes deve fazer uma lógica para buscar o player pelo ID. Ficaria mais ou menos assim (observe os comentários): Link to comment
Boechat Posted September 1, 2021 Share Posted September 1, 2021 (edited) Eu postei a resposta acima sem querer antes de escrever o código, quando fui editar a resposta já tinha passado muito tempo... (acho um saco isso de ter limite de tempo para editar uma postagem) E eu não testei o código, testa aí e traga possíveis problemas. Não esqueça de dar um /debugscript 3 para ver o erro. function setPlayerSkinByID (id, skin, adm) --Passa um int id, int skin e element(player) adm como parâmetro. local player = getPlayerByID(id) -- Chama outra função que retorna um player passando o ID do player como parâmetro. False se não achar o player. if not player then return outputChatBox("Player não encontrado.", adm) end --Se não encontrou o player mostra uma mensagem e para a função. setElementModel(player, skin) --Seta a skin desejada no player encontrado pelo ID. end function getPlayerByID(id) for i, player in ipairs(getElementsByType('player')) do --Um for que percorre todos os players online. if getElementData(player, 'ID') == id then --Se o ID préviamente salvo no player for igual ao id passado por parâmentr, então... (!!!ATENÇÃO!!!) return player --Retorna o player e para a função. end end return false --Se percorrer todos os players e não achar o player com o ID indicado, retorna falso. end --ATENÇÃO: SE SEU SERVER JÁ TIVER UM SISTEMA DE ID PODE EXCLUIR TUDO DAQUI PRA BAIXO. E FIQUE ATENTO TAMBÉM AO NOME DO ELEMENTDATA DO ID, SE FOR DIFERENTE DE 'ID' VOCÊ DEVE MUDAR NA LINHA QUE EU COLOQUEI (!!!ATENÇÃO!!!) COMENTADO NA FRENTE. local function addPlayerDataID (player, id) setElementData(player, 'ID', id) --Seta o ID do player no elemento player (o ID a princípio é relacionado a account do player) end addEventHandler('onResourceStart', root, function() --Quando iniciar o mod... for i, player in ipairs(getElementsByType('player')) do --Um for que percorre todos os players online. local id = getAccountID(getPlayerAccount (player)) --Pega o ID da conta do player addPlayerDataID (player, id) --Chama a função para setar o ID no player. end end) addEventHandler('onPlayerLogin', root, function(thePreviousAccount, account) --Quando um player logar... local id = getAccountID(account) --Pega o ID da conta do player. addPlayerDataID (source, id) --Chama a função para setar o ID no player, que nesse caso é o source do evento.. end) Edited September 1, 2021 by Boechat Link to comment
Boechat Posted September 1, 2021 Share Posted September 1, 2021 Já notei um pequeno erro, corrija por favor (já que não dá para eu editar a resposta) Troque "root" por "resourceRoot", senão vai executar o código sempre que qualquer resource iniciar, não somente a resource em questão. Como está: addEventHandler('onResourceStart', root, function() --Quando iniciar o mod... Corrigido: addEventHandler('onResourceStart', resourceRoot, function() --Quando iniciar o mod... Link to comment
Boechat Posted September 3, 2021 Share Posted September 3, 2021 Desculpa mais um comentário, mas agora que me toquei que coloquei as funções mas não fiz o comando KKKK Adicione esse código: addCommandoHandler("setskin", function(playerSource, cmd, id, skin) --Quando der o comando setskin id = tonumber(id) --Por padrão, os comandos vem como string. Nós temos que converter para number (int) para funcionar corretamente. skin = tonumber(skin) setPlayerSkinByID (id, skin, playerSource) --Chamando a função de setar skin end) Aproveitando o post, o 1° código que eu postei ele coloca um sistema de ID no seu servidor que facilita usos futuros, mas se quiser fazer de uma forma mais simples pode fazer assim: Spoiler function setPlayerSkinByID (id, skin, adm) --Passa um int id, int skin e element(player) adm como parâmetro. local player = getPlayerByID(id) -- Chama outra função que retorna um player passando o ID do player como parâmetro. False se não achar o player. if not player then return outputChatBox("Player não encontrado.", adm) end --Se não encontrou o player mostra uma mensagem e para a função. setElementModel(player, skin) --Seta a skin desejada no player encontrado pelo ID. end function getPlayerByID(id) for i, player in ipairs(getElementsByType('player')) do --Um for que percorre todos os players online. if getAccountID(getPlayerAccount (player)) == id then --Se o ID for igual ao id passado por parâmentro, então... return player --Retorna o player e para a função. end end return false --Se percorrer todos os players e não achar o player com o ID indicado, retorna falso. end addCommandoHandler("setskin", function(playerSource, cmd, id, skin) --Quando der o comando setskin id = tonumber(id) --Por padrão, os comandos vem como string. Nós temos que converter para number (int) para funcionar corretamente. skin = tonumber(skin) setPlayerSkinByID (id, skin, playerSource) --Chamando a função de setar skin end) 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