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

not working in script, please help to fix it

pisquila

Member
Joined
Nov 14, 2023
Messages
48
Reaction score
5
tfs 0.4 / 8.60


ERROR:
[20:7:42.474] [Error - Action Interface]
[20:7:42.474] data/actions/scripts/exp_potion.lua:onUse
[20:7:42.474] Description:
[20:7:42.474] data/lib/exp_potion.lua:27: attempt to index field '?' (a nil value)
[20:7:42.474] stack traceback:
[20:7:42.474] data/lib/exp_potion.lua:27: in function <data/lib/exp_potion.lua:14>
[20:7:42.490] (tail call): ?


SCRIPT
local potions = {
[6541] = {needLevel = 10, rate = 3.0, duration = 1800},
[6542] = {needLevel = 20, rate = 5.0, duration = 1800},
[6543] = {needLevel = 30, rate = 7.0, duration = 1800},
[6544] = {needLevel = 40, rate = 9.0, duration = 1800},
[6545] = {needLevel = 50, rate = 11.0, duration = 1800},
[2328] = {needLevel = 55, rate = 13.0, duration = 1800},
}

if not expPotions then
expPotions = {playerData = {}}
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
local itemId = item.itemid
local potion = potions[itemId]
if not potion then
return false
end

if getPlayerLevel(cid) < potion.needLevel then
doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar esta potion.'):format(potion.needLevel))
return true
end

local guid = getPlayerGUID(cid)
local expData = self.playerData[guid][itemId]
if not expData then
-- caso alguma nova exp potion seja adicionada às configurações em tempo real
-- alguns jogadores online que tentarem usar, precisarão relogar.
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'É necessário relogar para atualizar.')
return true
end

local now = os.time()
if expData.duration > now then
doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
return true
end

expData.rate = expData.rate + potion.rate
expData.duration = potion.duration + now

doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
potion.rate * 100, string.diff(potion.duration, true)
))

doRemoveItem(item.uid, 1)
return true
end

function expPotions:onLogin(cid)
local guid = getPlayerGUID(cid)

self.playerData[guid] = {}
for itemId in pairs(potions) do
self.playerData[guid][itemId] = {rate = 0, duration = 0}
end
return true
end

function expPotions:getCombo(cid)
local playerData = self.playerData[getPlayerGUID(cid)]
local potionsCombo = 1

if playerData then
for itemId, expData in pairs(playerData) do
potionsCombo = potionsCombo + expData.rate
end
end
return potionsCombo
end

function expPotions:onSay(cid, words, param)
local str = 'Experience Potion Combos:\n'

local playerData = self.playerData[getPlayerGUID(cid)]
if playerData then
for itemId, expData in pairs(playerData) do
str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
end
end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
return true
end
 

Attachments

  • sadsadsadsadsadsa.webp
    sadsadsadsadsadsa.webp
    16.1 KB · Views: 9 · VirusTotal
Last edited:
Back
Top