Postado Outubro 27, 2018 6 anos 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 Novembro 8, 2018 6 anos 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.