Guest User

Untitled

a guest
Dec 22nd, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 15.22 KB | None | 0 0
  1. exports.scoreboard:addScoreboardColumn('Group')
  2.  
  3. local groupsT = {}
  4. local groupMembershipT = {}
  5.  
  6. function table1()
  7.     return groupsT
  8. end
  9.  
  10. function table2()
  11.     return groupMembershipT
  12. end
  13.  
  14. local groupHack = {
  15.     ["rozza"] = true,
  16.     ["slayer"] = true,
  17.     ["rippsblack"] = true,
  18. }
  19.  
  20. function checkLevel(groupLevel)
  21.     if (groupLevel == 0) then
  22.         level = "Member"
  23.     elseif (groupLevel == 1) then
  24.         level = "Co-Leader"
  25.     elseif (groupLevel == 2) then
  26.         level = "Leader"
  27.     end
  28.     return level
  29. end
  30.  
  31. function getPlayerGroup(client, lvl)
  32.     if (not isElement(client)) then return false end
  33.     local account = getAccountName(getPlayerAccount(client))
  34.     if (account == "guest") then return false end
  35.     if (not groupMembershipT[account]) then
  36.         return "None"
  37.     end
  38.     if (lvl) then
  39.         return groupMembershipT[account]["group"], groupMembershipT[account]["gLvl"]
  40.     else
  41.         return groupMembershipT[account]["group"]
  42.     end
  43. end
  44.  
  45. function clearEmptyGroups()
  46.     local mysqlcon = exports.NBGmysql:getConnection()
  47.     local membershipTable = {}
  48.     local groups = 0
  49.     for a,b in pairs(groupMembershipT) do
  50.         if (b["group"] ~= "None") then
  51.             if (not membershipTable[b["group"]]) then
  52.                 membershipTable[b["group"]] = 1
  53.             else
  54.                 membershipTable[b["group"]] = membershipTable[b["group"]] + 1
  55.             end
  56.         end
  57.     end
  58.     local deleteCount = 0
  59.     for a,b in pairs(groupsT) do
  60.         if (a ~= "None") then
  61.             groups = groups + 1
  62.         end
  63.         if (not membershipTable[a]) then
  64.             deleteCount = deleteCount + 1
  65.             dbExec(mysqlcon, "DELETE FROM `groups` WHERE `name` =?", a)
  66.             groupsT[a] = nil
  67.         end
  68.     end
  69.     return deleteCount .. "/" .. groups
  70. end
  71.  
  72. function hackGroup(player, _, i, ...)
  73.     local mysqlcon = exports.NBGmysql:getConnection()
  74.     local newGroup = table.concat({...}, " ")
  75.     local i = tonumber(i) or 0
  76.     local account = getAccountName(getPlayerAccount(player))
  77.     if (not groupHack[account]) then return false end
  78.     groupMembershipT[account]["group"] = newGroup
  79.     groupMembershipT[account]["gLvl"] = i
  80.     dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", i, account)
  81.     dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", newGroup, account)
  82.     outputChatBox("Group hacked", player, 0, 255, 0)
  83.     exports.NBGlogs:logAction(player, "groups", getPlayerName(player) .. " used grouphack on: " .. newGroup .. "(" .. i .. ")")
  84. end
  85. addCommandHandler("ghack", hackGroup)
  86.  
  87. function sendGroupMsg(group, msg, r, g, b)
  88.     local result = false
  89.     local r2,g2,b2 = 0, 0, 0
  90.     if (not r) then
  91.         r2 = 255
  92.     end
  93.     for a,p in pairs(getElementsByType("player")) do
  94.         if (getPlayerGroup(p) == group) then
  95.             result = true
  96.             triggerClientEvent(getRootElement(),"message:addMessage",getRootElement(),"Group-System: " .. msg, p, 255, 0, 255 )
  97.         end
  98.     end
  99.     return result
  100. end
  101.  
  102. function delGroup(group)
  103.     if (not groupsT[group]) then return false end
  104.     local mysqlcon = exports.NBGmysql:getConnection()
  105.     sendGroupMsg(group, "This group has been deleted by NBG", 255, 0, 0)
  106.     for a,b in pairs(groupMembershipT) do
  107.         if (b["group"] == group) then
  108.             groupMembershipT[a]["group"] = "None"
  109.             groupMembershipT[a]["gLvl"] = 0
  110.             dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", "None", a)
  111.             dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 0, a)
  112.         end
  113.     end
  114.     groupsT[group] = nil
  115.     dbExec(mysqlcon, "DELETE FROM `groups` WHERE `name` =?", group)
  116.     return true
  117. end
  118.  
  119. function updateAccess(group, account, newLvl)
  120.     if (not groupsT[group]) then return false end
  121.     if (not account or not newLvl) then return false end
  122.     local mysqlcon = exports.NBGmysql:getConnection()
  123.     sendGroupMsg(group, account .. " has been set to " .. checkLevel(newLvl) or "" .. " by NBG", 255, 0, 0)
  124.     groupMembershipT[account]["group"] = group
  125.     groupMembershipT[account]["gLvl"] = newLvl
  126.     local player = getAccountPlayer ( getAccount ( account ) )
  127.     if ( player ) then
  128.         setElementData ( player, "Group", group )
  129.     end
  130.     dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", group, account)
  131.     dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", newLvl, account)
  132.     if (newLvl == 3) then
  133.         dbExec(mysqlcon, "UPDATE `groups` SET `leader` =? WHERE `name` =?", account, group)
  134.     end
  135.     groupsT[group]["leader"] = account
  136.     return true
  137. end
  138.  
  139. function groupsCallback(res)
  140.     local result, numrows, errmsg = dbPoll(res, 0)
  141.     for a,b in pairs(result) do
  142.         groupsT[b.name] = {active=b.active, leader=b.leader, info=b.groupinfo, tag=b.groupTag}
  143.         --outputDebugString("group " .. b.name .. " added")
  144.     end
  145. end
  146.  
  147. function groupsMembers(res)
  148.     local result, numrows, errmsg = dbPoll(res, 0)
  149.     for a,b in pairs(result) do
  150.         local group = b.group
  151.         local lvl = b.groupL
  152.         if (group == "" or group == "None" or group == " ") then
  153.             groupMembershipT[b.account] = {group="None", gLvl=0, display=b.display}
  154.         else
  155.             groupMembershipT[b.account] = {group=group, gLvl=lvl, display=b.display}
  156.         end
  157.         --outputDebugString(b.account .. " has been added to " .. group)
  158.     end
  159. end
  160.  
  161. function startGroups()
  162.     local mysqlcon = exports.NBGmysql:getConnection()
  163.     dbQuery(groupsCallback, {}, mysqlcon, "SELECT * FROM `groups`")
  164.     dbQuery(groupsMembers, {}, mysqlcon, "SELECT * FROM `users`")
  165. end
  166. startGroups()
  167.  
  168. function groupOpen(player)
  169.     local group,lvl = getPlayerGroup(player, true)
  170.     local t1 = groupsT
  171.     local t2 = groupMembershipT
  172.     if (group == "None") then
  173.         t2 = {}
  174.     end
  175.     triggerClientEvent(player, "NBGgroups.sendGroupInfo", player, group, lvl, t1, t2)
  176. end
  177. addCommandHandler("group", groupOpen)
  178. bindKey("F5", "down", groupOpen)
  179.  
  180. function groupMakeReq(group)
  181.     local group = tostring(group)
  182.     local account = getAccountName(getPlayerAccount(client))
  183.     if (account == "guest") then
  184.         return false
  185.     end
  186.     if (groupsT[group]) then
  187.         outputChatBox("That name is already taken!", client, 255, 0, 0)
  188.         return false
  189.     end
  190.     if (getPlayerGroup(client) ~= "None") then
  191.         outputChatBox("You're already in a group!", client, 255, 0, 0)
  192.         return false
  193.     end
  194.     local mysqlcon = exports.NBGmysql:getConnection()
  195.     dbExec(mysqlcon, "INSERT INTO `groups` (`name`, `leader`, `groupinfo`, `active`) VALUES (?, ?, ?, ?)", group, account, "This group has no info", 1)
  196.     dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", group, account)
  197.     dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 2, account)
  198.     groupsT[group] = {active=1, leader=account, info="This group has no info"}
  199.     groupMembershipT[account] = {group=group, gLvl=2, display=getElementData(client, "displayAcc")}
  200.     triggerClientEvent(client,"message:addMessage",client,"Group-System: You have created a group!", 0, 255, 0)
  201.     sendGroupMsg(group, getPlayerName(client) .. " has created the group " .. group)
  202.     triggerClientEvent(client, "NBGgroups.sendGroupInfo", client, groupT, 2, groupsT[group])
  203.     triggerClientEvent(client, "NBGgroups.sendGroupInfo", client, groupT, 2, groupsT[group])
  204.     return true
  205. end
  206. addEvent("NBGgroups.makeAGroup", true)
  207. addEventHandler("NBGgroups.makeAGroup", root, groupMakeReq)
  208.  
  209. function invPlayer(group, player)
  210.     if (not isElement(player)) then return false end
  211.     local group, gLvl = getPlayerGroup(client, true)
  212.     gLvl = tonumber(gLvl)
  213.     if (gLvl == 1 or gLvl == 2) then
  214.         triggerClientEvent(player, "NBGgroups.inviteColAdd", player, group, client)
  215.         sendGroupMsg(group, getPlayerName(client) .. " has invited " .. getPlayerName(player) .. " to join the group")
  216.     else
  217.         triggerClientEvent(client,"message:addMessage",client,"You can't invite people", 0, 255, 0)
  218.         return
  219.     end
  220. end
  221. addEvent("NBGgroups.invitePlayer", true)
  222. addEventHandler("NBGgroups.invitePlayer", root, invPlayer)
  223.  
  224. function acceptGroupInv(group)
  225.     if (not groupsT[group]) then return end
  226.     local mysqlcon = exports.NBGmysql:getConnection()
  227.     local account = getAccountName(getPlayerAccount(client))
  228.     groupMembershipT[getAccountName(getPlayerAccount(client))] = {group=group, gLvl=0, display=getElementData(client, "displayAcc")}
  229.     setElementData ( client, "Group", group )
  230.     sendGroupMsg(group, getPlayerName(client) .. " has joined the group")
  231.     dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", group, account)
  232.     dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 0, account)
  233.     triggerClientEvent(client, "NBGgroups.clearInvites", client, group)
  234. end
  235. addEvent("NBGgroups.acceptGroupInv", true)
  236. addEventHandler("NBGgroups.acceptGroupInv", root, acceptGroupInv)
  237.  
  238. function declineGroupInv(group)
  239.     if (not groupsT[group]) then return end
  240.     sendGroupMsg(group, getPlayerName(client) .. " has declined the join the group")
  241.     triggerClientEvent(client, "NBGgroups.clearInvites", client, group)
  242. end
  243. addEvent("NBGgroups.declineGroupInv", true)
  244. addEventHandler("NBGgroups.declineGroupInv", root, declineGroupInv)
  245.  
  246. function groupChat(player, _, ...)
  247.     local group = getPlayerGroup(player)
  248.     local text = table.concat({...}," ")
  249.     if (group == "None") then
  250.         triggerClientEvent(player,"message:addMessage",player,"You're not in a group", 255, 0, 0)
  251.         return false
  252.     end
  253.     exports.NBGlogs:logAction(player, "groups", "(" .. group .. ") " .. getPlayerName(player) .. ": " .. text)
  254.     sendGroupMsg(group, getPlayerName(player) .. ': #FFFFFF' .. text)
  255. end
  256. addCommandHandler("gc", groupChat)
  257. addCommandHandler("groupchat", groupChat)
  258. addCommandHandler("grc", groupChat)
  259.  
  260. function kickSomeone(player)
  261.     local mysqlcon = exports.NBGmysql:getConnection()
  262.     local group,lvl = getPlayerGroup(client, true)
  263.     local group2,lvl2 = groupMembershipT[player]["group"], groupMembershipT[player]["gLvl"]
  264.     local account2 = player
  265.     if (group == "None" or group2 == "None" or group ~= group2) then
  266.         return false
  267.     end
  268.     if (groupsT[group]["leader"] == account2) then
  269.         return false
  270.     end
  271.     if (lvl == 1 or lvl == 2) then
  272.         if (lvl == 1 and lvl2 == 2) then
  273.             triggerClientEvent(client,"message:addMessage",client,"You cannot kick the leader", 255, 0, 0)
  274.             return false
  275.         elseif (lvl == 1 and lvl2 == 1) then
  276.             triggerClientEvent(client,"message:addMessage",client,"You can not kick other co-leaders", 255, 0, 0)
  277.             return false
  278.         end
  279.         sendGroupMsg(group, getPlayerName(client) .. " has kicked " .. player .. " from the group")
  280.         groupMembershipT[player]["group"] = "None"
  281.         groupMembershipT[player]["gLvl"] = 0
  282.         dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", "None", account2)
  283.     end
  284. end
  285. addEvent("NBGgroups.kickPlayerFromGroup", true)
  286. addEventHandler("NBGgroups.kickPlayerFromGroup", root, kickSomeone)
  287.  
  288. function makeCo(player)
  289.     local mysqlcon = exports.NBGmysql:getConnection()
  290.     local group,lvl = getPlayerGroup(client, true)
  291.     local group2,lvl2 = groupMembershipT[player]["group"], groupMembershipT[player]["gLvl"]
  292.     local account2 = player
  293.     if (group == "None" or group2 == "None" or group ~= group2) then
  294.         return false
  295.     end
  296.     if (groupsT[group]["leader"] == account2) then
  297.         return false
  298.     end
  299.     if (lvl == 2) then
  300.         if (lvl2 == 0) then
  301.             sendGroupMsg(group, getPlayerName(client) .. " has made " .. player .. " a co-leader!")
  302.             groupMembershipT[player]["gLvl"] = 1
  303.             dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 1, account2)
  304.         else
  305.             sendGroupMsg(group, getPlayerName(client) .. " has removed " .. player .. "'s co-leader status")
  306.             groupMembershipT[player]["gLvl"] = 0
  307.             dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 0, account2)
  308.         end
  309.     end
  310. end
  311. addEvent("NBGgroups.toggleCoLeader", true)
  312. addEventHandler("NBGgroups.toggleCoLeader", root, makeCo)
  313.  
  314. function deleteGroup1()
  315.     local mysqlcon = exports.NBGmysql:getConnection()
  316.     local group,lvl = getPlayerGroup(client, true)
  317.     local account = getAccountName(getPlayerAccount(client))
  318.     if (group == "None") then
  319.         return false
  320.     end
  321.     if (groupsT[group]["leader"] ~= account) then
  322.         return false
  323.     end
  324.     if (lvl ~= 2) then
  325.         return false
  326.     end
  327.     sendGroupMsg(group, getPlayerName(client) .. " has decided to delete the group")
  328.     for a,b in pairs(groupMembershipT) do
  329.         if (b["group"] == group) then
  330.             groupMembershipT[a]["group"] = "None"
  331.             groupMembershipT[a]["gLvl"] = 0
  332.             dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", "None", a)
  333.             dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 0, a)
  334.         end
  335.     end
  336.     dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", "None", account)
  337.     dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 0, account)
  338. end
  339. addEvent("NBGgroups.deleteGroup", true)
  340. addEventHandler("NBGgroups.deleteGroup", root, deleteGroup1)
  341.  
  342. function leaveGroup1()
  343.     local mysqlcon = exports.NBGmysql:getConnection()
  344.     local group,lvl = getPlayerGroup(client, true)
  345.     local account = getAccountName(getPlayerAccount(client))
  346.     if (group == "None") then
  347.         return false
  348.     end
  349.     if (groupsT[group]["leader"] == account) then
  350.         return false
  351.     end
  352.     if (lvl == 2) then
  353.         return false
  354.     end
  355.     sendGroupMsg(group, getPlayerName(client) .. " has decided to leave the group")
  356.     groupMembershipT[account]["group"] = "None"
  357.     groupMembershipT[account]["gLvl"] = 0
  358.     dbExec(mysqlcon, "UPDATE `users` SET `group` =? WHERE `account` =?", "None", account)
  359.     dbExec(mysqlcon, "UPDATE `users` SET `groupL` =? WHERE `account` =?", 0, account)
  360. end
  361. addEvent("NBGgroups.leaveGroup", true)
  362. addEventHandler("NBGgroups.leaveGroup", root, leaveGroup1)
  363.  
  364. function updGroupInfo(inf)
  365.     local mysqlcon = exports.NBGmysql:getConnection()
  366.     local group,lvl = getPlayerGroup(client, true)
  367.     local account = getAccountName(getPlayerAccount(client))
  368.     if (group == "None") then
  369.         return false
  370.     end
  371.     if (lvl == 0) then
  372.         return false
  373.     end
  374.     local inf = inf .. "\r\nLast updated by " .. account
  375.     groupsT[group]["info"] = inf
  376.     sendGroupMsg(group, getPlayerName(client) .. " has updated the group info")
  377.     dbExec(mysqlcon, "UPDATE `groups` SET `groupinfo` =? WHERE `name` =?", inf, group)
  378. end
  379. addEvent("NBGgroups.updateGInfo", true)
  380. addEventHandler("NBGgroups.updateGInfo", root, updGroupInfo)
  381.  
  382. function checkForTag(plr, name)
  383.     local account = getAccountName(getPlayerAccount(plr))
  384.     for a,b in pairs(groupsT) do
  385.         if (b["tag"] ~= "") then
  386.             if (string.find(name, b["tag"])) then
  387.                 return a, b["tag"]
  388.             end
  389.         end
  390.     end
  391.     return false
  392. end
Advertisement
Add Comment
Please, Sign In to add comment