Hi there,
Just bought this - absolutely love it already! Thanks for the great tutorial videos and support.
I'm currently working through some project ideas (and I'm fairly new to Unity too, but I'm trying!). I was watching the Conversation Conditions video, and it explained what it did really well, but I have a follow-up question. Around the 1:04 mark, you had a variable. Can I add an existing variable from my Player script, for instance, or a script outside of Dialogue System?
Basically:
1. Can I add variables from outside DS into DS?
2. Can I access variables from inside DS outside of it?
3. How robust is it, and is there documentation?
Thank you so much! I found the four-year-old video dealing with Lua scripts, but that didn't seem applicable here.
P.S. Or is that Lua applicable? LOL. Does DS only know Lua and not C#?
Stat checks
Re: Stat checks
Hi,
Lua can know C#. See: Register C# With Lua. For a C# variable, you'd register get and set methods.
You may also be interested in: How To: Do Skill Checks in Conversations
Lua can know C#. See: Register C# With Lua. For a C# variable, you'd register get and set methods.
You may also be interested in: How To: Do Skill Checks in Conversations
-
- Posts: 3
- Joined: Mon May 29, 2023 1:12 pm
Re: Stat checks
Hi Tony,Tony Li wrote: ↑Mon May 29, 2023 3:10 pm Hi,
Lua can know C#. See: Register C# With Lua. For a C# variable, you'd register get and set methods.
You may also be interested in: How To: Do Skill Checks in Conversations
Thanks for the quick response. So if I had a C# public variable on my Player script, let's say, I'd follow the Starter Template Script for Custom Lua Functions and use one of the allowed data types? That seems like the only way?
I'll check out that article/package as well, and I'll review the video too. Little daunting but I think I get it now!
I'll give an example of what I'm trying to accomplish if it helps:
- Depending on a response in a *conversation, I want to subtract or add to a particular skill. Then, I want to use that skill number to determine dialogue options later.
Re: Stat checks
Hi,
You can't register C# variables directly to Lua. You have to write C# methods and register those. For example, say you have a variable named "intimidate" that represents the player's intimidation skill. Don't register the intimidate variable. Instead, write methods to get and set the variable's value:
And register those methods:
Then in your conversations you can use those methods. For example, this option will only be available if the player has an intimidate skill of 20 or higher:
You can't register C# variables directly to Lua. You have to write C# methods and register those. For example, say you have a variable named "intimidate" that represents the player's intimidation skill. Don't register the intimidate variable. Instead, write methods to get and set the variable's value:
Code: Select all
public int intimidate;
public double GetIntimidateSkill() { return intimidate; }
public void SetIntimidateSkill(double value) { intimidate = value; }
Code: Select all
Lua.RegisterFunction(nameof(GetIntimidateSkill), this, SymbolExtensions.GetMethodInfo(() => GetIntimidateSkill()));
Lua.RegisterFunction(nameof(SetIntimidateSkill), this, SymbolExtensions.GetMethodInfo(() => SetIntimidateSkill(0)));
- Menu Text: Intimidate the shopkeeper.
- Conditions: GetIntimidateSkill() >= 20
-
- Posts: 3
- Joined: Mon May 29, 2023 1:12 pm
Re: Stat checks
Hi Tony,
OH. Oh, I get it now. Thank you so much for the explanation. I appreciate it, you, and the product!
OH. Oh, I get it now. Thank you so much for the explanation. I appreciate it, you, and the product!