Yarn 1.2.7
-
- Posts: 83
- Joined: Wed Jun 24, 2020 5:06 pm
Re: Yarn 1.2.7
Right, I forgot, the last package made the Run Node work weird,,,, i thought it was freezing the conversation, but it turns out if I hit the interact button again it will continue to the next conversation. I can also manually add the Continue() sequence to the run node and it fixes it.
yield return new WaitForSeconds(time); throws an error that it can't convert double to float (int is fine though?)
yield return new WaitForSeconds(time); throws an error that it can't convert double to float (int is fine though?)
Re: Yarn 1.2.7
Try this version:
I'll let you know what I find out about the Run Node.
Code: Select all
public void Pause(double time)
{
StartCoroutine(StartWait((int)time));
}
I'll let you know what I find out about the Run Node.
-
- Posts: 83
- Joined: Wed Jun 24, 2020 5:06 pm
Re: Yarn 1.2.7
I'm trying to make a command that adds quests ands then another that updates the quest state, but I'm not sure why it's not working?
Code: Select all
<<addQuest "paperQuest" "..." "..." "...">>
<<questState {"paperQuest"} "active">>
Code: Select all
public void AddQuest(string questName, string desc, string succ, string failure)
{
QuestLog.AddQuest(questName, desc, succ, failure, PixelCrushers.DialogueSystem.QuestState.Unassigned);
Debug.Log(questName + " should be " + QuestLog.CurrentQuestState(questName) + " " + QuestLog.GetQuestDescription(questName)); // this doesn't print at all
Debug.Log(QuestLog.GetAllQuests());
}
public void QuestState(string questName, string stateString)
{
//QuestState.Active, QuestState.Unassigned, QuestState.Success
if (stateString == "unassigned")
state = PixelCrushers.DialogueSystem.QuestState.Unassigned;
else if (stateString == "active")
state = PixelCrushers.DialogueSystem.QuestState.Active;
else if (stateString == "sucess")
state = PixelCrushers.DialogueSystem.QuestState.Success;
else if (stateString == "fail")
state = PixelCrushers.DialogueSystem.QuestState.Failure;
else
state = PixelCrushers.DialogueSystem.QuestState.Unassigned;
QuestLog.SetQuestState(questName, state);
Debug.Log(questName + " should be " + QuestLog.CurrentQuestState(questName)); // this prints, but doesn't show the quest state
}
Re: Yarn 1.2.7
Hi,
Please try this patch. I think it should address both issues.
(see later post)
Please try this patch. I think it should address both issues.
(see later post)
-
- Posts: 83
- Joined: Wed Jun 24, 2020 5:06 pm
Re: Yarn 1.2.7
I think this overwrote something with the pause command? I am getting this again:
My quests function works, but only if the strings passed are a single word. Maybe I'm just formatting this wrong - I've tried it with and without the curly brackets.
It's also still doing the pause on Run Nodes.
Is there a way to set the quest display name by script?
Totally forgot to mention, looks like the function execution problem is fixed! They now only go off when the right branch is selected.
Code: Select all
ArgumentException: Object of type 'System.String' cannot be converted to type 'System.Double'.
Dialogue System: Lua code '_G['pause']('1')
' threw exception 'Object of type 'System.String' cannot be converted to type 'System.Double'.'
Code: Select all
Dialogue System: Lua code 'local run_cmd_args = EvaluateYarnExpression({ 'Hit 'Q' to toggle your MP3 player.' })
_G['alert'](run_cmd_args[1])
' threw exception 'Code has syntax errors:
Line 1, Col 45 '{': Failed to parse Expr of GroupExpr.
Line 1, Col 44 '(': Failed to parse Letter of Name.
Line 1, Col 44 '(': Failed to parse Name of VarName.
Line 1, Col 44 '(': Failed to parse 'nil' of NilLiteral.
Line 1, Col 44 '(': Failed to parse Text of BoolLiteral.
Line 1, Col 44 '(': Failed to parse '0'...'9' of Digit.
Line 1, Col 44 '(': Failed to parse (Digit)+ of FloatNumber.
Line 1, Col 44 '(': Failed to parse Name of VariableArg.
Line 1, Col 44 '(': Failed to parse firstTerm of OperatorExpr.
Line 1, Col 44 '(': Failed to parse Expr of ExprStmt.
Line 1, Col 44 '(': Failed to parse remaining input.
Code: Select all
Dialogue System: Lua code 'local run_cmd_args = EvaluateYarnExpression({ 'Deliver papers for Zane's paper route.', 'You've delivered all of the papers!', 'You missed the deadline and Zane's customers are upset with you both.' })
_G['addQuest']("paperQuest", run_cmd_args[1], run_cmd_args[2], run_cmd_args[3])
' threw exception 'Code has syntax errors:
Line 1, Col 45 '{': Failed to parse Expr of GroupExpr.
Line 1, Col 44 '(': Failed to parse Letter of Name.
Line 1, Col 44 '(': Failed to parse Name of VarName.
Line 1, Col 44 '(': Failed to parse 'nil' of NilLiteral.
Line 1, Col 44 '(': Failed to parse Text of BoolLiteral.
Line 1, Col 44 '(': Failed to parse '0'...'9' of Digit.
Line 1, Col 44 '(': Failed to parse (Digit)+ of FloatNumber.
Line 1, Col 44 '(': Failed to parse Name of VariableArg.
Line 1, Col 44 '(': Failed to parse firstTerm of OperatorExpr.
Line 1, Col 44 '(': Failed to parse Expr of ExprStmt.
Line 1, Col 44 '(': Failed to parse remaining input.
Is there a way to set the quest display name by script?
Totally forgot to mention, looks like the function execution problem is fixed! They now only go off when the right branch is selected.
Last edited by gblekkenhorst on Tue Oct 11, 2022 10:03 pm, edited 1 time in total.
Re: Yarn 1.2.7
Typo. All fixed:
DS_YarnPatch_2022-10-11a.unitypackage
DS_YarnPatch_2022-10-11a.unitypackage
Yes. Use DialogueLua.SetQuestField(). For example, if you have a quest whose Name is "KillRatsQuest", you can set the display name to "Mr. Baker's Rat Problem" like this:gblekkenhorst wrote: ↑Tue Oct 11, 2022 7:24 pmIs there a way to set the quest display name by script?
Code: Select all
DialogueLua.SetQuestField("KillRatsQuest", "Display Name", "Mr. Baker's Rat Problem");
-
- Posts: 83
- Joined: Wed Jun 24, 2020 5:06 pm
Re: Yarn 1.2.7
Still some errors:
This is my yarn:
Here's what I'm getting:
{$carFundLeft} is just printing as {$0}. This started before 10-11a, I noticed it in our build last night before I added it.
pause works great!
alert 1:
Alert 2 I'm obviously coding wrong, just wanted to check
I also added some stuff to YarnConverter.cs that I think are helpful!
And the RUN nodes don't have the continue sequence they're presenting as an invisible dialogue box, but I figured out how to fix it! I added this to 1111:
I added in some code at 1032 to be able to access some of the Sequencer commands from Yarn
this is accessible through calling
I tried doing ShowAlert, but I couldn't do it because I haven't figured out how to pass a string from Yarn. You can't set active to true, even though Zane is not involved in this conversation. I think the sequences are still useful!
This is my yarn:
Code: Select all
Thought: Alrighty. If I want to get this old car fixed up, I'm going to have to earn some money.
<<set $carFundLeft to $carFundTotal - $carFund>>
Thought: I'm SO close, just ${$carFundLeft} to go - a few gigs should do it.
Thought: Better check my MP3 player is juiced up before I head out.
<<bringUpMP3>>
<<pause 2>>
Thought: Looks good! I got some new stuff on here, I'm excited to check out the new playlists.
<<alert {"Hit 'Q' to open and close your MP3 player"}>>
<<alert "Hit 'Q' to open and close your MP3 player">>
//<<addQuest "paperQuest" "Extra Extra" "Deliver papers for Zane's paper route." "You've delivered all of the papers!" "You missed the deadline and Zane's customers are upset with you both.">>
{$carFundLeft} is just printing as {$0}. This started before 10-11a, I noticed it in our build last night before I added it.
pause works great!
alert 1:
Code: Select all
Dialogue System: Lua code 'local run_cmd_args = EvaluateYarnExpression({ 'Hit 'Q' to open and close your MP3 player' })
_G['alert'](run_cmd_args[1])
' threw exception 'Code has syntax errors:
Line 1, Col 45 '{': Failed to parse Expr of GroupExpr.
Line 1, Col 44 '(': Failed to parse Letter of Name.
Line 1, Col 44 '(': Failed to parse Name of VarName.
Line 1, Col 44 '(': Failed to parse 'nil' of NilLiteral.
Line 1, Col 44 '(': Failed to parse Text of BoolLiteral.
Line 1, Col 44 '(': Failed to parse '0'...'9' of Digit.
Line 1, Col 44 '(': Failed to parse (Digit)+ of FloatNumber.
Line 1, Col 44 '(': Failed to parse Name of VariableArg.
Line 1, Col 44 '(': Failed to parse firstTerm of OperatorExpr.
Line 1, Col 44 '(': Failed to parse Expr of ExprStmt.
Line 1, Col 44 '(': Failed to parse remaining input.
'
UnityEngine.Debug:LogError (object)
PixelCrushers.DialogueSystem.Lua:RunRaw (string,bool,bool) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/Lua/Lua Wrapper/Lua Interpreter/Lua.cs:228)
PixelCrushers.DialogueSystem.Lua:Run (string,bool,bool) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/Lua/Lua Wrapper/Lua Interpreter/Lua.cs:129)
PixelCrushers.DialogueSystem.ConversationModel:GetState (PixelCrushers.DialogueSystem.DialogueEntry,bool,bool,bool) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Model/Logic/Model/ConversationModel.cs:234)
PixelCrushers.DialogueSystem.ConversationModel:GetState (PixelCrushers.DialogueSystem.DialogueEntry) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Model/Logic/Model/ConversationModel.cs:304)
PixelCrushers.DialogueSystem.ConversationController:OnFinishedSubtitle (object,System.EventArgs) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Controller/ConversationController.cs:270)
PixelCrushers.DialogueSystem.ConversationView:FinishSubtitle () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/View/View/ConversationView.cs:428)
PixelCrushers.DialogueSystem.ConversationView:HandleContinueButtonClick () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/View/View/ConversationView.cs:400)
PixelCrushers.DialogueSystem.ConversationView:OnConversationContinue (PixelCrushers.DialogueSystem.IDialogueUI) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/View/View/ConversationView.cs:383)
PixelCrushers.DialogueSystem.AbstractDialogueUI:OnContinueConversation () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/UI/Abstract/Dialogue/AbstractDialogueUI.cs:366)
PixelCrushers.DialogueSystem.AbstractDialogueUI:OnContinue () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/UI/Abstract/Dialogue/AbstractDialogueUI.cs:356)
PixelCrushers.DialogueSystem.StandardUIContinueButtonFastForward:OnFastForward () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/UI/Standard/Effects/StandardUIContinueButtonFastForward.cs:75)
UnityEngine.EventSystems.EventSystem:Update () (at C:/Program Files/UnityEditors/2020.2.6f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:385)
Code: Select all
Dialogue System: Lua code '_G['alert'](' "', 'Hit', 'Q', 'to', 'open', 'and', 'close', 'your', 'MP3', 'player', '"')
' threw exception 'Number of parameters specified does not match the expected number.'
UnityEngine.Debug:LogError (object)
I also added some stuff to YarnConverter.cs that I think are helpful!
And the RUN nodes don't have the continue sequence they're presenting as an invisible dialogue box, but I figured out how to fix it! I added this to 1111:
Code: Select all
dlgEntry.Sequence = EntrySequence.ContinueDialogue;
Code: Select all
else if (cmdName == "seq")
{
var dlgEntry = CreateDialogueEntry(conversation, title, desc);
var cmdType = cmdTokens.Length > 1 ? cmdTokens[1] : "0";
var cmdTypeString = "";
switch (cmdType)
{
case "LookAt":
cmdTypeString = "LookAt(" + cmdTokens[2] + "," + cmdTokens[3] + ");\n Continue();";
break;
case "SetActive": // only works to disable
cmdTypeString = "SetActive(" + cmdTokens[2] + "," + cmdTokens[3] + "); \n Continue();";
break;
default:
cmdTypeString = "";
break;
}
if (cmdTypeString != "")
{
dlgEntry.Sequence = String.Format(cmdTypeString);
dlgEntry.Title = "Run " + cmdType;
basicStmt.AddDialogueEntry(dlgEntry);
}
}
Code: Select all
<<seq LookAt Car Zane>>
<<seq SetActive Zane false>>
Re: Yarn 1.2.7
> {$carFundLeft} is just printing as {$0}. This started before 10-11a, I noticed it in our build last night before I added it.
I'll check this.
> alert 1:
> Alert 2 I'm obviously coding wrong, just wanted to check
Am I understanding Yarn wrong, or is Alert 2 the correct Yarn syntax?
The bug in the Yarn importer is that it's not properly handling the embedded single quotes in:
"Hit 'Q' to open and close your MP3 player"
>And the RUN nodes don't have the continue sequence they're presenting as an invisible dialogue box, but I figured out how to fix it! I added this to 1111:</b>
I'll add that.
> I added in some code at 1032 to be able to access some of the Sequencer commands from Yarn
That's a good idea! What if we do it like this instead:
<<seq "LookAt(Car, Zane)" >>
<<seq "SetActive(Zane, false)"e>>
This way we won't have to write importer code for each sequencer command, and it will work even for your own custom sequencer commands and any sequencer commands added by third party integrations.
I'll plan to have a patch to address these issues by end of day tomorrow.
I'll check this.
> alert 1:
> Alert 2 I'm obviously coding wrong, just wanted to check
Am I understanding Yarn wrong, or is Alert 2 the correct Yarn syntax?
The bug in the Yarn importer is that it's not properly handling the embedded single quotes in:
"Hit 'Q' to open and close your MP3 player"
>And the RUN nodes don't have the continue sequence they're presenting as an invisible dialogue box, but I figured out how to fix it! I added this to 1111:</b>
Code: Select all
dlgEntry.Sequence = EntrySequence.ContinueDialogue;
> I added in some code at 1032 to be able to access some of the Sequencer commands from Yarn
That's a good idea! What if we do it like this instead:
<<seq "LookAt(Car, Zane)" >>
<<seq "SetActive(Zane, false)"e>>
This way we won't have to write importer code for each sequencer command, and it will work even for your own custom sequencer commands and any sequencer commands added by third party integrations.
I'll plan to have a patch to address these issues by end of day tomorrow.
Re: Yarn 1.2.7
I running late on this. It will be my priority tomorrow morning.