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

TalkAction [Finished] InGame Highscore

I don`t know how it work on other but on tfs 0.3.6 it don`t show the 1st player. Here is update, it also require less memory because we don`t need to download whole players table
Code:
function onSay(cid, words, param)

     -- max players on the highscore
     local players = 10 -- The amount of players that is shown in the list

     -- don't touch --
     local str = ""
     local value = ""
     local name = ""
     local player_id = 0
     local result = nil
	if param == "level" or param == "exp" or param == "lvl" then
		str = "# [Level] - Name\n"
		value = "level"
		name = "name"
		result = db.getResult("SELECT `level`, `name` FROM `players` ORDER BY `level` DESC, `name` ASC LIMIT 0, ".. players ..";")
	elseif param == "magiclevel" or param == "magic" or param == "mlevel" or param == "ml" then
		str = "# [Magic Level] - Name\n"
		value = "maglevel"
		name = "name"
		result = db.getResult("SELECT `name`, `maglevel` FROM `players` ORDER BY `maglevel` DESC, `name` ASC LIMIT 0, ".. players ..";")
	elseif param == "fist" then
		str = "# [Fist] - Name\n"
		value = "value"
		player_id = "player_id"
		result = db.getResult("SELECT `player_id`, `value` FROM `player_skills`  WHERE `skillid` = 0 ORDER BY `value` DESC, `player_id` ASC LIMIT 0, ".. players ..";")
	elseif param == "club" then
		str = "# [Club] - Name\n"
		value = "value"
		player_id = "player_id"
		result = db.getResult("SELECT `player_id`, `value` FROM `player_skills`  WHERE `skillid` = 1 ORDER BY `value` DESC, `player_id` ASC LIMIT 0, ".. players ..";")
	elseif param == "sword" then
		str = "# [Sword] - Name\n"
		value = "value"
		player_id = "player_id"
		result = db.getResult("SELECT `player_id`, `value` FROM `player_skills`  WHERE `skillid` = 2 ORDER BY `value` DESC, `player_id` ASC LIMIT 0, ".. players ..";")
	elseif param == "axe" then
		str = "# [Axe] - Name\n"
		value = "value"
		player_id = "player_id"
		result = db.getResult("SELECT `player_id`, `value` FROM `player_skills`  WHERE `skillid` = 3 ORDER BY `value` DESC, `player_id` ASC LIMIT 0, ".. players ..";")
	elseif param == "dist" or param == "distance" then
		str = "# [Distance] - Name\n"
		value = "value"
		player_id = "player_id"
		result = db.getResult("SELECT `player_id`, `value` FROM `player_skills`  WHERE `skillid` = 4 ORDER BY `value` DESC, `player_id` ASC LIMIT 0, ".. players ..";")
	elseif param == "shield" or param == "shielding" then
		str = "# [Shield] - Name\n"
		value = "value"
		player_id = "player_id"
		result = db.getResult("SELECT `player_id`, `value` FROM `player_skills`  WHERE `skillid` = 5 ORDER BY `value` DESC, `player_id` ASC LIMIT 0, ".. players ..";")
	elseif param == "fish" or param == "fishing" then
		str = "# [Fishing] - Name\n"
		value = "value"
		player_id = "player_id"
		result = db.getResult("SELECT `player_id`, `value` FROM `player_skills`  WHERE `skillid` = 6 ORDER BY `value` DESC, `player_id` ASC LIMIT 0, ".. players ..";")
	else
	     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Unknown skill: '" .. param .. "'")
	     return TRUE
	end
	if (result:getID() ~= -1) then
		local i = 0
		while TRUE do
			str = str .. "\n " .. i+1  .. ". [" .. result:getDataInt(value) .. "] - " .. (name ~= "" and result:getDataString("name") or getPlayerNameByGUID(result:getDataInt(player_id)))
			i = i+1
			
			if not(result:next()) or i >= players then
				break
			end
		end
		result:free()
	end
	if str ~= "" then
		doPlayerPopupFYI(cid, str)
	end
	return TRUE
end
 
Works nice :) Only works for level for me tho.
 
Last edited by a moderator:
Im using TFS 0.2.13

!highscore "level and !highscore "magiclevel works good but all the rest do not work and i keep getting this message:

[03/09/2015 10:37:43] Lua Script Error: [TalkAction Interface]
[03/09/2015 10:37:43] data/talkactions/scripts/highscore.lua:eek:nSay
[03/09/2015 10:37:43] data/talkactions/scripts/highscore.lua:67: attempt to call global 'getPlayerNameByGUID' (a nil value)
[03/09/2015 10:37:43] stack traceback:
[03/09/2015 10:37:43] [C]: in function 'getPlayerNameByGUID'
[03/09/2015 10:37:43] data/talkactions/scripts/highscore.lua:67: in function <data/talkactions/scripts/highscore.lua:1>
 
Im using TFS 0.2.13

!highscore "level and !highscore "magiclevel works good but all the rest do not work and i keep getting this message:

[03/09/2015 10:37:43] Lua Script Error: [TalkAction Interface]
[03/09/2015 10:37:43] data/talkactions/scripts/highscore.lua:eek:nSay
[03/09/2015 10:37:43] data/talkactions/scripts/highscore.lua:67: attempt to call global 'getPlayerNameByGUID' (a nil value)
[03/09/2015 10:37:43] stack traceback:
[03/09/2015 10:37:43] [C]: in function 'getPlayerNameByGUID'
[03/09/2015 10:37:43] data/talkactions/scripts/highscore.lua:67: in function <data/talkactions/scripts/highscore.lua:1>



I get this same exact error with my server. I haven't messed with it in a long time but recently have gotten back into it. This was an issue I had years ago that I never figured out. You ever get this working?
 
Back
Top