From aa96c42eb0ac6866db2e5a2ba89660cc3a1af789 Mon Sep 17 00:00:00 2001 From: Rochet2 Date: Thu, 19 Jun 2014 01:09:51 +0300 Subject: [PATCH] Eluna misc fixes --- HookMgr.cpp | 3 ++- PlayerMethods.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/HookMgr.cpp b/HookMgr.cpp index 2716de4..95451a4 100644 --- a/HookMgr.cpp +++ b/HookMgr.cpp @@ -68,6 +68,7 @@ ENDCALL(); uint32 _LuaEvent = EVENT; \ int _LuaStackTop = lua_gettop(L); \ lua_rawgeti(L, LUA_REGISTRYINDEX, _Luabind); \ + int _LuaFuncTop = lua_gettop(L); \ Eluna::Push(L, _LuaEvent); #define ENTRY_EXECUTE(RETVALS) \ @@ -83,7 +84,7 @@ ENDCALL(); { \ ELUNA_LOG_ERROR("[Eluna]: Ending event %u for %s, stack top was %i and was supposed to be >= %i. Report to devs", _LuaEvent, _LuaBindType, lua_gettop(L), _LuaStackTop); \ } \ - if (_LuaReturnValues != LUA_MULTRET && lua_gettop(L) > _LuaStackTop + _LuaReturnValues) \ + if (_LuaReturnValues != LUA_MULTRET && lua_gettop(L) > _LuaStackTop + (_LuaFuncTop-_LuaStackTop)*_LuaReturnValues) \ { \ ELUNA_LOG_ERROR("[Eluna]: Ending event %u for %s, stack top was %i and was supposed to be between %i and %i. Report to devs", _LuaEvent, _LuaBindType, lua_gettop(L), _LuaStackTop, _LuaStackTop + _LuaReturnValues); \ } \ diff --git a/PlayerMethods.h b/PlayerMethods.h index b8b618d..f4448c3 100644 --- a/PlayerMethods.h +++ b/PlayerMethods.h @@ -1966,7 +1966,7 @@ namespace LuaPlayer if (!item) { uint32 itemId = Eluna::CHECKVAL(L, 2); - player->DestroyItemCount(itemId, itemCount, true); + player->DestroyItemCount(itemId, itemCount, false); } else player->DestroyItemCount(item, itemCount, true);