anyone can suggest me a simple lua wrapper with clean code?

I want to call from c++ lua functions but I dont really get it..

I only know a little LUA and C++.

Example lua function I have:

Get the level:

function Lv(a)
    local lv = GetChaAttr( a , ATTR_LV )
    return lv 

Get life points:

function Lp(a)
    local lp = GetChaAttr( a , ATTR_LP )
    return lp 

How can I create now a "GetChaAttr" function in c++ which fetch the player level/life points?

ATTR_LV = to get level
ATTR_LP = to get life points

Any idea which lua wrapper would be the best for me?

Edited by Daneos

2 Years
Discussion Span
Last Post by AceStryker

I always prefered the LUA Wrapper from the LUA.org, it's quite simple...Here's an example:

static void AddLUAFunction(lua_State* L, char* FuncName, lua_CFunction Func)
    //Adds a function to the lua global table
    //FuncName is the name of the function(in the LUA code)
    //Func is the function in C++
    lua_pushcclosure(L, Func, 0);
    lua_setglobal(L, FuncName);

static int ExecuteLUAFunction(lua_State* L, char* FuncName)
    //FuncName = LUA Function
    int iErr;
    if ((iErr = lua_pcall (L, 0, LUA_MULTRET, 0)) == 0)
         lua_pushstring (L, FuncName); //Pushes the function name
         lua_gettable (L, LUA_GLOBALSINDEX);   //Gets the function in the global table
         lua_pcall (L, 1, 0, 0); //Call the function expecting 1 result and 0 params
         int result = lua_gettop(L); //Gets the result in the top of the stack
         printf("Result In C: %d \n", result);
         return result;

static int printMessage(lua_State* L)
    const char* msg = lua_tostring(L, 1); //Gets the first parameter
    const char* smsg = lua_tostring(L, 2); //Gets the second parameters
    printf(msg, smsg);
    return 0; //Returns 0 parameters
} //AddLUAFunction(L, "printMessage", printMessage);

//In LUA:
//printMessage("Testing is: %s", "OK");

For more details check lua.org

Edited by AceStryker

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.