Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How would I go about scripting a Choice within a Choice (Dialog)?

So if Choice1 is selected, if the player has more than so and so rep then create a new choice via this script. please help, link me to a wiki also that will help me with dialogs

script.Parent.DialogChoiceSelected:connect(function(player,choice)

  local humanoid = player.Character:findFirstChild("Humanoid")

    if not humanoid then return end --End the function if the humanoid isn't found
local stats = player:FindFirstChild('leaderstats')
    if not stats then return end
local rep = stats:FindFirstChild('Reputation')
    if not rep then return end

    if choice.Name == "Choice1" then
        wait(1)
rep.Value = rep.Value + 2 

    elseif choice.Name == "Choice2" then
        wait(1)
rep.Value = rep.Value + 1

elseif choice.Name == "Choice3" then
        wait(1)
rep.Value = rep.Value - 1
    end

end)

1 answer

✓ Accepted answer

First off, lines 7 and 9, along with FindFirstChild at lines 6 and 8, are useless, unless you don't add those right after a Player instance is added. Second, findFirstChild is deprecated (but you may have put that one by mistake judging by lines 7 and 9)

Here's the improved script you inputted:

script.Parent.DialogChoiceSelected:connect(function(player,choice)
    if not player.Character:FindFirstChild("Humanoid") then return end --End the function if the humanoid isn't found
local stats = player.leaderstats
local rep = stats.Reputation
    if choice.Name == "Choice1" then
        wait(1)
rep.Value = rep.Value + 2 
    elseif choice.Name == "Choice2" then
        wait(1)
rep.Value = rep.Value + 1
elseif choice.Name == "Choice3" then
        wait(1)
rep.Value = rep.Value - 1
    end
end)

Third, here's the idea, at another script in the main Dialog instance:

script.Parent.Changed:connect(function(property)
	script.Parent:FindFirstChild("Choice4"):Destroy() --Remove locked choices initially
	if workspace[property] == true then
		local player = script.Parent.Parent.Player.Value --In a LocalScript, get the player to change that value
		if player.leaderstats.Reputation.Value >= 5 then
			local choice = Instance.new("DialogChoice", script.Parent) --Makes a DialogChoice parented to Dialog
			choice.Name = "Choice4"
			choice.PlayerDialog = "Lololol u so nub"
			choice.ResponseDialog =  "You are such a huge jerk sometimes, you know..."
		end
	end
end)

The rest is up to you. Hope i helped!

HOLD IT! Referring to the returned property itself doesn't do much when you refer to it without property; you instead refer to it's value otherwise. So, instead, use

if workspace[property] == true then

as InUse (or however that property was to called) will probably be the only property that changes that is a boolean.

2 comments

0

thank you so much!

0

WAIT! I have edited my answer so it actually works Humanoid-side. Update your script to that!

This discussion is preserved as it was. New answers, comments, and votes are closed.