Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------------------------------------------------
- -- COMMUNITY CONTRIBUTION FOR CIT2.NET
- -- PURPOSE: GAM review - Ability to review
- -- DEVELOPERS: Ryan (acc:hassam)
- ------------------------------------------------------------------------------------
- local gamDB = dbConnect("sqlite", "gamDB.db") --dbConnect("mysql", "dbname=HERE;host=HERE;", "username", "password")
- local gamStaff, groupInfo, groupMembers, plrPlayed = {}, {}, {}, {}
- function addPermGAM(plr, cmd, acc)
- local access = exports.CITadmin:getPlayerAdminLevel(plr)
- local accAccess = getAccountName(getPlayerAccount(plr))
- 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.
- return false
- end
- if (not getAccount(acc)) then
- outputChatBox("Account doesn't exist.", plr, 255, 0, 0)
- return false
- end
- local perm = not gamStaff[acc]
- if (not perm) then
- dbExec(gamDB, "DELETE FROM `gamStaff` WHERE `accname`=?", acc)
- else
- dbExec(gamDB, "INSERT INTO `gamStaff` (`accname`) VALUES(?)", acc)
- end
- gamStaff[acc] = perm
- outputChatBox("GAM Permission: "..tostring(perm), plr, 0, 255, 0)
- end
- addCommandHandler("addgam", addPermGAM)
- function showPanel(plr, cmd)
- local acc = getAccountName(getPlayerAccount(plr))
- if (not getGAMPermission(acc)) then
- return false
- end
- triggerClientEvent(plr, "CITgamReview.showPanel", plr)
- end
- addCommandHandler("gamrev", showPanel)
- function checkExistedGroup(groupName)
- local gangAccounts = exports.CITgang:getGangAccounts(groupName)
- if (not gangAccounts or #gangAccounts < 1) then
- outputChatBox("Group doesn't exit.", client, 255, 0, 0)
- return false
- end
- local countLast2 = 0
- local sendTable = {}
- for i, v in pairs(gangAccounts) do
- 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
- countLast2 = countLast2 + 1
- end
- if (not sendTable["members"]) then
- sendTable["members"] = {}
- end
- local lastName = exports.CITaccounts:getLastUsedName(v[1])
- sendTable["members"][#sendTable["members"] + 1] = {lastName[1], v[1], v[3], v[4]}
- if (not sendTable["review"]) then
- sendTable["review"] = {}
- end
- if (groupMembers[v[1]]) then
- sendTable["review"][#sendTable["review"] + 1] = {v[1], lastName[1], groupMembers[v[1]]}
- else
- sendTable["review"][#sendTable["review"] + 1] = {v[1], lastName[1], {{0, 0}, {0, 0}, {0, 0}}}
- end
- end
- local groupLevels = (getElementData(root, "groupLevels") or {})
- if (not sendTable["info"]) then
- sendTable["info"] = {}
- end
- if (not groupInfo[groupName]) then
- groupInfo[groupName] = {"none", "none"}
- dbExec(gamDB, "INSERT INTO `gamReview` (`groupname`, `datereviewed`, `reviewedby`) VALUES(?, ?, ?)", groupName, "none", "none")
- end
- sendTable["info"] = {#gangAccounts, groupLevels[groupName] or 0, countLast2, groupInfo[groupName][1], groupInfo[groupName][2]}
- triggerClientEvent(client, "CITgamReview.groupCorrectEnabled", client, sendTable)
- end
- addEvent("CITgamReview.checkExistedGroup", true)
- addEventHandler("CITgamReview.checkExistedGroup", resourceRoot, checkExistedGroup)
- function reviewedGroup(groupName)
- if (groupInfo[groupName]) then
- dbExec(gamDB, "UPDATE `gamReview` SET `datereviewed`=? AND `reviewedby`=? WHERE `groupname`=?", getDate(), getPlayerName(client), groupName)
- else
- dbExec(gamDB, "INSERT INTO `gamReview` (`groupname`, `datereviewed`, `reviewedby`) VALUES(?, ?, ?)", groupName, getDate(), getPlayerName(client))
- end
- groupInfo[groupName] = {getDate(), getPlayerName(client)}
- end
- addEvent("CITgamReview.reviewedGroup", true)
- addEventHandler("CITgamReview.reviewedGroup", resourceRoot, reviewedGroup)
- function onPlrQuit()
- local acc = getAccountName(getPlayerAccount(source))
- if (not groupMembers[acc]) then
- return true
- end
- groupMembers[acc][1][2] = groupMembers[acc][1][2] + 1
- groupMembers[acc][1][1] = groupMembers[acc][1][1] + getElementData(source, "p") - plrPlayed[acc]
- dbExec(gamDB, "UPDATE `gamLeadersRev` SET `fplaytime`=? AND `floginhits`=? WHERE `accname`=?", groupMembers[acc][1][1], groupMembers[acc][1][2], acc)
- end
- addEventHandler("onPlayerQuit", root, onPlrQuit)
- function onPlrLogin(accPast, accID)
- local acc = getAccountName(accID)
- if (not groupMembers[acc]) then
- groupMembers[acc] = {{0, 0}, {0, 0}, {0, 0}}
- dbExec(gamDB, "INSERT INTO `gamLeadersRev` (`accname`, `fplaytime`, `floginhits`, `splaytime`, `sloginhits`, `tplaytime`, `tloginhits`) VALUES(?, ?, ?, ?, ?, ?, ?)", acc, 0, 1, 0, 0, 0, 0)
- plrPlayed[acc] = getElementData(source, "p")
- return true
- end
- plrPlayed[acc] = getElementData(source, "p")
- end
- addEventHandler("onPlayerLogin", root, onPlrLogin)
- function changeRowTable()
- for acc, v in pairs(groupMembers) do
- v[3] = v[2]
- v[2] = v[1]
- v[1] = {0, 0}
- 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)
- end
- end
- setTimer(changeRowTable, 2628000000, 0) --Every Month
- --Exports
- function getGAMPermission(acc)
- local plr = getAccountPlayer(getAccount(acc))
- if (exports.CITadmin:getPlayerAdminLevel(plr) >= 4 or acc == "hassam") then
- return true
- end
- return gamStaff[acc]
- end
- --DB starts
- function resourceGAMStarts()
- dbExec(gamDB, [[CREATE TABLE IF NOT EXISTS `gamReview` (
- `groupname` VARCHAR(32) NULL,
- `datereviewed` TEXT NULL,
- `reviewedby` VARCHAR(32) NULL)]])
- dbQuery(resourceGAMQuery, {1}, gamDB, "SELECT * FROM gamReview")
- dbExec(gamDB, [[CREATE TABLE IF NOT EXISTS `gamLeadersRev` (
- `accname` VARCHAR(32) NULL,
- `fplaytime` MEDIUMINT NULL,
- `floginhits` MEDIUMINT NULL,
- `splaytime` MEDIUMINT NULL,
- `sloginhits` MEDIUMINT NULL,
- `tplaytime` MEDIUMINT NULL,
- `tloginhits` MEDIUMINT NULL)]])
- dbQuery(resourceGAMQuery, {2}, gamDB, "SELECT * FROM gamLeadersRev")
- dbExec(gamDB, [[CREATE TABLE IF NOT EXISTS `gamStaff` (
- `accname` VARCHAR(32) NULL)]])
- dbQuery(resourceGAMQuery, {3}, gamDB, "SELECT * FROM gamStaff")
- end
- addEventHandler("onResourceStart", resourceRoot, resourceGAMStarts)
- function resourceGAMQuery(qh, number)
- --Group Overview
- if (number == 1) then
- local data = dbPoll(qh, 0)
- if (not data or #data < 0) then
- return false
- end
- groupInfo = {}
- for i, v in pairs(data) do
- groupInfo[v.groupname] = {v.datereviewed, v.reviewedby}
- end
- return true
- end
- --Group Leaders Review
- if (number == 2) then
- local data = dbPoll(qh, 0)
- if (not data or #data < 0) then
- return false
- end
- groupMembers = {}
- for k, v in pairs(data) do
- if (not groupMembers[v.accname]) then
- groupMembers[v.accname] = {}
- end
- groupMembers[v.accname] = {{v.fplaytime, v.floginhits}, {v.splaytime, v.sloginhits}, {v.tplaytime, v.tloginhits}}
- end
- return true
- end
- -- GAM staffs
- local data = dbPoll(qh, 0)
- if (not data or #data < 0) then
- return false
- end
- gamStaff = {}
- for k, v in pairs(data) do
- gamStaff[v.accname] = true
- end
- end
- --Useful functions (MTA Wiki)
- function getDate()
- local time = getRealTime()
- local year = time.year + 1900
- local month = time.month + 1
- local day = time.monthday
- return (year.."."..month.."."..day.." ")
- end
Advertisement
Add Comment
Please, Sign In to add comment