I was creating a script that he dash causing damage. but somehow it only works the first dash... I don't know if I can be very tired but I can't solve it, could someone solve it for me and say what am I wrong?
solved, if anyone wants the script there.
Lua:
local katanaa = Action()
local config = {
time = 1,
storage = 2000000000,
}
function walk(player, steps)
print(steps)
if steps == 0 then return false end
local creature = Creature(player)
if not creature then return false end
local playerPos = player:getPosition()
local direction = player:getDirection()
local newPos = playerPos:getNextPosition(direction)
if newPos:isWalkable() then
player:move(player:getDirection())
doAreaCombatHealth(creature, COMBAT_PHYSICALDAMAGE, newPos, 0, -1000, -2000, 4)
end
addEvent(walk, 100, player, steps - 1)
end
function katanaa.onUse(player, item, fromPosition, target, toPosition, isHotkey)
if player:getStorageValue(config.storage) - os.time() > 0 then
return player:sendCancelMessage("você só pode usar o item depois de "..(player:getStorageValue(config.storage) - os.time()).." segundos.")
end
local slotItem = player:getSlotItem(CONST_SLOT_LEFT)
if slotItem and item == slotItem then
player:setStorageValue(config.storage, os.time() + config.time)
walk(player, 10)
else
player:sendCancelMessage("Item precisa está equipado para usar.")
end
end
function Position:isWalkable()
local tile = Tile(self)
if not tile then
return false
end
local ground = tile:getGround()
if not ground or ground:hasProperty(CONST_PROP_BLOCKSOLID) then
return false
end
local items = tile:getItems()
for i = 1, tile:getItemCount() do
local item = items[i]
local itemType = item:getType()
if itemType:getType() ~= ITEM_TYPE_MAGICFIELD and not itemType:isMovable() and item:hasProperty(CONST_PROP_BLOCKSOLID) then
return false
end
end
return true
end
function Position:getNextPosition(direction, steps)
local copy = Position(self.x, self.y, self.z)
local offset = Position.directionOffset[direction]
if offset then
steps = steps or 1
copy.x = copy.x + offset.x * steps
copy.y = copy.y + offset.y * steps
end
return copy
end
katanaa:id(2412)
katanaa:register()
Post automatically merged:
solved, if anyone wants the script there.
Lua:
local katanaa = Action()
local config = {
time = 1,
storage = 2000000000,
}
function walk(cid, steps)
print(steps)
local player = Player(cid)
if not player then return false end
if steps == 0 then return false end
local playerPos = player:getPosition()
local direction = player:getDirection()
local newPos = playerPos:getNextPosition(direction)
if newPos:isWalkable() then
player:move(player:getDirection())
doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, newPos, 0, -1000, -2000, 4)
end
addEvent(walk, 50, cid, steps - 1)
end
function katanaa.onUse(player, item, fromPosition, target, toPosition, isHotkey)
if player:getStorageValue(config.storage) - os.time() > 0 then
return player:sendCancelMessage("você só pode usar o item depois de "..(player:getStorageValue(config.storage) - os.time()).." segundos.")
end
local slotItem = player:getSlotItem(CONST_SLOT_LEFT)
if slotItem and item == slotItem then
player:setStorageValue(config.storage, os.time() + config.time)
walk(player:getId(), 3)
else
player:sendCancelMessage("Item precisa está equipado para usar.")
end
end
function Position:isWalkable()
local tile = Tile(self)
if not tile then
return false
end
local ground = tile:getGround()
if not ground or ground:hasProperty(CONST_PROP_BLOCKSOLID) then
return false
end
local items = tile:getItems()
for i = 1, tile:getItemCount() do
local item = items[i]
local itemType = item:getType()
if itemType:getType() ~= ITEM_TYPE_MAGICFIELD and not itemType:isMovable() and item:hasProperty(CONST_PROP_BLOCKSOLID) then
return false
end
end
return true
end
function Position:getNextPosition(direction, steps)
local copy = Position(self.x, self.y, self.z)
local offset = Position.directionOffset[direction]
if offset then
steps = steps or 1
copy.x = copy.x + offset.x * steps
copy.y = copy.y + offset.y * steps
end
return copy
end
katanaa:id(2412)
katanaa:register()
Last edited: