Ir para conteúdo
  • Cadastre-se

(Resolvido)spell com varios hits (attempt to index a boolean value)


Ir para solução Resolvido por Fabi Marzan,

Posts Recomendados

.Qual servidor ou website você utiliza como base? 

8.60 tfs 0.4

Qual o motivo deste tópico? 

Erro ao matar monstro

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

[Error - Spell Interface]
In a timer event called from:
data/spells/scripts/1.lua:onCastSpell
Description:
data/spells/scripts/1.lua:19: attempt to index a boolean value
stack traceback:
        data/spells/scripts/1.lua:19: in function <data/spells/scripts/1.lua:17>
 

O erro ocorro ao usar um poder com vários hits e o target morre sem receber todos eles.

 

Você tem o código disponível? Se tiver publique-o aqui: 

Spoiler

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_PURPLE)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 39)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -150, -1.0, -200)


arr1 = {
	{3}
}


local area1 = createCombatArea(arr1)
setCombatArea(combat1, area1)

 
local function onCastSpell1(cid, var)
local pos = getCreaturePosition(cid)
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
doSendMagicEffect(position1, 501)
return doCombat(cid, combat1, var)
end
 

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
			addEvent(onCastSpell1, 100, cid, var)
			addEvent(onCastSpell1, 300, cid, var)
			addEvent(onCastSpell1, 500, cid, var)
return TRUE
end 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

Link para o post
Compartilhar em outros sites
Spoiler

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_PURPLE)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 39)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -150, -1.0, -200)


arr1 = {
	{3}
}


local area1 = createCombatArea(arr1)
setCombatArea(combat1, area1)

 
local function onCastSpell1(cid, var)
local pos = getCreaturePosition(cid)
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
if isCreature(cid) then
doSendMagicEffect(position1, 501)
return doCombat(cid, combat1, var)
end
end
 

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
			addEvent(onCastSpell1, 100, cid, var)
			addEvent(onCastSpell1, 300, cid, var)
			addEvent(onCastSpell1, 500, cid, var)
return TRUE
end 

 

tenta ae, mas acho que tem como melhorar esse script

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

mano isso e pq ta usando addevent.

Tenta -->

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 162)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -14500, -1.0, -16500)

local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end

function Daichiwari(cid)
	if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
		local position = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
		doSendMagicEffect(position, 52)
	end
end





function onCastSpell(cid, var)
local waittime = 1.0 -- Tempo de exhaustion
local storage = 2 -- não mecha
if exhaustion.check(cid, storage) then
   doPlayerSendCancel(cid, "Usted esta cansado.")
doSendMagicEffect(getCreaturePosition(cid), 2)
    return false
end
local parameters = {cid = cid, var = var, combat1 = combat1}
for i = 1, 3 do
	addEvent(function()
		if isCreature(cid) then
		addEvent(onCastSpell1, 300, parameters)
			addEvent(Daichiwari,100,cid)
		
		end
	end, 1 + ((i-1) * 300))
end
exhaustion.set(cid, storage, waittime)
return true
end

 

Link para o post
Compartilhar em outros sites

@BangxD  O mesmo problema.

@Fabi Marzan  Funcionou certinho, nenhum erro! 

só me explica aonde eu mudo para aumentar e diminuir a quantidade de hits.

or i = 1, 3 do aqui?

Esse evento, 

Daichiwari

posso repetir para outras magias ou sempre tem que mudar?

Editado por diarmaint (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
13 horas atrás, diarmaint disse:

@BangxD  O mesmo problema.

@Fabi Marzan  Funcionou certinho, nenhum erro! 

só me explica aonde eu mudo para aumentar e diminuir a quantidade de hits.


or i = 1, 3 do aqui?

Esse evento, 


Daichiwari

posso repetir para outras magias ou sempre tem que mudar?

Em 1, 3 - e do 3 hits

 

end, 1 + ((i-1) * 300)) <---- Delay do cada hits (300) ai pode ussar (1000) e 1 segundo pra ussar cada hit -- end, 1 + ((i-1) * 1000))

Em Daiwari vc tem que trocar do nome do addevent.

Cada spell que ussa tem que trocar pra outro nome, entende?

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 162)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -14500, -1.0, -16500)

local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end

function Trocardenome(cid)
	if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
		local position = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
		doSendMagicEffect(position, 52)
	end
end





function onCastSpell(cid, var)
local waittime = 1.0 -- Tempo de exhaustion
local storage = 2 -- não mecha
if exhaustion.check(cid, storage) then
   doPlayerSendCancel(cid, "Usted esta cansado.")
doSendMagicEffect(getCreaturePosition(cid), 2)
    return false
end
local parameters = {cid = cid, var = var, combat1 = combat1}
for i = 1, 3 do <---- HITS
	addEvent(function()
		if isCreature(cid) then
		addEvent(onCastSpell1, 300, parameters)
			addEvent(Trocardenome,100<-----Delay pra castar spell,cid)
		
		end
	end, 1 + ((i-1) * 1000)) <----Delay do cada hits pra ussar
end
exhaustion.set(cid, storage, waittime)
return true
end

Meu br e malo kkkkkk, falo spanish

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo