aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlinencloth <none@none>2010-12-28 05:01:31 +0100
committerlinencloth <none@none>2010-12-28 05:01:31 +0100
commitbff48d88adcda81cfa0fdb9ae9a80c086b372968 (patch)
tree7338cc2c77dc30d2cdf6cae11fdf4418c538fb97
parent2ecb9eec8b8bbd118431c4f799e3253f0aaefd75 (diff)
Core/CharacterDatabaseCleaner: Implement PersistentCharacterCleanFlags config value which can prevent specific cleaning flags from being disabled after a cleanup
--HG-- branch : trunk
-rw-r--r--src/server/game/Tools/CharacterDatabaseCleaner.cpp2
-rwxr-xr-xsrc/server/game/World/World.cpp1
-rwxr-xr-xsrc/server/game/World/World.h1
-rw-r--r--src/server/worldserver/worldserver.conf.dist11
4 files changed, 14 insertions, 1 deletions
diff --git a/src/server/game/Tools/CharacterDatabaseCleaner.cpp b/src/server/game/Tools/CharacterDatabaseCleaner.cpp
index 75fe2fb18fd..96e1d690213 100644
--- a/src/server/game/Tools/CharacterDatabaseCleaner.cpp
+++ b/src/server/game/Tools/CharacterDatabaseCleaner.cpp
@@ -55,7 +55,7 @@ void CharacterDatabaseCleaner::CleanDatabase()
if (flags & CLEANING_FLAG_QUESTSTATUS)
CleanCharacterQuestStatus();
- CharacterDatabase.DirectExecute("UPDATE worldstates SET value = 0 WHERE entry = 20004");
+ CharacterDatabase.DirectPExecute("UPDATE worldstates SET value = value & %u WHERE entry = 20004", sWorld->getIntConfig(CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS));
sLog->outString(">> Cleaned character database in %u ms", GetMSTimeDiffToNow(oldMSTime));
sLog->outString();
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 9e799513955..14fc52ec294 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -568,6 +568,7 @@ void World::LoadConfigSettings(bool reload)
}
m_bool_configs[CONFIG_ADDON_CHANNEL] = sConfig->GetBoolDefault("AddonChannel", true);
m_bool_configs[CONFIG_CLEAN_CHARACTER_DB] = sConfig->GetBoolDefault("CleanCharacterDB", false);
+ m_int_configs[CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS] = sConfig->GetIntDefault("PersistentCharacterCleanFlags", 0);
m_int_configs[CONFIG_CHAT_CHANNEL_LEVEL_REQ] = sConfig->GetIntDefault("ChatLevelReq.Channel", 1);
m_int_configs[CONFIG_CHAT_WHISPER_LEVEL_REQ] = sConfig->GetIntDefault("ChatLevelReq.Whisper", 1);
m_int_configs[CONFIG_CHAT_SAY_LEVEL_REQ] = sConfig->GetIntDefault("ChatLevelReq.Say", 1);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 5e2b29d6b9d..ce0afcb203a 100755
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -308,6 +308,7 @@ enum WorldIntConfigs
CONFIG_MAX_RESULTS_LOOKUP_COMMANDS,
CONFIG_DB_PING_INTERVAL,
CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION,
+ CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS,
INT_CONFIG_VALUE_COUNT
};
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 618553cee3d..188d6d800a6 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -379,6 +379,17 @@ MapUpdate.Threads = 1
CleanCharacterDB = 0
#
+# PersistentCharacterCleanFlags
+# Description: Determines the character clean flags that remain set after cleanups.
+# This is a bitmask value, check /doc/CharacterDBCleanup.txt for more
+# information.
+# Example: 14 - (Cleaning up skills, talents and spells will remain enabled after the
+# next cleanup)
+# Default: 0 - (All cleanup methods will be disabled after the next cleanup)
+
+PersistentCharacterCleanFlags = 0
+
+#
###################################################################################################
###################################################################################################