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

[Error - Action Interface] TSF 0.3.6

abofoulla

New Member
Joined
Apr 24, 2017
Messages
44
Solutions
1
Reaction score
2
[Error - Action Interface]
[09/02/2020 01:56:44] In a timer event called from:
[09/02/2020 01:56:44] data/actions/scripts/immunity.lua: onUse
[09/02/2020 01:56:45] Description:
[09/02/2020 01:56:45] data/actions/scripts/immunity.lua:17: attempt to call global 'unregisterCreatureEvent' (a nil value)
[09/02/2020 01:56:45] stack traceback:
[09/02/2020 01:56:45] data/actions/scripts/immunity.lua:17: in function <data/actions/scripts/immunity.lua:15>


actions/scripts/immunity.lua

Lua:
local config = {
    cooldown = { storage = 3997, duration = 40 },
    duration = 3,
    ignoreCooldownGroup = 4,
    uses = 5
}

local function sendEffect(cid)
  if not isPlayer(cid) then return end
  doChangeSpeed(cid, getCreatureBaseSpeed(cid))
  doSendMagicEffect(getThingPos(cid), 34)
  doSendAnimatedText(getThingPos(cid), 'Protected', COLOR_GREY)
end

local function unregister(cid)
  if not isPlayer(cid) then return end
  unregisterCreatureEvent(cid, 'ImmunitySpell')
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local uses = getItemAttribute(item.uid, 'uses')
    if not uses then
        doItemSetAttribute(item.uid, 'uses', config.uses)
        uses = config.uses
    end
    
    uses = uses - 1

    if getCreatureStorage(cid, config.cooldown.storage) > os.time() and getPlayerGroupId(cid) < config.ignoreCooldownGroup then
      doPlayerSendTextMessage(cid,27, string.format('You can only use this spell each %d seconds.', config.cooldown.duration))
      doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
      return true
    end
        
    doCreatureSetStorage(cid, config.cooldown.storage, os.time() + config.cooldown.duration)
    registerCreatureEvent(cid, 'ImmunitySpell')
    for i = 0, config.duration - 1 do
      addEvent(sendEffect, i * 1000, cid)
    end
    addEvent(unregister, config.duration * 1000, cid)
    
    doItemSetAttribute(item.uid, 'uses', uses)
    
    if uses <= 0 then
      doRemoveItem(item.uid)
      doPlayerSendTextMessage(cid,27,"You used the last charge, your item is gone.")
    else
      doPlayerSendTextMessage(cid,27, string.format('You used a charge, you have %d charges left.', uses))
    end
    return true
end
 
This function doesn't exist on TFS 0.3.6 unregisterCreatureEvent you'll have to use more up to date TFS.
 
Back
Top