• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Lua fix

przemo5050

New Member
Joined
Feb 3, 2012
Messages
3
Reaction score
0
Hello,

I have small problemt withs lua scripts some one can look?: )

lottery script
function onThink(interval, lastExecution)config = {rewards_id = {2466, -- golden armor2470, -- golden legs2493, -- demon helmet2498, -- royal helmet8891, -- paladin armor2195, -- boots of haste7457, -- fur boots2491, -- crown helmet2487, -- crown armor2488, -- crown legs2497, -- crusader helmet2476, -- knight armor3983, -- bast skirt5462, -- pirate boots2492, -- dragon scale mail5741, -- skull helmet8889, -- skullcracker armor2645, -- steel boots2472 -- magic plate armor }}if (getWorldCreatures(0) == 0) thenreturn trueendlocal list = {}local a = "data/logs/events/lottery.log"local f = io.open(a, "a+")for i, tid in ipairs(getPlayersOnline()) dolist = tidendlocal winner = list[math.random(1, #list)]local random_item = config.rewards_id[math.random(1, #config.rewards_id)]if (getPlayerGroupId(winner) == 1) or (getPlayerGroupId(winner) == 2) or (getPlayerGroupId(winner) == 3) then-- doBroadcastMessage("Player " .. getCreatureName(winner) .. " was drawn through the system and received " .. getItemNameById(random_item) .. "! Next draw will be held for 15 minutes!")for _, name in ipairs(getOnlinePlayers()) dolocal cid = getPlayerByName(name)addEvent(doPlayerSendChannelMessage, 250, cid, "", ".::( Lottery Event )::. Player " .. getCreatureName(winner) .. " was drawn through the system and received " .. getItemNameById(random_item) .. "! Next draw will be held for 15 minutes!", TALKTYPE_CHANNEL_W, 10)endlocal reward = doPlayerAddItem(winner, random_item, 1)doItemSetAttribute(reward, "description", "" .. getCreatureName(winner) .. " won this item in the lottery.")-- ACHIEVEMENTlocal ACHIEVEMENT_NAME = "Lucky Lottery"local ACHIEVEMENT_STORAGE = 77116if getPlayerStorageValue(winner, ACHIEVEMENT_STORAGE) < 1 thendoPlayerSendTextMessage(winner, MESSAGE_EVENT_ADVANCE, "Congratulations! You earned the achievement \"" .. ACHIEVEMENT_NAME .. "\".")doPlayerSetStorageValue(winner, ACHIEVEMENT_STORAGE, 1)end-- ENDdb.executeQuery("INSERT INTO `lottery` (`name`, `item`, `date`) VALUES ('"..getCreatureName(winner).."', '"..getItemNameById(random_item).."', '"..os.date(os.time()).."');")f:write("["..os.date("%d.%m.%Y - %X",os.time()).."] Player ["..getCreatureName(winner).."] was drawn through the system and received ["..getItemNameById(random_item).."]\n")f:close()endreturn trueend

lottery error:
[Error - LuaInterface::loadFile] data/globalevents/scripts/lottery_event.lua:1: 'then' expected near 'thenreturn'
[Warning - Event::loadScript] Cannot load script (data/globalevents/scripts/lottery_event.lua)
data/globalevents/scripts/lottery_event.lua:1: unexpected symbol near '<eof>'

and this: [Warning - Items::loadFromXml] Unknown key value fieldAbsorbPercentFire ?
 
Last edited:
function onThink(interval, lastExecution)
local config = {rewards_id = {2466}}

if (getWorldCreatures(0) == 0) then
return true
end

local list = {}
local a = "data/logs/events/lottery.log"
local f = io.open(a, "a+")

for i, tid in ipairs(getPlayersOnline()) do
list = tid
end

local winner = list[math.random(1, #list)]
local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
if (getPlayerGroupId(winner) == 1) or (getPlayerGroupId(winner) == 2) or (getPlayerGroupId(winner) == 3) then
doBroadcastMessage("Player " .. getCreatureName(winner) .. " was drawn through the system and received " .. getItemNameById(random_item) .. "! Next draw will be held for 15 minutes!")
for _, name in ipairs(getOnlinePlayers()) do
local cid = getPlayerByName(name)
addEvent(doPlayerSendChannelMessage, 250, cid, "", ".::( Lottery Event )::. Player " .. getCreatureName(winner) .. " was drawn through the system and received " .. getItemNameById(random_item) .. "! Next draw will be held for 15 minutes!", TALKTYPE_CHANNEL_W, 10)
end
local reward = doPlayerAddItem(winner, random_item, 1)
doItemSetAttribute(reward, "description", "" .. getCreatureName(winner) .. " won this item in the lottery.")

-- ACHIEVEMENT
local ACHIEVEMENT_NAME = "Lucky Lottery"
local ACHIEVEMENT_STORAGE = 77116
if getPlayerStorageValue(winner, ACHIEVEMENT_STORAGE) < 1 then
doPlayerSendTextMessage(winner, MESSAGE_EVENT_ADVANCE, "Congratulations! You earned the achievement \"" .. ACHIEVEMENT_NAME .. "\".")
doPlayerSetStorageValue(winner, ACHIEVEMENT_STORAGE, 1)
end
-- END
db.executeQuery("INSERT INTO `lottery` (`name`, `item`, `date`) VALUES ('"..getCreatureName(winner).."', '"..getItemNameById(random_item).."', '"..os.date(os.time()).."');")
f:write("["..os.date("%d.%m.%Y - %X",os.time()).."] Player ["..getCreatureName(winner).."] was drawn through the system and received ["..getItemNameById(random_item).."]\n")
f:close()
end
return true
end
 
@Musztang - You are my god.

Two problems
1. [Warning - Items::loadFromXml] Unknown key value fieldAbsorbPercentFire

2.GlobalEvent Interface error
[13:44:14.488] [Error - GlobalEvent Interface]
[13:44:14.494] In a timer event called from:
[13:44:14.499] data/globalevents/scripts/starting.lua:eek:nStartup
[13:44:14.504] Description:
[13:44:14.509] data/globalevents/scripts/starting.lua:6: attempt to index upvalue 'f' (a nil value)
[13:44:14.512] stack traceback:
[13:44:14.512] data/globalevents/scripts/starting.lua:6: in function <data/globalevents/scripts/starting.lua:4>

script
local a = "data/logs/starting_server.log"
local f = io.open(a, "a+")

function DisableProtection()
doSetGameState(GAMESTATE_NORMAL)
f:write(""..os.date("%H:%M, %d.%m.%Y",os.time()).." - Serwer has ben auto-open for players!\n")
f:close()
return true
end

function onStartup()
doSetGameState(GAMESTATE_CLOSED)
addEvent(DisableProtection, 5000) -- 10000 10 sec
return true
end
 
Last edited:
Back
Top