I need when the second dialogue starts so that the first dialogue is reset
Module:
function DialogModule:startDialog(DialogGui)
CloseAllFrame()
self.DialogGui = DialogGui
if not self.DialogGui.Visible then
local DialogTitle = self.DialogGui.Title.Title
local DialogText = self.DialogGui.Text.Title
local DialogButtons = self.DialogGui.Buttons
local nextButton = DialogButtons.Next
local closeButton = DialogButtons.Close
local acceptButton = DialogButtons.Accept
local declineButton = DialogButtons.Decline
DialogTitle.Text = self.dialogData.name
nextButton.Visible = true
closeButton.Visible = true
acceptButton.Visible = false
declineButton.Visible = false
Main.Blur.Visible = true
Main.Attack.Visible = false
Main.Rasa.Visible = false
self.DialogGui.Visible = true
local formattedMessage = self:formatMessage(self.dialogData.messages[self.currentMessageIndex])
self:typeText(DialogText, formattedMessage)
local function onNextButtonClick()
self.currentMessageIndex += 1
if self.currentMessageIndex <= #self.dialogData.messages then
local nextFormattedMessage = self:formatMessage(self.dialogData.messages[self.currentMessageIndex])
self:typeText(DialogText, nextFormattedMessage)
else
if self.isQuest then
nextButton.Visible = false
closeButton.Visible = false
acceptButton.Visible = true
declineButton.Visible = true
self:completeQuest(DialogText)
elseif self.hasGUI then
nextButton.Visible = false
closeButton.Visible = true
acceptButton.Visible = false
declineButton.Visible = false
self:openCustomGUI()
else
self:resetDialog(DialogGui)
end
end
end
nextButton.Button.MouseButton1Click:Connect(onNextButtonClick)
closeButton.Button.MouseButton1Click:Connect(function()
self:resetDialog(DialogGui)
end)
declineButton.Button.MouseButton1Click:Connect(function()
self:resetDialog(DialogGui)
end)
acceptButton.Button.MouseButton1Click:Connect(function()
if self.isQuest then
self.questModule:startQuest(self.dialogData.quest)
end
self:resetDialog(DialogGui)
end)
else
DialogModule:resetDialog()
end
end
Local Script:
local function onDialogEvent(npcName: string)
local DialogGuiTemplate = Services.ReplicatedStorage.Debounces.Dialog
local DialogGuiClone = DialogGuiTemplate:Clone()
DialogGuiClone.Parent = Main
local dialog = require(Modules.Dialog).new(Player, npcName)
dialog:startDialog(DialogGuiClone)
end
for _, DialogNPC in pairs(DialogNPCs:GetChildren()) do
if DialogNPC:IsA("Model") and DialogNPC:FindFirstChild("ProximityPrompt") then
DialogNPC.ProximityPrompt.Triggered:Connect(function()
onDialogEvent(DialogNPC.Name)
end)
end
end