BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Al pisar tile

Al pisar tile

#1 Al pisar tile el Lun Nov 10, 2014 4:53 pm

enrikito15


Miembro
Hola pues quisiera un script que al pisar 1 cuadro(tile) que se quite un item que este en alguna parte, como una piedra que este estorbando en un camino y al pisar ese tile que se quite la piedra y que dure 30 seg para volverse a poner.
Ayudita porfavor xd

#2 Re: Al pisar tile el Lun Nov 10, 2014 7:49 pm

Belerofonte


Administrador
Data/Movements/... Movements.xml:
<movevent type="StepIn" uniqueid="5947" event="script" value="tile_roca.lua"/>
Ése o el uniqueid que gustes es el que le has de poner al sqm que se deba pisar, en el RME.

Data/Movements/Scripts/... tile_roca.lua:
Código:
 local c = {
    delay = 30, -- Segundos que transcurrirán antes de volver a aparecer.
    rockID = 1304, -- ID de la roca.
    rockPos = {x = 990, y = 998, z = 7}, -- Coordenada del lugar donde se hallará la roca.
    quitEffect = {CONST_ME_HITAREA, CONST_ME_POFF}, -- Efecto o Efectos Mágicos que aparecerán al removerse.
    creaEffect = {CONST_ME_GROUNDSHAKER, CONST_ME_STONES}, -- Efecto o Efectos Mágicos que aparecerán al resurgir.
  }
    local function relocate()
        doCreateItem(c.rockID, 1, c.rockPos)
        for i = 1, #c.quitEffect do
            doSendMagicEffect (c.rockPos, c.creaEffect[i])
        end
    end

function onStepIn(cid, item, position)
  local Rock = getTileItemById(c.rockPos, c.rockID).uid
    if Rock > 0 then
        doRemoveItem(Rock)
        for i = 1, #c.quitEffect do
            doSendMagicEffect (c.rockPos, c.quitEffect[i])
        end
        addEvent(relocate, c.delay * 1000)
    end
  return true
end

Instrucción:
 local c = {
   delay = 30, -- Segundos que transcurrirán antes de volver a aparecer.
   rockID = 1304, -- ID de la roca.
   rockPos = {x = 990, y = 998, z = 7}, -- Coordenada del lugar donde se hallará la roca.
   quitEffect = {CONST_ME_HITAREA, CONST_ME_POFF}, -- Efecto o Efectos Mágicos que aparecerán al removerse.
   creaEffect = {CONST_ME_GROUNDSHAKER, CONST_ME_STONES}, -- Efecto o Efectos Mágicos que aparecerán al resurgir.
 }



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#3 Re: Al pisar tile el Mar Nov 11, 2014 5:16 pm

enrikito15


Miembro
y si quisiera para que se quite la piedra pero que pisen 2 tiles?

#4 Re: Al pisar tile el Miér Nov 12, 2014 12:38 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:y si quisiera para que se quite la piedra pero que pisen 2 tiles?

Data/Movement/... Movements.xml:
<movevent type="StepIn" uniqueid="5945;5946" event="script" value="tile_roca.lua"/>
Esos uniqueid o los que quieras poner, han de ir cada uno en un tile.

Data/Movements/Scripts/... tile_roca.lua:
Código:
 local c = {
    delay = 30, -- Segundos que transcurrirán antes de volver a aparecer.
    rockID = 1304, -- ID de la roca.
    playerPos = {5945, 5946}, -- Mismos UniqueID de ambos tiles que le hayas puesto a la línea del Movements.xml
    rockPos = {x = 990, y = 998, z = 7}, -- Coordenada del lugar donde se hallará la roca.
    quitEffect = {CONST_ME_HITAREA, CONST_ME_POFF}, -- Efecto o Efectos Mágicos que aparecerán al removerse.
    creaEffect = {CONST_ME_GROUNDSHAKER, CONST_ME_STONES}, -- Efecto o Efectos Mágicos que aparecerán al resurgir.
  }
    local function relocate()
        doCreateItem(c.rockID, 1, c.rockPos)
        for i = 1, #c.quitEffect do
            doSendMagicEffect (c.rockPos, c.creaEffect[i])
        end
    end

function onStepIn(cid, item, position, fromPos, toPos)
  local Rock = getTileItemById(c.rockPos, c.rockID).uid
  local p = {
    player1 = getTopCreature(getThingPos(c.playerPos[1])).uid,
    player2 = getTopCreature(getThingPos(c.playerPos[2])).uid,
  }
    if Rock > 0 then
        if isPlayer(cid) then
            if (item.uid == c.playerPos[1] and p.player2 > 0) or (item.uid == c.playerPos[2] and p.player1 > 0) then
                doRemoveItem(Rock)
                for i = 1, #c.quitEffect do
                    doSendMagicEffect (c.rockPos, c.quitEffect[i])
                end
                addEvent(relocate, c.delay * 1000)
            end
        end
    end
  return true
end

Instrucción:
local c = {
delay = 5, -- Segundos que transcurrirán antes de volver a aparecer.
rockID = 1304, -- ID de la roca.
playerPos = {5945, 5946}, -- Mismos UniqueID de ambos tiles que le hayas puesto a la línea del Movements.xml
rockPos = {x = 990, y = 998, z = 7}, -- Coordenada del lugar donde se hallará la roca.
quitEffect = {CONST_ME_HITAREA, CONST_ME_POFF}, -- Efecto o Efectos Mágicos que aparecerán al removerse.
creaEffect = {CONST_ME_GROUNDSHAKER, CONST_ME_STONES}, -- Efecto o Efectos Mágicos que aparecerán al resurgir.
}



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#5 Re: Al pisar tile el Miér Nov 12, 2014 5:47 pm

enrikito15


Miembro
me sale esto:
Código:
[Error - MoveEvents Interface]
[11/11/2014 19:58:27] data/movements/scripts/pisoxd.lua:onStepIn
[11/11/2014 19:58:27] Description:
[11/11/2014 19:58:27] (LuaInterface::luaGetThingPosition) Thing not found

#6 Re: Al pisar tile el Miér Nov 12, 2014 9:22 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:me sale esto:
Código:
[Error - MoveEvents Interface]
[11/11/2014 19:58:27] data/movements/scripts/pisoxd.lua:onStepIn
[11/11/2014 19:58:27] Description:
[11/11/2014 19:58:27] (LuaInterface::luaGetThingPosition) Thing not found

Ambos uniqueid de la línea número 4 del Script.lua:
   playerPos = {5945, 5946}, -- Mismos UniqueID de ambos tiles que le hayas puesto a la línea del Movements.xml Kidding me?

¿Son los mismos que hayas puesto en la línea del Movements.xml?
<movevent type="StepIn" uniqueid="5945;5946" event="script" value="tile_roca.lua"/>



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#7 Re: Al pisar tile el Miér Nov 12, 2014 10:18 pm

enrikito15


Miembro
jaja sip orita te envio el script

#8 Re: Al pisar tile el Miér Nov 12, 2014 10:49 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:mira asi lo tengo
Código:

local c = {
    delay = 30, -- Segundos que transcurrirán antes de volver a aparecer.
    rockID = 388, -- ID de la roca.
    playerPos = {5945, 5946, 5947, 5948}, -- Mismos UniqueID de ambos tiles que le hayas puesto a la línea del Movements.xml
    rockPos = {x = 822, y = 1000, z = 7}, -- Coordenada del lugar donde se hallará la roca.
    quitEffect = {CONST_ME_HITAREA, CONST_ME_POFF}, -- Efecto o Efectos Mágicos que aparecerán al removerse.
    creaEffect = {CONST_ME_GROUNDSHAKER, CONST_ME_STONES}, -- Efecto o Efectos Mágicos que aparecerán al resurgir.
  }
    local function relocate()
        doCreateItem(c.rockID, 1, c.rockPos)
        for i = 1, #c.quitEffect do
            doSendMagicEffect (c.rockPos, c.creaEffect[i])
        end
    end

function onStepIn(cid, item, position, fromPos, toPos)
  local Rock = getTileItemById(c.rockPos, c.rockID).uid
  local p = {
    player1 = getTopCreature(getThingPos(c.playerPos[1])).uid,
    player2 = getTopCreature(getThingPos(c.playerPos[2])).uid,
 player3 = getTopCreature(getThingPos(c.playerPos[3])).uid,
    player4 = getTopCreature(getThingPos(c.playerPos[4])).uid,
  }
    if Rock > 0 then
        if isPlayer(cid) then
            if (item.uid == c.playerPos[1] and p.player2 and p.player3 and p.player4 > 0) or (item.uid == c.playerPos[4] and c.playerPos[3] and c.playerPos[2] and p.player1 > 0) then
                doRemoveItem(Rock)
                for i = 1, #c.quitEffect do
                    doSendMagicEffect (c.rockPos, c.quitEffect[i])
                end
                addEvent(relocate, c.delay * 1000)
            end
        end
    end
  return true
end

Donde te digo que le falta es en la linea 27 ahi es donde creo que me salio mal

Para 4 tiles x 4 jugadores:

Movements.xml:
Código:
<movevent type="StepIn" uniqueid="5945;5946;5947;5948" event="script" value="tile_roca.lua"/>

tile_roca.lua:
Código:
local c = {
    delay = 30, -- Segundos que transcurrirán antes de volver a aparecer.
    rockID = 388, -- ID de la roca.
    playerPos = {5945, 5946, 5947, 5948}, -- Mismos UniqueID de ambos tiles que le hayas puesto a la línea del Movements.xml
    rockPos = {x = 822, y = 1000, z = 7}, -- Coordenada del lugar donde se hallará la roca.
    quitEffect = {CONST_ME_HITAREA, CONST_ME_POFF}, -- Efecto o Efectos Mágicos que aparecerán al removerse.
    creaEffect = {CONST_ME_GROUNDSHAKER, CONST_ME_STONES}, -- Efecto o Efectos Mágicos que aparecerán al resurgir.
  }
    local function relocate()
        doCreateItem(c.rockID, 1, c.rockPos)
        for i = 1, #c.creaEffect do
            doSendMagicEffect (c.rockPos, c.creaEffect[i])
        end
    end

function onStepIn(cid, item, position, fromPos, toPos)
  local Rock = getTileItemById(c.rockPos, c.rockID).uid
  local p = {
    player1 = getTopCreature(getThingPos(c.playerPos[1])).uid,
    player2 = getTopCreature(getThingPos(c.playerPos[2])).uid,
    player3 = getTopCreature(getThingPos(c.playerPos[3])).uid,
    player4 = getTopCreature(getThingPos(c.playerPos[4])).uid,
  }
    if Rock > 0 then
        if isPlayer(cid) then
            if (item.uid == c.playerPos[1] and p.player2 > 0 and p.player3 > 0 and p.player4 > 0) or (item.uid == c.playerPos[2] and p.player1 > 0 and p.player3 > 0 and p.player4 > 0) or (item.uid == c.playerPos[3] and p.player1 > 0 and p.player2 > 0 and p.player4 > 0) or (item.uid == c.playerPos[4] and p.player1 > 0 and p.player2 > 0 and p.player3 > 0) then
                doRemoveItem(Rock)
                for i = 1, #c.quitEffect do
                    doSendMagicEffect (c.rockPos, c.quitEffect[i])
                end
                addEvent(relocate, c.delay * 1000)
            end
        end
    end
  return true
end



Última edición por Belerofonte el Jue Nov 13, 2014 8:35 am, editado 2 veces



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#9 Re: Al pisar tile Hoy a las 3:50 am

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .