LUA Function RemoveCharacterProperty(Player, "somevar") to remove any set into the info struct dynamically

This commit is contained in:
Emagi 2025-08-18 13:57:49 -04:00
parent fae7cf7773
commit a117d6c3fd
3 changed files with 23 additions and 0 deletions

View File

@ -14892,4 +14892,25 @@ int EQ2Emu_lua_AdjustHatePosition(lua_State* state) {
} }
lua_interface->ResetFunctionStack(state); lua_interface->ResetFunctionStack(state);
return 0; 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;
} }

View File

@ -698,4 +698,5 @@ int EQ2Emu_lua_IsInRaid(lua_State* state);
int EQ2Emu_lua_InSameRaid(lua_State* state); int EQ2Emu_lua_InSameRaid(lua_State* state);
int EQ2Emu_lua_GetRaid(lua_State* state); int EQ2Emu_lua_GetRaid(lua_State* state);
int EQ2Emu_lua_AdjustHatePosition(lua_State* state); int EQ2Emu_lua_AdjustHatePosition(lua_State* state);
int EQ2Emu_lua_RemoveCharacterProperty(lua_State* state);
#endif #endif

View File

@ -1838,6 +1838,7 @@ void LuaInterface::RegisterFunctions(lua_State* state) {
lua_register(state,"InSameRaid", EQ2Emu_lua_InSameRaid); lua_register(state,"InSameRaid", EQ2Emu_lua_InSameRaid);
lua_register(state,"GetRaid", EQ2Emu_lua_GetRaid); lua_register(state,"GetRaid", EQ2Emu_lua_GetRaid);
lua_register(state,"AdjustHatePosition", EQ2Emu_lua_AdjustHatePosition); lua_register(state,"AdjustHatePosition", EQ2Emu_lua_AdjustHatePosition);
lua_register(state,"RemoveCharacterProperty", EQ2Emu_lua_RemoveCharacterProperty);
} }
void LuaInterface::LogError(const char* error, ...) { void LuaInterface::LogError(const char* error, ...) {