NO Wall encima de fuego

El Bu

Member
Messages
42
Points
151
Hola, alguien me podria ayudar como puedo modificar mi codigo para que la magic wall NO salga encima del fuego, energy o pox, por favor.

function onCreateMagicWall(creature, tile)
local magicWall
if Game.getWorldType() == WORLD_TYPE_NO_PVP then
magicWall = ITEM_MAGICWALL_SAFE
else
magicWall = ITEM_MAGICWALL
end
local item = Game.createItem(magicWall, 1, tile)
item:setDuration(20)
end

local combat = Combat()
combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onCreateMagicWall")
combat:setArea(createCombatArea(AREA_Terra))

local spell = Spell("rune")
function spell.onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end
 
Solution
gracias, hay unos fields que tienen la propiedad que es replaceable osea que al tirar una wall encima o a un lado de ese field la magic wall no sale porque no puede reemplazar el field, con esa propiedad "replaceable" si se le pudiera poner a todos los monsters y players en general de alguna forma estaria genial, me solucionaria este problema.
Estos codigos que me estas pasando me estan funcionando pero solo si tiro la rune encima del monster o en tarjet pero si la tiro a un lado del monster aun sale la wall, el unico metodo que se me ocurre mas sencillo es el que te comento de la propiedad "replaceable"View attachment 4985

Pero la propiedad lee, que si en una tile hay una criatura o un player, no cree el wall, asi es como dijiste...
Hola, alguien me podria ayudar como puedo modificar mi codigo para que la magic wall NO salga encima del fuego, energy o pox, por favor.

function onCreateMagicWall(creature, tile)
local magicWall
if Game.getWorldType() == WORLD_TYPE_NO_PVP then
magicWall = ITEM_MAGICWALL_SAFE
else
magicWall = ITEM_MAGICWALL
end
local item = Game.createItem(magicWall, 1, tile)
item:setDuration(20)
end

local combat = Combat()
combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onCreateMagicWall")
combat:setArea(createCombatArea(AREA_Terra))

local spell = Spell("rune")
function spell.onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end
Hola

El fuego, el energy o el poison, tienen una ID, ejemplo el fuego: 1487, el poison 1490 y el energy 1491 ( bueno tienen varias ).
Lo mejor para comprobar es que tires un fuego, un energy y un poison en el suelo para ver la id.

En la tabla pon las ID de esos 3 (fuego, poison y energy):

JavaScript:
function onCreateMagicWall(creature, tile)
    local FIRE_FIELD_ID = 1492 
    local POISON_FIELD_ID = 1496
    local ENERGY_FIELD_ID = 1495

    if tile:getItemById(FIRE_FIELD_ID) or tile:getItemById(POISON_FIELD_ID) or tile:getItemById(ENERGY_FIELD_ID) then
        return
    end

    local magicWall
    if Game.getWorldType() == WORLD_TYPE_NO_PVP then
        magicWall = ITEM_MAGICWALL_SAFE
    else
        magicWall = ITEM_MAGICWALL
    end
    
    local item = Game.createItem(magicWall, 1, tile)
    item:setDuration(20)
end

En este caso, si en la tile tiene esa ID entonces, no creara el magic wall.
 
no me funciono :( ... tambien por ejemplo si ponen una wall en una escalera al bajar o subir un player por la escalera se queda encima de la wall en lugar de que esta desaparezca, habra un metodo de que si alguien baja encima de una wall esta se desaparezca?
muchas gracias por tu apoyo.
 
no me funciono :( ... tambien por ejemplo si ponen una wall en una escalera al bajar o subir un player por la escalera se queda encima de la wall en lugar de que esta desaparezca, habra un metodo de que si alguien baja encima de una wall esta se desaparezca?
muchas gracias por tu apoyo.
Perdon si me funciono jajaja muchas gracias! me estaba equivocando de magic wall
 
Perdon si me funciono jajaja muchas gracias! me estaba equivocando de magic wall
Me tocó adivinar el tfs que utilizabas , siempre y cuando indicarlo ejemplo fuera otx quizás hubiera sido distinto.

Mm si baja un player de la escalera , la magic wall debería de quedar , pero el player estaría encima , lo que es normal , pienso , a menos que bloquee el hecho que el player no pueda bajar , pero esto no creo que sea possible o bien difícilmente de tipo si baja , y hay una tile disponible al lado mover el player ahí, pero no veo cómo podría ser.
 
ah okey, esque cree una wall rune que rodea al tarjet con 8 mws alrededor lo encierra... pero lo que pasa esque al tirarla por ejemplo si la tiro a un lado de mi se pone encima de mi una wall como en la imagen... me gustaria que no aparezca la wall donde hay players, monsters o npcs pero si en los demas sqms para poder matar a el enemigo encerrado ya que cuando estas encima de una wall no puedes tirar spells ni runas on yourself :(... estoy haciendo un ot custom, gracias bro.
1722274166272.png
 
ah okey, esque cree una wall rune que rodea al tarjet con 8 mws alrededor lo encierra... pero lo que pasa esque al tirarla por ejemplo si la tiro a un lado de mi se pone encima de mi una wall como en la imagen... me gustaria que no aparezca la wall donde hay players, monsters o npcs pero si en los demas sqms para poder matar a el enemigo encerrado ya que cuando estas encima de una wall no puedes tirar spells ni runas on yourself :(... estoy haciendo un ot custom, gracias bro.
View attachment 4984

Entonces bastara agregar:
JavaScript:
if tile:getTopCreature() then
   return
end

justo despues de:
JavaScript:
if tile:getItemById(FIRE_FIELD_ID) or tile:getItemById(POISON_FIELD_ID) or tile:getItemById(ENERGY_FIELD_ID) then
   return
end

Marca el tema como solución si este ultimo resuelve tu duda.
 
Gracias, el ot es 13.21... no me soluciono el problema pero creo que es por la manera en que tengo mi codigo pero me sirvio mucho tu codigo porque creo que ya se como solucionarlo, lo intentare. Muchas gracias.
 
Gracias, el ot es 13.21... no me soluciono el problema pero creo que es por la manera en que tengo mi codigo pero me sirvio mucho tu codigo porque creo que ya se como solucionarlo, lo intentare. Muchas gracias.
Canary utiliza getTopCreatures,

Puedes también probar:

JavaScript:
local tile = Tile(Position(_x, _y, _z))
if tile and tile:getTopCreature() and tile:getTopCreature():isMonster() and tile:getTopCreature():isPlayer() then
return
end

o simplemente:

JavaScript:
if tile:getTopCreature() and tile:getTopCreature():isMonster() and tile:getTopCreature():isPlayer() then
return
end

o

JavaScript:
if tile:getTopCreature():isMonster() or tile:getTopCreature():isPlayer() then
return
end
 
gracias, hay unos fields que tienen la propiedad que es replaceable osea que al tirar una wall encima o a un lado de ese field la magic wall no sale porque no puede reemplazar el field, con esa propiedad "replaceable" si se le pudiera poner a todos los monsters y players en general de alguna forma estaria genial, me solucionaria este problema.
Estos codigos que me estas pasando me estan funcionando pero solo si tiro la rune encima del monster o en tarjet pero si la tiro a un lado del monster aun sale la wall, el unico metodo que se me ocurre mas sencillo es el que te comento de la propiedad "replaceable"1722351242822.png
 
gracias, hay unos fields que tienen la propiedad que es replaceable osea que al tirar una wall encima o a un lado de ese field la magic wall no sale porque no puede reemplazar el field, con esa propiedad "replaceable" si se le pudiera poner a todos los monsters y players en general de alguna forma estaria genial, me solucionaria este problema.
Estos codigos que me estas pasando me estan funcionando pero solo si tiro la rune encima del monster o en tarjet pero si la tiro a un lado del monster aun sale la wall, el unico metodo que se me ocurre mas sencillo es el que te comento de la propiedad "replaceable"View attachment 4985

Pero la propiedad lee, que si en una tile hay una criatura o un player, no cree el wall, asi es como dijiste, entonces en donde lo tires, si en una tile hay un monstruo o un player, no creara el wall.
Por lo cual como tu hiciste tu codigo, creara las walls en donde dijiste, pero si hay un monstruo o player no lo hara sea donde sea.
 
Solution

Tibia Server Lists

#1 FEATURED US Ultron OT 1,619 / 5,000Online EXPStages PROTO8.6 ENGINEUltron OT RANK PTS5.9 +100% VOTES0 #2 FEATURED US Nefera 158 / 0Online EXPx1 PROTO15.20 ENGINECrystal Server RANK PTS5.1 +100% VOTES0 #3 FEATURED ES Deixis 0 / 0Offline EXPStages PROTO1098 ENGINETFS RANK PTS3.7 +100% VOTES1 #4 FEATURED ES Maeli 8 / 150Online EXPx10 PROTO10.98 ENGINETFS 1.4.2 RANK PTS3.7 +100% VOTES0 #5 MX Marlboro War 43 / 300Online EXP999 PROTO8.6 ENGINETFS 0.3.7 RANK PTS5.5 -33% VOTES0 #6 BR Tibinha YurOts 18 / 150Online EXPStages PROTO7.4 ENGINEYurOTS 1.5 RANK PTS5.2 -14% VOTES0 #7 US Halera 2 / 0Online EXPStages PROTO10.98 ENGINETFS 1.4.2 RANK PTS4.9 -83% VOTES0 #8 BR Exordion Legacy 54 / 2,000Online EXPx2 PROTO7.72 ENGINEExordion RANK PTS4.9 +100% VOTES0 #9 PL Lubelski 3 / 1,000Online EXP200 PROTO7.6 ENGINELubelskiOTS 2.56.0 RANK PTS4.6 -15% VOTES0 #10 DE DBU Online 0 / 400Online EXP11 PROTO8.6 ENGINETFS 1.0 RANK PTS4.3 +100% VOTES0 #11 PL ReWar 0 / 2,000Online EXPcustom PROTO8.6 ENGINEOther RANK PTS4.3 0% VOTES0 #12 PL Velesta 0 / 1,000Offline EXP20 PROTO8.0 ENGINETFS 1.4.2 RANK PTS4.3 -98% VOTES0 #13 ES JustRL FreeTC 1530 11 / 250Online EXPx2 PROTO15.30 ENGINECrystal Server RANK PTS4.3 +100% VOTES0 #14 ES Farlia Global 2026 0 / 333Offline EXPx5 PROTO15.25 ENGINEFarliaServ 1.525 RANK PTS3.9 -22% VOTES0 #15 SE MortalisOT Custom 0 / 500Offline EXP100x -1.2x PROTO10.98 ENGINEMortalisOT V1 RANK PTS3.8 +100% VOTES0 #16 US Rommania 0 / 500Online EXPstages, x10 PROTO7.4 ENGINETFS 0.4 RANK PTS3.6 +100% VOTES0 #17 US BerethaOnline 2 / 2,000Online EXPStages PROTO10.98 ENGINETFS RANK PTS3.5 +100% VOTES0
Top