Dialogue Maker [Beta]

Yes.
It works 20 times. Then the window is not closed and the action is not started.
At the same time, I have an alternative launch of the same action - it continues to work.

As you can see from the code, there is nothing there to cause the wait. Unless getting a Player from a parent module.

It could have been done in one line:
Player.PlayerGui.ScreenGui.Main.Window.open.Value = “frmSlims”

Russian

Да.
Раз 20 оно срабатывает. Потом окно не закрывается и действие не запускается.
При этом у меня есть альтернативный запуск этого же действия - он продолжает работать.

Как можно видеть из кода, там нет ничего, что могло бы вызвать ожидание. Разве что получение Player из вышестоящего модуля.

Можно было вообще одной строкой сделать:
Player.PlayerGui.ScreenGui.Main.Window.open.Value = “frmSlims”

Code
local Action = {};
-- Player = nil;	-- Silences global warnings.

Action.Synchronous = false;	-- Stops the player from proceeding to the next dialogue/leaving
							-- the conversation until the action is complete.
							-- Note: If this is an "action before" function,
							-- this causes the dialogue box to be *blank*
							-- until the action is complete.
		
Action.Variables = function()
	
	-- This function is ran prior to the Execute function.
	-- It's meant for setting conversation variables.
	-- It's helpful if you want this to be an asynchronous action,
	-- yet need to set variables for the dialogue that'll appear next.
	
	return {};	-- These variables will overwrite any conversation variables you describe.
				-- You can call these variables in your dialogue by using 
				-- [/variable=REPLACE_WITH_VARIABLE_NAME]
	
end 	
					
Action.Execute = function()
	
	-- This is the code that's ran when the action is called.
	local plr=Player
	local pathMain=plr.PlayerGui.ScreenGui.Main.Window
	pathMain.open.Value = "frmSlims"
	print("слияние")	
	
end;

return Action;
1 Like

Thanks for posting more info!

I’ll look into this problem in the morning.

Alright, cool. I was able to replicate the bug, so I’m gonna work on a fix.

Thanks for pointing this out!

v1.0.1 bug fixes:

  • Message editing is now blocked while in delete mode
  • @GAVsi115 The plugin no longer lags the server after an action is repeatedly executed

I’m working on a way to smoothly update scripts like DialogueServerScript and DialogueClientScript, but to update these scripts, it’s necessary to manually edit these scripts.

The only one I edited for this update is DialogueServerScript. Click the link to go to the repo, and copy and paste the new code into the script located in the ServerScriptService.

In new projects, you don’t have to do this because I published the update directly to the plugin.

2 Likes

In v1.1.0, I’m thinking about removing Before Actions for responses and redirects. They work the same way as After Actions.

1 Like

v1.1.0 enhancements:

  • Sounds can now be played when the player clicks message boxes
  • @d_cyph @REALINONOOBYT Added keybinds
  • Removed Before Actions for responses and redirects
  • Cursor icon is now hidden when clicking closes the dialogue box
  • There is now a toolbar button to reset DialogueServerScript and DialogueClientScript

v1.1.1 bug fixes:

  • DialogueMakerRemoteConnections and ClientAPI can now be reset
  • Keybinds are now togglable
  • More server settings are documented
  • Keybinds will no longer cause the conversation to endlessly loop
1 Like

This seems like a great plugin and I’d love to use it, but there’s a bug. Whenever you click an NPC, your character freezes and you get this error in the output:
image

Happens even if I turn off all my plugins. I also tried clicking Fix Scripts, and it’s still happening.

1 Like

I’ll look into this right when I get out of school.

1 Like

v1.1.2 bug fixes:

  • @brokenVectors ClickSound will be ignored if DEFAULT_CLICK_SOUND is nil or 0
  • A duplicate variable of DEFAULT_CHAT_CONTINUE_KEY was renamed to DEFAULT_CHAT_CONTINUE_KEY_GAMEPAD
  • Clicking Fix Scripts will no longer delete themes
2 Likes

Do any of the new versions help with mobile? Because in my game, I used your plugin, and someone on mobile couldn’t do anything after clicking the NPC so they had to reset. So I had to add

Enum.InputType.Tap

or something like that so mobile players could talk to NPCs without having to reset.

2 Likes

Sure! I thought MouseButton1Click also worked with mobile devices, but I guess I was wrong. :sweat_smile:

I’ll add that into the official script tomorrow. Sorry about that!

2 Likes

Couldn’t sleep, so I decided to add it now lol


v1.1.3 bug fix:

  • @IAmPinleon Enum.UserInputType.Touch is now recorded for mobile devices
5 Likes

If this help, you could use the .Activate event, this works on all devices, even on Xbox (i believe…)

Your Plugin looks cool, i will maybe use it in the next days.

1 Like

Can someone help me make this gui frame become visible after pressing a response? I have no idea how modules work :pensive:.

Action.Execute = function()
	
	local player = game:GetService("Players").LocalPlayer
	local ReclassMOS = player.PlayerGui.ReclassMOS
	ReclassMOS.Frame.Visible = true
	
end;

The error says “ServerScriptService.DialogueServerScript:148: ServerScriptService.DialogueServerScript.Actions.After.AfterAction:26: attempt to index nil with ‘PlayerGui’”

If the module is required by a script, then it will not get LocalPlayer, I think.

I can really see this useful to people who are new to scripting and don’t know how to make their own. This is a useful plugin, but I don’t really need it.

Hope this plugin gets popular!

This is cool! Where can I get it?

Make sure you read the whole entire topic.

2 Likes

In actions, you don’t have to re-define the player in the Execute() function.

I already define Player for you, so you can use that variable when getting the PlayerGui.

1 Like

Seems as I’m getting an error in the ClientAPI on line 41. “Argument 1 missing or nil”
This is what the line says:

DialogueGui = ThemeFolder:FindFirstChild(API.Gui.GetDefaultThemeName());