commit 87f8ac21ca6d2d086984dfc39b1869dc51ecd36fAuthor: Vitasic <vitasic_pokataev@yandex.ru>
Date: Tue Jun 26 15:43:38 2012 +0400
Add Fake Players
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index 966eae5..3f4e3fb 100755
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -274,8 +274,17 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recv_data)
bool receiverIsPlayer = AccountMgr::IsPlayerAccount(receiver ? receiver->GetSession()->GetSecurity() : SEC_PLAYER);
if (!receiver || (senderIsPlayer && !receiverIsPlayer && !receiver->isAcceptWhispers() && !receiver->IsInWhisperWhiteList(sender->GetGUID())))
{
+ // If Fake WHO List system on then show player DND
+ if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST))
+ {
+ sWorld->SendWorldText(LANG_NOT_WHISPER);
+ return;
+ }
+ else
+ {
SendPlayerNotFoundNotice(to);
return;
+ }
}
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT) && senderIsPlayer && receiverIsPlayer)
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 11f0857..dfc4b6a 100755
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -356,8 +356,40 @@ void WorldSession::HandleWhoOpcode(WorldPacket & recv_data)
++displaycount;
}
-
- data.put(0, displaycount); // insert right count, count displayed
+
+ if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST) && displaycount < 49)
+ {
+ // Fake players on WHO LIST 0, 1, 2, 3, 4, 5 6
+ QueryResult result = CharacterDatabase.Query("SELECT guid,name,race,class,level,zone,gender FROM characters WHERE online>1 AND level > 3");
+ if (result)
+ {
+ do
+ {
+ Field *fields = result->Fetch();
+
+ std::string pname = fields[1].GetString(); // player name
+ std::string gname; // guild name
+ uint32 lvl = fields[4].GetUInt32(); // player level
+ uint32 class_ = fields[3].GetUInt32(); // player class
+ uint32 race = fields[2].GetUInt32(); // player race
+ uint32 pzoneid = fields[5].GetUInt32(); // player zone id
+ uint8 gender = fields[6].GetUInt8(); // player gender
+
+ data << pname; // player name
+ data << gname; // guild name
+ data << uint32(lvl); // player level
+ data << uint32(class_); // player class
+ data << uint32(race); // player race
+ data << uint8(gender); // player gender
+ data << uint32(pzoneid); // player zone id
+
+ if ((++matchcount) == 49)
+ break;
+ } while (result->NextRow());
+ }
+ }
+
+ data.put(0, matchcount); // insert right count, count displayed
data.put(4, matchcount); // insert right count, count of matches
SendPacket(&data);
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 8a6b4cd..518effd 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -667,6 +667,7 @@ void World::LoadConfigSettings(bool reload)
m_bool_configs[CONFIG_ALLOW_TWO_SIDE_WHO_LIST] = ConfigMgr::GetBoolDefault("AllowTwoSide.WhoList", false);
m_bool_configs[CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND] = ConfigMgr::GetBoolDefault("AllowTwoSide.AddFriend", false);
m_bool_configs[CONFIG_ALLOW_TWO_SIDE_TRADE] = ConfigMgr::GetBoolDefault("AllowTwoSide.trade", false);
+ m_bool_configs[CONFIG_FAKE_WHO_LIST] = ConfigMgr::GetBoolDefault("Fake.WHO.List", false);
m_int_configs[CONFIG_STRICT_PLAYER_NAMES] = ConfigMgr::GetIntDefault ("StrictPlayerNames", 0);
m_int_configs[CONFIG_STRICT_CHARTER_NAMES] = ConfigMgr::GetIntDefault ("StrictCharterNames", 0);
m_int_configs[CONFIG_STRICT_PET_NAMES] = ConfigMgr::GetIntDefault ("StrictPetNames", 0);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index f566ece..0d430bf 100755
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -100,6 +100,7 @@ enum WorldBoolConfigs
CONFIG_ALLOW_TWO_SIDE_WHO_LIST,
CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND,
CONFIG_ALLOW_TWO_SIDE_TRADE,
+ CONFIG_FAKE_WHO_LIST,
CONFIG_ALL_TAXI_PATHS,
CONFIG_INSTANT_TAXI,
CONFIG_INSTANCE_IGNORE_LEVEL,
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 9f0ad53..40a04a1 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1601,6 +1601,14 @@ AllowTwoSide.Trade = 0
TalentsInspecting = 1
+# Fake.WHO.List
+# Add fake players to fill in WHO LIST (who is online list, "O" button) if there is less then
+# 49 real players online (need to set online=2 in character database in order to work)
+# Default: 0 (disabled)
+# 1 (enabled)
+
+Fake.Who.List = 0
+
#
###################################################################################################
回复下载完整代码
|