Olá a todos, eu possuo um script de prisão no qual ao utiliar eu crio uma barreira na frente, porem, quando essa prisao é retirada e depois criada novamente, o tempo da antiga esta contando e esta removendo a nova antes do tempo total da nova, o que eu queria é a solução para cada vez que eu utilizar a magia, o tempo seja unico de cada uma, ja consegui resolver por meio de criar uma atribuição de decay no item, porém queria saber se tem como resolver sem ter que colocar um tempo unico para cada ID de barreira. segue abaixo o script
local condicao = createConditionObject(CONDITION_MUTED) --- condição que vai setar setConditionParam(condicao, CONDITION_PARAM_TICKS, 5700) --- tempo (-1 significa infinito) setCombatCondition(combat, condicao)
local permittedPos = {} function onTargetTile(cid, pos)
table.insert(permittedPos[cid], pos)
end setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
local function doSpell(cid, var) doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, getThingPos(cid), rollarea, -5, -10, 12) doCreatureSay(cid, "Aprisionar!", TALKTYPE_MONSTER) if(not isCreature(cid)) then return true end exhaustion.set(cid, config.exhaustStorage, config.exhaustTime) -- adiciona isso aqui doCombat(cid, combat, var)for n, pos in ipairs(permittedPos[cid]) do local break_scope for i = 1, #TRAP_IDS do if getTileItemById(pos, TRAP_IDS).uid > 0 then break_scope = true break end end if not break_scope then doSendMagicEffect(pos, 12)
l addEvent(function() if(getTileItemById(pos, config.createGates[n]).uid > 0) then doRemoveItem(getTileItemById(pos, config.createGates[n]).uid, 1) end end, config.gatesTime*1000) end end end
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onCastSpell(cid, var) permittedPos[cid] = {} if(isPlayer(cid) and exhaustion.check(cid, config.exhaustStorage)) then doPlayerSendCancel(cid, "Aguarde "..exhaustion.get(cid, config.exhaustStorage).." segundo"..(exhaustion.get(cid, config.exhaustStorage) > 1 and "s" or "").." para usar novamente.") doSendMagicEffect(getThingPos(cid), 2) return false end doSpell(cid, var) return doCombat(cid, combat, var) end
Acredito que esse seja o problema
addEvent(function() if(getTileItemById(pos, config.createGates[n]).uid > 0) then doRemoveItem(getTileItemById(pos, config.createGates[n]).uid, 1) end end, config.gatesTime*1000)
A minha duvida é, existe como fazer a criação do item com um tempo individual? Digamos, usei a magia, criei e retirei ela, depois criei no mesmo sqm novamente, ta contando o tempo da magia anterior, existe a posibilidade de criar um tempo individual para cada usada da magia?
Pergunta
Fjinst 36
Olá a todos, eu possuo um script de prisão no qual ao utiliar eu crio uma barreira na frente, porem, quando essa prisao é retirada e depois criada novamente, o tempo da antiga esta contando e esta removendo a nova antes do tempo total da nova, o que eu queria é a solução para cada vez que eu utilizar a magia, o tempo seja unico de cada uma, ja consegui resolver por meio de criar uma atribuição de decay no item, porém queria saber se tem como resolver sem ter que colocar um tempo unico para cada ID de barreira. segue abaixo o script
Acredito que esse seja o problema
addEvent(function()
if(getTileItemById(pos, config.createGates[n]).uid > 0) then
doRemoveItem(getTileItemById(pos, config.createGates[n]).uid, 1)
end
end, config.gatesTime*1000)
A minha duvida é, existe como fazer a criação do item com um tempo individual? Digamos, usei a magia, criei e retirei ela, depois criei no mesmo sqm novamente, ta contando o tempo da magia anterior, existe a posibilidade de criar um tempo individual para cada usada da magia?
Editado por FjinstLink para o comentário
https://xtibia.com/forum/topic/242938-resolvido-tempos-n%C3%A3o-acumulaveis/Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados