Made a ModuleScript for presenting a player with a choice. My game worked fine until it got to running the following code:
local c = {
'workspace',
'terrian',
'terrain',
'spawnlocatoin',
'lighting',
'Great',
'ServerScriptService'
}
Module:PromptChoice('KicksForTricks56','Services',c,'ServiceChoice')
But, currently, the script gives:
13:09:04.619 - Unable to cast value to std::string
13:09:04.630 - Stack Begin
13:09:04.664 - Script 'ServerScriptService.ChoiceScript', Line 12 - method PromptChoice
13:09:04.665 - Script 'ServerScriptService.Script', Line 12
13:09:04.667 - Stack End
What's wrong with the module script? For reference, here it is:
local http = game:GetService("HttpService")
local instructionMessages = {
["mobile"] = "press an option with your finger",
["gamepad"] = "press View, then nagivate to an option with the Left Stick and press A",
["computer"] = "click an option with your mouse/touchpad"
}
local wrapper = "(To make your choice, %s. Choose wisely!)"
local module = {}
function module.PromptChoice(player, caption, choices, identifier)
local id = ""
local playerA = game:GetService("Players"):WaitForChild(player)
if playerA == nil or playerA.Parent == nil then
error("Player does not exist")
return false
end
if identifier == nil or identifier == '' then
id = identifier
else
id = math.random(1,2000)
end
local json = http:JSONEncode(choices)
local gui = script.ChoiceGui:Clone()
local event = Instance.new("RemoteEvent")
event.Name = player.."Choice"..id
event.Parent = game.ReplicatedStorage
gui.EventObject.Value = event
gui.JSONChoices.Value = json
gui.Caption.Text = caption
gui.Instructions.Text = string.format(wrapper,instructionMessages[player.input.Value])
gui.Parent = playerA.PlayerGui
event.OnServerEvent:Connect(function(choice)
local GoodToDo = false
for i=1,#choices do
if choices[i] == choice then
GoodToDo = true
end
end
if not GoodToDo then
playerA:Kick("Don't know why you'd want to exploit on a game like this? Lol")
end
return choice
end)
end
return module

1 comment
Thanks for your answer!