summaryrefslogtreecommitdiff
path: root/src/scripting/lua.cpp
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-09 17:52:59 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-09 17:52:59 +0000
commit015d9180fb6e9024229dfeded26cf9c3553e36d8 (patch)
treed2cbe3b0414f16f55b43cc48ee11670af61f1459 /src/scripting/lua.cpp
parentac89d3ab1425f973c6d29cbe9856873489eec69b (diff)
downloadmanaserv-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.cpp17
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;
}