LU
dúvida

AJUDA - OT NÃO DÁ KICK TIME (15MIN)

Por luanluciano93, 29 de ago. de 2013 em Scripts

kicktime
afk
afktime
otserv
resolvido
10
4k
29 de agosto de 2013 às 16:24
Olá pessoal, estou com problema em meu ot, ele não dá KICK após 15min afk ... não sei mais oque fazer ... se puderem me ajudar!

"LUAN É SÓ ALTERAR O TEMPO DO KICK NO 'CONFIG.LUA' E PRONTO"

idleWarningTime = 14 * 60 * 1000
idleKickTime = 15 * 60 * 1000

Então, isso foi a primeira coisa que tentei, e não dá certo! Obrigado!
alissonfgpA
29 de agosto de 2013 às 18:09

 

Olá pessoal, estou com problema em meu ot, ele não dá KICK após 15min afk ... não sei mais oque fazer ... se puderem me ajudar!

"LUAN É SÓ ALTERAR O TEMPO DO KICK NO 'CONFIG.LUA' E PRONTO"

 

idleWarningTime = 14 * 60 * 1000
idleKickTime = 15 * 60 * 1000

 

Então, isso foi a primeira coisa que tentei, e não dá certo! Obrigado!

 

Ve se em creaturescripts esta certo isso...

 

 

    <event type="think" name="Idle" event="script" value="idle.lua"/>

 

idle.lua

 

local config = {
    idleWarning = getConfigValue('idleWarningTime'),
    idleKick = getConfigValue('idleKickTime')
}

function onThink(cid, interval)
    if(getTileInfo(getCreaturePosition(cid)).nologout or getCreatureNoMove(cid) or
        getPlayerCustomFlagValue(cid, PlayerCustomFlag_AllowIdle)) then
        return true
    end

    local idleTime = getPlayerIdleTime(cid) + interval
    doPlayerSetIdleTime(cid, idleTime)
    if(config.idleKick > 0 and idleTime > config.idleKick) then
        doRemoveCreature(cid)
    elseif(config.idleWarning > 0 and idleTime == config.idleWarning) then
        local message = "You have been idle for " .. math.ceil(config.idleWarning / 60000) .. " minutes"
        if(config.idleKick > 0) then
            message = message .. ", you will be disconnected in "
            local diff = math.ceil((config.idleWarning - config.idleKick) / 60000)
            if(diff > 1) then
                message = message .. diff .. " minutes"
            else
                message = message .. "one minute"
            end

            message = message .. " if you are still idle"
        end

        doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, message .. ".")
    end

    return true
end
29 de agosto de 2013 às 18:32

Esta sim :(

alissonfgpA
30 de agosto de 2013 às 01:13

esqueci de uma coisa em

login.lua

 

registerCreatureEvent(cid, "Idle")
30 de agosto de 2013 às 08:39

Olá amigo ...

Em 'config.lua' já estava certo!
Em 'creaturescripts' também está, tanto no diretório principal, como nos scripts 'login.lua' e 'idle.lua'.

Também ja tentei a técnica de mudar no 'idle.lua' o local config, para ele ler o 'time' direto no script, sem ter que verificar a 'config.lua', e nada!

Não sei mais oque fazer ...

Alguém mais pode me ajudar?

alissonfgpA
30 de agosto de 2013 às 10:28

oO, bom vou ver aqui...
Nao sei se pode ser isso, mas no mapa (RME) tem adicionado o no-logout no tile ou como se fosse arena??(se for nos trainers)
ql versao vc esta usando e qual a source 0.3 ~~ 0.4...?

Editado Agosto 30 por alissonfgp

30 de agosto de 2013 às 11:21

Creio que não seja tile, porque isso acontece em qualquer lugar do mapa.

Eu uso TFS 0.4, tibia 8.6

Aguardo resposta! Obrigado.

Editado Agosto 30 por luanluciano93

OmegaO
31 de agosto de 2013 às 02:36

Cara, fiz um script anti-idle, talvez funcione para o que você quer.

 

Tag no creaturescripts.xml:

<event type="login" name="AntiIdle" event="script" value="antiidle.lua"/>

Arquivo antiidle.lua em creaturescripts/scripts (não precisa registrar no login.lua)

function doCheckIdle(cid,oldPos,oldDir)

local storage = 908870
local time = 20 -- tempo em minutos para que o cara seja kickado se ficar na mesma posição

    if not isPlayer(cid) then return false end
    
    local idleTime = getPlayerStorageValue(cid,storage)
    local newPos = getCreaturePosition(cid)
    local newDir = getPlayerLookDir(cid)
    if oldPos == newPos and oldDir == newDir then
        setPlayerStorageValue(cid,storage,idleTime+1)
    else
        setPlayerStorageValue(cid,storage,-1)
    end
    if idleTime >= time then
        doRemoveCreature(cid)
    elseif idleTime >= (time-1) then
        doPlayerSendTextMessage(cid,21,'Voce foi detectado pelo anti-idle. Mude sua posicao nos proximos 10 segundos ou sera kickado.')
        addEvent(doCheckIdle,10000,cid,newPos,newDir)
    else
        addEvent(doCheckIdle,60000,cid,newPos,newDir)
    end
return true
end


function onLogin(cid)
    addEvent(doCheckIdle,60000,cid,getCreaturePosition(cid),getPlayerLookDir(cid))
    return true
end
03 de setembro de 2013 às 13:26

Resolvido! Pode fechar o tópico!

1 mês depois...
OmegaO
31 de outubro de 2013 às 16:52

Tópico movido para a seção de dúvidas e pedidos resolvidos.