Ir para conteúdo
  • Cadastre-se

(Resolvido)Habilitar um OnLogout a um Script


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

Olá galera, tenho um problema com um script gringo.  (y)  

Então a Função do Script é Ficar Mudando o Addon e sua cor Continuamente. :LOL:

O único problema do script até agora é a hora que o player desloga.  :WTF:  :facepalm:

 

Então esse é o meu pedido, Gostaria de adicionar um OnLogout ou um meio de encerrar o script quando o player desloga(não entendo muito de script, mas acho que é isso que falta, se não for agradeço em adicionarem oque falta. *(Versão do TFS 0.3.1)*    :hum: 

 

O Script é esse:

 

 

local conf = {}
-- // config // ---
conf.textSpeed = 1500 -- how fast animated texts is sending?
conf.danceSpeed = 50 -- dance speed
conf.outfitSpeed = 250 -- outfit changer speed
conf.outfitMale = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} -- all male outfits
conf.outfitFemale = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324} -- all female outfits
-- // end // --

function outfitChanger(tab)
if isPlayer(tab[1]) then
if getPlayerSex(tab[1]) == PLAYERSEX_FEMALE then
outs = conf.outfitFemale
else
outs = conf.outfitMale
end
local outfit = {
lookType = outs[math.random(1, #outs)],
lookHead = math.random(1,133),
lookBody = math.random(1,133),
lookLegs = math.random(1,133),
lookFeet = math.random(1,133),
lookTypeEx = math.random(1,133),
lookAddons = math.random(0,3)}
doCreatureChangeOutfit(tab[1], outfit)
tab[2].outfitChanger = addEvent(outfitChanger,conf.outfitSpeed, tab)
end
end
backOutfit = {}
local backOutfit = {}
local storage = 38417
function onSay(cid, words, param, channel)
local pidCheck = getPlayerStorageValue(cid, storage)
if(param == "") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return TRUE
end

local pid = getPlayerGUID(cid)

if type(events[pid]) ~= "table" then
events[pid] = {}
end

if (param == "start") then
if (pidCheck == -1) then
if (isPlayer(cid) == TRUE) then
end
outBack = getCreatureOutfit(cid)
backOutfit[pid] = outBack
backOutfit[pid].lookType = outBack.lookType
backOutfit[pid].lookAddons = outBack.lookAddons
doPlayerSendCancel(cid, "Ai Que Loucuuura :D")
outfitChanger({cid, events[pid]})
doCreatureSetNoMove(cid, true)
setPlayerStorageValue(cid, storage, 1)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você está com o DANCE ligado, digite !dance stop.")
end
elseif (param == "stop") then
stopEvent(events[pid].outfitChanger)
stopEvent(events[pid].messager)
events[pid] = {}
doCreatureChangeOutfit(cid, backOutfit[pid])
doCreatureSetNoMove(cid, false)
setPlayerStorageValue(cid, storage, -1)
doPlayerSendCancel(cid, "Ai Que Loucuuura :D")
return TRUE
end

O Erro é esse:

 

 

[02/08/2014 19:16:23] Lua Script Error: [TalkAction Interface]
[02/08/2014 19:16:23] in a timer event called from:
[02/08/2014 19:16:23] data/talkactions/scripts/dancing test.lua:onSay

[02/08/2014 19:16:24] luaDoCreatureChangeOutfit(). Creature not found

[02/08/2014 19:16:24] Lua Script Error: [TalkAction Interface]
[02/08/2014 19:16:24] in a timer event called from:
[02/08/2014 19:16:24] data/talkactions/scripts/dancing test.lua:onSay

[02/08/2014 19:16:24] luaDoCreatureChangeOutfit(). Creature not found

Dês de já, Agradeço. Darei Rep+ Para quem ajudar, mesmo que não funcione. Grato  :rock:  :trollface:

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

Boa noite, percebi que o Script é executado através de uma Talkaction, dizendo Start e Stop caso queira parar.

Então o jeito mais simples de fazer isso parar de acusar este erro no Launcher, por não encontrar o player, é impedindo que o player dê "logout" enquanto estiver com o script sendo executado, e para isso fiz esta pequena alteração no script.

 

Segue abaixo:

local conf = {}
-- // config // ---
conf.textSpeed = 1500 -- how fast animated texts is sending?
conf.danceSpeed = 50 -- dance speed
conf.outfitSpeed = 250 -- outfit changer speed
conf.outfitMale = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} -- all male outfits
conf.outfitFemale = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324} -- all female outfits
-- // end // --

local infight = createConditionObject(CONDITION_INFIGHT,-1)

function outfitChanger(tab)
if isPlayer(tab[1]) then
if getPlayerSex(tab[1]) == PLAYERSEX_FEMALE then
outs = conf.outfitFemale
else
outs = conf.outfitMale
end
local outfit = {
lookType = outs[math.random(1, #outs)],
lookHead = math.random(1,133),
lookBody = math.random(1,133),
lookLegs = math.random(1,133),
lookFeet = math.random(1,133),
lookTypeEx = math.random(1,133),
lookAddons = math.random(0,3)}
doCreatureChangeOutfit(tab[1], outfit)
tab[2].outfitChanger = addEvent(outfitChanger,conf.outfitSpeed, tab)
end
end
backOutfit = {}
local backOutfit = {}
local storage = 38417
function onSay(cid, words, param, channel)
local pidCheck = getPlayerStorageValue(cid, storage)
if(param == "") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return TRUE
end

local pid = getPlayerGUID(cid)

if type(events[pid]) ~= "table" then
events[pid] = {}
end

if (param == "start") then
if (pidCheck == -1) then
if (isPlayer(cid) == TRUE) then
end
outBack = getCreatureOutfit(cid)
backOutfit[pid] = outBack
backOutfit[pid].lookType = outBack.lookType
backOutfit[pid].lookAddons = outBack.lookAddons
doPlayerSendCancel(cid, "Ai Que Loucuuura :D")
outfitChanger({cid, events[pid]})
doAddCondition(cid, infight)
doCreatureSetNoMove(cid, true)
setPlayerStorageValue(cid, storage, 1)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você está com o DANCE ligado, digite !dance stop.")
end
elseif (param == "stop") then
stopEvent(events[pid].outfitChanger)
stopEvent(events[pid].messager)
events[pid] = {}
doCreatureChangeOutfit(cid, backOutfit[pid])
doRemoveCondition(cid, CONDITION_INFIGHT)
doCreatureSetNoMove(cid, false)
setPlayerStorageValue(cid, storage, -1)
doPlayerSendCancel(cid, "Ai Que Loucuuura :D")
return TRUE
end

Peço que crie um backup do seu atual, teste este com players normais (sem GM, GOD, etc) e retorne para dizer o resultado.

 

Boa sorte.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Bom, a princípio dava este erro:

[02/08/2014 21:51:27] Warning: [Event::loadScript] Can not load script. data/talkactions/scripts/dancing agr vai.lua
[02/08/2014 21:51:27] data/talkactions/scripts/dancing agr vai.lua:73: 'end' expected (to close 'function' at line 34) near '<eof>'
[02/08/2014 21:51:27] Reloaded talk actions.

 

 

Aí eu adicionei um end e nas ultimas linhas e ficou assim:

doPlayerSendCancel(cid, "Ai Que Loucuuura :D")
    end
    return TRUE
end

 

 

Até ai tudo bem, até ai nada mau, porem apareceu este erro:

[02/08/2014 21:56:34] Lua Script Error: [TalkAction Interface] 
[02/08/2014 21:56:34] data/talkactions/scripts/dancing agr vai.lua
 
[02/08/2014 21:56:34] luaCreateConditionObject(). Condition not found
[02/08/2014 21:56:34] Reloaded talk actions.

 

 

Nem sei como resolver hehe' não entendo muito de script. Obrigado  :rock:  (y)

Lembrando(não sei se ajuda você, mas meu TFS é 0.3.1

:thinking:

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites
  • Solução

Engraçado que nem mexi em Funções, então o erro do END não deveria aparecer agora.

Enfim, veja se isso resolve:

 

local conf = {}
-- // config // ---
conf.textSpeed = 1500 -- how fast animated texts is sending?
conf.danceSpeed = 50 -- dance speed
conf.outfitSpeed = 250 -- outfit changer speed
conf.outfitMale = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} -- all male outfits
conf.outfitFemale = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324} -- all female outfits
-- // end // --

local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1)

        function outfitChanger(tab)
    if isPlayer(tab[1]) then
    if getPlayerSex(tab[1]) == PLAYERSEX_FEMALE then
        outs = conf.outfitFemale
    else
        outs = conf.outfitMale
    end
    
local outfit = {
lookType = outs[math.random(1, #outs)],
lookHead = math.random(1,133),
lookBody = math.random(1,133),
lookLegs = math.random(1,133),
lookFeet = math.random(1,133),
lookTypeEx = math.random(1,133),
lookAddons = math.random(0,3)}
doCreatureChangeOutfit(tab[1], outfit)
tab[2].outfitChanger = addEvent(outfitChanger,conf.outfitSpeed, tab)
end
end
        backOutfit = {}
local backOutfit = {}
local storage = 38417


        function onSay(cid, words, param, channel)
local pidCheck = getPlayerStorageValue(cid, storage)
    if(param == "") then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return TRUE
end

local pid = getPlayerGUID(cid)

    if type(events[pid]) ~= "table" then
events[pid] = {}
end

    if (param == "start") then
    if (pidCheck == -1) then
    if (isPlayer(cid)) then
end
        outBack = getCreatureOutfit(cid)
        backOutfit[pid] = outBack
        backOutfit[pid].lookType = outBack.lookType
        backOutfit[pid].lookAddons = outBack.lookAddons
        doPlayerSendCancel(cid, "Ai Que Loucuuura :D")
        outfitChanger({cid, events[pid]})
        doAddCondition(cid, condition_infight)
        doCreatureSetNoMove(cid, true)
        setPlayerStorageValue(cid, storage, 1)
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você está com o DANCE ligado, digite !dance stop.")
    end
    elseif (param == "stop") then
        stopEvent(events[pid].outfitChanger)
        stopEvent(events[pid].messager)
        events[pid] = {}
        doCreatureChangeOutfit(cid, backOutfit[pid])
        doRemoveCondition(cid, CONDITION_INFIGHT)
        doCreatureSetNoMove(cid, false)
        setPlayerStorageValue(cid, storage, -1)
        doPlayerSendCancel(cid, "Ai Que Loucuuura :D")
    end
return TRUE
end

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Pensei mesmo que agora ia.. Porem não foi  :cry:

 

[02/08/2014 22:08:56] Lua Script Error: [TalkAction Interface] 
[02/08/2014 22:08:56] in a timer event called from: 
[02/08/2014 22:08:56] data/talkactions/scripts/dancing agr vai.lua:onSay
 
[02/08/2014 22:08:56] luaDoCreatureChangeOutfit(). Creature not found

 

 

Eu loguei em um char(sem god, cm, gm, tutor, nem nada) falei !dance start, fucionou normal, dai eu desloguei(normal) pra testar o anti logout que você colocou, porem ele deslogou normal e o erro persistiu.  :wacko:

 

Desculpa o trabalho cara  :unsure:

Mas obrigado por tentar me ajudar.  :palmas:  :wow:

 

Olha oque eu ja tentei (vai parecer meio amador mas eu tentei kkk)

function onLogout(tab)
        stopEvent(events[pid].outfitChanger)
        stopEvent(events[pid].messager)
        events[pid] = {}
        setPlayerStorageValue(cid, storage, -1)
    end
    return TRUE
end

 

 

eu fiquei a tarde toda tentando arrumar o script, porem sem sucesso... '-' 

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

É porque a função onLogout que conheço, precisaria ser registrada em CreatureScripts.

E no caso neste script que você tentou fazer, creio que poderia ser "cid" no lugar de "tab".

 

Pelo menos o script ao usar a função "!dance start" o player ficou com battle?

 

#EDIT
Estou corrido agora, depois vejo se crio a função onLogout pra você.

 

Até.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Como eu posso dizer? MUITÍSSIMO OBRIGADO '-' , eu havia esquecido que com a acc do Hoster o player mesmo sendo comum(sem nenhuma poder) desloga mesmo com battle. Enfim, eu testei com outra acc funcionou perfeitamente, o player só pode deslogar quando o ele encerra o script. Muito obrigado mesmo  :rock:  :LOL:  :wub:  :palmas:  :P

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

Isso era uma coisa tão fácil de fazer, era só checar se tinha jogador (isCreature(Cid))

:traning:Skype: Jonhy172 (۩V͇̿I͇̿P͇̿۩ Jopheno ۩V͇̿I͇̿P͇̿۩) :traning:

Te Ajudei ? Rep +

Link para o post
Compartilhar em outros sites

Como eu posso dizer? MUITÍSSIMO OBRIGADO '-' , eu havia esquecido que com a acc do Hoster o player mesmo sendo comum(sem nenhuma poder) desloga mesmo com battle. Enfim, eu testei com outra acc funcionou perfeitamente, o player só pode deslogar quando o ele encerra o script. Muito obrigado mesmo  :rock:  :LOL:  :wub:  :palmas:  :P

Então, isso que fui parar pra pensar de noite quando cheguei em casa.

Ia postar isso pra você agora, porque a Account ID de valor 6, mesmo os players normais podem logar com Battle.

Enfim, que bom que funcionou.

 

Faça bom aproveito agora.

 

 

Isso era uma coisa tão fácil de fazer, era só checar se tinha jogador (isCreature(Cid))

Realmente, também pensei nessa possibilidade a noite, mas é que não cheguei a ler o script inteiro, apenas pensei na primeira solução que veio a cabeça e coloquei em prática.

Além de que, poderia ser a função "isPlayer(cid)" porque até onde sei Creature engloba outros, como NPC, etc. (Eu acho)

 

Enfim.

 

Tópico resolvido.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Sphynx1
      Olá comunidade.
      Eu criei um script a madrugada passada para tentar ajudar um amigo que usa 'OTX' porém dá um erro bizarro no 'lib/compat.lua' e a função 'doAddPlayerOutfit' retorna valor 'NIL'. Eu não sei como resolver, mas está funcionando perfeitamente no 'TFS 0.4'. Espero que alguém em algum lugar do tempoespaço possa se beneficiar desse script já que os que encontrei estão todos muito feios e confusos.

      1. Acesse a pasta 'data/talkactions/scripts' e crie um novo 'arquivo.lua' chamado 'addonpresent.lua', dentro adicione o conteúdo abaixo.
      function onSay(cid, words, param, channel) local maleOutfits = {["citizen"] = {128}, ["mage"] = {130}, ["knight"] = {131}, ["nobleman"] = {132}, ["summoner"] = {133}, ["warrior"] = {134} } local femaleOutfits = {["citizen"] = {136}, ["mage"] = {138}, ["knight"] = {139}, ["nobleman"] = {140}, ["summoner"] = {141}, ["warrior"] = {142} } local mensagens = {"Você recebeu o seu addon e consumiu o item bônus para isto.", "Verifique o que você digitou e tente novamente, parametros inválidos.", "Você não possui o item necessário para receber um addon.", "Certifique-se que você digitou o nome do addon corretamente e tente mais uma vez."} local efeitinga = {[1] = {name = CONST_ME_POFF}, [2] = {name = CONST_ME_CAKE}, [3] = {name = CONST_ME_HEARTS}, [4] = {name = CONST_ME_GIFT_WRAPS} -- efeitos que seram exibidos } local param = string.lower(param) if not isPremium(cid) then doCreatureSay(cid, "Você não possui Premium Account, portanto não poderá utilizar o item de addon.", TALKTYPE_ORANGE_1) -- MSG que será exibida p/ o nao premium return true end if getPlayerItemCount(cid, 6497) > 0 then -- 6497 é o ID do item que será usado por você, se for maior que 0 a quanidade na sua bag então if param ~= "" and maleOutfits[param] and femaleOutfits[param] then doPlayerRemoveItem(cid, 6497, 1) -- o item 6497 será consumido doCreatureSay(cid, mensagens[1], TALKTYPE_ORANGE_1) for k, v in pairs(efeitinga) do doSendMagicEffect(getCreaturePosition(cid), v.name) end if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid, femaleOutfits[param][1], 3) elseif getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid, maleOutfits[param][1], 3) end else doCreatureSay(cid, mensagens[2], TALKTYPE_ORANGE_1) end else doCreatureSay(cid, mensagens[3], TALKTYPE_ORANGE_1) end return true end  
      2. Regresse até 'data/talkactions' e abra o arquivo 'talkactions.xml', dentro adicione o conteúdo abaixo.
      <talkaction words="!addon" event="script" value="addonpresent.lua"/>  
       
    • Por Movie
      Tentei fazer esse talkactions , mas não deu certo , alguém poderia me ajudar ?
       

       
         
       
    • Por rolas69
      Estou com problema no talkaction /attr.
       
      Uso TFS 0.4 que veio sem o talk.
       
      Adicionei com a tag <talkaction log="yes" words="/attr" access="5" script="attr.lua"/> mas sempre dava "unknown comand". Quando mudei pra <talkaction log="yes" words="/attr" access="5" event="function" value="thingProporties"/>, parou de dar erro e aparece o efeito do script, mas nada acontece com o item/teleporte etc...
      O script adicionado é esse:



       
      Na segunda tag, o comando usado sem erro é por ex. /attr set attack 20.
       
      Algm sabe o que pode estar errado?
    • Por jonatasfl
      Ola, galera preciso de um talkaction que faça o seguinte, quando o player alcançar lvl 160 ele ganhara um item para sua vocação, achei um talkaction ele funciona e tudo mas ele só da o item se vc nao tiver promotion, caso vc for Master sorcerer e etc vc n ganha o item, e eu queria que ganhasse, tem como alguem me ajudar? vou postar o script que eu tenho. 
       
         
                  no talkactions.xml    
      Desculpe estar sem os créditos, não lembro quem criou o script.
    • Por Kramer
      Preciso da ajuda de vocês, sou iniciante em script's.
      To quebrando a cabeça pra fazer uma talkaction de teleporte semelhante ao /goto, com as restrições
       
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo