Ir para conteúdo

Featured Replies

Postado

Esse script abaixo "solta" uma spell em diagonal, mas não estão funcionado adequadamente. Alguém consegue verificar pq? TFS1.2

 

function Creature.IsInCornerToCreature(self, creature)
    local i = 0
    local spos = self:getPosition()
    local cpos = creature:getPosition()
    local relativepos = {
        Position(-1, -1, 0),
        Position(1, -1, 0),
        Position(-1, 1, 0),
        Position(1, 1, 0)
    }
 
    for _, rpos in pairs(relativepos) do
        
        local pos = spos+rpos
        
        if pos == cpos then
           return 4 - i
        end
         i = i + 1
    end
 
    return 4 - i
    
end 

    -- [DIRECTION_NORTH] = {x = 0, y = -1},
    -- [DIRECTION_EAST] = {x = 1, y = 0},
    -- [DIRECTION_SOUTH] = {x = 0, y = 1},
    -- [DIRECTION_WEST] = {x = -1, y = 0},
    -- [DIRECTION_SOUTHWEST] = {x = -1, y = 1},
    -- [DIRECTION_SOUTHEAST] = {x = 1, y = 1},
    -- [DIRECTION_NORTHWEST] = {x = -1, y = -1},
    -- [DIRECTION_NORTHEAST] = {x = 1, y = -1}

function Creature.IsInCornerToCreature(self, creature)
    local i = 0
    local spos = self:getPosition()
    local cpos = creature:getPosition()
    local relativepos = {
        Position(-1, -1, 0),
        Position(1, -1, 0),
        Position(-1, 1, 0),
        Position(1, 1, 0)
    }
    
    for _, rpos in pairs(relativepos) do
        
        local pos2 = spos+rpos
        
        if pos2 == cpos then
           return 4 - i
        end
         i = i + 1
    end
 
    return 4 - i
    
end 

local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
combat1:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
combat1:setParameter(COMBAT_PARAM_BLOCKSHIELD, true)
combat1:setFormula(COMBAT_FORMULA_SKILL, 1, 0, 1, 0)

local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
combat2:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
combat2:setParameter(COMBAT_PARAM_BLOCKSHIELD, true)
combat2:setFormula(COMBAT_FORMULA_SKILL, 1, 0, 1, 0)

local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
combat3:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
combat3:setParameter(COMBAT_PARAM_BLOCKSHIELD, true)
combat3:setFormula(COMBAT_FORMULA_SKILL, 1, 0, 1, 0)

local area = createCombatArea( { 
{1, 0, 1,},
{0, 1, 0,}, 
{0, 1, 0,},  
{0, 3, 0,},
{0, 0, 0,} } )

local area1 = createCombatArea( {
{0,0,1,0},
{0,0,1,1},
{0,1,0,0},
{3,0,0,0} })

local area2 = createCombatArea( {
{0,1,0,0},
{1,1,0,0},
{0,0,1,0},
{0,0,0,3} })

combat1:setArea(area)
combat2:setArea(area1)
combat3:setArea(area2)

function onUseWeapon(player, variant)
    
    local target = player:getTarget()
    local result = Creature.IsInCornerToCreature(player,target)
    if result == 0 then
        combat1:execute(player, variant)
    elseif pos == 1 or 4 then
        combat3:execute(player,variant)
    elseif pos2 == 2 or 3 then
        combat2:execute(player,variant)
    end
    return true
end

Editado por lazarus321 (veja o histórico de edições)

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