Ir para conteúdo

Featured Replies

Postado

Boa tarde, estou com um script aqui de slot item do TFS 1.3, porem esta dando esse erro


Lua Script Error: [Main Interface]
in a timer event called from:
(Unknown scriptfile)
LuaScriptInterface::luaAddEvent(). Argument #3 is unsafe
stack traceback:
        [C]: in function 'addEvent'
        data/creaturescripts/scripts/slot.lua:79: in function 'chk'
        data/creaturescripts/scripts/slot.lua:166: in function <data/creaturescripts/scripts/slot.lua:164>

 

O código é:



local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}
for i=1,300 do
  conditionHP = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionHP, CONDITION_PARAM_SUBID, 50)
  setConditionParam(conditionHP, CONDITION_PARAM_BUFF_SPELL, 1)
  setConditionParam(conditionHP, CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionHP, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i)

  conditionMP = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionMP, CONDITION_PARAM_SUBID, 51)
  setConditionParam(conditionMP, CONDITION_PARAM_BUFF_SPELL, 1)
  setConditionParam(conditionMP, CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionMP, CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i)

  conditionML = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionML, CONDITION_PARAM_SUBID, 52)
  setConditionParam(conditionML, CONDITION_PARAM_BUFF_SPELL, 1)
  setConditionParam(conditionML, CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionML, CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 100+i)


  conditionCLUB = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionCLUB, CONDITION_PARAM_SUBID, 53)
  setConditionParam(conditionCLUB, CONDITION_PARAM_BUFF_SPELL, 1)
  setConditionParam(conditionCLUB, CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionCLUB, CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i)


  conditionSHI = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionSHI, CONDITION_PARAM_SUBID, 54)
  setConditionParam(conditionSHI, CONDITION_PARAM_BUFF_SPELL, 1)
  setConditionParam(conditionSHI, CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionSHI, CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i)

  conditionDIST = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionDIST, CONDITION_PARAM_SUBID, 55)
  setConditionParam(conditionDIST, CONDITION_PARAM_BUFF_SPELL, 1)
  setConditionParam(conditionDIST, CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionDIST, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)
end

function getSlotType(n)
  if not n then
  return false
  end
  if n:match('%[(.+)%]') then
  n = n:match('%[(.+)%]')
  if n == '?' then
  return 0,n
  else
  return n:match('(.-)%.([+-])(%d+)%%')
  end
  else
  return false
  end
end

local function loadSet(cid)
  local t = {}
  for slot=1,9 do
  t[slot] = ''
  local s = getPlayerSlotItem(cid,slot).uid
  if s ~= 0 then
  t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
  end
  end
  return t
end

function chk(cid,f)
  if not isPlayer(cid) then return false end
  local t = loadSet(cid)
  for i=1,#f do
  if f ~= t then
  equip(cid,nil,slot)
  break
  end
  end
addEvent(chk,2000,cid,t)
end

function check_slot(aab, i)
  if i == 5 or i == 6 then
  if isWeapon(aab) or isShield(aab) or isBow(aab) then
  return true
  end
  else
  return true
  end
return false
end

function equip(cid,item,slot)
  local t = {}
  if item then
  local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION))
  t[mm] = tonumber(qto)
  end
  for i=1,9 do
  if i ~= slot then
  if getPlayerSlotItem(cid,i).itemid ~= 0 then
  local aab = getPlayerSlotItem(cid,i).uid
  if aab and check_slot(aab,i) then
  for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do
  local mm,sinal,qto2 = getSlotType(_)
  if mm then
  if not t[mm] then
  t[mm] = 0
  end
  t[mm] = t[mm]+tonumber(qto2)
  t[mm] = t[mm] > 300 and 300 or t[mm]
  end
  end
  end
  end
  end
  end
  local fu = 0
  local ca = {}
  local s = ''
  for sl,n in pairs(t) do
  fu = fu+1
  s = s..''..n..'% more of '..sl..'\n'
  if sl == 'hp' then
  doAddCondition(cid,conditionHP[tonumber(n)])
  Player(cid):addHealth(Player(cid):getMaxHealth() - Player(cid):getHealth())
  ca[50] = 1
  doSendTutorial(cid,19)
  elseif sl == 'mp' then
  doAddCondition(cid,conditionMP[tonumber(n)])
  Player(cid):addMana(Player(cid):getMaxMana() - Player(cid):getMana())
  ca[51] = 1
  doSendTutorial(cid,19)
  elseif sl == 'ml' then
  doAddCondition(cid,conditionML[tonumber(n)])
  ca[52] = 1
  elseif sl == 'melee' then
  doAddCondition(cid,conditionCLUB[tonumber(n)])
  ca[53] = 1
  elseif sl == 'shield' then
  doAddCondition(cid,conditionSHI[tonumber(n)])
  ca[54] = 1
  elseif sl == 'dist' then
  doAddCondition(cid,conditionDIST[tonumber(n)])
  ca[55] = 1
  end
  end
  if fu > 0 then
  for i=50,55 do
  if not ca then
  doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
  end
  end
  else
  for i=50,55 do
  doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
  end
  end
  return true
end

function onLogin(cid)
    equip(cid,nil,slot)
        addEvent(function()
            if isCreature(cid) then
                chk(cid,loadSet(cid))
            end
        end, 2000)
  return true
end 

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo