2

I am using LuaInterface with C#, and have got everything set up correctly.

What I want to be able to do is that when the script is started using lua.DoFile(), that the script has access to a Player object that I can send...

Current Code:

public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
    QMain.lua.DoFile(LuaScriptPath);
}

But as you can see the script will not have access to the Player object.

1 Answer 1

7

I see two options. The first one is to make your player a global variable for Lua:

QMain.lua['player'] = Player

Then you'll be able to access player in your script

The second option is to have the script define a function accepting player as parameter. So if your current script contains ...code... now it will contain:

function RunQuest(player)
    ...code...
end

and your C# code will look something like this:

public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
    QMain.lua.DoFile(LuaScriptPath); // this will not actually run anything, just define a function
    QMain.lua.GetFunction('RunQuest').Call(player);        
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.