Então galera, eu estou com um script aqui, que basicamente seria um efeito saindo numa pos que tira life do player. Ta meio que uma gambiarra u.u
em globalevents/start.lua está assim:
local posesH = { {x=229, y=1144, z=15}, {x=226, y=1186, z=15}, {x=226, y=1187, z=15}, {x=226, y=1189, z=15}, {x=226, y=1192, z=15}, {x=226, y=1193, z=15}, {x=263, y=1147, z=15}, {x=263, y=1148, z=15}, {x=279, y=1192, z=15}, {x=281, y=1187, z=15}, {x=323, y=1200, z=15}, {x=322, y=1190, z=15}, {x=322, y=1188, z=15}, {x=322, y=1167, z=15}, {x=322, y=1165, z=15}, {x=322, y=1163, z=15}, {x=322, y=1161, z=15}, {x=322, y=1130, z=15}, {x=322, y=1133, z=15}, {x=322, y=1136, z=15}, {x=322, y=1139, z=15}, {x=328, y=1107, z=15}, {x=328, y=1106, z=15}, {x=330, y=1102, z=15}, } local posesV = { {x=318, y=1121, z=15}, {x=314, y=1121, z=15}, {x=310, y=1121, z=15}, {x=300, y=1120, z=15}, {x=298, y=1121, z=15}, {x=296, y=1121, z=15}, {x=294, y=1121, z=15}, {x=261, y=1155, z=15}, {x=234, y=1138, z=15}, {x=298, y=1171, z=15}, {x=299, y=1171, z=15}, {x=303, y=1168, z=15}, {x=305, y=1168, z=15}, {x=306, y=1168, z=15}, {x=308, y=1168, z=15}, } local function sendDmgPos() for i,v in pairs(posesH) do local pos = v for x=1, 5 do doSendMagicEffect(pos, 56) doDamageInPos(pos, 14455, 57) pos.x = pos.x + 1 end end for i,v in pairs(posesV) do local pos = v for x=1, 5 do doSendMagicEffect(pos, 58) doDamageInPos(pos, 14456, 59) pos.y = pos.y + 1 end end addEvent(sendDmgPos, 5000) end sendDmgPos() return true end
Função doDamageInPos:
function doDamageInPos(pos, damage, eff) local cid = getTopCreature(pos).uid if eff and eff ~= 0 and type(eff) == "number" then local itemPos = getTileThingByPos(pos) local can = true if itemPos.uid ~= 0 then can = (not hasProperty(itemPos.uid, CONST_PROP_BLOCKSOLID) and not hasProperty(itemPos.uid, CONST_PROP_BLOCKPROJECTILE)) end if can then doSendMagicEffect(pos, eff) end end if cid and isCreature(cid) then setPlayerStorageValue(cid, 117879, 1) doCreatureAddHealth(cid, -damage) end return true end
function DamageInRectangle(pos, h, v, dmg, eff) local tempPos = pos local poses = {tempPos} for x=1, h do tempPos.x = tempPos.x + 1 table.insert(poses, tempPos) end for y=1, v do tempPos.y = tempPos.y + 1 table.insert(poses, tempPos) end for i,v in pairs(poses) do print('['..(i)..'] = {x='..(v.x).. ', y='..(v.y)..', z='..(v.z)..'}') doDamageInPos(v, dmg, eff) end end
A Função DamageInRectangle seria pra mandar efeito em um retangulo e tirar life do player, só que não ta termiado.
E aconteçe o seguinte: o efeito sai andando pelo mapa, a cada efeito ele aparece numa post diferente, o efeito sai errado e nao tira dano do player e.e.
obs: esse efeito seria de uma parede a outra, por exemplo, da pos {x=318, y=1121, z=15}, até chegar a proxima parede
Pergunta
Drk Shadow 48
Então galera, eu estou com um script aqui, que basicamente seria um efeito saindo numa pos que tira life do player. Ta meio que uma gambiarra u.u
em globalevents/start.lua está assim:
local posesH = {
{x=229, y=1144, z=15},
{x=226, y=1186, z=15},
{x=226, y=1187, z=15},
{x=226, y=1189, z=15},
{x=226, y=1192, z=15},
{x=226, y=1193, z=15},
{x=263, y=1147, z=15},
{x=263, y=1148, z=15},
{x=279, y=1192, z=15},
{x=281, y=1187, z=15},
{x=323, y=1200, z=15},
{x=322, y=1190, z=15},
{x=322, y=1188, z=15},
{x=322, y=1167, z=15},
{x=322, y=1165, z=15},
{x=322, y=1163, z=15},
{x=322, y=1161, z=15},
{x=322, y=1130, z=15},
{x=322, y=1133, z=15},
{x=322, y=1136, z=15},
{x=322, y=1139, z=15},
{x=328, y=1107, z=15},
{x=328, y=1106, z=15},
{x=330, y=1102, z=15},
}
local posesV = {
{x=318, y=1121, z=15},
{x=314, y=1121, z=15},
{x=310, y=1121, z=15},
{x=300, y=1120, z=15},
{x=298, y=1121, z=15},
{x=296, y=1121, z=15},
{x=294, y=1121, z=15},
{x=261, y=1155, z=15},
{x=234, y=1138, z=15},
{x=298, y=1171, z=15},
{x=299, y=1171, z=15},
{x=303, y=1168, z=15},
{x=305, y=1168, z=15},
{x=306, y=1168, z=15},
{x=308, y=1168, z=15},
}
local function sendDmgPos()
for i,v in pairs(posesH) do
local pos = v
for x=1, 5 do
doSendMagicEffect(pos, 56)
doDamageInPos(pos, 14455, 57)
pos.x = pos.x + 1
end
end
for i,v in pairs(posesV) do
local pos = v
for x=1, 5 do
doSendMagicEffect(pos, 58)
doDamageInPos(pos, 14456, 59)
pos.y = pos.y + 1
end
end
addEvent(sendDmgPos, 5000)
end
sendDmgPos()
return true
end
function doDamageInPos(pos, damage, eff)
local cid = getTopCreature(pos).uid
if eff and eff ~= 0 and type(eff) == "number" then
local itemPos = getTileThingByPos(pos)
local can = true
if itemPos.uid ~= 0 then
can = (not hasProperty(itemPos.uid, CONST_PROP_BLOCKSOLID) and not hasProperty(itemPos.uid, CONST_PROP_BLOCKPROJECTILE))
end
if can then
doSendMagicEffect(pos, eff)
end
end
if cid and isCreature(cid) then
setPlayerStorageValue(cid, 117879, 1)
doCreatureAddHealth(cid, -damage)
end
return true
end
function DamageInRectangle(pos, h, v, dmg, eff)
local tempPos = pos
local poses = {tempPos}
for x=1, h do
tempPos.x = tempPos.x + 1
table.insert(poses, tempPos)
end
for y=1, v do
tempPos.y = tempPos.y + 1
table.insert(poses, tempPos)
end
for i,v in pairs(poses) do
print('['..(i)..'] = {x='..(v.x).. ', y='..(v.y)..', z='..(v.z)..'}')
doDamageInPos(v, dmg, eff)
end
end
Link para o comentário
https://xtibia.com/forum/topic/233399-efeito-saindo-do-chao-que-tira-life-do-player/Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados