Jump to content

x[ تصحيح خطا ]x توب


Recommended Posts

السلام عليكم

المفرود يجيب التوب في الوقت و الديرفت بس ما يجيب الديرفت

local rankTable = {} 
local oldTick = 0 
local timeToUpdate = 3000 -- delay 3 second to dont get lag, list update only 3 sec after player choose  
  
  
        guiComboBoxAddItem(Combobox,"Play Time")--Tempo Total Vivo 
        guiComboBoxAddItem(Combobox,"Dirft")--Tempo Total Vivo 
        Gridilist = guiCreateGridList(0.04, 0.15, 0.93, 0.83, true, JanelaPrincipal) 
        guiGridListAddColumn(Gridilist, "Player Name", 0.5) 
        guiGridListAddColumn(Gridilist, "Value", 0.5) 
        guiSetVisible(JanelaPrincipal,false) 
        addEventHandler ( "onClientGUIComboBoxAccepted", Combobox,onComboboxChange)  
        oldTick = getTickCount() 
end) 
  
function onComboboxChange() 
local item = guiComboBoxGetSelected(Combobox) 
local text = tostring(guiComboBoxGetItemText(Combobox,item)) 
if(text == "Choose Classification")then return end 
local currentTick = getTickCount() 
if(currentTick-oldTick>=timeToUpdate)then  
oldTick = currentTick 
triggerServerEvent("onTopPlayerListRequest",localPlayer,text) 
end 
end 
  
  
  
addEvent("onClientReceiveTopListTable",true) 
addEventHandler("onClientReceiveTopListTable",root, 
function(t) 
rankTable = t 
UpdateTopList() 
end) 
  
function UpdateTopList() 
guiGridListClear(Gridilist) 
for k,v in ipairs(rankTable) do  
local row = guiGridListAddRow(Gridilist) 
guiGridListSetItemText(Gridilist,row,1,v["playerName"],false,false) 
guiGridListSetItemText(Gridilist,row,2,v["Value"],false,false) 
end 
end 
  
function ToggleTopGui() 
local guiS = guiGetVisible(JanelaPrincipal) 
guiSetVisible(JanelaPrincipal,not guiS) 
showCursor(not guiS) 
guiSetInputEnabled(not guiS) 
end 
bindKey("F7","down",ToggleTopGui) 
  
  
  
  
------------------------- 
  
function convertNumber ( number )   
    local formatted = number   
    while true do       
        formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')     
        if ( k==0 ) then       
            break    
        end   
    end   
    return formatted 
end 
  
function updateTopList(name, top, i) 
local row = guiGridListAddRow ( Gridilist ) 
guiGridListSetItemText ( Gridilist, row, column, "" .. i .. "-", false, false ) 
guiGridListSetItemText ( Gridilist, row, column1, tostring(name), false, false ) 
guiGridListSetItemText ( Gridilist, row, column2, convertNumber(top), false, false ) 
guiGridListSetItemColor( Gridilist, row, column1, 255, 255, 0) 
guiGridListSetItemColor( Gridilist, row, column2, 0, 180, 255) 
guiGridListSetItemColor( Gridilist, row, column, 255, 0, 0) 
end 
addEvent("updateTop", true) 
addEventHandler("updateTop", root, updateTopList) 
  
function update() 
guiGridListClear(Gridilist) 
end 
addEvent("deltTop", true) 
addEventHandler("deltTop", root, update) 
  
  

سيرفر

-- rank system 
local playTime = {}
 
function onLogin(old,current)
if(current and not isGuestAccount(current))then
local timeHour    = tonumber(getAccountData(current,"hour"))or 0
local timeMinute  = tonumber(getAccountData(current,"minute"))or 0
local timeSecond  = tonumber(getAccountData(current,"second"))or 0
if(not playTime[source])then
playTime[source] = {
["hour"] = 0,
["min"]  = 0,
["sec"] = 0
}
end
playTime[source]["hour"] = timeHour
playTime[source]["min"] = timeMinute
playTime[source]["sec"] = timeSecond
end
end
addEventHandler("onPlayerLogin",root,onLogin)
 
function onQuit()
local acc = getPlayerAccount(source)
if(acc and not isGuestAccount(acc))then
local timeHour = playTime[source]["hour"] or 0
local timeMin  = playTime[source]["min"] or 0
local timeSec  = playTime[source]["sec"] or 0
local name = getPlayerName(source)
local nickAcc = string.gsub(name,"#%x%x%x%x%x%x","")
setAccountData(acc,"hour",timeHour)
setAccountData(acc,"minute",timeMin)
setAccountData(acc,"second",timeSec)
setAccountData(acc,"PlayerName",nickAcc)
playTime[source] = nil
end
end
addEventHandler("onPlayerQuit",root,onQuit)
 
function onWasted(_,killer,_,body)
if(killer and getElementType(killer)=="player" and killer~=source)then
addPlayerKillCount(killer)
addWastedCount(source)
end
if(killer and getElementType(killer)~="player" and killer~=source)then
addWastedCount(source)
end
if(body == 9 and (getElementType(killer)=="player" or getElementType(killer)=="ped"))then
addHeadShotCount(killer)
end
end
addEventHandler("onPlayerWasted",root,onWasted)
 
function onPedWasted(_,killer,_,body)
local isZumbie = getElementData(source,"zombie") or false
if(killer and getElementType(killer) == "player" and isZumbie)then
addZombieKillCount(killer)
if(body == 9)then
addHeadShotCount(killer)
end
end
end
addEventHandler("onPedWasted",root,onPedWasted)
 
 
function addHeadShotCount(p)
local acc = getPlayerAccount(p)
if(acc and isGuestAccount(acc)==false)then
local hs = tonumber((getAccountData(acc,"HeadShots"))) or 0
setAccountData(acc,"HeadShots",hs+1)
end
end
 
 
 
function addZombieKillCount(p)
local acc = getPlayerAccount(p)
if(acc and isGuestAccount(acc)==false)then
local zk = tonumber((getAccountData(acc,"Zombies Kills"))) or 0
setAccountData(acc,"Zombies Kills",zk+1)
end
end
 
 
function addPlayerKillCount(p)
local acc = getPlayerAccount(p)
if(acc and isGuestAccount(acc)==false)then
local pk = tonumber((getAccountData(acc,"Players Kills"))) or 0
setAccountData(acc,"Players Kills",pk+1)
end
end
 
 
function addWastedCount(p)
local acc = getPlayerAccount(p)
if(acc and isGuestAccount(acc)==false)then
local w = tonumber((getAccountData(acc,"Wasted"))) or 0
setAccountData(acc,"Wasted",w+1)
end
end
 
 
function onChangeNick(old,new)
local acc = getPlayerAccount(source)
if(acc and isGuestAccount(acc)==false)then
local nickAcc = string.gsub(new,"#%x%x%x%x%x%x","")
setAccountData(acc,"PlayerName",nickAcc)
end
end
addEventHandler("onPlayerChangeNick",root,onChangeNick)
 
 
addEvent("onTopPlayerListRequest",true)
addEventHandler("onTopPlayerListRequest",root,
function(text)
local allAccounts = getAccounts()
local sendTable = {}
local data = 0
for k,v in ipairs(allAccounts) do
local name = getAccountName(v)
local dataHour = tonumber(getAccountData(v,"hour")) or 0
local dataMin = tonumber(getAccountData(v,"minute")) or 0
local dataSec = tonumber(getAccountData(v,"second")) or 0
if(text == "Play Time")then
data = dataHour+DividiveIfMoreZero(dataMin,60)+DividiveIfMoreZero(dataSec,3600)
else
data = tonumber(getAccountData(v,text) or 0)or 0
end
if(data>0)then
table.insert(sendTable,{["playerName"] = name,["Value"] = data})
end
end
table.sort(sendTable,function(a,b) return tonumber(a["Value"] or 0)>tonumber(b["Value"] or 0) end)
table.setMaxIndex(sendTable,10)
if(text == "Play Time")then
for i=1,#sendTable do
local timeString = ""
local nAcc = getAccount(sendTable[i]["playerName"])
local hourS = getAccountData(nAcc,"hour") or 0
local minS = getAccountData(nAcc,"minute") or 0
local secS = getAccountData(nAcc,"second") or 0
hourS = tostring(hourS)
minS = tostring(minS)
secS = tostring(secS)
timeString = hourS..":"..minS..":"..secS
sendTable[i]["Value"] = timeString
end
end
for i=1,#sendTable do
local acc = getAccount(sendTable[i]["playerName"])
local accRealName = getAccountData(acc,"PlayerName")
if(accRealName and tostring(accRealName)~="false")then
sendTable[i]["playerName"] = accRealName
end
end
triggerClientEvent(client,"onClientReceiveTopListTable",client,sendTable)
end)
 
function table.setMaxIndex(t,n)
if(#t>n)then
while(#t>n)do
table.remove(t)
end
end
end
 
function DividiveIfMoreZero(v,d)
if(v>0)then return (v/d) end
return 0
end
 
 
-- save
 
function SavePlayTime()
local players = getElementsByType("player")
for k,v in ipairs(players) do
if(not playTime[v]) then
playTime[v] = {
["hour"] = 0,
["min"]  = 0,
["sec"] = 0
}
end
playTime[v]["sec"] = tonumber(playTime[v]["sec"]+1)
convertTime(v,playTime[v]["min"],playTime[v]["sec"])
local hour = playTime[v]["hour"]
local min  = playTime[v]["min"]
local sec  = playTime[v]["sec"]
local acc = getPlayerAccount(v)
if(acc and isGuestAccount(acc)==false)then
setAccountData(acc,"hour",hour)
setAccountData(acc,"minute",min)
setAccountData(acc,"second",sec)
end
end
setTimer(SavePlayTime,1000,1)
end
setTimer(SavePlayTime,1000,1)
 
 
function ResetTopPlayers()
local allAccounts = getAccounts()
for k,v in ipairs(allAccounts) do
setAccountData(v,"hour",0)
setAccountData(v,"minute",0)
setAccountData(v,"second",0)
setAccountData(v,"Zombies Kills",0)
setAccountData(v,"HeadShots",0)
setAccountData(v,"Players Kills",0)
setAccountData(v,"Wasted",0)
end
outputChatBox("[server]: Clear Top 10 list!")
end
 
function resetConsoleTop(p)
local accName = getAccountName(getPlayerAccount(p))
if(isObjectInACLGroup("user." .. accName, aclGetGroup("Console")))then
ResetTopPlayers()
else
outputChatBox("Only console can clear Top 10 list!",p)
end
end
addCommandHandler("rplayer",resetConsoleTop)
 
function convertTime(source,m,s)
if(s>=60)then
playTime[source]["min"] = tonumber(playTime[source]["min"]+1)
playTime[source]["sec"]  = 0
end
if(m>=60)then
playTime[source]["hour"] = tonumber(playTime[source]["hour"]+1)
playTime[source]["min"]  = 0
end
end
 
 
 
-------------------------------
 
drift_mejor = 0
addEventHandler( 'onResourceStart', getResourceRootElement(getThisResource()),
    function( )
        executeSQLQuery( 'CREATE TABLE IF NOT EXISTS Drift_top_byS3Dd (Owner, Score, Name)' )
    end
)
 
function getPlayerFromNamePart(name)
    if name then
        for i, player in ipairs(getElementsByType("player")) do
            if
Edited by Guest
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...