Page 1 of 1
what to put in Lua Function Registration argument
Posted: Mon Mar 29, 2021 3:30 am
by DearDeerDee
Hi Tony.
I want to register the function GetPassengerInfo, it has an argument of int.
- Snipaste_2021-03-29_12-14-52.png (22.44 KiB) Viewed 3694 times
But I don't know what to put in the brackets when registering the function.
- Snipaste_2021-03-29_12-15-41.png (12.15 KiB) Viewed 3694 times
Re: what to put in Lua Function Registration argument
Posted: Mon Mar 29, 2021 3:48 am
by DearDeerDee
Oh I just realized that the parameter must be of double type.
How do I cast from double to int then?
- Snipaste_2021-03-29_15-46-33.png (32.05 KiB) Viewed 3692 times
Re: what to put in Lua Function Registration argument
Posted: Mon Mar 29, 2021 9:15 am
by Tony Li
Hi,
Use "(int)" in front of a type to cast it as an int.
Only register basic types with Lua. For example, say PassengerGroupData has two variables:
Code: Select all
public class PassengerGroupData
{
public int seatingOrder;
public string category;
}
Write a C# method for each basic variable that you want to read in the Dialogue System. Example:
Code: Select all
public static double GetPassengerGroupSeatingOrder(double startID)
{
return GetPassengerInfo((int)startID).seatingOrder; // (Note: Should really check if GetPassengerInfo returns null.)
}
public static string GetPassengerGroupCategory(double startID)
{
return GetPassengerInfo((int)startID).category;
}
Since these are static methods, you can use 'null' instead of 'this'. Pass "(double)0" for the parameter to specify that it expects a 'double' value:
Code: Select all
Lua.RegisterFunction("GetPassengerGroupSeatingOrder", null,
SymbolExtensions.GetMethodInfo(() => GetPassengerGroupSeatingOrder((double)0));
Lua.RegisterFunction("GetPassengerGroupCategory", null,
SymbolExtensions.GetMethodInfo(() => GetPassengerGroupCategory((double)0));
Then you can use it in your conversations like this example:
- Conditions: GetPassengerGroupSeatingOrder(Variable["PlayerStartID"]) > 3
- Dialogue Text: Sorry, we're only seating groups 1-3 right now. Please wait at the back of the line."
Re: what to put in Lua Function Registration argument
Posted: Sun Sep 19, 2021 8:23 pm
by Baldigar
I'm asking about this in this thread because it's related to the main topic of it (and because the answer may be valuable to be in the same space as the related information).
Am I correct in thinking that the way you would register a function that accepts a bool argument be as follows?
The method:
Code: Select all
private void ExampleMethod(bool boolValue)
{
//Statements
}
The registration of the method:
Code: Select all
Lua.RegisterFunction("ExampleMethod", this, SymbolExtensions.GetMethodInfo(() => ExampleMethod((bool)default)));
Re: what to put in Lua Function Registration argument
Posted: Sun Sep 19, 2021 8:35 pm
by Tony Li
Hi,
You can just use true or false:
Code: Select all
Lua.RegisterFunction("ExampleMethod", this, SymbolExtensions.GetMethodInfo(() => ExampleMethod(false)));
or default:
Code: Select all
Lua.RegisterFunction("ExampleMethod", this, SymbolExtensions.GetMethodInfo(() => ExampleMethod(default(typeof(bool)))));
but I think true or false is simpler. Either one is fine.