#dialogue choices not working

1 messages · Page 1 of 1 (latest)

jagged field
#

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

local ui = script.Parent
local frame = ui:WaitForChild("DialogueFrame")
local nameLabel = frame:WaitForChild("NameLabel")
local portrait = frame:WaitForChild("Portrait")
local dialogueText = frame:WaitForChild("DialogueText")
local btn1 = frame.ButtonHolder.Responce1
local btn2 = frame.ButtonHolder.Responce2

local btn1Conn
local btn2Conn

local talking = false

local typeSound = ui:WaitForChild("TypeSound")

local function typeText(text)
dialogueText.Text = ""
for i = 1, #text do
dialogueText.Text = string.sub(text, 1, i)

    typeSound:Play()
    
    wait(0.02)
end

end

function handleResponse(responseData)
if responseData.Type == "Close" then
hideUI()

elseif responseData.Type == "NextMessage" then
    local newData = responseData.NextDialogue
    if newData then 
        updateUI(newData)
    end
else 
    warn("Unknown Response Type")
    hideUI()
end

end

function openUI(data)
ui.Enabled = true
frame.Visible = true
updateUI(data)
end

function updateUI(data)
nameLabel.Text = data.Name
portrait.Image = data.Portrait
typeText(data.Dialogue)

btn1.Text = data.Responses[1].Text
btn2.Text = data.Responses[2].Text


if btn1Conn then btn1Conn:Disconnect() end
if btn2Conn then btn1Conn:Disconnect() end
#

btn1Conn = btn1.MouseButton1Click:Conect(function()
handleResponse(data.Responses[1])
end)

btn2Conn = btn2.MouseButton1Click:Conect(function()
    handleResponse(data.Responses[2])
end)

end

function hideUI()
task.delay(0.3, function()
talking = false
frame.Visible = false
ui.Enabled = false
end)
end

game:GetService("ProximityPromptService").PromptTriggered:Connect(function(prompt,player)
if talking then return end
talking = true

local npc = prompt.Parent:FindFirstChild("NPCName")
if not npc then return end
local dataModule = ReplicatedStorage.NPCData:FindFirstChild(npc.Value)
if not dataModule then return end
local npcData = require(dataModule)
openUI(npcData[npc.Value])

end)

vague scaffold
#

You have a typo within the script use Connect (not Conect) when connecting events for btn1 and btn2. When disconnecting the second button connection, you are disconnecting btn1Conn again instead of btn2Conn. To prevent the text exiting the button, set the TextWrapped property of your buttons to true.

if btn1Conn then btn1Conn:Disconnect() end
if btn2Conn then btn2Conn:Disconnect() end

btn1Conn = btn1.MouseButton1Click:Connect(function()
    handleResponse(data.Responses[1])
end)

btn2Conn = btn2.MouseButton1Click:Connect(function()
    handleResponse(data.Responses[2])
end)

btn1.TextWrapped = true
btn2.TextWrapped = true