Ir para conteúdo
  • 0

Spell De Teleport Que Acerta Dano


nbb147

Pergunta

galera, a muito tempo estou procurando um spell de teleport que acerta dano, tipo o player ta 4 sqm de distancia do oponente ai o player ataka o oponente e usa a spell, o player é teleportado para o sqm do oponente e acerta dano, eu to com script aki que esta mais ou menos do jhon992, mais ele esta com varios bugs, tipo nao esta gastando mana e nem tirando dano, script:

 

 

cara encontrei aki no xtibia um script seu, é um spell de teleport que acerta dano, queria que voce mim ajuda-se pq ela nao esta acertando o dano no oponente, script:

 

ajude se possivel é claro..

 

 

local distanceCombat = createCombatObject()

setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

 

function getSpellDamage(cid, lv)

damage_min = lv * 300

damage_max = lv * 400

if(damage_max < damage_min) then

local tmp = damage_max

damage_max = damage_min

damage_min = tmp

end

return -damage_min, -damage_max

end

setCombatCallback(CombatEffect, CALLBACK_PARAM_SKILLVALUE, "getSpellDamage")

 

function onCastSpell(cid, var)

local target = getCreatureTarget(cid)

local enemypos = getCreaturePosition(target)

if isMonster(target) or isCreature(target) then

if verificaPos(cid, enemypos, var) == false then

doPlayerSendCancel(cid, "Position not valid.")

return false

else

return true

end

else

doPlayerSendCancel(cid, "You need a taget.")

return false

end

end

 

function verificaPos(cid, enemypos, var)

local positions = {}

local player = getCreaturePosition(cid)

for i=-1, 1 do

for j=-1, 1 do

local position = {x=enemypos.x+i,y=enemypos.y+j,z=enemypos.z}

if isWalkable(position) then

positions[#positions+1] = position

end

end

end

if #positions > 0 then

doTeleportThing(cid, positions[math.random(1,#positions)])

doSendMagicEffect(enemypos, 61)

return doCombat(cid, CombatEffect, var)

else

return false

end

end

 

function isWalkable(pos, creature, pz, proj) -- nord

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

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Testa esse:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function getDamage(cid, level, magic)
return -(level * 5 + magic * 12), -(level * 5 + magic * 12 + 55)
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getDamage")

function onCastSpell(cid, var)

   local target = getCreatureTarget(cid)
   if target <= 1 then
    doPlayerSendCancel(cid, "You need a target.")
   return false
   end

   if not isSightClear(getThingPos(cid), getThingPos(target), false) then
    doPlayerSendCancel(cid, "You can't reach that place.")
   return false
   end

   local targetPos = getThingPos(target)
   local directions = {0, 1, 2, 3, 4, 5, 6, 7}
   local teleportPos = {}
   for _ = 1, #directions do
    local random = math.random(#directions)
    local dir = directions[random]
    table.remove(directions, random)
    local newPos = getPosByDir(targetPos, dir)
    if doTileQueryAdd(cid, newPos, 0, false) == 1 then
	    teleportPos = newPos
	    break
    end
   end

   if teleportPos.x and doTileQueryAdd(cid, teleportPos, 0, false) == 1 then
    doCombat(cid, combat, var)
    doTeleportThing(cid, teleportPos, false)
   return true
   end

   doPlayerSendCancel(cid, "You cannot teleport there.")
return false
end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...