Ir para conteúdo
  • 0

Spell não pega cd


icaro201094

Pergunta

Estou com um problema e não consegui arrumar.. se alguem puder ajudar agradeço.

A spell poison gas que tinha era assim:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 22)
setCombatParam(combat, COMBAT_PARAM_HITCOLOR, 154)
setCombatParam(combat, COMBAT_PARAM_ELEMENT, 8)

local area = createCombatArea(AREA_CIRCLE2X2)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	doSaySpell(cid, "Poison Gas")
	return doCombat(cid, combat, var)
end

Modifiquei ela para essa pois só dava 1 hit, em vez de dar vários..

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 22)
setCombatParam(combat, COMBAT_PARAM_HITCOLOR, 154)
setCombatParam(combat, COMBAT_PARAM_ELEMENT, 8)

local area = createCombatArea(AREA_CIRCLE2X2)
setCombatArea(combat, area)

function onCastSpell(cid, var)
if getPlayerStorageValue(cid, 8) >= 1 then
	return true
end
	doCreatureSay(cid, "Poison Gas", TALKTYPE_MONSTER)
	if getPlayerStorageValue(cid, 3) >= 1 then
	doSendAnimatedText(getThingPos(cid), "MISS", 215)
	setPlayerStorageValue(cid, 3, -1)
	return true
	end
	if getPlayerStorageValue(cid, 5) >= 1 then
		if math.random(1,100) <= 33 then
		doSendAnimatedText(getThingPos(cid), "SELF HIT", 180)
			if isPlayer(getCreatureTarget(cid)) then
			huah = getPlayerLevel(getCreatureTarget(cid))
			else
			huah = getPlayerLevel(getCreatureMaster(getCreatureTarget(cid)))
			end
		local levels = huah
		doTargetCombatHealth(getCreatureTarget(cid), cid, COMBAT_PHYSICALDAMAGE, -(math.random((levels*3),(levels*5))), -((math.random((levels*3),(levels*5))+10)), 3)
		return true
		end
	end
local function gas(params)
	if isCreature(params.cid) then
	doAreaCombatHealth(cid, COMBAT_POISONDAMAGE, getThingPos(cid), area, -(params.x), -(params.y), 22)
	end
	end
if getCreatureName(cid) == "Articuno" then
min = 5
elseif getCreatureName(cid) == "Vileplume" then
min = 85
elseif getCreatureName(cid) == "Gloom" then
min = 25
elseif getCreatureName(cid) == "Koffing" then
min = 10
elseif getCreatureName(cid) == "Weezing" then
min = 55
end
local x = min
local y = x + 10
addEvent(gas, 000, {cid = cid, x = x, y = y})
addEvent(gas, 500, {cid = cid, x = x, y = y})
addEvent(gas, 1000, {cid = cid, x = x, y = y})
addEvent(gas, 1500, {cid = cid, x = x, y = y})
addEvent(gas, 2200, {cid = cid, x = x, y = y})
addEvent(gas, 2700, {cid = cid, x = x, y = y})
addEvent(gas, 3200, {cid = cid, x = x, y = y})
addEvent(gas, 3900, {cid = cid, x = x, y = y})
addEvent(gas, 4400, {cid = cid, x = x, y = y})
addEvent(gas, 4900, {cid = cid, x = x, y = y})
end

Funcionou soltando todas, porem ficou sem cd, se eu soltar a spell novamente ela sai em vez de contar o cd.

E a spell está configurada com cd no pokemon.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

function onCastSpell(cid, var)
if getPlayerStorageValue(cid, 8) >= 1 then
    return true
end
    doCreatureSay(cid, "Poison Gas", TALKTYPE_MONSTER)
    if getPlayerStorageValue(cid, 3) >= 1 then
    doSendAnimatedText(getThingPos(cid), "MISS", 215)
    setPlayerStorageValue(cid, 3, -1)
    return true

nesses casos que a spell não sai, coloque return false se não o cara vai gastar mana e tomar exhaust como se tivesse lançado a spell.

 

Sobre o cd.. não sei como vc fez no xml mas aí está tudo correto... geralmente é a falta de um return true ao soltar o combat que faz com que fique sem cd mas vc lembrou de colocar. Se nao tiver jeito, faz o cd via código. É só salvar um storage com 'os.time() + exhaust' e comparar o valor do 'storage - os.time()' < 0 pra soltar a magia novamente.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...