BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

vida extra D:

vida extra D:

#1 vida extra D: el Sáb Mayo 30, 2015 8:15 pm

[VIP] rafael


Miembro
Bueno amigos de BT necesito una mano con un scrip que seme ocurrio de la nada el scrip es el siguiente

que digamos ando en una quest y seda la casualidad de que pase un freezen o que te pegaron algun combo los monsters o players etc, bueno el scrip que digo te daria como 2 segunda oportunidad de poder continuar en la quest sin inportar donde mueras....

que digamos mori como dije anterior mente si mueres que puedas quedar en esa x zone donde moriste y que puedas continuar con tu quest tranquilo te tendrias k equipar en el ring un item (2354) lo cual cuando mueras se desaparesca y te deje en la posision donde moriste

Nota: este scrip seria chingon no xD?

#2 Re: vida extra D: el Sáb Mayo 30, 2015 8:19 pm

Belerofonte


Administrador
Si el jugador que lleva puesto el weapon equipado muere, en ese momento: no ocurre nada.
Ocurre al logear de nuevo ya sea inmediatamente o haya pasado el tiempo que sea:
- La weapon encargada de otorgarle una "segunda vida" es removida de su inventario.
- Es llevado al lugar donde murió.
- Se le da un margen de segundos modificables de invencibilidad, en el que no pueda ni atacar, ni ser atacado, ni sufrir daños por cualquier otra cosa(como efectos de estado, trampas del mapa, etc...)
- Si dentro del margen de segundos anterior el jugador ataca, es atacado, o sufre daños de cualquier otro tipo: le aparecerá un mensaje modificable tanto al atacante(solo si es otro jugador) como al atacado junto con la cuenta atrás de segundos que le queda de invencibilidad.

Servidor/Data/Creaturescripts/... Creaturescripts.xml
Código:
<event type="death" name="ALdeath" event="script" value="anotherLife.lua" />
<event type="combat" name="ALcombat" event="script" value="anotherLife.lua"/>
<event type="statschange" name="ALstats" event="script" value="anotherLife.lua"/>

Servidor/Data/Creaturescripts/Scripts/... anotherLife.lua
Código:
local c = {
    storage = 89520, -- El StorageKey que gustes. (Ten en cuenta que también han de estas disponibles los números que sumen +1 y +2 dígitos al que le hayas puesto. En este caso StorageKey = 89520. Pues = 89521 y 89522 han de estar disponibles para ser usados en este script),
    weapon = {2179, CONST_SLOT_RING}, -- {ID del equipamento, Lugar que ocupa en el set},
    msg = { -- "Mensaje que aparecerá junto con el tiempo de exhaustion de poder atacar/ser atacado",
      "Saliendo del modo pasivo en", -- ... Le aparecerá al jugador "resucitado", si ataca o es atacado.
      "Desactivando su modo pasivo en", -- ... Le aparecerá a cualquier jugador que ataque al "resucitado".
    }
  }

function onDeath(cid, corpse)
    if isPlayer(cid) then
        if getPlayerSlotItem(cid, c.weapon[2]).itemid == c.weapon[1] then
          local playerPos = getPlayerPosition(cid)
            setPlayerStorageValue(cid, c.storage, playerPos.x)
            setPlayerStorageValue(cid, c.storage + 1, playerPos.y)
            setPlayerStorageValue(cid, c.storage + 2, playerPos.z)
        end
    end

  return true
end

function onCombat(cid, target)
  local cidName, trgName = getCreatureName(cid), getCreatureName(target)

    if isMonster(cid) and isPlayer(target) then
        if os.time(t) < getGlobalStorageValue(trgName) then
          return addEvent(doPlayerSendCancel, 1, target, c.msg[1] .. " " .. getGlobalStorageValue(trgName) - os.time(t) .. " seg.") and false
        end
    end

    if isPlayer(cid) and isMonster(target) then
        if os.time(t) < getGlobalStorageValue(cidName) then
          return addEvent(doPlayerSendCancel, 1, cid, c.msg[1] .. " " .. getGlobalStorageValue(cidName) - os.time(t) .. " seg.") and false
        end
    end

    if isPlayer(cid) and isPlayer(target) then
        if os.time(t) < getGlobalStorageValue(trgName) then
          return addEvent(doPlayerSendCancel, 1, cid, c.msg[2] .. " " .. getGlobalStorageValue(trgName) - os.time(t) .. " seg.") and addEvent(doPlayerSendCancel, 1, target, c.msg[1] .. " " .. getGlobalStorageValue(trgName) - os.time(t) .. " seg.") and false
        end
    end

  return true
end

function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS then
      local cidName = getCreatureName(cid)
        if os.time(t) < getGlobalStorageValue(cidName) then

          return doPlayerSendCancel(cid, c.msg[1] .. " " .. getGlobalStorageValue(cidName) - os.time(t) .. " seg.") and false
        end
    end

  return true
end

Zona (básica) a editar:
local c = {
   storage = 89520, -- El StorageKey que gustes. (Ten en cuenta que también han de estas disponibles los números que sumen +1 y +2 dígitos al que le hayas puesto. En este caso StorageKey = 89520. Pues = 89521 y 89522 han de estar disponibles para ser usados en este script),
   weapon = {2179, CONST_SLOT_RING}, -- {ID del equipamento, Lugar que ocupa en el set},
   msg = { -- "Mensaje que aparecerá junto con el tiempo de exhaustion de poder atacar/ser atacado",
     "Saliendo del modo pasivo en", -- ... Le aparecerá al jugador "resucitado", si ataca o es atacado.
     "Desactivando su modo pasivo en", -- ... Le aparecerá a cualquier jugador que ataque al "resucitado".
   }
 }

Servidor/Data/Creaturescripts/Scripts/... Login.lua En el archivo ya existente, abajo del todo antes del último...
Código:
return true
end
...pegas el siguiente script:
Código:
local c = {
    weapon = {2179, CONST_SLOT_RING}, -- {ID del equipamento, Lugar que ocupa en el set}, (Es decir, las mismas variables que hayas puesto en "anotherLife.lua")
    storage = 89520, -- El mismo StrorageKey que le hayas puesto en "anotherLife.lua"
    exhaust = 8, -- Segundos de exhaustion antes de que pueda atacar o ser atacado cuando se conecte.
  }

    registerCreatureEvent(cid, "ALdeath")
    registerCreatureEvent(cid, "ALcombat")
    registerCreatureEvent(cid, "ALstats")

  local p = {
    getPlayerStorageValue(cid, c.storage),
    getPlayerStorageValue(cid, c.storage + 1),
    getPlayerStorageValue(cid, c.storage + 2)
  }

    if isPlayer(cid) then
      local getWeapon = getPlayerSlotItem(cid, c.weapon[2]).itemid
        if getWeapon == c.weapon[1] then
            if (p[1] > -1 and p[2] > -1) then -- To call the first value in the variable 'p', you must specify the index number, p[INDEX_#]
                doPlayerRemoveItem(cid, getWeapon, 1)
                setGlobalStorageValue(getCreatureName(cid), (os.time(t) + c.exhaust))
                doTeleportThing(cid, { x = p[1], y = p[2], z = p[3] })
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)

                for i = c.storage, c.storage + 2 do -- this is a loop, sets the storage value back to -1, once it is used.
                    setPlayerStorageValue(cid, i, - 1)
                end
            end
        end
    end

Zona (básica) a editar:
local c = {
   weapon = {2179, CONST_SLOT_RING}, -- {ID del equipamento, Lugar que ocupa en el set}, (Es decir, las mismas variables que hayas puesto en "anotherLife.lua")
   storage = 89520, -- El mismo StrorageKey que le hayas puesto en "anotherLife.lua"
   exhaust = 8, -- Segundos de exhaustion antes de que pueda atacar o ser atacado cuando se conecte.
 }

Fuentes: Script extraído de [Tienes que estar registrado y conectado para ver este vínculo] y modificado por muá



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]

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 .