Ir para conteúdo

Featured Replies

Postado

eu copiei uma spell e mudei o item e o efeito, mas o item não sai do chão, a spell é uma trap que cria 8 itens ao redor do alvo e depois some depois de 5 segundos 

local remove_time = 5 -- tempo em segundos para remover as magic wall
local item_id = 5750 -- id da magic wall

function onCastSpell(cid, var)

local waittime = 10 -- Tempo de exhaustion
local storage = 10208

if exhaustion.check(cid, storage) then
return false
end

exhaustion.set(cid, storage, waittime)
local pos = getThingPosition(getCreatureTarget(cid))
posTile1 = {x=pos.x+1,y=pos.y+1,z=pos.z,stackpos=1}
posTile2 = {x=pos.x+1,y=pos.y,z=pos.z,stackpos=1}
posTile3 = {x=pos.x+1,y=pos.y-1,z=pos.z,stackpos=1}
posTile4 = {x=pos.x,y=pos.y-1,z=pos.z,stackpos=1}
posTile5 = {x=pos.x-1,y=pos.y-1,z=pos.z,stackpos=1}
posTile6 = {x=pos.x-1,y=pos.y,z=pos.z,stackpos=1}
posTile7 = {x=pos.x-1,y=pos.y+1,z=pos.z,stackpos=1}
posTile8 = {x=pos.x,y=pos.y+1,z=pos.z,stackpos=1}
posAll = {posTile1,posTile2,posTile3,posTile4,posTile5,posTile6,posTile7,posTile8}

for i=1, #posAll do
	if isWalkable(posAll[i]) then

local efeito = 161

		doCreateItem(item_id, 1, posAll[i])
		doSendMagicEffect(posAll[i], efeito)
	end
end 
addEvent(removeItem, remove_time*1000, posAll)

return true
end

function isWalkable(pos, creature, pz, proj)
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
	local creature = getTopCreature(pos)
    if creature.type > 0 then	return false end
	if getTilePzInfo(pos) and not pz then return false end
	local n = not proj and 3 or 2
	for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
	end
return true
end

function removeItem(posAll)

local effect = 161

	for i=1, #posAll do
		for j=0, 255 do
			pos_stack = {x=posAll[i].x,y=posAll[i].y,z=posAll[i].z,stackpos=j}
			removeTile = getThingfromPos(pos_stack)
			if removeTile.itemid == item_id then
				doRemoveItem(removeTile.uid)
				doSendMagicEffect(pos_stack, effect)
			end
		end
	end
end

O item aparece, mas ele simplesmente não some, a outra spell só muda o item e o efeito, e funciona perfeitamente, o que pode ser?

Postado
local storage = 454254
local time = 10.0 -- Exaust da spell

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1497) -- Aqui coloque o ID do objeto

local arr = {
    {1, 1, 1, 1, 1},
    {1, 1, 1, 1, 1},
    {1, 1, 2, 1, 1},
    {1, 1, 1, 1, 1},
    {1, 1, 1, 1, 1},
}

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

function onCastSpell(cid, var)
    if exhaustion.check(cid, storage) then
        doPlayerSendCancel(cid, "Exhaustion ...")
        return doSendMagicEffect(getCreaturePosition(cid), 2)
    end
    
    exhaustion.set(cid, storage, time) 
    return doCombat(cid, combat, var)
end

Agora, vá no itens.XML e de um CTRL + F e procure pelo ID da wall e coloque essas tag;

<attribute key="decayTo" value="0" />
<attribute key="duration" value="XXX" />

Onde está XXX é a duração do item.

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo