DU
pedido

Condowl e efeito em spell

Por Duuhzinhow, 07 de mai. de 2015 em Scripts

condowl
efeito
spell
resolvido
otserv
tibia
21
3.9k
GGAT20G
11 de maio de 2015 às 20:51

Tenta isso se for oque eu to pensando ta certo porque testei aqui mas com uns efeitos fedorentos.

remove_time = 6
local item_id = 1285
local efeitodistancia = 29
local magikeffect = 34

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, efeitodistancia)
 
function onCastSpell(cid, var)
if exhaustion.check(cid, 23006) == false then
                exhaustion.set(cid, 23006, 10)
    else
                doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
        return false
end
 
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
doCreateItem(item_id, 1, posAll[i])
doSendMagicEffect(posAll[i], magikeffect)
end
end 
addEvent(removeItem, remove_time*1000, posAll)
   return doCombat(cid, combat, var) and 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)
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)
end
end
end
end
DuuhzinhowD
11 de maio de 2015 às 22:07

 

Tenta isso se for oque eu to pensando ta certo porque testei aqui mas com uns efeitos fedorentos.

remove_time = 6
local item_id = 1285
local efeitodistancia = 29
local magikeffect = 34

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, efeitodistancia)
 
function onCastSpell(cid, var)
if exhaustion.check(cid, 23006) == false then
                exhaustion.set(cid, 23006, 10)
    else
                doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
        return false
end
 
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
doCreateItem(item_id, 1, posAll[i])
doSendMagicEffect(posAll[i], magikeffect)
end
end 
addEvent(removeItem, remove_time*1000, posAll)
   return doCombat(cid, combat, var) and 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)
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)
end
end
end
end

O distanceeffect nao saiu...

Wend llW
12 de maio de 2015 às 13:46

Mano o efeito pra sair em cima das pedras deu certo, rep +

 

quero tipo, colocar um distance effect, que saia do player e va para o target... entendeu? kkkk

 

Testei e está funcionando:

remove_time = 4 
local item_id = 1285
 
function onCastSpell(cid, var)
if exhaustion.check(cid, 23006) == false then
                exhaustion.set(cid, 23006, 10)
    else
                doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
        return false
end
 
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
doCreateItem(item_id, 1, posAll[i])
doSendMagicEffect(posAll[i], 34)
doSendDistanceEffect(getThingPos(cid), getThingPosition(getCreatureTarget(cid)), 29)
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)
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)
end
end
end

end

@Duuhzinhow

Editado Maio 12 por AnnaFeeh

DuuhzinhowD
12 de maio de 2015 às 14:11

 

Testei e está funcionando:

remove_time = 4 
local item_id = 1285
 
function onCastSpell(cid, var)
if exhaustion.check(cid, 23006) == false then
                exhaustion.set(cid, 23006, 10)
    else
                doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
        return false
end
 
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
doCreateItem(item_id, 1, posAll[i])
doSendMagicEffect(posAll[i], 34)
doSendDistanceEffect(getThingPos(cid), getThingPosition(getCreatureTarget(cid)), 29)
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)
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)
end
end
end

end

Bom, nao sei oq esta funcionando ai entao kkkkk

 

aqui aconteceu o seguinte:

 

Cada vez que usa a spell, cria apenas uma das pedras, ou seja, tem que usar varias vezes para criar todas, elas nao sao removidas, e nao sai o distance effect.

 

;v

Wend llW
14 de maio de 2015 às 00:55
Melhor resposta

Bom, nao sei oq esta funcionando ai entao kkkkk

 

aqui aconteceu o seguinte:

 

Cada vez que usa a spell, cria apenas uma das pedras, ou seja, tem que usar varias vezes para criar todas, elas nao sao removidas, e nao sai o distance effect.

 

;v

 

 

Teste assim:

 

 

remove_time = 4 
local item_id = 1285

function onCastSpell(cid, var)
if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, 10)
else
doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
return false
end

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
doCreateItem(item_id, 1, posAll[i])
doSendDistanceShoot(getCreaturePosition(cid), posAll[i], 29) -- efeito de distancia
doSendMagicEffect(posAll[i], 34) -- efeito normal
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)
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)
end
end
end
end

 

 

Editado Maio 14 por AnnaFeeh

FurabioF
14 de maio de 2015 às 15:38

Tópico movido para a seção de dúvidas e pedidos resolvidos.