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

An additional highscores! But hard.

Fagin

New Member
Joined
May 20, 2014
Messages
77
Reaction score
3
Well, I want another script added to my highscores script, that it shows the reborns I reborned.
I know it maybe hard, but I'll repp+++ if someone helped me out.

Script:
Code:
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

Reborn script:
Code:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local Topic = {}

local reborn = 2500 -- free storage
local spellReborn = {
    [1] = 'Reborn1',
    [5] = 'Reborn5',
    [10] = 'Reborn10',
    [25] = 'Reborn25',
    [50] = 'Reborn50',
    [100] = 'Reborn100',
    [250] = 'Reborn250',
    [500] = 'Reborn500'
}
local level = 300000
local maxReborns = 300
local toLevel = 100

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                    npcHandler:onThink() end

function greetCallback(cid)
    Topic[cid] = nil
    return true
end

function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    elseif Topic[cid] then
        if msgcontains(msg, 'yes') then
            if getCreatureStorage(cid, reborn) < maxReborns then
                doCreatureSetStorage(cid, reborn, math.max(0, getCreatureStorage(cid, reborn)) + 1)
                for k, v in pairs(spellReborn) do
                    if getCreatureStorage(cid, reborn) == k then
                        doPlayerLearnInstantSpell(cid, v)
                        doSendMagicEffect(getThingPosition(cid), CONST_ME_FIREWORK_RED)
                        break
                    end
                end
               
                local g = getPlayerGUID(cid)
                npcHandler:releaseFocus(cid)
                doRemoveCreature(cid)
                db.executeQuery('UPDATE players SET level=99,experience=15219400 WHERE id=' .. g)
            else
                npcHandler:say('You reached maximum amount of reborns.', cid)
            end
        else
            npcHandler:say('Maybe next time.', cid)
        end
        Topic[cid] = nil
    else
        if msgcontains(msg, 'reborn') then
            if getPlayerLevel(cid) >= level then
                npcHandler:say('Are you sure that you want to make reborn?',cid)
                Topic[cid] = 1
            else
                npcHandler:say('You don\'t have enough level. ['..level..']',cid)
                Topic[cid] = nil
            end
        end
    end
    return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
creaturescripts/scripts/reborn.lua
This is a onLook doing the other request

Code:
function onLook(cid, thing, position, lookDistance)
if(not isPlayer(thing.uid)) then
return true
end
local reborns = getCreatureStorage(thing.uid, reborn)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see "..getCreatureName(thing.uid).."(Level "..getPlayerLevel(thing.uid)..") ["..(reborns == 1 and "Reborn" or "Reborns").."]. "..(getPlayerSex(thing.uid) == 0 and "She" or "He").." is a "..getVocationInfo(getPlayerVocation(thing.uid)).name..".")
return false
end
 
Code:
<event type="look" name="reborn" event="script" value="reborn.lua"/>
and don't forget the login...

Your Script Doesn't support a full list of highest reborn
 
Code:
function onLook(cid, thing, position, lookDistance)
if(not isPlayer(thing.uid)) then
return true
end
local reborns = getCreatureStorage(thing.uid, reborn)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see "..getCreatureName(thing.uid).."(Level "..getPlayerLevel(thing.uid)..") ["..reborns.." Reborn]. "..(getPlayerSex(thing.uid) == 0 and "She" or "He").." is a "..getVocationInfo(getPlayerVocation(thing.uid)).name..".")
return false
end
 
Back
Top