• 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.4] Buff + debuff upon item usage

Joriku

Working in the mines, need something?
Joined
Jul 16, 2016
Messages
1,078
Solutions
15
Reaction score
370
Location
Sweden
YouTube
Joriku
This took me a few hours to get right, thanks to Zibizu that helped me out with a few details inside such as type("equip") and deEquip. Saved me an extra hour.
Also: thanks to Relke for the buff gif :)
So this script works as following gif's down below describes:

Active & non-active
8a72cd791d0a7bdc8dfbe026d291ffba.gif



Also: This requires you to change the effect or add in an custom effect.
Lua:
local moveevent = MoveEvent()
local moveevent1 = MoveEvent()

local pos = getPlayerPosition(cid)
local effectItem = 7697

function moveevent.onEquip(player, item, slot, isCheck)
    for _, player in ipairs(Game.getPlayers()) do
    local ring = player:getSlotItem(CONST_SLOT_RING)
        if ring and ring:getId() == effectItem then
        player:getPosition():sendMagicEffect(234) -- sends effect 234
    end
    end
    return true
end

function moveevent1.onDeEquip(player, item, slot, isCheck)
player:getPosition():sendMagicEffect(235) -- sends effect 235
return true
end

moveevent:type("equip")
moveevent:id(effectItem)
moveevent:register()
moveevent1:type("deEquip")
moveevent1:id(effectItem)
moveevent1:register()
 
Here a updated version if you need xD not tested but should work

Lua:
local moveevent = MoveEvent()
moveevent:type("equip")

function moveevent.onEquip(player, item, slot, isCheck)
    if not player then
        return true
    end
    player:getPosition():sendMagicEffect(234) -- sends effect 234
    return true
end

moveevent:slot(ring)
moveevent:id(7697)
moveevent:register()

----------------------------------------------------------------------------

local moveevent = MoveEvent()
moveevent:type("deEquip")

function moveevent.onDeEquip(player, item, slot, isCheck)
    if not player then
        return true
    end
    player:getPosition():sendMagicEffect(235) -- sends effect 235
    return true
end

moveevent:slot(ring)
moveevent:id(7697)
moveevent:register()
 
Might as well go full circle and make this work with a table.

Lua:
--[[
    "head"
    "necklace"
    "backpack"
    "armor"
    "hand" -- is a shield/weapon
    "legs"
    "feet"
    "ring"
    "ammo"
--]]

local config = {
    --[itemid] = {slot = "slotName", equipEffect = effectNumberOrName, deEquipEffect = effectNumberOrName},
    [7697] = {slot = "ring", equipEffect = 234, deEquipEffect = 235},
}

----------------------------------------------------------------------------

local moveevent = MoveEvent()
moveevent:type("equip")

function moveevent.onEquip(player, item, slot, isCheck)
    player:getPosition():sendMagicEffect(config[item:getId()].equipEffect) -- sends effect 234
    return true
end

for itemId, _ in pairs(config) do
    moveevent:slot(config[itemId].slot)
    moveevent:id(itemId)
end
moveevent:register()

----------------------------------------------------------------------------

local moveevent = MoveEvent()
moveevent:type("deEquip")

function moveevent.onDeEquip(player, item, slot, isCheck)
    player:getPosition():sendMagicEffect(config[item:getId()].deEquipEffect) -- sends effect 235
    return true
end

for itemId, _ in pairs(config) do
    moveevent:slot(config[itemId].slot)
    moveevent:id(itemId)
end
moveevent:register()
 
Back
Top