Greetings dev forum! Is there a way to make a admin request ticket system like Gate Studios has in there game FRCH.
I am not really sure how to make this.
I have looked it up on YT and I found nothing.
So pretty much there would be a gui that people could click and then they would put the info needed. Admins would check this by saying: !ticketlog . Please do not reply talking about discord webhooks as I would not be using that.
You can try making a discord server and creating a webhook so if the player sends the ticket system, it will send the data to the webhook and there you go
Here’s a few different concepts you could use when creating something like this:
When someone creates a ticket, save the information about the ticket into a table with a unique id.
Also upon creation, add the id of the ticket into a table, which is saved on a separate key containing all unread tickets. Basically, when a staff member checks the next unread ticket, it takes and removes the first id (oldest) from the table. This id is used to get the ticket information.
Tickets should also be retrievable via id manually.
You can store all of the important information into a table and use UpdateAsync to add it to a ticketdatastore. For the ticket gui for the admins, loop through the table adding a text label when needed.
Datastores are ways to store data. Say you wanted to make a cash leaderstat. You leave the game and it doesen’t save. With a datastore you can save that stat and load it the next time they join a game.
local dataservice = game:GetService("DatastoreService") -- Referencing the service we are going to use
local mydatastore = dataservice:GetDataStore("CHANGENAME") -- This line is creating a new datastore. You can name it whatever you want.
game.Players.PlayerAdded:Connect(function(player) - A simple playeradded event to run this script whenever a player joins
local playersdata = mydatastore:GetAsync(player.UserId)
if playersdata then -- Checking if the player has data, if the player has no data it will result to nil so we want to add this if statement.
print(playersdata)
end
end)
game.Players.PlayerRemoving:Connect(function(player) - A simple player removing event to run this script whenever a player leaves the game.
mydatastore:SetAsync(player.UserId, "Already Been in this game before") -- When the player leaves the game, we are saving this string to their key (player.UserId)
end)
This may look difficult, however there a couple things you need to know.
SetAsync is for saving data, there are two parameters. A key, and the data.
A key can be set to anything, but since we want to involve a player into this script we are going to set the key to their player UserId so we can check if they have data when they join.
GetAsync is for getting your data, you only need one parameter for this, a key. So in this script our key is player.UserId which holds that specific player’s data.
I did this script in the devforum chat so I did not check for errors. If you use it and there are errors, contact me.