VO

[SPELL] Throwing Knife

Por Vorkhon, 31 de ago. de 2020 em Scripts

4
1.2k
VorkhonV
31 de agosto de 2020 às 12:11

Quero fazer uma explosao de Throwing Knife que hite 2 vezes, esta hitando mas a imagem das knifes nao estao aparecendo

1 mês depois...
koeteK
27 de setembro de 2020 às 15:15

A imagem das knifes voando ou a imagem de quando elas hitam? 

Se for elas voando na vdd você tem que descobrir o valor certo do shoteffect. 

No caso de aparecer algum efeito na hora do hit você não colocou pra aparecer. 

 

Qual dos efeitos n aparecem?

VorkhonV
28 de setembro de 2020 às 13:25
22 horas atrás, koete disse:

A imagem das knifes voando ou a imagem de quando elas hitam? 

Se for elas voando na vdd você tem que descobrir o valor certo do shoteffect. 

No caso de aparecer algum efeito na hora do hit você não colocou pra aparecer. 

 

Qual dos efeitos n aparecem?

Não aparece as Knifes voando. Eu já tentei por o Código delas 9, e tentei outros efeitos. É algum erro no script. Olha como ta agora, ta dando o hit mas sem imagem nenhuma:

 

local acombat1 = createCombatObject() 
local acombat2 = createCombatObject() 

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_THROWINGKNIFE)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -4.0, 0, -5.0, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_THROWINGKNIFE)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -4.0, 0, -5.0, 0)
 
arr1 = {
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
}

arr2 = {
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
}
 
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)

function onTargetTile(cid, pos)
doCombat(cid,combat1,positionToVariant(pos))
end

function onTargetTile2(cid, pos) 
doCombat(cid,combat2,positionToVariant(pos)) 
end 

setCombatCallback(acombat1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
setCombatCallback(acombat2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2") 
 
local function onCastSpell1(parameters)
doCombat(parameters.cid, combat1, parameters.var)
end

local function onCastSpell2(parameters)
doCombat(parameters.cid, combat2, parameters.var)

end

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 200, parameters)

return TRUE


end

 

koeteK
28 de setembro de 2020 às 15:44

Ta certo, escrevi um código que rodou aqui no servidor. segue ele como está escrito abaixo. 

 

Spoiler


local combat1 = createCombatObject()
	setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
        setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 0)
	setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)


local function onCastSpell1(parameters)
if isCreature(parameters.cid) == false then
return false
end
	doCombat(parameters.cid, combat1, parameters.var)
end

function onCastSpell(cid, var)
	local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } 
	addEvent(onCastSpell1, 0, parameters) --Edita o numero em milisegundos, no caso de 0 vai ser no ato da spell.
	addEvent(onCastSpell1, 200, parameters) --Edita o numero em milisegundos, no caso de 200 vai sair o hit depois de 0,2 segundos de ter usado a spell.
		return true
end

 

 

Quando for chamar a spell em addEvent voce pode ir adicionando outros addevent pra poder chamar mais vezes a spell. vou dar um exemplo de como ficaria chamando a spell 10x de meio em meio segundo. 

Spoiler

addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell1, 500, parameters)
addEvent(onCastSpell1, 1000, parameters)
addEvent(onCastSpell1, 1500, parameters)
addEvent(onCastSpell1, 2000, parameters)
addEvent(onCastSpell1, 2500, parameters)
addEvent(onCastSpell1, 3000, parameters)
addEvent(onCastSpell1, 3500, parameters)
addEvent(onCastSpell1, 4000, parameters)

 

 

neste exemplo so vai parar de sair os efeitos depois de 4 segundos. 

Editado Setembro 28 por koete