• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

!Freeze Shield!

killing

Member
Joined
Feb 23, 2012
Messages
815
Reaction score
11
Location
BIH
Hello i need Script for Freeze Shield,When player have it on player cant get Freeze (Freeze Rune)!
Reward Repp++;)
 
Try this code, you have to edit the antifreeze value for your Freeze Shield id.

PHP:
local freezetime = 6    
local cooldown = 10
local storage = 19002
local antifreeze = 10297
 
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, 41)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
 
local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_SUBID, 1)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, -1)
setCombatCondition(combat, exhaust)
 
local exhaustt = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaustt, CONDITION_PARAM_SUBID, 2)
setConditionParam(exhaustt, CONDITION_PARAM_TICKS, -1)
setCombatCondition(combat, exhaustt)
 
function countDown(number, pos, effect, msgonend, effectonend)
  local n = number
       for i = 1, number do
           addEvent(doSendAnimatedText,i* 1000, pos, n > 1 and n.."" or msgonend .."", n < 6 and TEXTCOLOR_RED or TEXTCOLOR_GREEN)
           addEvent(doSendMagicEffect,i* 1000, pos, n > 1 and effect or effectonend )
              n = n -1
       end
      n = number
return true
end
 
function removed(cid)
    if isPlayer(cid) then
        doCreatureSetNoMove(cid, false)
        doRemoveCondition(cid,CONDITION_EXHAUST,1)
        doRemoveCondition(cid,CONDITION_EXHAUST,2)
    end
end
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getTileInfo(getThingPos(cid)).protection then
        return false
    end
    
    if exhaustion.get(cid,storage) then
        return doPlayerSendCancel(cid,"You can't use this yet.")
    end
 
    if not isPlayer(itemEx.uid) or cid == itemEx.uid then
        return doPlayerSendCancel(cid,"You can only use this on another players.")
    end
    
    doSendAnimatedText(getThingPos(itemEx.uid),"SLOW!", TEXTCOLOR_WHITE)
    exhaustion.set(cid,storage,cooldown)
    doCombat(cid, combat, numberToVariant(itemEx.uid))    
    
    if getPlayerSlotItem(itemEx.uid, CONST_SLOT_RIGHT).itemid == antifreeze or getPlayerSlotItem(itemEx.uid, CONST_SLOT_LEFT).itemid == antifreeze then
        return doPlayerSendCancel(cid,"Your enemy have an anti-freeze item!.")
    else
        doCreatureSetNoMove(itemEx.uid, true)
        countDown(freezetime , toPosition, 0, "melted", 5)
        addEvent(removed,freezetime*1000,itemEx.uid)
    end
    return true
end

Note: It only works if the shield is on the right hand!

@EDIT:
FIXED by Cyko to check both hands.
 
Last edited:
Try this code, you have to edit the antifreeze value for your Freeze Shield id.

PHP:
local freezetime = 6    
local cooldown = 10
local storage = 19002
local antifreeze = 10297
 
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, 41)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
 
local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_SUBID, 1)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, -1)
setCombatCondition(combat, exhaust)
 
local exhaustt = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaustt, CONDITION_PARAM_SUBID, 2)
setConditionParam(exhaustt, CONDITION_PARAM_TICKS, -1)
setCombatCondition(combat, exhaustt)
 
function countDown(number, pos, effect, msgonend, effectonend)
  local n = number
       for i = 1, number do
           addEvent(doSendAnimatedText,i* 1000, pos, n > 1 and n.."" or msgonend .."", n < 6 and TEXTCOLOR_RED or TEXTCOLOR_GREEN)
           addEvent(doSendMagicEffect,i* 1000, pos, n > 1 and effect or effectonend )
              n = n -1
       end
      n = number
return true
end
 
function removed(cid)
    if isPlayer(cid) then
        doCreatureSetNoMove(cid, false)
        doRemoveCondition(cid,CONDITION_EXHAUST,1)
        doRemoveCondition(cid,CONDITION_EXHAUST,2)
    end
end
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getTileInfo(getThingPos(cid)).protection then
        return false
    end
    
    if exhaustion.get(cid,storage) then
        return doPlayerSendCancel(cid,"You can't use this yet.")
    end
 
    if not isPlayer(itemEx.uid) or cid == itemEx.uid then
        return doPlayerSendCancel(cid,"You can only use this on another players.")
    end
    
    doSendAnimatedText(getThingPos(itemEx.uid),"SLOW!", TEXTCOLOR_WHITE)
    exhaustion.set(cid,storage,cooldown)
    doCombat(cid, combat, numberToVariant(itemEx.uid))    
    
    if getPlayerSlotItem(itemEx.uid, CONST_SLOT_RIGHT).itemid == antifreeze or getPlayerSlotItem(itemEx.uid, CONST_SLOT_LEFT).itemid == antifreeze then
        return doPlayerSendCancel(cid,"Your enemy have an anti-freeze item!.")
    else
        doCreatureSetNoMove(itemEx.uid, true)
        countDown(freezetime , toPosition, 0, "melted", 5)
        addEvent(removed,freezetime*1000,itemEx.uid)
    end
    return true
end

Note: It only works if the shield is on the right hand!

@EDIT:
FIXED by Cyko to check both hands.


okay Thanks..

- - - Updated - - -

Where to put this script?
 
Between this should go under else:
doSendAnimatedText(getThingPos(itemEx.uid),"SLOW!", TEXTCOLOR_WHITE)
exhaustion.set(cid,storage,cooldown)
doCombat(cid, combat, numberToVariant(itemEx.uid))
 

Similar threads

Back
Top