virgingod Posted March 17, 2020 Share Posted March 17, 2020 Fiz um script de pickup que usa setElementData para salvar a skin que o cara tinha quando passou em cima, funcionou tudo normal, mas caso a pessoa que passou em cima esteja com a skin que o pickup da, e o servidor cai/reinicia, o player cai/quita, o script reinicia ou algo assim, ele não salva a skin anterior do player, e quando ele passar em cima do pickup, vai salvar a skin que o pickup deixou nele. Spoiler -- SCRIPT DO PICKUP -- SERVER SIDE -- pickup = createPickup(1766.3364257813,-1788.8395996094,16.325000762939, 3, 1275, 1) function skin(hit) local outSkin = tonumber(getElementData(hit,"skinout")) or 0 local accName = getAccountName ( getPlayerAccount ( hit ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecanico") ) then if getElementData(hit,"Servico") == "Sim" then setPedSkin(hit,outSkin) setElementData(hit, "Servico","Não") exports.Scripts_Dxmessages:outputDx(hit, "Você saiu de Serviço com sucesso!", "success") return end skinatual = getPedSkin(hit) setPedSkin(hit, 50) setElementData(hit, "Servico","Sim") setElementData(hit, "skinout", skinatual) exports.Scripts_Dxmessages:outputDx(hit, "Você entrou em Serviço com sucesso, Bom Trabalho!", "success") else exports.Scripts_Dxmessages:outputDx(hit, "Você não é um mecanico para poder entrar em Serviço!", "error") end end addEventHandler("onPickupHit", pickup,skin) Para eu não só vir aqui sem tentar algo, eu tentei com as seguintes linhas abaixo, que peguei do script de Save que uso Spoiler -- ADICIONADO DEPOIS DO PICKUP -- function onQuit (quitType, reason, responsibleElement) if not (isGuestAccount (getPlayerAccount (source))) then account = getPlayerAccount (source) if (account) then local skinserv = getAccountData ( source, "skinout" ) or 0 local servi = getAccountData ( source, "Servico" ) or "Não" setElementData ( source, "skinout", skinserv ) setElementData ( source, "Servico", servi ) end end end addEventHandler ("onPlayerQuit", getRootElement(), onQuit) function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) if not (isGuestAccount (getPlayerAccount (source))) then local accountData = getAccountData (theCurrentAccount, "funmodev2-money") if (accountData) then local skinserv = getAccountData ( source, "skinout" ) or 0 local servi = getAccountData ( source, "Servico" ) or "Não" setElementData ( source, "skinout", skinserv ) setElementData ( source, "Servico", servi ) end end end addEventHandler ("onPlayerLogin", getRootElement(), playerLogin) function ReiniciarScript ( res, thePlayer ) if res == getThisResource ( ) then if not (isGuestAccount (getPlayerAccount (thePlayer))) then local accountData = getAccountData (theCurrentAccount, "funmodev2-money") if (accountData) then local skinserv = getAccountData ( thePlayer, "skinout" ) or 0 local servi = getAccountData ( thePlayer, "Servico" ) or "Não" setElementData ( thePlayer, "skinout", skinserv ) setElementData ( thePlayer, "Servico", servi ) end end end end addEventHandler ( "onResourceStart", getRootElement ( ), ReiniciarScript ) function DesligarScript ( res, thePlayer ) if res == getThisResource ( ) then if not (isGuestAccount (getPlayerAccount (thePlayer))) then local accountData = getAccountData (theCurrentAccount, "funmodev2-money") if (accountData) then local skinserv = getAccountData ( thePlayer, "skinout" ) or 0 local servi = getAccountData ( thePlayer, "Servico" ) or "Não" setElementData ( thePlayer, "skinout", skinserv ) setElementData ( thePlayer, "Servico", servi ) end end end end addEventHandler ( "onResourceStop", getRootElement ( ), DesligarScript ) Funcionou em partes, em que testei no momento (reiniciar e dar stop no resource), mas sempre da o seguinte erro Spoiler 1 Link to comment
#RooTs Posted March 17, 2020 Share Posted March 17, 2020 (edited) Já tentou usar setAccountData Veja o exemplo da wiki e tente fazer... é easy Ah e outra coisa.. pare de usar "não" "sim" Use os padrões ( true e false ) nos elementos Edited March 17, 2020 by #RooTs 1 Link to comment
Angelo Pereira Posted March 17, 2020 Share Posted March 17, 2020 (edited) Assim por cima, notei uns control C cabuloso, mas, para salvar na conta do player se utiliza setAccountData. Fiz algumas melhorias (ou melhor, dei uma geral), e dentre disso, você verá seus erro, e te ajudará. -- SCRIPT DO PICKUP -- SERVER SIDE -- local pickup = createPickup(1766.3364257813,-1788.8395996094,16.325000762939, 3, 1275, 1) function skin (hit) local accName = getAccountName ( getPlayerAccount ( hit ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecanico") ) then if getElementData(hit,"Servico") == "Sim" then local outSkin = tonumber(getElementData(hit,"skinout")) or 0 setElementModel (hit,outSkin) --/> Alterado setElementData(hit, "Servico", "Não") exports.Scripts_Dxmessages:outputDx(hit, "Você saiu de Serviço com sucesso!", "success") return end local skinatual = getElementModel(hit) --/> Alterado setElementModel (hit, 50) --/> Alterado setElementData(hit, "Servico", "Sim") setElementData(hit, "skinout", skinatual) exports.Scripts_Dxmessages:outputDx(hit, "Você entrou em Serviço com sucesso, Bom Trabalho!", "success") else exports.Scripts_Dxmessages:outputDx(hit, "Você não é um mecanico para poder entrar em Serviço!", "error") end end addEventHandler("onPickupHit", pickup,skin) -- ADICIONADO DEPOIS DO PICKUP -- function player_quit ( ) local account = getPlayerAccount (source) if account and not isGuestAccount(account) then local skinserv = getElementData ( source, "skinout" ) or 0 --/> Alterado local servi = getElementData ( source, "Servico" ) or "Não" --/> Alterado setAccountData ( account, "skinout", skinserv ) --/> Alterado setAccountData ( account, "Servico", servi ) --/> Alterado end end addEventHandler ("onPlayerQuit", getRootElement(), player_quit) function player_login ( ) local account = getPlayerAccount (source) if account and not isGuestAccount(account) then local skinserv = getAccountData ( account, "skinout" ) or 0 local servi = getAccountData ( account, "Servico" ) or "Não" setElementData ( source, "skinout", skinserv ) setElementData ( source, "Servico", servi ) end end addEventHandler ("onPlayerLogin", getRootElement(), player_login ) function start_resource ( ) --/> Alterado / Quase tudo... for i, player in ipairs(getElementsByType("player")) do --/> Adicionado local account = getPlayerAccount (player) --/> Adicionado if account and not isGuestAccount(account) then --/> Adicionado local skinserv = getAccountData ( account, "skinout" ) or 0 local servi = getAccountData ( account, "Servico" ) or "Não" setElementData ( player, "skinout", skinserv ) setElementData ( player, "Servico", servi ) end end end addEventHandler ( "onResourceStart", resourceRoot, start_resource ) --/> Alterado function stop_resource ( ) --/> Alterado / Quase tudo... for i, player in ipairs(getElementsByType("player")) do --/> Adicionado local account = getPlayerAccount (player) --/> Adicionado if account and not isGuestAccount(account) then --/> Adicionado local skinserv = getElementData ( player, "skinout" ) or 0 --/> Alterado local servi = getElementData ( player, "Servico" ) or "Não" --/> Alterado setAccountData ( account, "skinout", skinserv ) --/> Alterado setAccountData ( account, "Servico", servi ) --/> Alterado end end end addEventHandler ( "onResourceStop", resourceRoot, stop_resource ) --/> Alterado Edited March 17, 2020 by Angelo Pereira 1 Link to comment
virgingod Posted March 17, 2020 Author Share Posted March 17, 2020 Spoiler 9 hours ago, Angelo Pereira said: Assim por cima, notei uns control C cabuloso, mas, para salvar na conta do player se utiliza setAccountData. Fiz algumas melhorias (ou melhor, dei uma geral), e dentre disso, você verá seus erro, e te ajudará. -- SCRIPT DO PICKUP -- SERVER SIDE -- local pickup = createPickup(1766.3364257813,-1788.8395996094,16.325000762939, 3, 1275, 1) function skin (hit) local accName = getAccountName ( getPlayerAccount ( hit ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecanico") ) then if getElementData(hit,"Servico") == "Sim" then local outSkin = tonumber(getElementData(hit,"skinout")) or 0 setElementModel (hit,outSkin) --/> Alterado setElementData(hit, "Servico", "Não") exports.Scripts_Dxmessages:outputDx(hit, "Você saiu de Serviço com sucesso!", "success") return end local skinatual = getElementModel(hit) --/> Alterado setElementModel (hit, 50) --/> Alterado setElementData(hit, "Servico", "Sim") setElementData(hit, "skinout", skinatual) exports.Scripts_Dxmessages:outputDx(hit, "Você entrou em Serviço com sucesso, Bom Trabalho!", "success") else exports.Scripts_Dxmessages:outputDx(hit, "Você não é um mecanico para poder entrar em Serviço!", "error") end end addEventHandler("onPickupHit", pickup,skin) -- ADICIONADO DEPOIS DO PICKUP -- function player_quit ( ) local account = getPlayerAccount (source) if account and not isGuestAccount(account) then local skinserv = getElementData ( source, "skinout" ) or 0 --/> Alterado local servi = getElementData ( source, "Servico" ) or "Não" --/> Alterado setAccountData ( account, "skinout", skinserv ) --/> Alterado setAccountData ( account, "Servico", servi ) --/> Alterado end end addEventHandler ("onPlayerQuit", getRootElement(), player_quit) function player_login ( ) local account = getPlayerAccount (source) if account and not isGuestAccount(account) then local skinserv = getAccountData ( account, "skinout" ) or 0 local servi = getAccountData ( account, "Servico" ) or "Não" setElementData ( source, "skinout", skinserv ) setElementData ( source, "Servico", servi ) end end addEventHandler ("onPlayerLogin", getRootElement(), player_login ) function start_resource ( ) --/> Alterado / Quase tudo... for i, player in ipairs(getElementsByType("player")) do --/> Adicionado local account = getPlayerAccount (player) --/> Adicionado if account and not isGuestAccount(account) then --/> Adicionado local skinserv = getAccountData ( account, "skinout" ) or 0 local servi = getAccountData ( account, "Servico" ) or "Não" setElementData ( player, "skinout", skinserv ) setElementData ( player, "Servico", servi ) end end end addEventHandler ( "onResourceStart", resourceRoot, start_resource ) --/> Alterado function stop_resource ( ) --/> Alterado / Quase tudo... for i, player in ipairs(getElementsByType("player")) do --/> Adicionado local account = getPlayerAccount (player) --/> Adicionado if account and not isGuestAccount(account) then --/> Adicionado local skinserv = getElementData ( player, "skinout" ) or 0 --/> Alterado local servi = getElementData ( player, "Servico" ) or "Não" --/> Alterado setAccountData ( account, "skinout", skinserv ) --/> Alterado setAccountData ( account, "Servico", servi ) --/> Alterado end end end addEventHandler ( "onResourceStop", resourceRoot, stop_resource ) --/> Alterado Hmmm, entendi perfeitamente, obrigado por me esclarecer, thanks 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