• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Moveevents] problema con piso

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1Cảnh báo [Moveevents] problema con piso Mar Mayo 02, 2023 11:30 pm

    akane

    akane
    Miembro
    Miembro
    Descripcion escribió:hola a todos si alguien me puede ayudar con mi script de movement que hice.

    resulta que al matar a x monster crea un tile que al pisarlo abre una puerta por x cantidad de tiempo.

    Todo esto se está haciendo por medio de storages y lo que necesito es que al pasar el tiempo y que se cierre la puerta despues del tiempo sugerido, si el jugador no alcanzó a pasar la puerta, tenga que volver a matar al monster para que se cree nuevamente el piso y hacer todo lo que corresponda nuevamente.

    Código:
    local pos = {x=400, y=1550, z=9}
    local positem = {x=400, y=1780, z=9}
    local positem2 = {x=401, y=1780, z=9}
    local positem3 = {x=402, y=1780 , z=9}
    local postile = {x=400, y=1601, z=9}
    local wall1 = 9486
    local seconds = 30
    local event = 0
    local tile = 416

    local function reset(tilePos)
            local tile = getTileItemById(tilePos, 416).uid
     doTransformItem(tile, 777)
     doRemoveItem(getTileItemById(postile,tile).uid)
     doCreateItem(wall1, 1, positem)
     doCreateItem(wall1, 1, positem2)
     doCreateItem(wall1, 1, positem3)
     doPlayerSendTextMessage(cid,22,"Time Out, the tile dissapears an the gates are closed!.")
    end

    function onStepIn(cid, item, position, fromPosition)
            
     if getPlayerStorageValue(cid, 20024) >= 1 then
            return true
        end
     
        if getPlayerStorageValue(cid, 20008) >= 1 and getPlayerStorageValue(cid, 20011) >= 1 and getPlayerStorageValue(cid, 20014) >= 1 and getPlayerStorageValue(cid, 20017) >= 1 and getPlayerStorageValue(cid, 20020) >= 1 and getPlayerStorageValue(cid, 20023) >= 1 then
       doRemoveItem(getTileItemById(positem,wall1).uid)
       doRemoveItem(getTileItemById(positem2,wall1).uid)
       doRemoveItem(getTileItemById(positem3,wall1).uid)
       setPlayerStorageValue(cid, 20024, 1)
       doPlayerSendTextMessage(cid,21,"The gates has been opened, you have 3 minutes to reach the final room!")
       event = addEvent(reset, seconds * 1000, getThingPos(item.uid))
     else
       doTeleportThing(cid,pos)
       doPlayerSendTextMessage(cid,21,"You need to open all sarcophagus if you want continue.")
     end
        
        return true
    end

    este es mi script, estoy usando tfs 0.4
    Captura del Error escribió:Imagen del error: [Moveevents] problema con piso Empty
    El error radica en: MoveEvents



    :?:BUMP MI POST Question

    2 participantes

    2Cảnh báo Re: [Moveevents] problema con piso Dom Mayo 14, 2023 3:03 pm

    zerochile

    zerochile
    Miembro
    Miembro
    Capaz ya lo hayas resuelto, debido al tiempo prolongado que no haya habido una respuesta a tu publicación. Pero bueno, de todas maneras hice el script.

    En el caso que "doorOpenID" sea distinto a 0 (si es que usas una puerta de abrir y cerrar), tendrás que colocarle un "actionid" a la puerta y crear un nuevo script action que funcione de acuerdo a ese actionid para bloquear el uso de la puerta (así no podrá cerrarla cuando este abierta la puerta).

    INTEGRANDOLO

    1) En data/actions/actions.xml
    Código:
    <action actionid="XXXX" event="script" value="NAME.lua"/>

    2) En data/actions/scripts/etc...
    Código:
    local configZERO = {
    doorClosedID = 9486, -- ID de la puerta cerrada.
    doorOpenID = 0, -- ID de la puerta abierta (si doorOpenID = 0 entonces la puerta se elimina y se crea despues de el tiempo indicado).
    tileID = {419, 416}, -- El 1° (419) es el piso normal el cual no tiene accion ni evento, el N°2 (416) es el piso que tiene accion o evento.
    tilePos = {x = 1018, y = 1024, z = 7},
    tiempo = 3, -- Tiempo en minutos para cerrar la puerta.
    teleportTo = {x = 1018, y = 1023, z = 7}, -- Posicion a donde te teletranporta el Tile (supongo que seria teletransportarlo a fromPosition, pero como tu lo tenias con posicion lo dejo con posicion)
    doorPosiciones = {
       {x = 1018, y = 1021, z = 7}, -- Posicion del item bloqueando N°1
       {x = 1019, y = 1021, z = 7}, -- Posicion del item bloqueando N°2
       {x = 1020, y = 1021, z = 7} -- Posicion del item bloqueando N°3
    },
    storages = {20008, 20011, 20014, 20017, 20020, 20023}, -- Aqui incluye los storages que quieras que se verifiquen para que el jugador pueda continuar
    }
       
    local closeMessage = false
    local tiempoFinal = configZERO.tiempo * 60 * 1000
    local function transformarDevolver(playerName)
       for i, doorPos in ipairs(configZERO.doorPosiciones) do
          if configZERO.doorOpenID ~= 0 then
             local door = getTileItemById(doorPos, configZERO.doorClosedID).uid
             if door ~= 0 then
                doTransformItem(door, configZERO.doorOpenID)
                addEvent(function()
                   local newDoor = getTileItemById(doorPos, configZERO.doorOpenID).uid
                   if newDoor ~= 0 then
                      doTransformItem(newDoor, configZERO.doorClosedID)
                   end
                   closeMessage = true
                end, tiempoFinal)
             else
                return false
             end
          else
             local door = getTileItemById(doorPos, configZERO.doorClosedID).uid
             if door ~= 0 then
                doSendMagicEffect(doorPos, CONST_ME_BLOCKHIT)
                doRemoveItem(door)
                addEvent(function()
                   doCreateItem(configZERO.doorClosedID, 1, doorPos)
                   doSendMagicEffect(doorPos, CONST_ME_TELEPORT)
                end, tiempoFinal)
                closeMessage = true
             else
                return false
             end
          end
       end
       
       addEvent(function()
          local tile = getTileItemById(configZERO.tilePos, configZERO.tileID[2]).uid
          if tile ~= 0 then
             doRemoveItem(tile)
             doCreateItem(configZERO.tileID[1], 1, configZERO.tilePos)
          end
          local cid = getPlayerByName(playerName)
          if closeMessage and cid then
             doPlayerSendTextMessage(cid, 22, "Time Out, the tile dissapears and the gates are closed!")
          end
          closeMessage = false
       end, tiempoFinal)
       
       return true
    end

    function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
       if(not isPlayer(cid)) then
          return true
       end

       local playerTieneLosStorages = false
       
       for i, storages in ipairs(configZERO.storages) do
          if getPlayerStorageValue(cid, storages) < 1 then
             doPlayerSendTextMessage(cid, 21, "You need to open all sarcophagus if you want continue.")
             doTeleportThing(cid, configZERO.teleportTo)
             playerTieneLosStorages = false
             break
          else
             playerTieneLosStorages = true
          end
       end
       
       if playerTieneLosStorages then
          if transformarDevolver(getPlayerName(cid)) then
             doPlayerSendTextMessage(cid, 21, "The gates has been opened, you have ".. configZERO.tiempo .." minutes to reach the final room!")
          end
       end
       return true
    end

    > MOSTRANDO FUNCIONAMIENTO <
    [Moveevents] problema con piso Giphy

    2 participantes
    http://venore-war.sytes.net

    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.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).