• 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 Command: !highscores

Lava Titan

Developer
Joined
Jul 25, 2009
Messages
1,529
Solutions
1
Reaction score
85
Location
Portugal
Tested on TFS 0.3.4
Report bugs please!

Code:
--Scripted by Lava Titan

local displayoutput = {"Level","Magic Level","Fist Fighting","Club Fighting","Sword Fighting","Axe Fighting","Distance Fighting","Shielding","Fishing"}

local itemtype = {9969,9933,5896,8929,8932,7388,8849,8906,2580}

function onSay(cid, words, param)
    number = 1
    param = string.lower(param)
    skilllist = ""
    command = TRUE
    if param == "level" then        
        display = 1
    elseif param == "magic" then
        display = 2
    elseif param == "fist" then
        id = 0
        display = 3
    elseif param == "club" then
        id = 1
        display = 4
    elseif param == "sword" then
        id = 2
        display = 5
    elseif param == "axe" then
        id = 3
        display = 6
    elseif param == "distance" then
        id = 4
        display = 7
    elseif param == "shield" then
        id = 5
        display = 8
    elseif param == "fish" then
        display = 9
        id = 6
    else 
        error = 'Highscore Commands:\n\n!highscores level\n!highscores magic\n!highscores fist\n!highscores club\n!highscores sword\n!highscores axe\n!highscores distance\n!highscores shield\n!highscores fish'

        doShowTextDialog(cid, 5958, error)
        command = FALSE

    end

    if command ~= FALSE then
        if display == 1 then
            local player = db.getResult("SELECT `name`, `level` FROM `players` WHERE group_id < '2' ORDER BY `level` DESC LIMIT 50;")    
            if(player:getID() ~= -1) then
                while (true) do
                    local name = player:getDataString("name")
                    local level = player:getDataInt("level")

                      skilllist = skilllist.. "\n#"..string.format("%5s",number.."   "..name.."  -  "..level)
                    number = number + 1
                    if not(player:next()) then
                        break
                    end
                end
                player:free()
            end
        elseif display == 2 then
            local player = db.getResult("SELECT `name`, `maglevel` FROM `players` WHERE group_id < '2' ORDER BY `maglevel` DESC LIMIT 50;")
            if(player:getID() ~= -1) then    
                while (true) do
                    local name = player:getDataString("name")
                    local maglevel = player:getDataInt("maglevel")

                      skilllist = skilllist.. "\n#"..string.format("%5s",number.."   "..name.."  -  "..maglevel)
                    if not(player:next()) then
                        break
                    end
                    number = number + 1
                end
            end
            player:free()
        else
            local skills = db.getResult("SELECT `player_id`, `value`, `skillid` FROM `player_skills` WHERE `skillid` = "..id.." ORDER BY `value` DESC;")
            while (true) do
                local GUID = skills:getDataInt("player_id")
                local value = skills:getDataInt("value")
                local skillid = skills:getDataInt("skillid")
                local player = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..GUID.." and group_id < '2' ")
                if(player:getID() ~= -1) then
                    local name = player:getDataString("name")
                      skilllist = skilllist.. "\n#"..string.format("%5s",number.."   "..name.."  -  "..value)
                    number = number + 1
                    player:free()
                end
                if number > 50 then
                    break
                end
                    if not(skills:next()) then
                    break
                end
            end
            skills:free()
        end
        dialog = ""..displayoutput[display].." Highscores: \n  "..skilllist..""
        doShowTextDialog(cid, itemtype[display], dialog)
    end    
end

In talkactions.xml add:

Code:
<talkaction words="!highscores" script="highscores.lua"/>

Code:
Highscore Commands:

!highscores level
!highscores magic
!highscores fist
!highscores club
!highscores sword
!highscores axe
!highscores distance
!highscores shield
!highscores fish
 
Crashes server? :eek:
That isn't good :blink:
 
Not sure if its that or my players I have too many players for my computer to handle. Although I think it is something with the script. .;s
 
Code:
local table = {
	["level"] = {output = "Level", display = 1, id = -1, itemtype = 9969}
}
Will be better.
 
Mm, if it exists, maybe other cant find it, and they look at this one.
 
I don't think he even wrote this, maybe a copy and paste of other scripts and took credit for it. Seeing the simple request's hes made, no way he made this
 
syntheticx.... Who cares wether he made it or not, he's helping those that don't know how or are having trouble locating the other posts, 90% of the people on the forum can't find what they are looking for even though it's right here. I am having trouble....when I write !highscores ingame a list of highscores show up on screen but !highscores level/magic/fist etc are not working :/ nothing happens. I am using 8.1 XML. Aries server, devolutions.
 
Back
Top