roriscrave
Advanced OT User
- Joined
- Dec 7, 2011
- Messages
- 1,188
- Solutions
- 34
- Reaction score
- 200
I have one spell (dash spell), when use a spell your person "rum" 15 sqms, they can`t enter in pzone (ok) cant enter in house (ok), but have one bug,
the player can step on a non-existent tile, such as the photo:
The red square is not walkable tile, and player and the player can step with this spell, How should I solve it?
The red square red getTileInfo == 0
IMG: https://imageshack.com/a/img923/4163/Krt1DB.png
SCRIPT, I USE TFS 0.4:
the player can step on a non-existent tile, such as the photo:
The red square is not walkable tile, and player and the player can step with this spell, How should I solve it?
The red square red getTileInfo == 0
IMG: https://imageshack.com/a/img923/4163/Krt1DB.png
SCRIPT, I USE TFS 0.4:
Code:
local damage = 20 -- dano que toma qnd bate em algum obstáculo
local speed = 910 -- velocidade do player ao usar o dash (vai de 0 a mil)
local pzprotect = true -- nao deixa entrar em pz com a spell
local distance = 15 -- quantos sqms anda
local function isWalkable(pos, creature, proj, pz)-- by Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true 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 onWalk(cid)
if isCreature(cid) then
local poslook = getCreatureLookPosition(cid)
poslook.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
if isWalkable(poslook, false, false, pzprotect) then
if not isCreature(getThingfromPos(poslook).uid) then
doMoveCreature(cid, getPlayerLookDirection(cid))
doSendMagicEffect(getPlayerPosition(cid), 14)
else
doCreatureAddHealth(cid, -damage)
doSendMagicEffect(getPlayerPosition(cid), 31)
doSendAnimatedText(getPlayerPosition(cid), "-"..damage , 180)
end
else
doCreatureAddHealth(cid, -damage)
doSendMagicEffect(getPlayerPosition(cid), 31)
doSendAnimatedText(getPlayerPosition(cid), "-"..damage , 180)
end
end
return true
end
function onCastSpell(cid, var)
for i = 0, distance do
addEvent(onWalk, (1001- math.min(speed, 1000)) *i, cid)
end
return true
end