BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido] Script's de palancas

[Pedido] Script's de palancas

#1 [Pedido] Script's de palancas el Dom Mar 20, 2016 11:09 pm

Ismanik


Aprendiz
Hola, en este post pedire dos scripts de palancas que pasare a describir a continuacion, perdonen si ya estan en este foro pero busque y no los encontre.

1.- Que se pueda mover una palanca a partir de otras tres:
- Estos significa que abra 3 palancas y al ser activadas estas podras mover otra donde esta abrira una X puerta.
Me explico mejor, mientras no esten activadas las tres palancas anteriores, no podras mover la palanca que abrira una X puerta. Tambien un extra en esto es que quiero que las palancas lansen un mensaje al ser activadas, no quiero que den storage.

2.- Palanca que se acciona con X item.
- En este caso ocuparia el script donde una palanca este atascada y al intentar accionarla te salta el mensaje de que esta atascada, para eso ocuparia un item para desatascarla (en este caso el de id:10031 que parece un frasquito de aceite, luego te lo regresaria vacio). Pasado un tiempo, podria desirque que una hora esta palanca volveria a atascarce. Lo que haria esta palanca es poner un objeto y quitarlo de un X lugar.

Porfavor si alguien me podria hacer estos dos scripts

#2 Re: [Pedido] Script's de palancas el Lun Mar 21, 2016 2:43 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:1.- Que se pueda mover una palanca a partir de otras tres:
    - Estos significa que abra 3 palancas y al ser activadas estas podras mover otra donde esta abrira una X puerta.
      Me explico mejor, mientras no esten activadas las tres palancas anteriores, no podras mover la palanca que abrira una X puerta. Tambien un extra en esto es que quiero que las palancas lansen un mensaje al ser activadas, no quiero que den storage.

Server/Data/Actions/... Actions.xml
Código:
<action uniqueid="7656; 7657; 7658; 7659" event="script" value="latchLevers.lua"/>
UniqueId de las 4 palancas. Esos, o los que gustes, los mismos que también has de poner en el siguiente script.

Server/Data/Actions/Scripts/... latchLevers.lua
Código:
 local config = {
    leverId = {1945, 1946}, -- {palanca mirando hacia la izquierda, palanca mirando hacia la derecha},
    latch = 7659, -- UniqueId de la palanca (la principal), la que depende de las demás y abre la puerta.

    locks = {
  -- [UniqueId de cada palanca(las tres secundarias)] = {contenido que aparecerá en los mensajes acerca de dicha palanca},
      [7656] = {"A"},
      [7657] = {"B"},
      [7658] = {"C"},
    },

    DoorId = {1229, 1230}, -- {Puerta cerrada, Puerta abierta},
    DoorPos = {x = 842, y = 1006, z = 7}, -- Coordenada de dicha puerta de la línea anterior.
  }

local function isLeversActivated(cid, levers, item_id)

    for uid, from in pairs(levers) do
        if getTileItemById(getThingPos(uid), item_id).itemid ~= item_id then
            if isPlayer(cid) then
                doPlayerSendCancel(cid, "La palanca " .. from[1] .. " no fue activada.")
              return
            end
        end
    end

  return true
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
  local old, new, levers = {}, {}, config.locks[item.uid]

    if item.uid == config.latch then
        if isLeversActivated(cid, config.locks, config.leverId[2]) ~= true then
          return true
        end

      local OpenDoor = getTileItemById(config.DoorPos, config.DoorId[1])
      local CloseDoor = getTileItemById(config.DoorPos, config.DoorId[2])

        if OpenDoor.itemid == config.DoorId[1] then
            old, new = OpenDoor.uid, config.DoorId[2]

         elseif CloseDoor.itemid == config.DoorId[2] then
            old, new = CloseDoor.uid, config.DoorId[1]
        end
        doTransformItem(old, new)

     elseif levers then
        doBroadcastMessage("La palanca " .. levers[1] .. " ha sido activada.", MESSAGE_EVENT_ADVANCE)
    end
    doTransformItem(item.uid, item.itemid == config.leverId[1] and config.leverId[2] or config.leverId[1])

  return true
end



[Tienes que estar registrado y conectado para ver este vínculo] escribió:2.- Palanca que se acciona con X item.
   - En este caso ocuparia el script donde una palanca este atascada y al intentar accionarla te salta el mensaje de que esta atascada, para eso ocuparia un item para desatascarla (en este caso el de id:10031 que parece un frasquito de aceite, luego te lo regresaria vacio). Pasado un tiempo, podria desirque que una hora esta palanca volveria a atascarce. Lo que haria esta palanca es poner un objeto y quitarlo de un X lugar.

Server/Data/Actions/... Actions.xml
Código:
<action itemid="10031" uniqueid="7653" event="script" value="stuckLever.lua"/>
ItemId del frasco con aceite. UniqueId de la palanca. Ese, o el que gustes, el mismo que también has de poner en el siguiente script.

Server/Data/Actions/Scripts/... stuckLever.lua
Código:
 local config = {
    key = 439834, -- Storage Key que gustes.
    value = 60, -- Minutos transcurridos para que vuelva a atascarse.

    fullVial = 10031, -- Id del frasco lleno.
    emptyVial = 2006, -- Id del frasco vacío.
    splash = 2018, -- Id del charco salpicado.

    leverId = {9827, 9828}, -- {Palanca mirando hacia la izquierda, Palanca mirando hacia la derecha},
    leverUid = 7653, -- UniqueId de la palanca.

    thingId = 1304, -- Id del objeto que se pondrá/quitará.
    thingPos = {x = 851, y = 1009, z = 7}, -- Coordenada del objeto de la línea anterior.
  }

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if item.itemid == config.fullVial and itemEx.uid == config.leverUid then
        if os.time(t) > getGlobalStorageValue(config.key) then
            setGlobalStorageValue(config.key, (os.time(t) + (config.value * 60)))
            doTransformItem(item.uid, config.emptyVial)
            doCreateItem(config.splash, 3, toPosition)

            addEvent(function()
              local getSplash = getTileItemById(getThingPos(config.leverUid), config.splash)
                if getSplash.itemid == config.splash then
                    doRemoveItem(getSplash.uid, 1)
                end
            end, config.value * 60 * 1000)

         else
           doPlayerSendCancel(cid, "La palanca ya está engrasada.")
        end

     elseif item.uid == config.leverUid then
        if os.time(t) > getGlobalStorageValue(config.key) then
            doPlayerSendCancel(cid, "La palanca está atascada.")

         else
          local getThing = getTileItemById(config.thingPos, config.thingId)

            if getThing.itemid == config.thingId then
                doRemoveItem(getThing.uid, 1)
                doSendMagicEffect(config.thingPos, CONST_ME_GROUNDSHAKER)

             else
               doCreateItem(config.thingId, 1, config.thingPos)
               doSendMagicEffect(config.thingPos, CONST_ME_BLOCKHIT)
            end

          return doTransformItem(item.uid, item.itemid == config.leverId[1] and config.leverId[2] or config.leverId[1])
        end
    end

  return true
end



Nota. En ninguno de los 2 especificaste que se cerrara la puerta y las palancas volvieran a su punto de origen pasado X tiempo, ergo, no lo hice. Está por aclarar si lo querías así o no.



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: [Pedido] Script's de palancas el Lun Mar 21, 2016 5:35 pm

Ismanik


Aprendiz
Esto era lo que pedi gracias, tema cerrado

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 :: 1 Motor de búsqueda

Usuarios navegando en este foro: Ninguno
Motores de búsqueda : bing

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 .