Ir para conteúdo
Banner com Efeitos

[TFS 0.4] Magia StopTime buga se o player morrer com ela!

Featured Replies

Postado

Fala, Pessoal!

Beleza?

Então, eu tenho uma magia no meu servidor que se chama "Stop Time" basicamente é quando um player usa ela, o player adversário não consegue usar nada por uma certa quantidade de tempo, ele fica "silenciado".

Ela funciona perfeitamente se o player nao morrer com o efeito dessa magia, se ele não morrer "silenciado", porém, caso o player morra ainda com o efeito, ele volta pro templo silenciado infinitamente, passa o tempo e ele continua sem conseguir usar magia, UH e etc...

Gostaria de saber se algum de voces saberia o que tem de errado nessa magia.

 

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)

setCombatParam(combat, COMBAT_PARAM_EFFECT, 19)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, true)
setCombatParam(combat, COMBAT_PARAM_TARGETPLAYERSORSUMMONS, true)
local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)
local condition = createConditionObject(CONDITION_DRUNK)
setConditionParam(condition, CONDITION_PARAM_TICKS, 15000)
setCombatCondition(combat, condition)

local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)
setConditionParam(condition, CONDITION_PARAM_SPEED, -300)
setCombatCondition(combat, condition)

local cooldown = 10
function mastime(cid)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "CD: Exevo Gran Mas Time.")
end

function onCastSpell(cid, var)
         local function spell(cid)
               addEvent(spell, 1 * 750, cid)
               return doCombat(cid, combat, var)
         end
if getPlayerStorageValue(cid, 10569) == 1 then
doSendAnimatedText((getCreaturePosition(cid)), "Socorro!", 255)
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
return false 
end
local mags = {}
local pos = getCreaturePosition(cid)
local pos5 = getSpectators(pos, 1, 1)
pos.x = pos.x - 2
local pos1 = getSpectators(pos, 1, 1)
pos.x = pos.x + 4
local pos2 = getSpectators(pos, 1, 1)
pos.x = pos.x - 2
pos.y = pos.y - 2
local pos3 = getSpectators(pos, 1, 1)
pos.y = pos.y + 4
local pos4 = getSpectators(pos, 1, 1)
pos.y = pos.y - 3
pos.x = pos.x - 1
local pos6 = getSpectators(pos, 1, 1)
pos.x = pos.x + 2
local pos7 = getSpectators(pos, 1, 1)
pos.y = pos.y + 2
local pos8 =  getSpectators(pos, 1, 1)
pos.x = pos.x - 2
local pos9 = getSpectators(pos, 1, 1)
if pos1 ~= nil then
for r=1, #pos1 do
table.insert(mags, pos1[r])
end
end
if pos2 ~= nil then
for r=1, #pos2 do
table.insert(mags, pos2[r])
end
end
if pos3 ~= nil then
for r=1, #pos3 do
table.insert(mags, pos3[r])
end
end
if pos4 ~= nil then
for r=1, #pos4 do
table.insert(mags, pos4[r])
end
end
if pos5 ~= nil then
for r=1, #pos5 do
table.insert(mags, pos5[r])
end
end
if pos6 ~= nil then
for r=1, #pos6 do
table.insert(mags, pos6[r])
end
end
if pos7 ~= nil then
for r=1, #pos7 do
table.insert(mags, pos7[r])
end
end
if pos8 ~= nil then
for r=1, #pos8 do
table.insert(mags, pos8[r])
end
end
if pos9 ~= nil then
for r=1, #pos9 do
table.insert(mags, pos9[r])
end
end
for i,v in ipairs(mags) do
if v == cid then
table.remove(mags, i)
end
if getTilePzInfo(getCreaturePosition(v)) then
table.remove(mags, i)
end
end
for t=1, #mags do
if mags[t] ~= cid and doCombat(cid, combat, var) then
doSendMagicEffect((getCreaturePosition(mags[t])), 19)
doSendAnimatedText((getCreaturePosition(mags[t])), "Socorro!", 255)
doPlayerSetStorageValue(mags[t], 10569, 1)
local zxzx = mags[t]
function back(zxzx)
doPlayerSetStorageValue(zxzx, 10569, -1) 
end
addEvent(back, 5000, zxzx)
end
end
if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, cooldown)
addEvent(mastime, cooldown*1000, cid)
return doCombat(cid, combat, var)

else
doSendMagicEffect(getCreaturePosition(cid), 2)
doPlayerSendCancel(cid, "Golpe em cooldown por " ..exhaustion.get(cid, 23006).." segundos")
return false 
end
	return doCombat(cid, combat, var)
end

 

 

Desde já agradeço a ajuda de voces.

Postado
1 hora atrás, boxxer321 disse:

Fala, Pessoal!

Beleza?

Então, eu tenho uma magia no meu servidor que se chama "Stop Time" basicamente é quando um player usa ela, o player adversário não consegue usar nada por uma certa quantidade de tempo, ele fica "silenciado".

Ela funciona perfeitamente se o player nao morrer com o efeito dessa magia, se ele não morrer "silenciado", porém, caso o player morra ainda com o efeito, ele volta pro templo silenciado infinitamente, passa o tempo e ele continua sem conseguir usar magia, UH e etc...

Gostaria de saber se algum de voces saberia o que tem de errado nessa magia.

 

  Ocultar conteúdo


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)

setCombatParam(combat, COMBAT_PARAM_EFFECT, 19)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, true)
setCombatParam(combat, COMBAT_PARAM_TARGETPLAYERSORSUMMONS, true)
local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)
local condition = createConditionObject(CONDITION_DRUNK)
setConditionParam(condition, CONDITION_PARAM_TICKS, 15000)
setCombatCondition(combat, condition)

local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)
setConditionParam(condition, CONDITION_PARAM_SPEED, -300)
setCombatCondition(combat, condition)

local cooldown = 10
function mastime(cid)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "CD: Exevo Gran Mas Time.")
end

function onCastSpell(cid, var)
         local function spell(cid)
               addEvent(spell, 1 * 750, cid)
               return doCombat(cid, combat, var)
         end
if getPlayerStorageValue(cid, 10569) == 1 then
doSendAnimatedText((getCreaturePosition(cid)), "Socorro!", 255)
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
return false 
end
local mags = {}
local pos = getCreaturePosition(cid)
local pos5 = getSpectators(pos, 1, 1)
pos.x = pos.x - 2
local pos1 = getSpectators(pos, 1, 1)
pos.x = pos.x + 4
local pos2 = getSpectators(pos, 1, 1)
pos.x = pos.x - 2
pos.y = pos.y - 2
local pos3 = getSpectators(pos, 1, 1)
pos.y = pos.y + 4
local pos4 = getSpectators(pos, 1, 1)
pos.y = pos.y - 3
pos.x = pos.x - 1
local pos6 = getSpectators(pos, 1, 1)
pos.x = pos.x + 2
local pos7 = getSpectators(pos, 1, 1)
pos.y = pos.y + 2
local pos8 =  getSpectators(pos, 1, 1)
pos.x = pos.x - 2
local pos9 = getSpectators(pos, 1, 1)
if pos1 ~= nil then
for r=1, #pos1 do
table.insert(mags, pos1[r])
end
end
if pos2 ~= nil then
for r=1, #pos2 do
table.insert(mags, pos2[r])
end
end
if pos3 ~= nil then
for r=1, #pos3 do
table.insert(mags, pos3[r])
end
end
if pos4 ~= nil then
for r=1, #pos4 do
table.insert(mags, pos4[r])
end
end
if pos5 ~= nil then
for r=1, #pos5 do
table.insert(mags, pos5[r])
end
end
if pos6 ~= nil then
for r=1, #pos6 do
table.insert(mags, pos6[r])
end
end
if pos7 ~= nil then
for r=1, #pos7 do
table.insert(mags, pos7[r])
end
end
if pos8 ~= nil then
for r=1, #pos8 do
table.insert(mags, pos8[r])
end
end
if pos9 ~= nil then
for r=1, #pos9 do
table.insert(mags, pos9[r])
end
end
for i,v in ipairs(mags) do
if v == cid then
table.remove(mags, i)
end
if getTilePzInfo(getCreaturePosition(v)) then
table.remove(mags, i)
end
end
for t=1, #mags do
if mags[t] ~= cid and doCombat(cid, combat, var) then
doSendMagicEffect((getCreaturePosition(mags[t])), 19)
doSendAnimatedText((getCreaturePosition(mags[t])), "Socorro!", 255)
doPlayerSetStorageValue(mags[t], 10569, 1)
local zxzx = mags[t]
function back(zxzx)
doPlayerSetStorageValue(zxzx, 10569, -1) 
end
addEvent(back, 5000, zxzx)
end
end
if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, cooldown)
addEvent(mastime, cooldown*1000, cid)
return doCombat(cid, combat, var)

else
doSendMagicEffect(getCreaturePosition(cid), 2)
doPlayerSendCancel(cid, "Golpe em cooldown por " ..exhaustion.get(cid, 23006).." segundos")
return false 
end
	return doCombat(cid, combat, var)
end

 

 

Desde já agradeço a ajuda de voces.

Vou improvisar: Em 

data/creaturescripts/scripts/login.lua

Coloque isso em qualquer lugar.

setPlayerStorageValue(cid, 10569, -1)

 

Postado
  • Autor
2 minutos atrás, Fabi Marzan disse:

Vou improvisar: Em 


data/creaturescripts/scripts/login.lua

Coloque isso em qualquer lugar.


setPlayerStorageValue(cid, 10569, -1)

 

 

if getPlayerStorageValue(cid, 10569) ~= 0 then
        setPlayerStorageValue(cid, 10569, -1) 
end

 

nao seria algo assim? não sei, só peguei como exemplo um que já tinha no login.lua

Postado
59 minutos atrás, boxxer321 disse:

 


if getPlayerStorageValue(cid, 10569) ~= 0 then
        setPlayerStorageValue(cid, 10569, -1) 
end

 

nao seria algo assim? não sei, só peguei como exemplo um que já tinha no login.lua

Pode funcionar para você.

Postado
  • Autor
19 minutos atrás, Fabi Marzan disse:

Pode funcionar para você.

Funcionou! Mas eu notei outro erro... Ele tem um Cooldown para usar porém, se tiver npc, players, monstros ao redor, ele consegue soltar a magia antes do cooldown terminar.
Mas se não tiver nada em volta, o cooldown funciona... teria como ajudar?

 

Edit --

 

Consegui consertar! Obrigado! REP+

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

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo