diff --git a/source/WorldServer/LuaFunctions.cpp b/source/WorldServer/LuaFunctions.cpp index b1e9e74..abf38f6 100644 --- a/source/WorldServer/LuaFunctions.cpp +++ b/source/WorldServer/LuaFunctions.cpp @@ -14892,4 +14892,25 @@ int EQ2Emu_lua_AdjustHatePosition(lua_State* state) { } lua_interface->ResetFunctionStack(state); return 0; +} + + +int EQ2Emu_lua_RemoveCharacterProperty(lua_State* state) { + Spawn* player = lua_interface->GetSpawn(state); + string propname = lua_interface->GetStringValue(state, 2); + lua_interface->ResetFunctionStack(state); + + if(!player || !player->IsPlayer()) { + lua_interface->LogError("%s: LUA RemoveCharacterProperty command error: player is not valid", lua_interface->GetScriptName(state)); + return 0; + } + + if(((Player*)player)->GetCharacterID() == 0) { + lua_interface->LogError("%s: LUA RemoveCharacterProperty player has no character id.", lua_interface->GetScriptName(state)); + return 0; + } + + Query query; + query.AddQueryAsync(((Player*)player)->GetCharacterID(), &database, Q_DELETE, "delete from character_properties where charid = %u and propname='%s'", ((Player*)player)->GetCharacterID(), propname.c_str()); + return 0; } \ No newline at end of file diff --git a/source/WorldServer/LuaFunctions.h b/source/WorldServer/LuaFunctions.h index 2894669..b66830b 100644 --- a/source/WorldServer/LuaFunctions.h +++ b/source/WorldServer/LuaFunctions.h @@ -698,4 +698,5 @@ int EQ2Emu_lua_IsInRaid(lua_State* state); int EQ2Emu_lua_InSameRaid(lua_State* state); int EQ2Emu_lua_GetRaid(lua_State* state); int EQ2Emu_lua_AdjustHatePosition(lua_State* state); +int EQ2Emu_lua_RemoveCharacterProperty(lua_State* state); #endif \ No newline at end of file diff --git a/source/WorldServer/LuaInterface.cpp b/source/WorldServer/LuaInterface.cpp index ad19c74..857d5ce 100644 --- a/source/WorldServer/LuaInterface.cpp +++ b/source/WorldServer/LuaInterface.cpp @@ -1838,6 +1838,7 @@ void LuaInterface::RegisterFunctions(lua_State* state) { lua_register(state,"InSameRaid", EQ2Emu_lua_InSameRaid); lua_register(state,"GetRaid", EQ2Emu_lua_GetRaid); lua_register(state,"AdjustHatePosition", EQ2Emu_lua_AdjustHatePosition); + lua_register(state,"RemoveCharacterProperty", EQ2Emu_lua_RemoveCharacterProperty); } void LuaInterface::LogError(const char* error, ...) {