diff options
author | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-08-09 17:52:59 +0000 |
---|---|---|
committer | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-08-09 17:52:59 +0000 |
commit | 015d9180fb6e9024229dfeded26cf9c3553e36d8 (patch) | |
tree | d2cbe3b0414f16f55b43cc48ee11670af61f1459 /src/scripting/lua.cpp | |
parent | ac89d3ab1425f973c6d29cbe9856873489eec69b (diff) | |
download | manaserv-015d9180fb6e9024229dfeded26cf9c3553e36d8.tar.gz manaserv-015d9180fb6e9024229dfeded26cf9c3553e36d8.tar.bz2 manaserv-015d9180fb6e9024229dfeded26cf9c3553e36d8.tar.xz manaserv-015d9180fb6e9024229dfeded26cf9c3553e36d8.zip |
Converted NPC class to scripting engine.
Diffstat (limited to 'src/scripting/lua.cpp')
-rw-r--r-- | src/scripting/lua.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index b22d2879..099e3268 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -47,7 +47,7 @@ class LuaScript: public Script void push(int); - void push(Character *); + void push(Thing *); int execute(); @@ -90,8 +90,11 @@ void LuaScript::push(int v) ++nbArgs; } -void LuaScript::push(Character *v) +void LuaScript::push(Thing *v) { + assert(nbArgs >= 0); + lua_pushlightuserdata(mState, v); + ++nbArgs; } int LuaScript::execute() @@ -99,13 +102,15 @@ int LuaScript::execute() assert(nbArgs >= 0); int res = lua_pcall(mState, nbArgs, 1, 0); nbArgs = -1; - if (res || !lua_isnumber(mState, 0)) + if (res || !lua_isnumber(mState, 1)) { - LOG_ERROR("Failure while calling Lua function: " - << lua_tostring(mState, 0)); + LOG_WARN("Failure while calling Lua function: error=" << res + << ", type=" << lua_typename(mState, lua_type(mState, 1)) + << ", message=" << lua_tostring(mState, 1)); + lua_pop(mState, 1); return 0; } - res = lua_tointeger(mState, 0); + res = lua_tointeger(mState, 1); lua_pop(mState, 1); return res; } |