Ir para conteúdo
  • 0

Ajuda Com Um Detalhe Importante Em Uma Spell


vigonetto

Pergunta

Quero saber com fazer, para fazer com que um item (arvores) sejam removidas, depois de terem sido conjuradas. Segue o script que tenho:

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ANI_POISON)
setCombatParam(combat1, COMBAT_PARAM_CREATEITEM, 2768)
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_CREATEITEM, 2708)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_CREATEITEM, 2700)
local arr1 = {
{3}
}
local arr2 = {
{0, 1, 0},
{1, 2, 1}
}
local arr3 = {
{1, 1, 1},
{1, 0, 1},
{0, 2, 0}
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
function onCastSpell11(parameters1)
doCombat(parameters1.cid, combat1, parameters1.var)
end
function onCastSpell12(parameters1)
doCombat(parameters1.cid, combat2, parameters1.var)
end
function onCastSpell13(parameters1)
doCombat(parameters1.cid, combat3, parameters1.var)
end

function onCastSpell(cid, var)
local parameters1 = { cid = cid, var = var }
addEvent(onCastSpell11, 0, parameters1)
addEvent(onCastSpell12, 1000, parameters1)
addEvent(onCastSpell13, 2500, parameters1)
return true
end

A ideia, é que as arvores fiquem um tempo, e depois sejam removidas.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Teste assim:

 

 

local TEMPO_PARA_REMOVER = 5 * 1000	-- em ms, 5 * 1000 = 5 segundos
local EFFECT_AO_REMOVER = CONST_ME_POFF	-- efeito que aparece ao remover os itens

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ANI_POISON)
setCombatParam(combat1, COMBAT_PARAM_CREATEITEM, 2768)
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_CREATEITEM, 2708)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_CREATEITEM, 2700)
local arr1 = {
{3}
}
local arr2 = {
{0, 1, 0},
{1, 2, 1}
}
local arr3 = {
{1, 1, 1},
{1, 0, 1},
{0, 2, 0}
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)

function onTargetTile(cid, pos)
local function doRemoveItemFromPos(pos, id)
	local i = getTileItemById(pos, id).uid
	i = i > 1 and doRemoveItem(i) and true or false
	if i and tonumber(EFFECT_AO_REMOVER) and EFFECT_AO_REMOVER >= 0 and EFFECT_AO_REMOVER <= 255 then
		doSendMagicEffect(pos, EFFECT_AO_REMOVER)
	end
end
local iI = {getTileItemById(pos, 2768), getTileItemById(pos, 2708), getTileItemById(pos, 2700)}
for _, i in pairs (iI) do
	if i.uid > 1 then addEvent(doRemoveItemFromPos, TEMPO_PARA_REMOVER, pos, i.itemid) end
end
end

function onTargetTile1(cid, pos)
onTargetTile(cid, pos)
end
function onTargetTile2(cid, pos)
onTargetTile(cid, pos)
end
function onTargetTile3(cid, pos)
onTargetTile(cid, pos)
end

setCombatCallback(combat1, CALLBACK_PARAM_TARGETTILE, "onTargetTile1")
setCombatCallback(combat2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2")
setCombatCallback(combat3, CALLBACK_PARAM_TARGETTILE, "onTargetTile3")

function doExecuteCombat(cid, var, combat)
if not isCreature(cid) then return true end
return doCombat(cid, combat, var)
end

function onCastSpell(cid, var)
local combats = {[0] = combat1, [1000] = combat2, [2500] = combat3}
for timing, c in pairs (combats) do
	addEvent(doExecuteCombat, timing, cid, var, c)
end
return true
end

 

Editado por brun123
Link para o comentário
Compartilhar em outros sites

  • 0

Teste assim:

 

 

local TEMPO_PARA_REMOVER = 5 * 1000	-- em ms, 5 * 1000 = 5 segundos
local EFFECT_AO_REMOVER = CONST_ME_POFF	-- efeito que aparece ao remover os itens

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ANI_POISON)
setCombatParam(combat1, COMBAT_PARAM_CREATEITEM, 2768)
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_CREATEITEM, 2708)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_CREATEITEM, 2700)
local arr1 = {
{3}
}
local arr2 = {
{0, 1, 0},
{1, 2, 1}
}
local arr3 = {
{1, 1, 1},
{1, 0, 1},
{0, 2, 0}
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)

function onTargetTile(cid, pos)
local function doRemoveItemFromPos(pos, id)
	local i = getTileItemById(pos, id).uid
	i = i > 1 and doRemoveItem(i) and true or false
	if i and tonumber(EFFECT_AO_REMOVER) and EFFECT_AO_REMOVER >= 0 and EFFECT_AO_REMOVER <= 255 then
		doSendMagicEffect(pos, EFFECT_AO_REMOVER)
	end
end
local iI = {getTileItemById(pos, 2768), getTileItemById(pos, 2708), getTileItemById(pos, 2700)}
for _, i in pairs (iI) do
	if i.uid > 1 then addEvent(doRemoveItemFromPos, TEMPO_PARA_REMOVER, pos, i.itemid) end
end
end

function onTargetTile1(cid, pos)
onTargetTile(cid, pos)
end
function onTargetTile2(cid, pos)
onTargetTile(cid, pos)
end
function onTargetTile3(cid, pos)
onTargetTile(cid, pos)
end

setCombatCallback(combat1, CALLBACK_PARAM_TARGETTILE, "onTargetTile1")
setCombatCallback(combat2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2")
setCombatCallback(combat3, CALLBACK_PARAM_TARGETTILE, "onTargetTile3")

function doExecuteCombat(cid, var, combat)
if not isCreature(cid) then return true end
return doCombat(cid, combat, var)
end

function onCastSpell(cid, var)
local combats = {[0] = combat1, [1000] = combat2, [2500] = combat3}
for timing, c in pairs (combats) do
	addEvent(doExecuteCombat, timing, cid, var, c)
end
return true
end

 

Nada demais aconteceu, no tibia. No entanto, aconteceu um erro no servidor, ao rodar a spell. Valeu pela força, e se der, me ajuda, que ainda não deu certo!

Link para o comentário
Compartilhar em outros sites

  • 0

não dá pra ver a imagem, não precisa tirar print não

 

só da ctrl c/v no texto e cola aqui, acabei de testar a script e funcionou normalmente, provavelmente é alguma incompatibilidade devido a diferença das versões utilizadas

Editado por brun123
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...