BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido] Reducir el Dmg

[Pedido] Reducir el Dmg

#1 [Pedido] Reducir el Dmg el Mar Mayo 17, 2016 12:28 pm

Acan


Miembro
spell así como tipo buff al usarlo me reduzca el daño que me haga un oponente con cualquier elemento puede ser un 10% absorbPercentAll ... es posible algo asi??

#2 Re: [Pedido] Reducir el Dmg el Mar Mayo 17, 2016 4:22 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] ;D

Quitas la línea de:
Código:
[COMBAT_PHYSICALDAMAGE] = 5, -- Físico.



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] Reducir el Dmg el Mar Mayo 17, 2016 6:10 pm

Acan


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] no hay una forma de que lo active y no tenga que esperar el exauste para remover el buff. seria bueno que lo active y lo desactive cuando yo quiera. des resto esta bien... estoy en el chatbox por si belero...

#4 Re: [Pedido] Reducir el Dmg el Miér Mayo 18, 2016 2:15 pm

Belerofonte


Administrador
Spells/Scripts/... ProtectSpell.lua
Código:
 local Storage = {
    Key = 10238, -- StorageKey que gustes. (10239 o el número que le pongas a "Key" + 1 también ha de estar disponible para ser usado en el de Creaturescripts)
    Value = 5, -- Segundos que durará la protección.
    Msg = {'Defensa elemental activada.', 'Defensa elemental desactivada.'}, -- Mensaje al habilitarlo/deshabilitarlo.
  }

  local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
    setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_RED)

  local condition = createConditionObject(CONDITION_MANASHIELD)
    setConditionParam(condition, CONDITION_PARAM_SUBID, 34)
    setConditionParam(condition, CONDITION_PARAM_TICKS, Storage.Value * 1000)
    setCombatCondition(combat, condition)

local function disableProtection(cid)
    if isPlayer(cid) and getPlayerStorageValue(cid, Storage.Key) ~= - 1 then
        doPlayerSendCancel(cid, Storage.Msg[2])
        setPlayerStorageValue(cid, Storage.Key, - 1)
        doRemoveCondition(cid, CONDITION_MANASHIELD, 34)
        doSendMagicEffect(getThingPos(cid), CONST_ME_SOUND_RED)
    end
end

function onCastSpell(cid, var)
    if exhaustion.get(cid, Storage.Key) == false then
        doCombat(cid, combat, var)
        doPlayerSendCancel(cid, Storage.Msg[2])
        exhaustion.set(cid, Storage.Key, Storage.Value)
        addEvent(disableProtection, Storage.Value * 1000, cid, var)
    else
        disableProtection(cid)
    end
end

Creaturescripts/... Creaturescripts.xml
Código:
<event type="statschange" name="ProtectSpell" event="script" value="ProtectSpell.lua"/>
<event type="logout" name="ProtectSpell" event="script" value="ProtectSpell.lua"/>

Creaturescripts/Scripts/... Login.lua
Código:
   registerCreatureEvent(cid, "ProtectSpell")

Creaturescripts/Scripts/... ProtectSpell.lua
Código:
 local element, Key = {
  -- [Tipo de daño] = porcentaje de daño,
    [COMBAT_ICEDAMAGE] = 10, -- Mágico.
    [COMBAT_FIREDAMAGE] = 10, -- Mágico.
    [COMBAT_EARTHDAMAGE] = 10, -- Mágico.
    [COMBAT_ENERGYDAMAGE] = 10, -- Mágico.
    [COMBAT_HOLYDAMAGE] = 10, -- ¿Mágico?
    [COMBAT_DEATHDAMAGE] = 10, -- ¿Mágico?
  }, 10238 -- Mismo Key que le pusiste al Spell. (Y ha de estar disponible también el número que sea que hayas puesto más un valor. Por ejemplo 10238 + 1 = "10239". Entonces este número "10239" también ha de estar disponible para ser usado en este script.)

function onStatsChange(cid, attacker, type, combat, value)
    if exhaustion.get(cid, Key) then
      local v = element[combat]
        if isPlayer(cid) and getPlayerStorageValue(cid, Key + 1) ~= 1 and v and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) then
          local newValue = (value * v) / 100
            setPlayerStorageValue(cid, Key + 1, 1)
            doTargetCombatHealth(attacker, cid, combat, math.floor(newValue - value), math.floor(newValue - value), CONST_ME_NONE)
            setPlayerStorageValue(cid, Key + 1, -1)
            return
        end
    end
    return true
end

function onLogout(cid)
    if getPlayerStorageValue(cid, Key) == 1 then
        setPlayerStorageValue(cid, Key, - 1)
    end
    return true
end



Para activarlo/desactivarlo, pronuncias el mismo spell. (Si está activado se detectará y se desactivará; y viceversa.)
Si no se pronuncia de nuevo el conjuro, se desactivará automáticamente al pasar los segundos que pongas en la variable "Value" del Spell, o al desconectarse el jugador.



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: [Pedido] Reducir el Dmg el Miér Mayo 18, 2016 6:02 pm

Acan


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] despues de varias horas de testiar funciono gracias veijo.

#6 Re: [Pedido] Reducir el Dmg Hoy a las 4:31 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 .