Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local tickets = {}
- local currentTicket = nil
- function createPanel()
- local screenW, screenH = guiGetScreenSize()
- --Ticket Panel.
- CreateTicketPanel = guiCreateWindow((screenW - 534) / 2, (screenH - 135) / 2, 534, 135, "New ticket", false)
- guiWindowSetSizable(CreateTicketPanel, false)
- guiSetVisible(CreateTicketPanel, false)
- CreateTicketButton = guiCreateButton(10, 93, 114, 33, "Open Ticket", false, CreateTicketPanel)
- guiSetProperty(CreateTicketButton, "NormalTextColour", "FFAAAAAA")
- TicketNameBox = guiCreateEdit(88, 22, 437, 28, "", false, CreateTicketPanel)
- TicketNameLable = guiCreateLabel(10, 27, 78, 18, "Ticket Name:", false, CreateTicketPanel)
- guiLabelSetColor(TicketNameLable, 254, 0, 0)
- HelpTextLable = guiCreateLabel(10, 60, 78, 18, "Question:", false, CreateTicketPanel)
- guiLabelSetColor(HelpTextLable, 254, 0, 0)
- HelpTextBox = guiCreateEdit(88, 55, 437, 28, "", false, CreateTicketPanel)
- CloseTicketPanel = guiCreateButton(134, 93, 114, 33, "Close", false, CreateTicketPanel)
- guiSetProperty(CloseTicketPanel, "NormalTextColour", "FFAAAAAA")
- --Support Panel.
- SupportPanel = guiCreateWindow((screenW - 846) / 2, (screenH - 576) / 2, 846, 576, "CIT - Support Panel", false)
- guiWindowSetSizable(SupportPanel, false)
- guiSetVisible(SupportPanel, false)
- ActiveTicketList = guiCreateGridList(10, 32, 202, 495, false, SupportPanel)
- guiGridListAddColumn(ActiveTicketList, "Active Tickets", 0.9)
- MessageGridList = guiCreateGridList(214, 32, 622, 495, false, SupportPanel)
- guiGridListAddColumn(MessageGridList, "(Name)", 0.3)
- guiGridListAddColumn(MessageGridList, "(Message)", 0.7)
- SendMessageBox = guiCreateEdit(214, 528, 506, 38, "", false, SupportPanel)
- MarkTicketSolved = guiCreateButton(725, 529, 106, 37, "Solved", false, SupportPanel)
- guiSetProperty(MarkTicketSolved, "NormalTextColour", "FFFFFEFE")
- CloseSupportPanel = guiCreateButton(156, 531, 56, 35, "Close", false, SupportPanel)
- guiSetProperty(CloseSupportPanel, "NormalTextColour", "FF1DE726")
- OpenNewTicket = guiCreateButton(10, 531, 83, 35, "Open a Ticket", false, SupportPanel)
- guiSetProperty(OpenNewTicket, "NormalTextColour", "FFFE0000")
- DeleteTicket = guiCreateButton(97, 531, 53, 35, "Delete", false, SupportPanel)
- guiSetProperty(DeleteTicket, "NormalTextColour", "FFD2C100")
- --JSON Panel To add Question and Answers.
- AIDatabasePanel = guiCreateWindow((screenW - 775) / 2, (screenH - 216) / 2, 775, 216, "CIT - AI Managment", false)
- guiWindowSetSizable(AIDatabasePanel, false)
- guiSetVisible(AIDatabasePanel, false)
- QuestionLable = guiCreateLabel(27, 57, 139, 36, "Question:", false, AIDatabasePanel)
- local font0_EmblemaOne = guiCreateFont(":CITsupport/fonts/EmblemaOne.ttf", 18)
- guiSetFont(QuestionLable, font0_EmblemaOne)
- QuestionTextBox = guiCreateEdit(176, 55, 543, 38, "", false, AIDatabasePanel)
- AnswerLable = guiCreateLabel(27, 124, 139, 38, "Answer:", false, AIDatabasePanel)
- guiSetFont(AnswerLable, font0_EmblemaOne)
- AnswerTextBox = guiCreateEdit(176, 124, 543, 38, "", false, AIDatabasePanel)
- AddToJSONButton = guiCreateButton(248, 172, 272, 32, "Add", false, AIDatabasePanel)
- guiSetProperty(AddToJSONButton, "NormalTextColour", "FFAAAAAA")
- guiSetFont(AddToJSONButton, font0_EmblemaOne)
- CloseAIPanelButton = guiCreateButton(749, 187, 16, 19, "C", false, AIDatabasePanel)
- guiSetProperty(CloseAIPanelButton, "NormalTextColour", "FFAAAAAA")
- BotNameLable = guiCreateLabel(42, 23, 85, 24, "[CIT]Doogle:", false, AIDatabasePanel)
- guiSetFont(BotNameLable, "clear-normal")
- guiLabelSetColor(BotNameLable, 255, 0, 0)
- BotSayLable = guiCreateLabel(127, 23, 624, 23, "", false, AIDatabasePanel)
- guiSetFont(BotSayLable, "clear-normal")
- guiLabelSetColor(BotSayLable, 30, 224, 48)
- end
- ---Startup & Admin Stuff
- function OpenSupportPanel()
- guiSetVisible(SupportPanel, not guiGetVisible(SupportPanel))
- showCursor(guiGetVisible(SupportPanel))
- end
- addEvent("OnPlayerOpenGUI", true)
- addEventHandler("OnPlayerOpenGUI", root, OpenSupportPanel)
- function OpenAIPanel()
- guiSetVisible(AIDatabasePanel, not guiGetVisible(AIDatabasePanel))
- showCursor(guiGetVisible(AIDatabasePanel))
- end
- addEvent("OnPlayerOpenAIGUI", true)
- addEventHandler("OnPlayerOpenAIGUI", root, OpenAIPanel)
- --Close Buttons
- function CloseSupGUI(button)
- if (button == "left") then
- guiSetVisible(SupportPanel, false)
- guiSetVisible(CreateTicketPanel, false)
- showCursor(false)
- end
- end
- addEventHandler("onClientGUIClick", CloseSupportPanel, CloseSupGUI, false)
- function CloseTCreateGUI(button)
- if (button == "left") then
- guiSetVisible(CreateTicketPanel, false)
- end
- end
- addEventHandler("onClientGUIClick", CloseTicketPanel, CloseTCreateGUI, false)
- function CloseAIGUI(button)
- if (button == "left") then
- guiSetVisible(AIDatabasePanel, false)
- showCursor(false)
- end
- end
- addEventHandler("onClientGUIClick", CloseAIPanelButton, CloseAIGUI, false)
- --Ticket Panel
- function OpenTicketGUI(button)
- if (button == "left") then
- guiSetVisible(CreateTicketPanel, not guiGetVisible(CreateTicketPanel))
- guiBringToFront(CreateTicketPanel)
- end
- end
- addEventHandler("onClientGUIClick", OpenNewTicket, OpenTicketGUI, false)
- --Send new ticket to server
- function CreateTicketForPlayer()
- local plr = localPlayer
- local ticketName = guiGetText(TicketNameBox)
- local plrName = getPlayerName(plr)
- local helpText = guiGetText(HelpTextBox)
- if (#ticketName == 0 or #helpText == 0) then
- outputChatBox("Please add the ticket name or the question.", 255, 0, 0, false)
- return false
- elseif (#ticketName >= 10) then
- outputChatBox("Ticket Name could not be more than 10 letters!", 255, 0, 0, false)
- return false
- end
- --Ticket Structure
- local ticketId = getTickCount().."_"..plrName
- local ticket = {ticketId, ticketName, plrName, {{getTickCount(), plrName, helpText}}}
- --Send the message to server
- triggerServerEvent("addTicket", resourceRoot, ticket)
- guiSetVisible(CreateTicketPanel, false) -- Hide the create ticket GUI
- --Set the current selected ticketId
- currentTicket = ticketId
- outputChatBox("#B266FF(Support) #FFFFFF"..plrName..": "..helpText, 255, 255, 255, true)
- guiSetText(TicketNameBox, "")
- guiSetText(HelpTextBox, "")
- end
- addEventHandler("onClientGUIClick", CreateTicketButton, CreateTicketForPlayer, false)
- --Find an existing open ticket by player
- function FindPlayerOpenTicket()
- local plr = localPlayer
- local plrName = getPlayerName(plr)
- for k, v in pairs(tickets) do
- if (v[3] == plrName) then
- return v
- end
- end
- return false
- end
- ---Create new ticket using command
- function AddTicketConsole(commandName, ...)
- local plr = localPlayer
- local ticketName = "Help Me!"
- local plrName = getPlayerName(plr)
- local helpText = table.concat({...}, " ")
- local helpText = string.gsub(helpText, "#%x%x%x%x%x%x", "")
- if (#ticketName == 0 or #helpText == 0) then
- outputChatBox("Usage: /sup <message>", 255, 0, 0, false)
- return false
- end
- local foundPlayerTicket = FindPlayerOpenTicket()
- if (foundPlayerTicket) then
- local ticketId = foundPlayerTicket[1]
- local message = {ticketId, {getTickCount(), plrName, helpText}}
- triggerServerEvent("sendMessage", resourceRoot, message) --Send the message to server
- outputChatBox("#B266FF(Support) #FFFFFF"..plrName..": "..helpText, 255, 255, 255, true)
- else
- local ticketId = getTickCount().."_"..plrName
- local ticket = {ticketId, ticketName, plrName, {{getTickCount(), plrName, helpText}}}
- triggerServerEvent("addTicket", resourceRoot, ticket) --Send the message to server
- outputChatBox("#B266FF(Support) #FFFFFF"..plrName..": "..helpText, 255, 255, 255, true)
- end
- end
- addCommandHandler("sup", AddTicketConsole)
- --Get tickets list from server
- --Request
- function GetTickets()
- triggerServerEvent("getTickets", resourceRoot)
- end
- addEventHandler("onClientResourceStart", resourceRoot, GetTickets)
- --Receive
- --Sort list according to time
- function LoadTickets(list)
- tickets = list
- guiGridListClear(ActiveTicketList)
- local tkeys = {}
- for k in pairs(tickets) do table.insert(tkeys, k) end
- table.sort(tkeys)
- for i, k in ipairs(tkeys) do
- local v = tickets[k]
- local ticketName = v[2]
- local plrName = v[3]
- local row = guiGridListAddRow(ActiveTicketList, ticketName.." - "..plrName)
- guiGridListSetItemData(ActiveTicketList, row, 1, v[1])
- if (v[5] == 1) then --Green color if solved, i.e. 5th index of ticketinfo set as 1
- guiGridListSetItemColor(ActiveTicketList, row, 1, 0, 255, 0)
- end
- if (currentTicket ~= nil and v[1] == currentTicket) then
- guiGridListSetSelectedItem(ActiveTicketList, row, 1)
- GetTicket()
- end
- end
- end
- addEvent("loadTickets", true)
- addEventHandler("loadTickets", resourceRoot, LoadTickets)
- --Delete ticket
- function DeletePlrTicket()
- local selectedRow, selectedCol = guiGridListGetSelectedItem(ActiveTicketList)
- local ticketId = guiGridListGetItemData(ActiveTicketList, selectedRow, 1)
- local ticket = tickets[ticketId]
- triggerServerEvent("delTicket", resourceRoot, ticket)
- end
- addEventHandler("onClientGUIClick", DeleteTicket, DeletePlrTicket, false)
- --Get messages of one ticket from server
- --Request
- function GetTicket()
- local selectedRow, selectedCol = guiGridListGetSelectedItem(ActiveTicketList)
- local ticketId = guiGridListGetItemData(ActiveTicketList, selectedRow, 1)
- triggerServerEvent("getTicket", resourceRoot, ticketId)
- currentTicket = ticketId ----Set the current selected ticketId----
- end
- addEventHandler("onClientGUIClick", ActiveTicketList, GetTicket, false)
- --Receive
- function LoadTicket(messages)
- guiGridListClear(MessageGridList)
- for i, v in pairs(messages) do
- local msgTime = v[1]
- local plrName = v[2]
- local msg = v[3]
- local row = guiGridListAddRow(MessageGridList, plrName, msg)
- end
- end
- addEvent("loadTicket", true)
- addEventHandler("loadTicket", resourceRoot, LoadTicket)
- --Send Message to server
- function SendMessage(button, press)
- if (button ~= "enter" or not (press)) then
- return false
- end
- local msg = guiGetText(SendMessageBox)
- if (#msg == 0) then
- return false
- end
- local plr = localPlayer
- local plrName = getPlayerName(plr)
- local selectedRow, selectedCol = guiGridListGetSelectedItem(ActiveTicketList)
- local ticketId = guiGridListGetItemData(ActiveTicketList, selectedRow, 1)
- if (not ticketId) then
- return false
- end
- local message = {ticketId, {getTickCount(), plrName, msg}}
- triggerServerEvent("sendMessage", resourceRoot, message) --Send the message to server
- for k, v in pairs(tickets) do
- if (v[3] == plrName) then
- outputChatBox("#B266FF(Support) #FFFFFF"..plrName..": "..msg, 255, 255, 255, true)
- end
- end
- guiSetText(SendMessageBox, "")
- end
- addEventHandler("onClientKey", root, SendMessage, false)
- --Solve the ticket
- function guiClearGridList()
- guiGridListClear(MessageGridList)
- end
- addEventHandler("onClientGUIClick", ActiveTicketList, guiClearGridList, false)
- function SolveTicket(button)
- if (button ~= "left") then
- return false
- end
- local selectedRow, selectedCol = guiGridListGetSelectedItem(ActiveTicketList)
- local ticketId = guiGridListGetItemData(ActiveTicketList, selectedRow, 1)
- if (not ticketId) then
- return false
- end
- triggerServerEvent("solveTicket", resourceRoot, ticketId)
- end
- addEventHandler("onClientGUIClick", MarkTicketSolved, SolveTicket, false)
- --AI Database Input
- function AddSupQ(text, msg)
- local text = guiGetText(QuestionTextBox)
- local msg = guiGetText(AnswerTextBox)
- text = #text
- if (#text == 0 or #msg == 0) then
- guiSetText(BotSayLable, "Invalid question or an answer.")
- return false
- end
- triggerServerEvent("AIconfig", resourceRoot, text, msg)
- guiSetText(BotSayLable, "Added")
- guiSetText(QuestionTextBox, "")
- guiSetText(AnswerTextBox, "")
- end
- addEventHandler("onClientGUIClick", AddToJSONButton, AddSupQ, false)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement