Bienvenido a Open Games Community

Únete ahora para acceder a todas nuestras funciones. Una vez que te registres e inicies sesión, podrás crear temas, responder a hilos existentes, valorar la reputación de otros miembros y muchísimo más. Además, es rápido y totalmente gratuito; ¿a qué esperas?

NO Wall encima de fuego

El Bu

Miembro
Registrado
16 Sep 2023
Mensajes
42
Puntuación de reacción
5
Puntos
151
Ubicación
Mexico
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
 
Solución
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"Ver archivo adjunto 4985

Pero la propiedad lee, que si en una tile hay una criatura o un player, no cree el wall, asi es como dijiste...

Alex

Administrador
Dev
Registrado
1 Sep 2021
Mensajes
2.362
Puntuación de reacción
28.397
Puntos
707
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):

Código Lua:
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.
 

El Bu

Miembro
Registrado
16 Sep 2023
Mensajes
42
Puntuación de reacción
5
Puntos
151
Ubicación
Mexico
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.
 

El Bu

Miembro
Registrado
16 Sep 2023
Mensajes
42
Puntuación de reacción
5
Puntos
151
Ubicación
Mexico
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
 

Alex

Administrador
Dev
Registrado
1 Sep 2021
Mensajes
2.362
Puntuación de reacción
28.397
Puntos
707
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.
 

El Bu

Miembro
Registrado
16 Sep 2023
Mensajes
42
Puntuación de reacción
5
Puntos
151
Ubicación
Mexico
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
 

Alex

Administrador
Dev
Registrado
1 Sep 2021
Mensajes
2.362
Puntuación de reacción
28.397
Puntos
707
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.
Ver archivo adjunto 4984

Entonces bastara agregar:
Código Lua:
if tile:getTopCreature() then
   return
end

justo despues de:
Código Lua:
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.
 

El Bu

Miembro
Registrado
16 Sep 2023
Mensajes
42
Puntuación de reacción
5
Puntos
151
Ubicación
Mexico
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.
 

Alex

Administrador
Dev
Registrado
1 Sep 2021
Mensajes
2.362
Puntuación de reacción
28.397
Puntos
707
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:

Código Lua:
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:

Código Lua:
if tile:getTopCreature() and tile:getTopCreature():isMonster() and tile:getTopCreature():isPlayer() then
return
end

o

Código Lua:
if tile:getTopCreature():isMonster() or tile:getTopCreature():isPlayer() then
return
end
 

El Bu

Miembro
Registrado
16 Sep 2023
Mensajes
42
Puntuación de reacción
5
Puntos
151
Ubicación
Mexico
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
 

Alex

Administrador
Dev
Registrado
1 Sep 2021
Mensajes
2.362
Puntuación de reacción
28.397
Puntos
707
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"Ver archivo adjunto 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.
 
shape1
shape2
shape3
shape4
shape5
shape6
Arriba