After about an hour of the game, the dialog box stopped showing up. After choosing an answer.
An error occurred in the log:
RUSSIAN
Примерно через час игры перестало закрываться диалоговое окно. После выбора ответа.
В логе вышла ошибка:
After about an hour of the game, the dialog box stopped showing up. After choosing an answer.
An error occurred in the log:
Примерно через час игры перестало закрываться диалоговое окно. После выбора ответа.
В логе вышла ошибка:
Did you attach an action to the response?
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”
Да.
Раз 20 оно срабатывает. Потом окно не закрывается и действие не запускается.
При этом у меня есть альтернативный запуск этого же действия - он продолжает работать.
Как можно видеть из кода, там нет ничего, что могло бы вызвать ожидание. Разве что получение Player из вышестоящего модуля.
Можно было вообще одной строкой сделать:
Player.PlayerGui.ScreenGui.Main.Window.open.Value = “frmSlims”
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;
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:
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.
In v1.1.0, I’m thinking about removing Before Actions for responses and redirects. They work the same way as After Actions.
v1.1.0 enhancements:
DialogueServerScript
and DialogueClientScript
v1.1.1 bug fixes:
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:
Happens even if I turn off all my plugins. I also tried clicking Fix Scripts, and it’s still happening.
I’ll look into this right when I get out of school.
v1.1.2 bug fixes:
DEFAULT_CLICK_SOUND
is nil
or 0
DEFAULT_CHAT_CONTINUE_KEY
was renamed to DEFAULT_CHAT_CONTINUE_KEY_GAMEPAD
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.
Sure! I thought MouseButton1Click also worked with mobile devices, but I guess I was wrong.
I’ll add that into the official script tomorrow. Sorry about that!
Couldn’t sleep, so I decided to add it now lol
v1.1.3 bug fix:
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.
Can someone help me make this gui frame become visible after pressing a response? I have no idea how modules work .
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.