• 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!

[TFS 1.3][RevScript] Frost Charm aka Freeze Rune

Marko999x

999x era
Premium User
Joined
Dec 14, 2017
Messages
2,755
Solutions
80
Reaction score
1,893
Location
Germany
Preview:

Regirst:

data/scripts/batman.lua

Required:

Lua:
local frostcharm = Action()

local config = {
effect = 44,
distanceEffect = 29
}

local condition = Condition(CONDITION_OUTFIT)
condition:setParameter(CONDITION_PARAM_TICKS, 4000)
condition:setOutfit({lookTypeEx = 7303})

local function freezeTimer(creature,pos,count)
    if count >= 1 and Creature(creature) then
        local spectators = Game.getSpectators(pos, false, false, 13, 13, 7, 7)
        if #spectators > 0 then
            for _,spectator in pairs(spectators) do
                if spectator:isPlayer() then
                    spectator:sendTextMessage(MESSAGE_HEALED, nil, pos, count, TEXTCOLOR_ORANGE)
                end
            end
        end
        addEvent(freezeTimer, 1000, creature, pos, count - 1)
    end
end

local function unfreeze(cid)
    local player = Player(cid)
    local pos = player:getPosition()
    pos:sendDistanceEffect(Position(pos.x+1, pos.y+1, pos.z), config.distanceEffect)
    pos:sendDistanceEffect(Position(pos.x+1, pos.y-1, pos.z), config.distanceEffect)
    pos:sendDistanceEffect(Position(pos.x-1, pos.y-1, pos.z), config.distanceEffect)
    pos:sendDistanceEffect(Position(pos.x-1, pos.y+1, pos.z), config.distanceEffect)
    player:say("UNFROZEN", TALKTYPE_MONSTER_SAY)
    pos:sendMagicEffect(config.effect)
    player:setMovementBlocked(false)
end

function frostcharm.onUse(player, item, fromPosition, target, toPosition, isHotkey)
      if not target:isPlayer() then
        player:sendCancelMessage('You can just freeze players')
        player:getPosition():sendMagicEffect(3)
        return false
    end
  
    if player:getExhaustion(7212) <= 0 then
        player:setExhaustion(7212, 10)
    else
        player:sendCancelMessage('You\'re exhausted for: '..player:getExhaustion(7212)..' seconds.')
        return true
    end
  
    local pos = target:getPosition()
    Position(pos.x+1, pos.y+1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    Position(pos.x+1, pos.y-1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    Position(pos.x-1, pos.y-1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    Position(pos.x-1, pos.y+1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    target:addCondition(condition)
    pos:sendMagicEffect(config.effect)
    target:say("FROZEN", TALKTYPE_MONSTER_SAY)
    target:setMovementBlocked(true)
    addEvent(freezeTimer, 1000, target.uid, target:getPosition(), 3000 / 1000)
    addEvent(unfreeze, 4000, target.uid)
    return true
end

frostcharm:id(2281)
frostcharm:register()
 
Last edited:
Code:
attempt to call method 'setMovementBlocked' (a nil value)

Is this a custom function?

You are not using latest tfs.

Post automatically merged:

i am new, it works on tfs 1.2?
awesome script :)

No
you need this
 
You are not using latest tfs.

Post automatically merged:



No
you need this
Oh im using SaiyansKing/optimized_forgottenserver (https://github.com/SaiyansKing/optimized_forgottenserver)
This fork 👍 I'll add this
 
///////batman.lua:45: attempt to call method 'getExhaustion' (a nil value)


Love it!
You saved me some trouble on the way. Thank you <3

nice man have fun :D
 
bro, you know how I can do so that when they are frozen they cannot heal or use spells :(
 



nice man have fun :D
i dont get it, how can i make it run? what do i have to change?
 
i dont get it, how can i make it run? what do i have to change?

You must put it in global.lua then it will work :D
Post automatically merged:

i dont get it, how can i make it run? what do i have to change?

I think source edits are required for this or you edit all your spells and healing spells :D
 
Lua Script Error: [Scripts Interface]
C:\Users\rasmu\Documents\otserver\data\scripts\batman.lua:callback
C:\Users\rasmu\Documents\otserver\data\scripts\batman.lua:60: attempt to call method 'setMovementBlocked' (a nil value)
stack traceback:
[C]: in function 'setMovementBlocked'
C:\Users\rasmu\Documents\otserver\data\scripts\batman.lua:60: in function <C:\Users\rasmu\Documents\otserver\data\scripts\batman.lua:38>
 
Preview:

Regirst:

data/scripts/batman.lua

Required:

Lua:
local frostcharm = Action()

local config = {
effect = 44,
distanceEffect = 29
}

local condition = Condition(CONDITION_OUTFIT)
condition:setParameter(CONDITION_PARAM_TICKS, 4000)
condition:setOutfit({lookTypeEx = 7303})

local function freezeTimer(creature,pos,count)
    if count >= 1 and Creature(creature) then
        local spectators = Game.getSpectators(pos, false, false, 13, 13, 7, 7)
        if #spectators > 0 then
            for _,spectator in pairs(spectators) do
                if spectator:isPlayer() then
                    spectator:sendTextMessage(MESSAGE_HEALED, nil, pos, count, TEXTCOLOR_ORANGE)
                end
            end
        end
        addEvent(freezeTimer, 1000, creature, pos, count - 1)
    end
end

local function unfreeze(cid)
    local player = Player(cid)
    local pos = player:getPosition()
    pos:sendDistanceEffect(Position(pos.x+1, pos.y+1, pos.z), config.distanceEffect)
    pos:sendDistanceEffect(Position(pos.x+1, pos.y-1, pos.z), config.distanceEffect)
    pos:sendDistanceEffect(Position(pos.x-1, pos.y-1, pos.z), config.distanceEffect)
    pos:sendDistanceEffect(Position(pos.x-1, pos.y+1, pos.z), config.distanceEffect)
    player:say("UNFROZEN", TALKTYPE_MONSTER_SAY)
    pos:sendMagicEffect(config.effect)
    player:setMovementBlocked(false)
end

function frostcharm.onUse(player, item, fromPosition, target, toPosition, isHotkey)
      if not target:isPlayer() then
        player:sendCancelMessage('You can just freeze players')
        player:getPosition():sendMagicEffect(3)
        return false
    end
 
    if player:getExhaustion(7212) <= 0 then
        player:setExhaustion(7212, 10)
    else
        player:sendCancelMessage('You\'re exhausted for: '..player:getExhaustion(7212)..' seconds.')
        return true
    end
 
    local pos = target:getPosition()
    Position(pos.x+1, pos.y+1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    Position(pos.x+1, pos.y-1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    Position(pos.x-1, pos.y-1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    Position(pos.x-1, pos.y+1, pos.z):sendDistanceEffect(pos, config.distanceEffect)
    target:addCondition(condition)
    pos:sendMagicEffect(config.effect)
    target:say("FROZEN", TALKTYPE_MONSTER_SAY)
    target:setMovementBlocked(true)
    addEvent(freezeTimer, 1000, target.uid, target:getPosition(), 3000 / 1000)
    addEvent(unfreeze, 4000, target.uid)
    return true
end

frostcharm:id(2281)
frostcharm:register()
nice!!! thanks, how to make that the rune has a % to miss?
 
Back
Top