Ir para conteúdo
Banner com Efeitos

Como posso kikar automaticamente quando acabar Premium account de um player?

Featured Replies

Postado
1 hora atrás, IceWar disse:

Gostaria desse mesmo script do poko360, onde o player é kickado quando a premium account acabar, mas no meu server o player só perde a premium, se ela tiver acabado, quando ele reloga ;/

Queria um script que, em tempo real, verificasse se o player tem ou não a premium account + storage e que ele fosse kickado assim que a premium acabasse.

 

chegando em casa eu acesso a db e faço a função que verifica as horas e minutos da P.A

a não ser que nesse código vc coloque para kikar o jogador tbm

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

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

  • Respostas 46
  • Visualizações 3.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • de vez de usar o onLogin usa esse:   function onThink(interval, lastExecution, thinkInterval) if #getPlayersOnline() > 0 then for _, cid in ipairs(getPlayersOnline()) do if isPremium

Postado

E como eu faço para colocar pra kickar o jogador nesse código?

 

No meu caso, como eu uso premium account também, nem teleportar para o templo o script teleportou... Seria interessante também ter a opção de o script usar onTime ao invés de onThink, porque com o onThink o script vai ficar verificando a cada determinado tempo e isso pode comprometer o desempenho do server, visto que pode consumir processamento por verificar todos os players de tempo em tempo e tals...

 

Mas o problema em questão mesmo é que o sistema só identifica que a P.A. do char acabou depois que ele reloga. Eu tenho um talkaction que verifica os dias de premium dentro do jogo (!premiumdays). Fiz um teste: coloquei premium account num char, deixei ele online, acessei a DB e deixei com 0 de premium days (premdays = 0). Mantive o personagem online, mas assim que verifiquei os dias de vip que ele tinha, ainda constava premium, com a quantidade de premium days colocada anteriormente; só após relogar o char que pude ver seus dias premium zerados.

 

Eu vejo que há um problema quando a premium acaba, mas parece que isso é no próprio sistema de premium account x.x; não é identificado em tempo real :(

 

Sabe se tem algum jeito?

 

Valeu pela resposta :D

Baiak 24h -> www.baiakinfinity.ml

Postado
18 minutos atrás, IceWar disse:

E como eu faço para colocar pra kickar o jogador nesse código?

 

No meu caso, como eu uso premium account também, nem teleportar para o templo o script teleportou... Seria interessante também ter a opção de o script usar onTime ao invés de onThink, porque com o onThink o script vai ficar verificando a cada determinado tempo e isso pode comprometer o desempenho do server, visto que pode consumir processamento por verificar todos os players de tempo em tempo e tals...

 

Mas o problema em questão mesmo é que o sistema só identifica que a P.A. do char acabou depois que ele reloga. Eu tenho um talkaction que verifica os dias de premium dentro do jogo (!premiumdays). Fiz um teste: coloquei premium account num char, deixei ele online, acessei a DB e deixei com 0 de premium days (premdays = 0). Mantive o personagem online, mas assim que verifiquei os dias de vip que ele tinha, ainda constava premium, com a quantidade de premium days colocada anteriormente; só após relogar o char que pude ver seus dias premium zerados.

 

Eu vejo que há um problema quando a premium acaba, mas parece que isso é no próprio sistema de premium account x.x; não é identificado em tempo real :(

 

Sabe se tem algum jeito?

 

Valeu pela resposta :D

 

Exatamente, eu também acho mais viável usar onTimer(), porém onTimer ele executa em determinado horário, certo? Então se eu perdi a PA 00:00(meia noite), eu só vou ser kikado as 13:00.

 

a não ser que você coloque em 2 horário no mesmo dia, por exemplo: 00:00 e 12:00

 

onTime fica assim:

 

 

 

 

premiumover.lua

function onTimer()
    if #getPlayersOnline() > 0 then
        for _, cid in ipairs(getPlayersOnline()) do
            if isPremium(cid) and getPlayerStorageValue(cid, 78945) <= 0 then
                setPlayerStorageValue(cid,78945, 1)
            elseif not isPremium(cid) and getPlayerStorageValue(cid, 78945) > 0 then
                doPlayerSetTown(cid, 1)
                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You premium is Over!")
                setPlayerStorageValue(cid, 78945, -1)
                doRemoveCreature(cid)
            end
        end
    end
    return true
end

TAG

<globalevent name="PremiumOver" time="03:00" event="script" value="premiumover.lua"/>

 

no caso na tag vc pode colocar mais e um horario

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Postado

Eu vejo que o script não tem erros mesmo, no entanto eu creio que meu problema seja diferente... o meu server não consegue identificar in-game quando a premium account acaba em tempo real, sem que o player fique off primeiro entende?

O meu premium account acaba, corretamente, mas in-game, se o player tiver online, ele continua entrando na área vip, continua vip, simplesmente pelo fato de não ter logado... a premium days só atualiza depois que o char desloga :(

 

Sabe se tem alguma forma de atualizar isso com o char in-game? Poderia ser algum script que verifique se o player é premium fazendo consulta direta no banco, verificando se o player possui premdays > 0, algo assim... porque se for verificar por "isPremium()" ou "getPremiumAlgumaCoisa(cid)" o server não identifica em tempo real, só mediante atualização do personagem por deslogar... kkk

 

Complicado x.x

 

Baiak 24h -> www.baiakinfinity.ml

Postado
16 minutos atrás, IceWar disse:

Eu vejo que o script não tem erros mesmo, no entanto eu creio que meu problema seja diferente... o meu server não consegue identificar in-game quando a premium account acaba em tempo real, sem que o player fique off primeiro entende?

O meu premium account acaba, corretamente, mas in-game, se o player tiver online, ele continua entrando na área vip, continua vip, simplesmente pelo fato de não ter logado... a premium days só atualiza depois que o char desloga :(

 

Sabe se tem alguma forma de atualizar isso com o char in-game? Poderia ser algum script que verifique se o player é premium fazendo consulta direta no banco, verificando se o player possui premdays > 0, algo assim... porque se for verificar por "isPremium()" ou "getPremiumAlgumaCoisa(cid)" o server não identifica em tempo real, só mediante atualização do personagem por deslogar... kkk

 

Complicado x.x

 

 

por isso que eu disse que teria que atualizar o banco de dados, setar o premium_days para 0 ao invés daqueles números todos que ficam lá ainda e só mudam quando relogam,como você disse, mas para atualizar o banco de dados tem que kikar o jogador ou dar save nele(isso n tenho ctz do save)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo