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

Lua Bug with top 5 fragers online :|

Gothric

New Member
Joined
Feb 6, 2010
Messages
264
Reaction score
1
i want to show after 10 min top 5 fragers online

i already use this script

function getTop5Players()
local player1 = {0,-1}
local player2 = {0,-1}
local player3 = {0,-1}
local player4 = {0,-1}
local player5 = {0,-1}
local top5text = "Top 5 fraggers online"
local players = getPlayersOnline()
if #players == 0 then
return top5text
end
for i, cid in ipairs(players) do
if getPlayerSoul(cid) > player1[2] then
player5 = {player4[1], player4[2]}
player4 = {player3[1], player3[2]}
player3 = {player2[1], player2[2]}
player2 = {player1[1], player1[2]}
player1 = {cid, getPlayerSoul(cid)}
elseif getPlayerSoul(cid) > player2[2] then
player5 = {player4[1], player4[2]}
player4 = {player3[1], player3[2]}
player3 = {player2[1], player2[2]}
player2 = {cid, getPlayerSoul(cid)}
elseif getPlayerSoul(cid) > player3[2] then
player5 = {player4[1], player4[2]}
player4 = {player3[1], player3[2]}
player3 = {cid, getPlayerSoul(cid)}
elseif getPlayerSoul(cid) > player4[2] then
player5 = {player4[1], player4[2]}
player4 = {cid, getPlayerSoul(cid)}
elseif getPlayerSoul(cid) > player5[2] then
player5 = {cid, getPlayerSoul(cid)}
end
end
if player1[1] > 0 then
top5text = top5text .. "\n1. " .. getCreatureName(player1[1]) .. " - " .. player1[2] .. " frags"
end
if player2[1] > 0 then
top5text = top5text .. "\n2. " .. getCreatureName(player2[1]) .. " - " .. player2[2] .. " frags"
end
if player3[1] > 0 then
top5text = top5text .. "\n3. " .. getCreatureName(player3[1]) .. " - " .. player3[2] .. " frags"
end
if player4[1] > 0 then
top5text = top5text .. "\n4. " .. getCreatureName(player4[1]) .. " - " .. player4[2] .. " frags"
end
if player5[1] > 0 then
top5text = top5text .. "\n5. " .. getCreatureName(player5[1]) .. " - " .. player5[2] .. " frags"
end
return top5text
end

function onThink(interval, lastExecution)
doBroadcastMessage(getTop5Players())
return TRUE
end


but in game it shows wrong number of frags :/

look
PHP:
15:16 Top 5 fraggers online
1. GOD - 100 frags


but god have 0 frags -.- so script is wrong propably :/ help
 
TFS version, not protocol

probably 0.3.6

Edit: Here's something I just made, you could try using it:
Lua:
local config = {
	limit = 5
}
function onThink(interval, lastExecution)
	local t, ret, tmp = {}, "Top " .. math.min(config.limit, getWorldCreatures(0)) .. " fraggers online:"
	for _, cid in ipairs(getPlayersOnline()) do
		tmp = db.getResult("SELECT COUNT(*) as count FROM killers WHERE death_id IN (SELECT kill_id FROM player_killers) AND " .. getPlayerGUID(cid) .. " IN (SELECT player_id FROM player_killers WHERE kill_id = death_id)")
		table.insert(t, {cid, tmp:getDataInt("count")})
		tmp:free()
	end
	table.sort(t, function(a,b) return a[2] > b[2] end)
	for i = 1, math.min(#t, config.limit)  do
		ret = ret .. "\n" .. i .. ". " .. getPlayerName(t[i][1]) .. " - " .. t[i][2] .. " frags"
	end
	return doBroadcastMessage(ret)
end
 
Last edited:
@cykotitan

in my engine console

[22/03/2010 21:11:11] [Error - LuaScriptInterface::loadFile] data/globalevents/scripts/top.lua:16: '<eof>' expected near 'end'
[22/03/2010 21:11:11] [Warning - Event::loadScript] Cannot load script (data/globalevents/scripts/top.lua)
[22/03/2010 21:11:11] data/globalevents/scripts/top.lua:16: '<eof>' expected near 'end'
 
i know why my first script is wrong :s

becouse on this server which i got this script

in soul window where normally shows soul points

on this server shows number of frags

and script is good but i must fix showing frags in soul window
 
Back
Top