RyanUSNS

betClientSide

May 21st, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.74 KB | None | 0 0
  1. local hostersTable = {}
  2.  
  3. function createBetPanel()
  4.     local sx, sh = guiGetScreenSize()
  5.     winCEMBet = guiCreateWindow((sx / 2) - (352 / 2), (sh / 2) - (330 / 2), 352, 330, "CIT2 CnR/MW/Some RP - Bet System", false)
  6.     guiWindowSetSizable(winCEMBet, false)
  7.     guiSetAlpha(winCEMBet, 95)
  8.     guiSetVisible(winCEMBet, false)
  9.     tabPanel = guiCreateTabPanel(9, 21, 333, 299, false, winCEMBet)
  10.     -- Bet tab
  11.     betTab = guiCreateTab("Bet", tabPanel)
  12.     betPlayerGridList = guiCreateGridList(10, 39, 148, 225, false, betTab)
  13.     guiGridListAddColumn(betPlayerGridList, "Player Name", 0.9)
  14.     betSearchPlayerEdit = guiCreateEdit(11, 3, 147, 26, "Search Player", false, betTab)
  15.     betButton = guiCreateButton(178, 39, 145, 27, "Bet", false, betTab)
  16.     betAmount = guiCreateEdit(172, 3, 151, 26, "Amount", false, betTab)
  17.     guiEditSetMaxLength(betAmount, 6)
  18.     guiSetProperty(betAmount, "ValidationString", "^[0-9]*$")
  19.     --Configuration tab
  20.     confTab = guiCreateTab("Configuration", tabPanel)
  21.     confPlayerGridList = guiCreateGridList(10, 39, 148, 225, false, confTab)
  22.     guiGridListAddColumn(confPlayerGridList, "Player Name", 0.9)
  23.     confSearchPlayerEdit = guiCreateEdit(11, 3, 147, 26, "Search Player", false, confTab)
  24.     editHosterButton = guiCreateButton(178, 39, 145, 27, "Add player as hoster", false, confTab)
  25.     confSearchHosterEdit = guiCreateEdit(172, 3, 151, 26, "Search Hoster", false, confTab)
  26.     confHosterGridList = guiCreateGridList(172, 76, 151, 116, false, confTab)
  27.     guiGridListAddColumn(confHosterGridList, "Hosters", 0.9)
  28.     confBetButton = guiCreateButton(178, 202, 145, 27, "Start bet", false, confTab)
  29.     confSetWinnerButton = guiCreateButton(178, 237, 145, 27, "Set winner", false, confTab)
  30.     --Close tab
  31.     closeTab = guiCreateTab("Close", tabPanel)
  32.     --Event Handlers
  33.     --Bet tab
  34.     addEventHandler("onClientGUIClick", betButton, betPlayer, false)
  35.     addEventHandler("onClientGUIChanged", betSearchPlayerEdit, searchPlayers, false)
  36.     addEventHandler("onClientGUIClick", betSearchPlayerEdit, clearEdit, false)
  37.     addEventHandler("onClientGUIClick", betAmount, clearEdit, false)
  38.     --Configuration tab
  39.     addEventHandler("onClientGUIClick", editHosterButton, editHosters, false)
  40.     addEventHandler("onClientGUIClick", confBetButton, betOpenClose, false)
  41.     addEventHandler("onClientGUIClick", confSetWinnerButton, betWinner, false)
  42.     addEventHandler("onClientGUIClick", confHosterGridList, confButtons, false)
  43.     addEventHandler("onClientGUIClick", confPlayerGridList, confButtons, false)
  44.     addEventHandler("onClientGUIChanged", confSearchPlayerEdit, searchPlayers, false)
  45.     addEventHandler("onClientGUIChanged", confSearchHosterEdit, searchPlayers, false)
  46.     addEventHandler("onClientGUIClick", confSearchPlayerEdit, clearEdit, false)
  47.     addEventHandler("onClientGUIClick", confSearchHosterEdit, clearEdit, false)
  48.     --Close tab
  49.     addEventHandler("onClientGUITabSwitched", closeTab, toggleCEMBetGui, false)
  50. end
  51.  
  52. function toggleCEMBetGui(perm, hosters, betStatus, setWinner)
  53.     if (not winCEMBet) then
  54.         createBetPanel()
  55.     end
  56.     local state = not guiGetVisible(winCEMBet)
  57.     guiSetVisible(winCEMBet, state)
  58.     showCursor(state)
  59.     if (not state) then
  60.         return false
  61.     end
  62.     hostersTable = {}
  63.     if (type(hosters) == "table") then
  64.         hostersTable = hosters
  65.     end
  66.     guiSetEnabled(confTab, perm)
  67.     guiSetSelectedTab(tabPanel, betTab)
  68.     refreshPanel(betStatus or setWinner)
  69.     if (betStatus) then
  70.         guiSetText(confBetButton, "Stop bet")
  71.         guiSetEnabled(editHosterButton, not betStatus)
  72.         guiSetEnabled(confSetWinnerButton, not betStatus)
  73.         if (perm) then
  74.             guiSetSelectedTab(tabPanel, confTab)
  75.         end
  76.     end
  77.     if (setWinner) then
  78.         guiSetEnabled(editHosterButton, not setWinner)
  79.         guiSetEnabled(confBetButton, not setWinner)
  80.         guiSetEnabled(confSetWinnerButton, setWinner)
  81.         if (perm) then
  82.             guiSetSelectedTab(tabPanel, confTab)
  83.         end
  84.     end
  85. end
  86. addEvent("CITcemBet.showGui", true)
  87. addEventHandler("CITcemBet.showGui", root, toggleCEMBetGui)
  88.  
  89. function betPlayer()
  90.     local r, c = guiGridListGetSelectedItem(betPlayerGridList)
  91.     if (r < 0) then
  92.         return false
  93.     end
  94.     local plrName = guiGridListGetItemText(betPlayerGridList, r, 1)
  95.     local plrEle = getPlayerFromName(plrName)
  96.     if (plrEle == localPlayer) then
  97.         outputChatBox("You cannot vote in yourself!", 200, 0, 0)
  98.         return false
  99.     end
  100.     if (not plrEle) then
  101.         outputChatBox("One of player has been logged off. Refreshing the player list.", 200, 0, 0)
  102.         refreshPanel(true)
  103.         return false
  104.     end
  105.     local amount = guiGetText(betAmount)
  106.     triggerServerEvent("CITcemBet.betPlayer", resourceRoot, plrEle, amount)
  107. end
  108.  
  109. function editHosters()
  110.     local textButton = guiGetText(editHosterButton)
  111.     if (textButton == "Add player as hoster") then
  112.         local r, c = guiGridListGetSelectedItem(confPlayerGridList)
  113.         if (r < 0) then
  114.             return false
  115.         end
  116.         local plrName = guiGridListGetItemText(confPlayerGridList, r, 1)
  117.         local plrEle = getPlayerFromName(plrName)
  118.         if (not hostersTable[plrEle]) then
  119.             hostersTable[plrEle] = true
  120.         end
  121.         local row = guiGridListAddRow(confHosterGridList)
  122.         guiGridListSetItemText(confHosterGridList, row, 1, plrName, false, false)
  123.         guiGridListRemoveRow(confPlayerGridList, r)
  124.         return true
  125.     end
  126.     local r, c = guiGridListGetSelectedItem(confHosterGridList)
  127.     if (r < 0) then
  128.         return false
  129.     end
  130.     local plrName = guiGridListGetItemText(confHosterGridList, r, 1)
  131.     local plrEle = getPlayerFromName(plrName)
  132.     if (plrEle == localPlayer) then
  133.         outputChatBox("You cannot move yourself!", 200, 0, 0)
  134.         return false
  135.     end
  136.     if (hostersTable[plrEle]) then
  137.         hostersTable[plrEle] = nil
  138.     end
  139.     local row = guiGridListAddRow(confPlayerGridList)
  140.     guiGridListSetItemText(confPlayerGridList, row, 1, plrName, false, false)
  141.     guiGridListRemoveRow(confHosterGridList, r)
  142. end
  143.  
  144. function betOpenClose()
  145.     local typeButton = guiGetText(confBetButton)
  146.     if (typeButton == "Start bet") then
  147.         guiSetText(confBetButton, "Stop bet")
  148.         guiSetEnabled(editHosterButton, false)
  149.         guiSetEnabled(confSetWinnerButton, false)
  150.         triggerServerEvent("CITcemBet.startBet", resourceRoot, hostersTable)
  151.         return true
  152.     end
  153.     guiSetText(confBetButton, "Start bet")
  154.     triggerServerEvent("CITcemBet.stopBet", resourceRoot)
  155.     guiSetEnabled(confSetWinnerButton, true)
  156.     guiSetEnabled(confBetButton, false)
  157. end
  158.  
  159. function betWinner()
  160.     local r, c = guiGridListGetSelectedItem(confPlayerGridList)
  161.     if (r < 0) then
  162.         outputChatBox("Error: Invalid player name.", 200, 0, 0)
  163.         return false
  164.     end
  165.     local plrName = guiGridListGetItemText(confPlayerGridList, r, 1)
  166.     triggerServerEvent("CITcemBet.setBetWinner", resourceRoot, plrName)
  167.     hostersTable = {}
  168.     refreshPanel(false)
  169. end
  170.  
  171. function searchPlayers(guiEle)
  172.     if (guiEle ~= betSearchPlayerEdit and guiEle ~= confSearchPlayerEdit and guiEle ~= confSearchHosterEdit) then
  173.         return false
  174.     end
  175.     local name = guiGetText(guiEle)
  176.     local gridlistPlr
  177.     if (guiEle == betSearchPlayerEdit) then
  178.         gridlistPlr = betPlayerGridList
  179.     elseif (guiEle == confSearchPlayerEdit) then
  180.         gridlistPlr = confPlayerGridList
  181.     else
  182.         gridlistPlr = confHosterGridList
  183.     end
  184.     guiGridListClear(gridlistPlr)
  185.     if (guiEle == confSearchHosterEdit) then
  186.         for plr, bool in pairs(hostersTable) do
  187.             local plrName = getPlayerName(plr)
  188.             if (string.find(string.lower(plrName), string.lower(name))) then
  189.                 local rowMain = guiGridListAddRow(gridlistPlr)
  190.                 guiGridListSetItemText(gridlistPlr, rowMain, 1, plrName, false, false)
  191.             end
  192.         end
  193.         return true
  194.     end
  195.     local plrs = getElementsByType("player")
  196.     for i, plr in ipairs(plrs) do
  197.         if (getElementDimension(plr) == 336) then
  198.             local plrName = getPlayerName(plr)
  199.             if (string.find(string.lower(plrName), string.lower(name)) and not hostersTable[plr] and localPlayer ~= plr) then
  200.                 local rowMain = guiGridListAddRow(gridlistPlr)
  201.                 guiGridListSetItemText(gridlistPlr, rowMain, 1, plrName, false, false)
  202.             end
  203.         end
  204.     end
  205. end
  206.  
  207. function confButtons()
  208.     if (source ~= confPlayerGridList and source ~= confHosterGridList) then
  209.         return false
  210.     end
  211.     if (source == confPlayerGridList) then
  212.         guiSetText(editHosterButton, "Add player as hoster")
  213.         return true
  214.     end
  215.     guiSetText(editHosterButton, "Remove player as hoster")
  216. end
  217.  
  218. function clearEdit()
  219.     local text = guiGetText(source)
  220.     if (text == "Search Hoster" or text == "Search Player" or text == "Amount")then
  221.         guiSetText(source, "")
  222.     end
  223. end
  224.  
  225. function refreshPanel(bool)
  226.     guiSetText(confBetButton, "Start bet")
  227.     guiSetText(editHosterButton, "Add player as hoster")
  228.     guiSetText(confSearchHosterEdit, "Search Hoster")
  229.     guiSetText(confSearchPlayerEdit, "Search Player")
  230.     guiSetText(betAmount, "Amount")
  231.     guiSetText(betSearchPlayerEdit, "Search Player")
  232.     guiSetEnabled(confSetWinnerButton, false)
  233.     guiSetEnabled(editHosterButton, true)
  234.     guiSetEnabled(confBetButton, true)
  235.     guiGridListClear(confPlayerGridList)
  236.     guiGridListClear(confHosterGridList)
  237.     guiGridListClear(betPlayerGridList)
  238.     local plrs = getElementsByType("player")
  239.     for i, plr in ipairs(plrs) do
  240.         if (getElementDimension(plr) == 336) then
  241.             local plrName = getPlayerName(plr)
  242.             if (plr ~= localPlayer and not hostersTable[plr]) then
  243.                 local rowPlrHoster = guiGridListAddRow(confPlayerGridList)
  244.                 guiGridListSetItemText(confPlayerGridList, rowPlrHoster, 1, plrName, false, false)
  245.                 local rowBet = guiGridListAddRow(betPlayerGridList)
  246.                 guiGridListSetItemText(betPlayerGridList, rowBet, 1, plrName, false, false)
  247.             elseif (hostersTable[plr] and bool) then
  248.                 local rowHoster = guiGridListAddRow(confHosterGridList)
  249.                 guiGridListSetItemText(confHosterGridList, rowHoster, 1, plrName, false, false)
  250.             elseif (plr == localPlayer and not bool) then
  251.                 local rowHoster = guiGridListAddRow(confHosterGridList)
  252.                 guiGridListSetItemText(confHosterGridList, rowHoster, 1, plrName, false, false)
  253.                 if (not hostersTable[plr]) then
  254.                     hostersTable[plr] = true
  255.                 end
  256.             end
  257.         end
  258.     end
  259. end
Advertisement
Add Comment
Please, Sign In to add comment