tempo = 3, --tempo em segundos
Eu uso em meu servidor, deixo 10
tempo = 10, --tempo em segundos
Por wevertonvrb, 18 de fev. de 2017 em Resolvidos
info
Grupo: Visconde
Registrado: 09/08/10
Posts: 314
Reputação: +19
Char no Tibia: não tenho

tempo = 3, --tempo em segundos
Eu uso em meu servidor, deixo 10
tempo = 10, --tempo em segundos
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

16 minutos atrás, diarmaint disse:tempo = 3, --tempo em segundos
Eu uso em meu servidor, deixo 10
tempo = 10, --tempo em segundos
não é isso que eu quero, quero uma forma de cancelar mesmo pois assim se o player upar 10 lvl seria 1 por segundo isso se n ficar 1 encima do outro em forma de flood, sua sugestão não me serve mas obg
info
Grupo: Campones
Registrado: 14/10/15
Posts: 42
Reputação: +14

use assim:
local config = { tempo = 3, --tempo em segundos mensagem = { texto = "TOP LEVEL", --não use mais de 9 caracteres efeito = TEXTCOLOR_RED --efeito para a função doSendAnimatedText }, efeito = nil, --efeito da função doSendMagicEffect globalstr = 150202 -- uma global storage qualquer q esteje vazia } function TopEffect(cid) local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',') if not isCreature(cid) or getPlayerName(cid) ~= var[1] then return LUA_ERROR end doSendAnimatedText(getCreaturePosition(cid), config.mensagem.texto, config.mensagem.efeito) doSendMagicEffect(getCreaturePosition(cid), config.efeito) addEvent(TopEffect, config.tempo*1000, cid) end function onLogin(cid) if tonumber(getGlobalStorageValue(config.globalstr)) then -- virgin local query = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then setGlobalStorageValue(config.globalstr, ":"..query:getDataString("name")..",:"..query:getDataInt("level")) TopEffect(cid) end else TopEffect(cid) end registerCreatureEvent(cid, "CheckTop") return true end function onAdvance(cid, skill, oldLevel, newLevel) if skill ~= SKILL__LEVEL then return true end local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',') if newLevel > tonumber(var[2]) and getPlayerName(cid) ~= var[1] then doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " tornou-se o novo Top Level. Parabens!", 22) setGlobalStorageValue(config.globalstr, ":"..getPlayerName(cid)..",:"..newLevel) TopEffect(cid) end return true end
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Cara. Se eu fosse tu eu colocaria a função topeffect em uma variável global e verificaria se ela está sendo usada, caso sim, eu pararia ela é reiniciar ia, assim evitanto de chamar ela diversas vezes e causando spam.
info
Grupo: Campones
Registrado: 14/10/15
Posts: 42
Reputação: +14

1 hora atrás, Poccnn disse:Cara. Se eu fosse tu eu colocaria a função topeffect em uma variável global e verificaria se ela está sendo usada, caso sim, eu pararia ela é reiniciar ia, assim evitanto de chamar ela diversas vezes e causando spam.
já está em uma variável global, era só checar se o player que upou era o mesmo que já era top... só isso! abraços ![]()
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

4 horas atrás, Mendiguinho91 disse:
use assim:
local config = { tempo = 3, --tempo em segundos mensagem = { texto = "TOP LEVEL", --não use mais de 9 caracteres efeito = TEXTCOLOR_RED --efeito para a função doSendAnimatedText }, efeito = nil, --efeito da função doSendMagicEffect globalstr = 150202 -- uma global storage qualquer q esteje vazia } function TopEffect(cid) local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',') if not isCreature(cid) or getPlayerName(cid) ~= var[1] then return LUA_ERROR end doSendAnimatedText(getCreaturePosition(cid), config.mensagem.texto, config.mensagem.efeito) doSendMagicEffect(getCreaturePosition(cid), config.efeito) addEvent(TopEffect, config.tempo*1000, cid) end function onLogin(cid) if tonumber(getGlobalStorageValue(config.globalstr)) then -- virgin local query = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then setGlobalStorageValue(config.globalstr, ":"..query:getDataString("name")..",:"..query:getDataInt("level")) TopEffect(cid) end else TopEffect(cid) end registerCreatureEvent(cid, "CheckTop") return true end function onAdvance(cid, skill, oldLevel, newLevel) if skill ~= SKILL__LEVEL then return true end local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',') if newLevel > tonumber(var[2]) and getPlayerName(cid) ~= var[1] then doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " tornou-se o novo Top Level. Parabens!", 22) setGlobalStorageValue(config.globalstr, ":"..getPlayerName(cid)..",:"..newLevel) TopEffect(cid) end return true end
desta forma o efeito aparece ate mesmo para lvl 10 mesmo que ele esteja longe de ser o top
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

7 horas atrás, Mendiguinho91 disse:
já está em uma variável global, era só checar se o player que upou era o mesmo que já era top... só isso! abraços
Segue.
Citarfunction TopEffect(cid)
A função não está em uma variável.
CitarTopeffect = function()
Isso é uma função em uma variável.
info
Grupo: Campones
Registrado: 14/10/15
Posts: 42
Reputação: +14

10 horas atrás, wevertonvrb disse:desta forma o efeito aparece ate mesmo para lvl 10 mesmo que ele esteja longe de ser o top
só se for no seu mundo, o script checa se o newLevel é maior que o var[2]
n tem como não cara
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

3 horas atrás, Mendiguinho91 disse:
só se for no seu mundo, o script checa se o newLevel é maior que o var[2]
n tem como não cara
ok olha isso >>>>http://prntscr.com/eaqioz
e isso >>>> http://prntscr.com/eaqkad
o script tem algum erro em alguma checagem talvez ate loguin pois o efeito esta com um lvl 41 sendo q o top é lvl bem maior
Editado Fevereiro 19 por wevertonvrb
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

@wevertonvrb. Vou te dar uma idéia de como resolver teu problema.
CitarEventotop = nil
if Eventotop then stopEvent(Eventotop) end
Eventotop = addEvent(topeffect, ...)
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

53 minutos atrás, Poccnn disse:
obg resolvido sera que pode me ajudar na action que te marquei? uma action bugando a outra da uma ajudinha? valew rep +
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Dúvida sanada. Tópico movido para Suporte - Resolvidos.
Caso o usuário necessite, solicite a reabertura do tópico.
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25
então gente eu estou com esse script que faz ficar subindo um efeito no top lvl
ele esta funcionando corretamente mas contem um bug no onAdvance
exemplo fica subindo um testo escrito "TOP LEVEL" em cima do personagem de maior lvl e
se alguem ultrapassar o lvl deste top o efeito é encerrado e transferido ao novo top ate aee 100%
mas se a pessoa que já é o top upar + um lvl ativa outro testo escrito "TOP LEVEL"
ou seja fica oque ja tinha junto com o +1 novo e se ele upar 10x fica 10 testo e assim vai isso acaba virando flood e atrapalha
então eu gostaria da ajuda de voces para colocar uma tag no onAdvance algo que dezative o efeito para que ele seja ativado novamen
local config = {
tempo = 3, --tempo em segundos
mensagem = {
texto = "TOP LEVEL", --não use mais de 9 caracteres
efeito = TEXTCOLOR_RED --efeito para a função doSendAnimatedText
},
efeito = nil, --efeito da função doSendMagicEffect
globalstr = 150202 -- uma global storage qualquer q esteje vazia
}
function TopEffect(cid)
local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',')
if not isCreature(cid) or getPlayerName(cid) ~= var[1] then return LUA_ERROR end
doSendAnimatedText(getCreaturePosition(cid), config.mensagem.texto, config.mensagem.efeito)
--doSendMagicEffect(getCreaturePosition(cid), config.efeito)
addEvent(TopEffect, config.tempo*1000, cid)
end
function onLogin(cid)
if tonumber(getGlobalStorageValue(config.globalstr)) then -- virgin
local query = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1")
if (query:getID() ~= -1) then
setGlobalStorageValue(config.globalstr, ":"..query:getDataString("name")..",:"..query:getDataInt("level"))
TopEffect(cid)
end
else
TopEffect(cid)
end
registerCreatureEvent(cid, "CheckTop")
return true
end
function onAdvance(cid, skill, oldLevel, newLevel)
if skill ~= SKILL__LEVEL then return true end
local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',')
if newLevel > tonumber(var[2]) then
doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " tornou-se o novo Top Level. Parabens!", 22)
setGlobalStorageValue(config.globalstr, ":"..getPlayerName(cid)..",:"..newLevel)
-----docancelTopEffect (cid) ---queria adicionar algo assim antes do TopEffect(cid) seja chamado assim cancelando e evitando o flood de textos
TopEffect(cid) ----aqui ele chama o TopEffect que faz surgir + 1 efeito
end
return true
end
@Poccnn
Editado Fevereiro 18 por wevertonvrb