SaedAmer Posted July 12, 2016 Share Posted July 12, 2016 (edited) السلام عليكم المفرود يجيب التوب في الوقت و الديرفت بس ما يجيب الديرفت 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 July 12, 2016 by Guest Link to comment
N3xT Posted July 12, 2016 Share Posted July 12, 2016 لازم كل مرة نقولك وش يجيك بالديبق Link to comment
SaedAmer Posted July 12, 2016 Author Share Posted July 12, 2016 لازم كل مرة نقولك وش يجيك بالديبق نسيت Link to comment
SaedAmer Posted July 12, 2016 Author Share Posted July 12, 2016 اخ نكست ما يظهر شئ بالدي بق Link to comment
SaedAmer Posted July 12, 2016 Author Share Posted July 12, 2016 طيب تأكد من الميتا يا اخي المود شغال يجيب الوقت فقط بس الديرفت ما يجيب شوف الاكواد حطيت تعديل Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now