Ir para conteúdo
  • Cadastre-se

(Resolvido)Spell incompleta


Ir para solução Resolvido por Spooky Ghost,

Posts Recomendados

TFS 0.3.6

 

Estou tentando fazer com que uma spell tenha mais de 1 hit

 local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_HITCOLOR, COLOR_TEAL)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 263)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 104)

function onGetFormulaValues(cid, level, maglevel)
min = -((level*12) + (maglevel*60))
max = -((level*12) + (maglevel*60))
return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end

 

tentei usar o addevent de outra spell mas sem sucesso:

for k = 1, 10 do
	addEvent(function()
		if isCreature(cid) then
			addEvent(onCastSpell1, 1, parameters)
		end
	end, 1 + ((k-1) * 225))
end

 

 

Segue a spell de exemplo com vários hits

Spoiler

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_PINK)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 29)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 65)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -35.0, 0, -35.5, 0)

local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end
 
function onCastSpell(cid, var)
local parameters = {cid = cid, var = var, combat1 = combat1}

for k = 1, 10 do
    addEvent(function()
        if isCreature(cid) then
            addEvent(onCastSpell1, 1, parameters)
        end
    end, 1 + ((k-1) * 225))
end
return true
end

 

Link para o post
Compartilhar em outros sites
  • Solução

Eu tentei assim e funcionou aqui com a mesma versão do TFS.

 local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_HITCOLOR, COLOR_TEAL)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 263)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 104)

arr1 = {
 {3}
}

local area1 = createCombatArea(arr1)

local function onCastSpell1(parameters)
    return isPlayer(parameters.cid) and doCombat(parameters.cid, combat, parameters.var)
end
function onGetFormulaValues(cid, level, maglevel)
min = -((level*12) + (maglevel*60))
max = -((level*12) + (maglevel*60))
return min, max
end


setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 1000, parameters) -- tempo em segundos para castar a proximo Hit 1000 = 1sg
addEvent(onCastSpell1, 2000, parameters) -- se voce quiser mais Hits você copia essa parte e cola em baixo
addEvent(onCastSpell1, 200, parameters) -- e se voce quiser Hits mais rápidos é só diminuir ao seu gosto xD eu recomendo colocar interval de 200 - 300 segundos para aparecer o Hit no monstro ou criatura
	return doCombat(cid, combat, var)
end

 

 

Editado por ASSAFSAF (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Muito obrigado, funcionou perfeitamente da forma como eu queria.

Só não entendi o por quê de sairem 4 hits mesmo só tendo 3 eventos setados, mas de forma alguma isso é um problema.

Link para o post
Compartilhar em outros sites

@narutomaniacos, é essa parte que tá dando o hit "desconhecido":

return doCombat(cid, combat, var)

se quiser que dê apenas os hits por addEvent, troque por return true ?

Link para o post
Compartilhar em outros sites

Muito obrigado, fiz inclusive alterações no script para o effect ir na coordenada certa. tópico resolvido
 

Citar

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 62)

function rk1(cid)
    if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
        local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z}
        doSendMagicEffect(position1, 36)
    end
end

local function onCastSpell1(parameters)
    return isPlayer(parameters.cid) and doCombat(parameters.cid, combat, parameters.var)
end
function onGetFormulaValues(cid, level, maglevel)
min = -((level*11) + (maglevel*49))
max = -((level*12) + (maglevel*51))
return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell1, 300, parameters) -- tempo em segundos para castar a proximo Hit 1000 = 1sg
addEvent(onCastSpell1, 600, parameters) -- se voce quiser mais Hits você copia essa parte e cola em baixo
addEvent(onCastSpell1, 900, parameters) -- e se voce quiser Hits mais rápidos é só diminuir ao seu gosto xD eu recomendo colocar interval de 200 - 300 segundos para aparecer o Hit no monstro ou criatura
addEvent(onCastSpell1, 1200, parameters)
addEvent(onCastSpell1, 1500, parameters)
addEvent(onCastSpell1, 1800, parameters)
addEvent(onCastSpell1, 2100, parameters)
addEvent(onCastSpell1, 2400, parameters)
addEvent(onCastSpell1, 2700, parameters)

for i = 1, 10 do
    addEvent(function()
        if isCreature(cid) then
            addEvent(rk1,1,cid)
        end
    end, 1 + ((i-1) * 300))
end

    return true
end

 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo