BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

(Resuelto) [Pedido-Actions] Scripts para una quest.

(Resuelto) [Pedido-Actions] Scripts para una quest.

Ozuna


Miembro
al darle clik en el ataul que tiene una flor te tele transporte a la entrada de la quest.

Spoiler:
[Tienes que estar registrado y conectado para ver esa imagen]


luego se ocuparan dos personas para que al darle clik los tele transporte dentro de la quest y se crearan moustros.

Spoiler:
[Tienes que estar registrado y conectado para ver esa imagen]

y por ultimo al eliminar los moustros la palanca los tele transporten hacia el cofre.

Spoiler:
[Tienes que estar registrado y conectado para ver esa imagen]

#2 By Guasapen el Mar Abr 12, 2016 6:27 pm

guasapen


Miembro
Quieres Esa Script O A Que Te Refieres????

Ozuna


Miembro
sip la quiero, por algo la puse en pedidos de scripts D; jajajajajaja

guasapen


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] escribió:sip la quiero, por algo la puse en pedidos de scripts D; jajajajajaja


manda imbox o por el chat

Belerofonte


Administrador
- En la parte en la que los jugadores son llevados al área de combate junto con la creación de monstruos... ¿He de suponer que dichas coordenadas serán éstas?
Spoiler:
[Tienes que estar registrado y conectado para ver esa imagen]
¿un jugador en cada cuadro amarillo, no?

- ¿No vas a volver a cambiar de posición ninguna de las palancas, ni las ventanas, ni modificar más el área de combate por cualquier motivo, no?.



Lo pregunto para poner coordenadas prefijadas y así no tengas que editarlas dentro del script o no.

Y cuando ya estén los 2 jugadores dentro peleando, ¿podrán entrar otros 2 jugadores distintos?



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]

Ozuna


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] escribió:- En la parte en la que los jugadores son llevados al área de combate junto con la creación de monstruos... ¿He de suponer que dichas coordenadas serán éstas?
Spoiler:
[Tienes que estar registrado y conectado para ver esa imagen]
¿un jugador en cada cuadro amarillo, no?

- ¿No vas a volver a cambiar de posición ninguna de las palancas, ni las ventanas, ni modificar más el área de combate por cualquier motivo, no?.



Lo pregunto para poner coordenadas prefijadas y así no tengas que editarlas dentro del script o no.

Y cuando ya estén los 2 jugadores dentro peleando, ¿podrán entrar otros 2 jugadores distintos?

ponle que al estar 2 adentro no se puedan volver a meter a menos que terminen o se hayan muerto los putitos y si ponle que le pueda editar las coordenadas de los monos y moustros D;

Belerofonte


Administrador
Ok pues. Yo creo que esto ya está.

Como acordamos en el chat, me tomé la libertad de hacer más vistosa la entrada por el ataúd.
Por lo que, en el remeres tendrás que sustituir el sarcófago de piedra con la flor por el ataúd de madera, compuesto por los Ids: 1742 & 1743. Y en el piso inferior cualquier escalera a tu gusto, por ejemplo la Id: 7924.
Es decir:
[Tienes que estar registrado y conectado para ver esa imagen]
[Tienes que estar registrado y conectado para ver esa imagen]

Servidor/Data/Actions/... Actions.xml
Código:
<action uniqueid="7666; 7667; 7668" event="script" value="questOzunaa.lua"/>
- Un uniqueID para el ataúd de entrada. Para la "cabeza" del ataúd.
- Otro uniqueID para la palanca cerca de las 2 placas de presión de madera.
- Otro uniqueID para la palanca de salida en la sala donde aparecerán los monstruos.

Servidor/Data/Actions/Scripts/... questOzunaa.lua
Código:
 local config = {
    RoomFightArea = {
      Left = {x = 796, y = 1026, z = 7}, -- {COORDENADA} de la esquina SUPERIOR izquierda de la Sala donde aparecerán los monstruos.
      Right = {x = 805, y = 1032, z = 7}, -- {COORDENADA} de la esquina INFERIOR derecha de la Sala donde aparecerán los monstruos.
    },

    [7666] = { -- UniqueId del ataúd.
      Coffin = { -- Configuraciones acerca del ataúd.
        Storage = 408725, -- Storage KEY que gustes.
        ToClose = 5, -- SEGUNDOS que permanecerá el ataúd abierto.
        CoffinA = {1742, 7525}, -- Id de la parte SUPERIOR del ataúd... {...CERRADO, ...ABIERTO},
        CoffinB = {1743, 7521}, -- Id de la parte INFERIOR del ataúd... {...CERRADO, ...ABIERTO},
      },
    },

    [7667] = { -- UniqueId de la palanca de entrada.
      Enter = { -- Configuraciones acerca de la Sala donde aparecerán los monstruos.
        LeverId = {1945, 1946}, -- Id de la palanca puesta mirando... {hacia la IZQUIERDA, hacia la DERECHA},

        MsgNeeded = "Se requiere una persona en cada placa de presion.", -- "MENSAJE" que saldrá si se intenta accionar aun faltando ambos jugadores en sus correspondientes lugares.
        MsgOccupied = "Sala contigua ocupada. Por favor, espere a que terminen.", -- "MENSAJE" que saldrá si se intenta accionar aun habiendo otros jugadores en la siguiente sala.

        NorthCid = {x = 804, y = 1021, z = 7}, -- {COORDENADA} de la placa de presión SUPERIOR.
        SouthCid = {x = 804, y = 1024, z = 7}, -- {COORDENADA} de la placa de presión INFERIOR.

        NorthTo = {x = 800, y = 1026, z = 7}, -- {COORDENADA} del lugar hacia donde irá el jugador de la placa de presion SUPERIOR.
        SouthTo = {x = 801, y = 1026, z = 7}, -- {COORDENADA} del lugar hacia donde irá el jugador de la placa de presion INFERIOR.

        Monsters = { -- Para más monstruos, duplica las siguientes líneas y edita sus dos parámetros.
        --{name = "Nombre del monstruo", spawn = {COORDENADA donde aparecerá}},
          {name = "Cat", spawn = {x = 800, y = 1029, z = 7}},
          {name = "Dog", spawn = {x = 797, y = 1031, z = 7}},
        },
      },
    },

    [7668] = { -- UniqueId de la palanca de salida.
      Exit = { -- Configuraciones acerca de la palanca de salida.
        LeverId = {1945, 1946}, -- Id de la palanca puesta mirando... {hacia la IZQUIERDA, hacia la DERECHA},
        MsgCancel = "Vamos, no seas cobarde. Aun quedan monstruos ;D", -- "MENSAJE" que saldrá si se intenta accionar aun habiendo monstruos en la zona.
        Place = {x = 800, y = 1021, z = 6}, -- {COORDENADA} de la sala del cofre.
      },
    },

  }

local function isntMonstersInArea(cid, fromPos, toPos)

    for xx = fromPos.x, toPos.x, 1 do
        for yy = fromPos.y, toPos.y, 1 do

          local creatures = getTopCreature({x = xx, y = yy, z = fromPos.z}).uid
            if isMonster(creatures) then

              local master = getCreatureMaster(creatures)
                if not master or master == creatures then
                  return
                end

            end
        end
    end

  return true
end

local function isntPlayersInArea(cid, fromPos, toPos)

    for xx = fromPos.x, toPos.x, 1 do
        for yy = fromPos.y, toPos.y, 1 do

          local creatures = getTopCreature({x = xx, y = yy, z = fromPos.z}).uid
            if isPlayer(creatures) then
              return
            end

        end
    end

  return true
end

local function doFlyingBats(Tomb, flyTimes, newPos, CoffinAPos, CoffinBPos)

  local coffinHeadOpen = getTileItemById(CoffinAPos, Tomb.CoffinA[2])
  local coffinFeetOpen = getTileItemById(CoffinBPos, Tomb.CoffinB[2])

    if flyTimes < 2 then
        newPos = {x = newPos.x + flyTimes, y = newPos.y + flyTimes, z = newPos.z}

     elseif flyTimes < 3 then
        newPos = {x = newPos.x + flyTimes - 1, y = newPos.y, z = newPos.z}

     elseif flyTimes > 2 and flyTimes < 8 then
        newPos = {x = newPos.x, y = newPos.y + flyTimes - 2, z = newPos.z}

     elseif flyTimes >= Tomb.ToClose then
        doTransformItem(coffinHeadOpen.uid, Tomb.CoffinA[1])
        doTransformItem(coffinFeetOpen.uid, Tomb.CoffinB[1])
        doSendMagicEffect(CoffinAPos, CONST_ME_BLOCKHIT)
        doSendMagicEffect(CoffinBPos, CONST_ME_BLOCKHIT)

      return
    end

    doSendMagicEffect(newPos, CONST_ME_BATS)
    flyTimes = flyTimes + 1
  return addEvent(doFlyingBats, 1000, Tomb, flyTimes, newPos, CoffinAPos, CoffinBPos)
end


function onUse(cid, item, fromPosition, itemEx, toPosition)
  local v = config[item.uid]

    if v.Coffin then
      local CoffinAPos = toPosition
      local CoffinBPos = {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z}
      local coffinFeetClose = getTileItemById(CoffinBPos, v.Coffin.CoffinB[1])

        if os.time(t) > getGlobalStorageValue(v.Coffin.Storage) then
            setGlobalStorageValue(v.Coffin.Storage, (os.time(t) + v.Coffin.ToClose))
            doFlyingBats(v.Coffin, 0, CoffinAPos, CoffinAPos, CoffinBPos)

            doTransformItem(item.uid, v.Coffin.CoffinA[2])
            doTransformItem(coffinFeetClose.uid, v.Coffin.CoffinB[2])

            doSendMagicEffect(CoffinAPos, CONST_ME_BLOCKHIT)
            doSendMagicEffect(CoffinBPos, CONST_ME_BLOCKHIT)
        end

    ----------------------------------------------------------------------------------------------------
     elseif v.Enter then
        NorthCid = getTopCreature(v.Enter.NorthCid).uid
        SouthCid = getTopCreature(v.Enter.SouthCid).uid

        if isntPlayersInArea(cid, config.RoomFightArea.Left, config.RoomFightArea.Right) then
            if isPlayer(NorthCid) and isPlayer(SouthCid) then
                doTeleportThing(NorthCid, v.Enter.NorthTo)
                doTeleportThing(SouthCid, v.Enter.SouthTo)

                doSendMagicEffect(v.Enter.SouthTo, CONST_ME_TELEPORT)
                doSendMagicEffect(v.Enter.NorthTo, CONST_ME_TELEPORT)

                doTransformItem(item.uid, item.itemid == v.Enter.LeverId[1] and v.Enter.LeverId[2] or v.Enter.LeverId[1])

                for _, k in ipairs(v.Enter.Monsters) do
                    getMonster = doCreateMonster(k.name, k.spawn, false, true)

                    if isCreature(getMonster) then
                        doSendMagicEffect(getThingPos(getMonster), CONST_ME_MORTAREA)
                    end
                end

             else
                doPlayerSendCancel(cid, v.Enter.MsgNeeded)
            end

         else
            doPlayerSendCancel(cid, v.Enter.MsgOccupied)
        end

    ----------------------------------------------------------------------------------------------------
     elseif v.Exit then
        if isntMonstersInArea(cid, config.RoomFightArea.Left, config.RoomFightArea.Right) then
            doTeleportThing(cid, v.Exit.Place)
            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
            doTransformItem(item.uid, item.itemid == v.Exit.LeverId[1] and v.Exit.LeverId[2] or v.Exit.LeverId[1])

         else
            doPlayerSendCancel(cid, v.Exit.MsgCancel)
        end
    end

    ----------------------------------------------------------------------------------------------------
  return true
end



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]

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 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 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 .