Jump to content

Wleed1998

Members
  • Posts

    320
  • Joined

  • Last visited

Everything posted by Wleed1998

  1. السلام عليكم ورحمة الله و بركاته انا جديد بي المنتدى بس اعرف افتح موضوع انا مبرمج متوسط بس سويت مود اعلى تواجد كل شي تمام حتى الديبوق مايظهر فيه شي كلنت local rankTable = {} local oldTick = 0 local timeToUpdate = 3000 GUIEditor = { gridlist = {}, window = {}, label = {} } addEventHandler("onClientResourceStart", resourceRoot, function() GUIEditor.window[1] = guiCreateWindow(215, 117, 460, 403, "اعلى 30 تواجد في السـيـرفـر", false) guiWindowSetSizable(GUIEditor.window[1], false) guiSetAlpha(GUIEditor.window[1], 1.00) guiSetProperty(GUIEditor.window[1], "CaptionColour", "FF01FAB6") Gridilist = guiCreateGridList(10, 54, 436, 324, false, GUIEditor.window[1]) guiGridListAddColumn(Gridilist, "playerName", 0.5) guiGridListAddColumn(Gridilist, "PlayTime", 0.5) GUIEditor.label[1] = guiCreateLabel(-7, -45, 453, 40, "", false, GUIEditor.gridlist[1]) end ) function on() 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["PlayTime"],false,false) end end function TopGui() local guiS = guiGetVisible(GUIEditor.window[1]) guiSetVisible(GUIEditor.window[1],not guiS) showCursor(not guiS) guiSetInputEnabled(not guiS) end bindKey("F12","down",TopGui) سيرفر 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) 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,["PlayTime"] = data}) end end table.sort(sendTable,function(a,b) return tonumber(a["PlayTime"] or 0)>tonumber(b["PlayTime"] 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]["PlayTime"] = 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 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) end outputChatBox("تم تحديث اعلى تواجد") end function resetConsoleTop(p) local accName = getAccountName(getPlayerAccount(p)) if(isObjectInACLGroup("user." .. accName, aclGetGroup("Console")))then ResetTopPlayers() else outputChatBox("هذا الخاصيه فقط لـ الكونسل",p) end end addCommandHandler("CL1",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
×
×
  • Create New...