RyanUSNS

gamrev.slua

Jun 4th, 2018
437
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.58 KB | None | 0 0
  1. ------------------------------------------------------------------------------------
  2. --  COMMUNITY CONTRIBUTION FOR CIT2.NET
  3. --  PURPOSE: GAM review - Ability to review
  4. --  DEVELOPERS: Ryan (acc:hassam)
  5. ------------------------------------------------------------------------------------
  6.  
  7. local gamDB = dbConnect("sqlite", "gamDB.db") --dbConnect("mysql", "dbname=HERE;host=HERE;", "username", "password")
  8. local gamStaff, groupInfo, groupMembers, plrPlayed = {}, {}, {}, {}
  9.  
  10. function addPermGAM(plr, cmd, acc)
  11.     local access = exports.CITadmin:getPlayerAdminLevel(plr)
  12.     local accAccess = getAccountName(getPlayerAccount(plr))
  13.     if (access <= 3 or accAccess ~= "hassam") then --Added my account as when a resource starts, I could add the currently GAMs. You can remove if it doesn't need.
  14.         return false
  15.     end
  16.     if (not getAccount(acc)) then
  17.         outputChatBox("Account doesn't exist.", plr, 255, 0, 0)
  18.         return false
  19.     end
  20.     local perm = not gamStaff[acc]
  21.     if (not perm) then
  22.         dbExec(gamDB, "DELETE FROM `gamStaff` WHERE `accname`=?", acc)
  23.     else
  24.         dbExec(gamDB, "INSERT INTO `gamStaff` (`accname`) VALUES(?)", acc)
  25.     end
  26.     gamStaff[acc] = perm
  27.     outputChatBox("GAM Permission: "..tostring(perm), plr, 0, 255, 0)
  28. end
  29. addCommandHandler("addgam", addPermGAM)
  30.  
  31. function showPanel(plr, cmd)
  32.     local acc = getAccountName(getPlayerAccount(plr))
  33.     if (not getGAMPermission(acc)) then
  34.         return false
  35.     end
  36.     triggerClientEvent(plr, "CITgamReview.showPanel", plr)
  37. end
  38. addCommandHandler("gamrev", showPanel)
  39.  
  40. function checkExistedGroup(groupName)
  41.     local gangAccounts = exports.CITgang:getGangAccounts(groupName)
  42.     if (not gangAccounts or #gangAccounts < 1) then
  43.         outputChatBox("Group doesn't exit.", client, 255, 0, 0)
  44.         return false
  45.     end
  46.     local countLast2 = 0
  47.     local sendTable = {}
  48.     for i, v in pairs(gangAccounts) do
  49.         if (groupMembers[v[1]] and ((groupMembers[v[1]][1][1] and groupMembers[v[1]][1][1] ~= 0) or (groupMembers[v[1]][2][1] and groupMembers[v[1]][2][1] ~= 0))) then
  50.             countLast2 = countLast2 + 1
  51.         end
  52.         if (not sendTable["members"]) then
  53.             sendTable["members"] = {}
  54.         end
  55.         local lastName = exports.CITaccounts:getLastUsedName(v[1])
  56.         sendTable["members"][#sendTable["members"] + 1] = {lastName[1], v[1], v[3], v[4]}
  57.         if (not sendTable["review"]) then
  58.             sendTable["review"] = {}
  59.         end
  60.         if (groupMembers[v[1]]) then
  61.             sendTable["review"][#sendTable["review"] + 1] = {v[1], lastName[1], groupMembers[v[1]]}
  62.         else
  63.             sendTable["review"][#sendTable["review"] + 1] = {v[1], lastName[1], {{0, 0}, {0, 0}, {0, 0}}}
  64.         end
  65.     end
  66.     local groupLevels = (getElementData(root, "groupLevels") or {})
  67.     if (not sendTable["info"]) then
  68.         sendTable["info"] = {}
  69.     end
  70.     if (not groupInfo[groupName]) then
  71.         groupInfo[groupName] = {"none", "none"}
  72.         dbExec(gamDB, "INSERT INTO `gamReview` (`groupname`, `datereviewed`, `reviewedby`) VALUES(?, ?, ?)", groupName, "none", "none")
  73.     end
  74.     sendTable["info"] = {#gangAccounts, groupLevels[groupName] or 0, countLast2, groupInfo[groupName][1], groupInfo[groupName][2]}
  75.     triggerClientEvent(client, "CITgamReview.groupCorrectEnabled", client, sendTable)
  76. end
  77. addEvent("CITgamReview.checkExistedGroup", true)
  78. addEventHandler("CITgamReview.checkExistedGroup", resourceRoot, checkExistedGroup)
  79.  
  80. function reviewedGroup(groupName)
  81.     if (groupInfo[groupName]) then
  82.         dbExec(gamDB, "UPDATE `gamReview` SET `datereviewed`=? AND `reviewedby`=? WHERE `groupname`=?", getDate(), getPlayerName(client), groupName)
  83.     else
  84.         dbExec(gamDB, "INSERT INTO `gamReview` (`groupname`, `datereviewed`, `reviewedby`) VALUES(?, ?, ?)", groupName, getDate(), getPlayerName(client))
  85.     end
  86.     groupInfo[groupName] = {getDate(), getPlayerName(client)}
  87. end
  88. addEvent("CITgamReview.reviewedGroup", true)
  89. addEventHandler("CITgamReview.reviewedGroup", resourceRoot, reviewedGroup)
  90.  
  91. function onPlrQuit()
  92.     local acc = getAccountName(getPlayerAccount(source))
  93.     if (not groupMembers[acc]) then
  94.         return true
  95.     end
  96.     groupMembers[acc][1][2] = groupMembers[acc][1][2] + 1
  97.     groupMembers[acc][1][1] = groupMembers[acc][1][1] + getElementData(source, "p") - plrPlayed[acc]
  98.     dbExec(gamDB, "UPDATE `gamLeadersRev` SET `fplaytime`=? AND `floginhits`=? WHERE `accname`=?", groupMembers[acc][1][1], groupMembers[acc][1][2], acc)
  99. end
  100. addEventHandler("onPlayerQuit", root, onPlrQuit)
  101.  
  102. function onPlrLogin(accPast, accID)
  103.     local acc = getAccountName(accID)
  104.     if (not groupMembers[acc]) then
  105.         groupMembers[acc] = {{0, 0}, {0, 0}, {0, 0}}
  106.         dbExec(gamDB, "INSERT INTO `gamLeadersRev` (`accname`, `fplaytime`, `floginhits`, `splaytime`, `sloginhits`, `tplaytime`, `tloginhits`) VALUES(?, ?, ?, ?, ?, ?, ?)", acc, 0, 1, 0, 0, 0, 0)
  107.         plrPlayed[acc] = getElementData(source, "p")
  108.         return true
  109.     end
  110.     plrPlayed[acc] = getElementData(source, "p")
  111. end
  112. addEventHandler("onPlayerLogin", root, onPlrLogin)
  113.  
  114. function changeRowTable()
  115.     for acc, v in pairs(groupMembers) do
  116.         v[3] = v[2]
  117.         v[2] = v[1]
  118.         v[1] = {0, 0}
  119.         dbExec(gamDB, "UPDATE `gamLeadersRev` SET `fplaytime`=? AND `floginhits`=? AND `splaytime`=? AND `sloginhits`=? AND `tplaytime`=? AND `tloginhits`=? WHERE `accname`=?", v[1][1], v[1][2], v[2][1], v[2][2], v[3][1], v[3][2], acc)
  120.     end
  121. end
  122. setTimer(changeRowTable, 2628000000, 0) --Every Month
  123.  
  124. --Exports
  125. function getGAMPermission(acc)
  126.     local plr = getAccountPlayer(getAccount(acc))
  127.     if (exports.CITadmin:getPlayerAdminLevel(plr) >= 4 or acc == "hassam") then
  128.         return true
  129.     end
  130.     return gamStaff[acc]
  131. end
  132.  
  133. --DB starts
  134. function resourceGAMStarts()
  135.     dbExec(gamDB, [[CREATE TABLE IF NOT EXISTS `gamReview` (
  136.                     `groupname` VARCHAR(32) NULL,
  137.                     `datereviewed` TEXT NULL,
  138.                     `reviewedby` VARCHAR(32) NULL)]])
  139.     dbQuery(resourceGAMQuery, {1}, gamDB, "SELECT * FROM gamReview")
  140.     dbExec(gamDB, [[CREATE TABLE IF NOT EXISTS `gamLeadersRev` (
  141.                     `accname` VARCHAR(32) NULL,
  142.                     `fplaytime` MEDIUMINT NULL,
  143.                     `floginhits` MEDIUMINT NULL,
  144.                     `splaytime` MEDIUMINT NULL,
  145.                     `sloginhits` MEDIUMINT NULL,
  146.                     `tplaytime` MEDIUMINT NULL,
  147.                     `tloginhits` MEDIUMINT NULL)]])
  148.     dbQuery(resourceGAMQuery, {2}, gamDB, "SELECT * FROM gamLeadersRev")
  149.     dbExec(gamDB, [[CREATE TABLE IF NOT EXISTS `gamStaff` (
  150.                     `accname` VARCHAR(32) NULL)]])
  151.     dbQuery(resourceGAMQuery, {3}, gamDB, "SELECT * FROM gamStaff")
  152. end
  153. addEventHandler("onResourceStart", resourceRoot, resourceGAMStarts)
  154.  
  155. function resourceGAMQuery(qh, number)
  156.     --Group Overview
  157.     if (number == 1) then
  158.         local data = dbPoll(qh, 0)
  159.         if (not data or #data < 0) then
  160.             return false
  161.         end
  162.         groupInfo = {}
  163.         for i, v in pairs(data) do
  164.             groupInfo[v.groupname] = {v.datereviewed, v.reviewedby}
  165.         end
  166.         return true
  167.     end
  168.     --Group Leaders Review
  169.     if (number == 2) then
  170.         local data = dbPoll(qh, 0)
  171.         if (not data or #data < 0) then
  172.             return false
  173.         end
  174.         groupMembers = {}
  175.         for k, v in pairs(data) do
  176.             if (not groupMembers[v.accname]) then
  177.                 groupMembers[v.accname] = {}
  178.             end
  179.             groupMembers[v.accname] = {{v.fplaytime, v.floginhits}, {v.splaytime, v.sloginhits}, {v.tplaytime, v.tloginhits}}
  180.         end
  181.         return true
  182.     end
  183.     -- GAM staffs
  184.     local data = dbPoll(qh, 0)
  185.     if (not data or #data < 0) then
  186.         return false
  187.     end
  188.     gamStaff = {}
  189.     for k, v in pairs(data) do
  190.         gamStaff[v.accname] = true
  191.     end
  192. end
  193.  
  194. --Useful functions (MTA Wiki)
  195. function getDate()
  196.     local time = getRealTime()
  197.     local year = time.year + 1900
  198.     local month = time.month + 1
  199.     local day = time.monthday
  200.     return (year.."."..month.."."..day.." ")
  201. end
Advertisement
Add Comment
Please, Sign In to add comment