• 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 need a little part of code

5lave Ots

Active Member
Joined
Oct 2, 2017
Messages
247
Solutions
1
Reaction score
40
Location
Ankrahmun
goodnight i'm trying to make a script that animate the top player on my srever (rebirth)
so i need to know how i can get the max value of player rebirths from a table,
or any other idea so that the highest Reb player got an effect above him
function: getPlayerRebirth(cid)
tibia 860. tfs 0.4
rep++


i tried to make this script but it doesnt work
LUA:
--  getPlayerGUID()
local List = {}
function onThink(intraval)
    for _, online in ipairs(getOnlinePlayers()) do
    local name = getPlayerByName(online)
            if getPlayerRebirth(name) >= 0 then
            table.insert(List, getPlayerRebirth(name))--contain 'number' reb val of every player
    --        table.insert(List, name)--cid
            end
        --     table.find(List,table.maxn(List)) --can i use this?
    for _, List2 in ipairs(List) do
local cid = getPlayerByName(numberToVariant(math.max(List2)))
local cid2 = getPlayerByName(top1)
    doSendMagicEffect(getCreaturePosition(cid), 67)
end
          
end
return true
end
 
Last edited by a moderator:
I like that your trying. :)

(If multiple people have the same highscore for player rebirth level, it will send a effect to all of them)

Try the below script. Tell me how it goes.

LUA:
local highest_players = {{0, 0}}

function onThink(cid, interval)
   for _, cid in ipairs(getPlayersOnline()) do
       local r_level = getPlayerRebirth(cid)
       if r_level > highest_players[1][2] then
           highest_players = {{cid, r_level}}
       elseif r_level == highest_players[1][2] then
           highest_players[#highest_players + 1] = {cid, r_level}       
       end
   end
   for i = 1, #highest_players do
       if isPlayer(highest_players[i][1]) then
           doSendMagicEffect(getCreaturePosition(highest_players[i][1]), 67)
       end
   end
   return true
end
 
I wouldnt recommend doing this through creaturescripts. Every single person on the game will be running this code and its going to cause lag/problems. I would use a global event and do something more like this:

LUA:
function getHighestRebirthPlayer()
    local resultr, ret = db.storeQuery("SELECT * FROM `players` ORDER BY `rebirth`, `experience` DESC LIMIT 1;")
        ret = resultr.getDataString(resultr,'name')
        result.free(resultr)
        return ret
end

function onThink(interval)
    highest_player = getPlayerByNameWildcard(getHighestRebirthPlayer())
 
    if highest_player then
        doSendMagicEffect(getCreaturePosition(highest_player), 67)
    end
return true
end
 

Similar threads

Back
Top