Diyvol

Fake_Players (TrinityCore)

Jan 7th, 2015
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 20.21 KB | None | 0 0
  1. From fb7f472139ddccb2913dedbbac627bd563ccd282 Mon Sep 17 00:00:00 2001
  2. Date: Sat, 22 Nov 2014 13:41:21 -0500
  3. Subject: [PATCH] Fake_Players
  4.  
  5. ---
  6.  .../Fake_Players/characters.fake_players.sql       | 40 +++++++++++
  7.  .../Fake_Players/world.fake_players.sql            |  2 +
  8.  src/server/game/Entities/Player/Player.cpp         |  7 ++
  9.  src/server/game/Entities/Vehicle/Vehicle.cpp       |  0
  10.  src/server/game/Guilds/Guild.cpp                   | 25 +++++++
  11.  src/server/game/Handlers/ChatHandler.cpp           | 10 ++-
  12.  src/server/game/Handlers/GroupHandler.cpp          | 12 +++-
  13.  src/server/game/Handlers/MiscHandler.cpp           | 80 +++++++++++++++++++++-
  14.  src/server/game/Miscellaneous/Language.h           |  2 +-
  15.  src/server/game/World/World.cpp                    |  4 ++
  16.  src/server/game/World/World.h                      |  4 +-
  17.  .../Database/Implementation/CharacterDatabase.cpp  |  5 ++
  18.  .../Database/Implementation/CharacterDatabase.h    |  5 ++
  19.  src/server/worldserver/worldserver.conf.dist       | 10 +++
  20.  14 files changed, 201 insertions(+), 5 deletions(-)
  21.  create mode 100644 sql/TrinityCore-Patches/Fake_Players/characters.fake_players.sql
  22.  create mode 100644 sql/TrinityCore-Patches/Fake_Players/world.fake_players.sql
  23.  mode change 100755 => 100644 src/server/game/Entities/Vehicle/Vehicle.cpp
  24.  
  25. diff --git a/sql/TrinityCore-Patches/Fake_Players/characters.fake_players.sql b/sql/TrinityCore-Patches/Fake_Players/characters.fake_players.sql
  26. new file mode 100644
  27. index 0000000..0b4bf14
  28. --- /dev/null
  29. +++ b/sql/TrinityCore-Patches/Fake_Players/characters.fake_players.sql
  30. @@ -0,0 +1,40 @@
  31. +CREATE TABLE IF NOT EXISTS `characters_fake` (
  32. +  `name` varchar(36) NOT NULL,
  33. +  `race` mediumint(3) NOT NULL DEFAULT '0',
  34. +  `class` mediumint(3) NOT NULL DEFAULT '0',
  35. +  `level` mediumint(3) NOT NULL DEFAULT '0',
  36. +  `zone` mediumint(9) NOT NULL DEFAULT '0',
  37. +  `gender` mediumint(3) NOT NULL DEFAULT '0',
  38. +  `online` datetime NOT NULL,
  39. +  `lastup` datetime NOT NULL,
  40. +  UNIQUE KEY `name` (`name`),
  41. +  KEY `level` (`level`),
  42. +  KEY `online` (`online`),
  43. +  KEY `lastup` (`lastup`)
  44. +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  45. +
  46. +INSERT INTO `characters_fake` (`name`, `race`, `class`, `level`, `zone`, `gender`, `online`, `lastup`) VALUES
  47. +('Drikish', 2, 8, 3, 22, 0, '2014-08-08 19:16:00', '2014-08-08 16:22:37'),
  48. +('Sovelis', 3, 4, 5, 20, 0, '2014-08-08 21:27:44', '2014-08-08 16:22:37'),
  49. +('Cuddles', 10, 2, 5, 31, 1, '2014-08-08 14:14:01', '2014-08-08 16:22:37'),
  50. +('Epiasdv', 10, 2, 5, 45, 0, '2014-08-08 21:15:47', '2014-08-08 16:22:37'),
  51. +('Mac', 1, 1, 4, 32, 1, '2014-08-08 11:51:35', '2014-08-08 18:19:40'),
  52. +('Tiesto', 5, 1, 3, 23, 0, '2014-08-08 14:29:51', '2014-08-08 16:22:37'),
  53. +('Ihavfacebook', 10, 2, 3, 18, 0, '2014-08-08 04:24:43', '2014-08-08 23:49:06'),
  54. +('Mimik', 1, 2, 3, 22, 1, '2014-08-08 12:45:17', '2014-08-08 15:56:40'),
  55. +('Deadmau', 1, 1, 6, 6, 1, '2014-08-08 05:43:07', '2014-08-08 16:22:37'),
  56. +('Smoosh', 3, 2, 3, 15, 1, '2014-08-08 21:15:13', '2014-08-08 16:22:37'),
  57. +('Shadowcrest', 4, 3, 5, 3, 1, '2014-08-08 13:09:17', '2014-08-08 15:07:46'),
  58. +('Prox', 5, 1, 3, 22, 0, '2014-08-08 06:12:15', '2014-08-08 16:22:37'),
  59. +('Rovip', 4, 11, 3, 1, 0, '2014-08-08 21:23:45', '2014-08-08 15:02:50'),
  60. +('Ryan', 1, 2, 6, 40, 0, '2014-08-08 04:50:43', '2014-08-08 16:22:37'),
  61. +('Holysmite', 4, 1, 4, 43, 0, '2014-08-08 17:54:05', '2014-08-08 19:59:12'),
  62. +('Airagon', 6, 11, 1, 45, 0, '2014-08-08 11:46:37', '2014-08-08 20:18:07'),
  63. +('Fracture', 5, 9, 5, 45, 0, '2014-08-08 22:02:27', '2014-08-08 14:35:01'),
  64. +('Supershen', 3, 5, 2, 39, 0, '2014-08-08 10:15:35', '2014-08-08 17:53:00'),
  65. +('Jana', 2, 1, 2, 11, 0, '2014-08-08 03:03:05', '2014-08-08 14:10:08'),
  66. +('Gamm', 6, 11, 3, 38, 1, '2014-08-08 15:51:15', '2014-08-08 13:15:21'),
  67. +('Emoarchie', 8, 4, 5, 5, 0, '2014-08-08 13:17:54', '2014-08-08 18:13:53'),
  68. +('Melia', 5, 6, 57, 12, 0, '2014-08-08 09:21:15', '2014-08-08 16:22:37'),
  69. +('Balu', 4, 4, 5, 42, 1, '2014-08-08 08:06:03', '2014-08-08 14:25:07'),
  70. +('Jabari', 10, 2, 3, 25, 0, '2014-08-08 09:11:53', '2014-08-08 16:22:37');
  71. diff --git a/sql/TrinityCore-Patches/Fake_Players/world.fake_players.sql b/sql/TrinityCore-Patches/Fake_Players/world.fake_players.sql
  72. new file mode 100644
  73. index 0000000..c1be608
  74. --- /dev/null
  75. +++ b/sql/TrinityCore-Patches/Fake_Players/world.fake_players.sql
  76. @@ -0,0 +1,2 @@
  77. +DELETE FROM `trinity_string` WHERE `entry` = 12001;
  78. +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES (12001, 'Message: "Do not disturb".', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Сообщение: "Не беспокоить".');
  79. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
  80. index cff45c2..c01fbf8 100644
  81. --- a/src/server/game/Entities/Player/Player.cpp
  82. +++ b/src/server/game/Entities/Player/Player.cpp
  83. @@ -1814,6 +1814,13 @@ void Player::Update(uint32 p_time)
  84.              // m_nextSave reset in SaveToDB call
  85.              SaveToDB();
  86.              TC_LOG_DEBUG("entities.player", "Player '%s' (GUID: %u) saved", GetName().c_str(), GetGUIDLow());
  87. +
  88. +            // If Fake WHO List system on then change player position with every SavePlayer Interval (usually 15min)
  89. +            if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST))
  90. +            {
  91. +                CharacterDatabase.PExecute("UPDATE characters_fake SET zone = (FLOOR(50 * RAND()) + 1)");
  92. +                CharacterDatabase.PExecute("UPDATE characters_fake SET level = level+1, lastup = NOW() WHERE level < 80 AND lastup < (NOW() - INTERVAL %u HOUR) AND HOUR(online) BETWEEN HOUR(NOW()) AND (HOUR(NOW()) + %u)", sWorld->getIntConfig(CONFIG_FAKE_WHO_LEVELUP_INTERVAL), sWorld->getIntConfig(CONFIG_FAKE_WHO_ONLINE_INTERVAL));
  93. +            }
  94.          }
  95.          else
  96.              m_nextSave -= p_time;
  97. diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
  98. old mode 100755
  99. new mode 100644
  100. diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
  101. index 5180c9f..33a43eb 100644
  102. --- a/src/server/game/Guilds/Guild.cpp
  103. +++ b/src/server/game/Guilds/Guild.cpp
  104. @@ -1516,6 +1516,31 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
  105.      Player* pInvitee = ObjectAccessor::FindPlayerByName(name);
  106.      if (!pInvitee)
  107.      {
  108. +        if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST))
  109. +        {
  110. +            PreparedStatement* fake = CharacterDatabase.GetPreparedStatement(FAKE_CHAR_SEL_RACE_BY_NAME_IS_ONLINE);
  111. +            fake->setUInt32(0, sWorld->getIntConfig(CONFIG_FAKE_WHO_ONLINE_INTERVAL));
  112. +            fake->setString(1, name);
  113. +            PreparedQueryResult fakeresult = CharacterDatabase.Query(fake);
  114. +
  115. +            if (fakeresult)
  116. +            {
  117. +                Field* fields = fakeresult->Fetch();
  118. +                uint32 team = Player::TeamForRace(fields[0].GetUInt8());
  119. +
  120. +                if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && team != session->GetPlayer()->GetTeam())
  121. +                {
  122. +                    SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_NOT_ALLIED, name);
  123. +                }
  124. +                else
  125. +                {
  126. +                    ChatHandler(session->GetPlayer()->GetSession()).PSendSysMessage(LANG_FAKE_NOT_DISTURB);
  127. +                }
  128. +
  129. +                return;
  130. +            }
  131. +        }
  132. +
  133.          SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_PLAYER_NOT_FOUND_S, name);
  134.          return;
  135.      }
  136. diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
  137. index 288bb82..47b7ffd 100644
  138. --- a/src/server/game/Handlers/ChatHandler.cpp
  139. +++ b/src/server/game/Handlers/ChatHandler.cpp
  140. @@ -271,7 +271,15 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
  141.              Player* receiver = ObjectAccessor::FindConnectedPlayerByName(to);
  142.              if (!receiver || (lang != LANG_ADDON && !receiver->isAcceptWhispers() && receiver->GetSession()->HasPermission(rbac::RBAC_PERM_CAN_FILTER_WHISPERS) && !receiver->IsInWhisperWhiteList(sender->GetGUID())))
  143.              {
  144. -                SendPlayerNotFoundNotice(to);
  145. +                // If Fake WHO List system on then show player DND
  146. +                if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST))
  147. +                {
  148. +                    ChatHandler(sender->GetSession()).PSendSysMessage(LANG_FAKE_NOT_DISTURB);
  149. +                }
  150. +                else
  151. +                {
  152. +                    SendPlayerNotFoundNotice(to);
  153. +                }
  154.                  return;
  155.              }
  156.              if (!sender->IsGameMaster() && sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ) && !receiver->IsInWhisperWhiteList(sender->GetGUID()))
  157. diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
  158. index b9433b7..a611ef1 100644
  159. --- a/src/server/game/Handlers/GroupHandler.cpp
  160. +++ b/src/server/game/Handlers/GroupHandler.cpp
  161. @@ -33,6 +33,9 @@
  162.  #include "WorldPacket.h"
  163.  #include "WorldSession.h"
  164.  
  165. +#include "Chat.h"
  166. +#include "Language.h"
  167. +
  168.  class Aura;
  169.  
  170.  /* differeces from off:
  171. @@ -79,7 +82,14 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket& recvData)
  172.      // no player
  173.      if (!player)
  174.      {
  175. -        SendPartyResult(PARTY_OP_INVITE, membername, ERR_BAD_PLAYER_NAME_S);
  176. +        if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST))
  177. +        {
  178. +           ChatHandler(_player->GetSession()).PSendSysMessage(LANG_FAKE_NOT_DISTURB);
  179. +        }
  180. +        else
  181. +        {
  182. +            SendPartyResult(PARTY_OP_INVITE, membername, ERR_BAD_PLAYER_NAME_S);
  183. +        }
  184.          return;
  185.      }
  186.  
  187. diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
  188. index c365236..e17a169 100644
  189. --- a/src/server/game/Handlers/MiscHandler.cpp
  190. +++ b/src/server/game/Handlers/MiscHandler.cpp
  191. @@ -192,6 +192,9 @@ void WorldSession::HandleWhoOpcode(WorldPacket& recvData)
  192.      uint32 zoneids[10];                                     // 10 is client limit
  193.      std::string player_name, guild_name;
  194.  
  195. +    bool searchBool = false;
  196. +    std::string searchName;
  197. +
  198.      recvData >> level_min;                                 // maximal player level, default 0
  199.      recvData >> level_max;                                 // minimal player level, default 100 (MAX_LEVEL)
  200.      recvData >> player_name;                               // player name, case sensitive...
  201. @@ -231,6 +234,9 @@ void WorldSession::HandleWhoOpcode(WorldPacket& recvData)
  202.  
  203.          wstrToLower(str[i]);
  204.  
  205. +        searchBool = true;
  206. +        searchName = temp.c_str();
  207. +
  208.          TC_LOG_DEBUG("network", "String %u: %s", i, temp.c_str());
  209.      }
  210.  
  211. @@ -365,7 +371,45 @@ void WorldSession::HandleWhoOpcode(WorldPacket& recvData)
  212.          ++displaycount;
  213.      }
  214.  
  215. -    data.put(0, displaycount);                            // insert right count, count displayed
  216. +    if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST) && displaycount < 49)
  217. +    {
  218. +        const char fake_players_db = (searchBool ? FAKE_CHAR_ONLINE_SEARCH : FAKE_CHAR_ONLINE);
  219. +        PreparedStatement* fake = CharacterDatabase.GetPreparedStatement(fake_players_db);
  220. +
  221. +        fake->setUInt32(0, sWorld->getIntConfig(CONFIG_FAKE_WHO_ONLINE_INTERVAL));
  222. +        if (searchBool)
  223. +            fake->setString(1, searchName);
  224. +
  225. +        PreparedQueryResult fakeresult = CharacterDatabase.Query(fake);
  226. +        if (fakeresult)
  227. +        {
  228. +            do
  229. +            {
  230. +                Field *fields = fakeresult->Fetch();
  231. +
  232. +                std::string pname = fields[0].GetString();  // player name
  233. +                std::string gname;                          // guild name
  234. +                uint32 lvl = fields[3].GetUInt32();         // player level
  235. +                uint32 class_ = fields[2].GetUInt32();      // player class
  236. +                uint32 race = fields[1].GetUInt32();        // player race
  237. +                uint32 pzoneid = fields[4].GetUInt32();     // player zone id
  238. +                uint8 gender = fields[5].GetUInt8();        // player gender
  239. +
  240. +                data << pname;                              // player name
  241. +                data << gname;                              // guild name
  242. +                data << uint32(lvl);                        // player level
  243. +                data << uint32(class_);                     // player class
  244. +                data << uint32(race);                       // player race
  245. +                data << uint8(gender);                      // player gender
  246. +                data << uint32(pzoneid);                    // player zone id
  247. +
  248. +                if ((++matchcount) == 49)
  249. +                    break;
  250. +            } while (fakeresult->NextRow());
  251. +        }
  252. +    }
  253. +
  254. +    data.put(0, matchcount);
  255.      data.put(4, matchcount);                              // insert right count, count of matches
  256.  
  257.      SendPacket(&data);
  258. @@ -550,6 +594,26 @@ void WorldSession::HandleAddFriendOpcode(WorldPacket& recvData)
  259.      TC_LOG_DEBUG("network", "WORLD: %s asked to add friend : '%s'",
  260.          GetPlayer()->GetName().c_str(), friendName.c_str());
  261.  
  262. +    if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST))
  263. +    {
  264. +        PreparedStatement* fake = CharacterDatabase.GetPreparedStatement(FAKE_CHAR_SEL_RACE_BY_NAME);
  265. +        fake->setString(0, friendName);
  266. +        PreparedQueryResult fakeresult = CharacterDatabase.Query(fake);
  267. +
  268. +        if (fakeresult)
  269. +        {
  270. +            Field* fields = fakeresult->Fetch();
  271. +            uint32 team = Player::TeamForRace(fields[0].GetUInt8());
  272. +
  273. +            if (GetPlayer()->GetTeam() != team && !HasPermission(rbac::RBAC_PERM_TWO_SIDE_ADD_FRIEND))
  274. +                sSocialMgr->SendFriendStatus(_player, FRIEND_ENEMY, false, false);
  275. +            else
  276. +                ChatHandler(_player->GetSession()).PSendSysMessage(LANG_FAKE_NOT_DISTURB);
  277. +
  278. +            return;
  279. +        }
  280. +    }
  281. +
  282.      PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUID_RACE_ACC_BY_NAME);
  283.  
  284.      stmt->setString(0, friendName);
  285. @@ -640,6 +704,20 @@ void WorldSession::HandleAddIgnoreOpcode(WorldPacket& recvData)
  286.      TC_LOG_DEBUG("network", "WORLD: %s asked to Ignore: '%s'",
  287.          GetPlayer()->GetName().c_str(), ignoreName.c_str());
  288.  
  289. +    if (sWorld->getBoolConfig(CONFIG_FAKE_WHO_LIST))
  290. +    {
  291. +        PreparedStatement* fake = CharacterDatabase.GetPreparedStatement(FAKE_CHAR_SEL_RACE_BY_NAME_IS_ONLINE);
  292. +        fake->setUInt32(0, sWorld->getIntConfig(CONFIG_FAKE_WHO_ONLINE_INTERVAL));
  293. +        fake->setString(1, ignoreName.c_str());
  294. +        PreparedQueryResult fakeresult = CharacterDatabase.Query(fake);
  295. +
  296. +        if (fakeresult)
  297. +        {
  298. +            ChatHandler(_player->GetSession()).PSendSysMessage(LANG_FAKE_NOT_DISTURB);
  299. +            return;
  300. +        }
  301. +    }
  302. +
  303.      PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUID_BY_NAME);
  304.  
  305.      stmt->setString(0, ignoreName);
  306. diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
  307. index 4be1a2f..05159e1 100644
  308. --- a/src/server/game/Miscellaneous/Language.h
  309. +++ b/src/server/game/Miscellaneous/Language.h
  310. @@ -1231,7 +1231,7 @@ enum TrinityStrings
  311.      // 24
  312.      // 25
  313.      // 26
  314. -    // 27
  315. +    LANG_FAKE_NOT_DISTURB               = 12001,
  316.      // 28
  317.      // 29
  318.      // 30
  319. diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
  320. index afd87b8..a391cca 100644
  321. --- a/src/server/game/World/World.cpp
  322. +++ b/src/server/game/World/World.cpp
  323. @@ -671,6 +671,10 @@ void World::LoadConfigSettings(bool reload)
  324.      m_int_configs[CONFIG_STRICT_CHARTER_NAMES]                = sConfigMgr->GetIntDefault ("StrictCharterNames", 0);
  325.      m_int_configs[CONFIG_STRICT_PET_NAMES]                    = sConfigMgr->GetIntDefault ("StrictPetNames",     0);
  326.  
  327. +    m_bool_configs[CONFIG_FAKE_WHO_LIST]                      = sConfigMgr->GetBoolDefault("Fake.WHO.List", false);
  328. +    m_int_configs[CONFIG_FAKE_WHO_ONLINE_INTERVAL]            = sConfigMgr->GetIntDefault("Fake.WHO.Online.Interval", 5);
  329. +    m_int_configs[CONFIG_FAKE_WHO_LEVELUP_INTERVAL]           = sConfigMgr->GetIntDefault("Fake.WHO.LevelUp.Interval", 2);
  330. +
  331.      m_int_configs[CONFIG_MIN_PLAYER_NAME]                     = sConfigMgr->GetIntDefault ("MinPlayerName",  2);
  332.      if (m_int_configs[CONFIG_MIN_PLAYER_NAME] < 1 || m_int_configs[CONFIG_MIN_PLAYER_NAME] > MAX_PLAYER_NAME)
  333.      {
  334. diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
  335. index 2f13051..7c05acd 100644
  336. --- a/src/server/game/World/World.h
  337. +++ b/src/server/game/World/World.h
  338. @@ -173,7 +173,7 @@ enum WorldBoolConfigs
  339.      // 12
  340.      // 13
  341.      // 14
  342. -    // 15
  343. +    CONFIG_FAKE_WHO_LIST,
  344.      // 16
  345.      // 17
  346.      // 18
  347. @@ -378,6 +378,8 @@ enum WorldIntConfigs
  348.      CONFIG_CHARDELETE_HEROIC_MIN_LEVEL,
  349.      CONFIG_AUTOBROADCAST_CENTER,
  350.      CONFIG_AUTOBROADCAST_INTERVAL,
  351. +    CONFIG_FAKE_WHO_ONLINE_INTERVAL,
  352. +    CONFIG_FAKE_WHO_LEVELUP_INTERVAL,
  353.      CONFIG_MAX_RESULTS_LOOKUP_COMMANDS,
  354.      CONFIG_DB_PING_INTERVAL,
  355.      CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION,
  356. diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
  357. index 12e367c..26d6509 100644
  358. --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
  359. +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
  360. @@ -22,6 +22,11 @@ void CharacterDatabaseConnection::DoPrepareStatements()
  361.      if (!m_reconnecting)
  362.          m_stmts.resize(MAX_CHARACTERDATABASE_STATEMENTS);
  363.  
  364. +    PrepareStatement(FAKE_CHAR_SEL_RACE_BY_NAME, "SELECT race FROM characters_fake WHERE name = ?", CONNECTION_SYNCH);
  365. +    PrepareStatement(FAKE_CHAR_SEL_RACE_BY_NAME_IS_ONLINE, "SELECT race FROM characters_fake WHERE HOUR(online) BETWEEN HOUR(NOW()) AND (HOUR(NOW()) + ?) AND name = ?", CONNECTION_SYNCH);
  366. +    PrepareStatement(FAKE_CHAR_ONLINE, "SELECT name,race,class,level,zone,gender FROM characters_fake WHERE HOUR(online) BETWEEN HOUR(NOW()) AND (HOUR(NOW()) + ?)", CONNECTION_SYNCH);
  367. +    PrepareStatement(FAKE_CHAR_ONLINE_SEARCH, "SELECT name,race,class,level,zone,gender FROM characters_fake WHERE HOUR(online) BETWEEN HOUR(NOW()) AND (HOUR(NOW()) + ?) AND name = ?", CONNECTION_SYNCH);
  368. +
  369.      PrepareStatement(CHAR_DEL_QUEST_POOL_SAVE, "DELETE FROM pool_quest_save WHERE pool_id = ?", CONNECTION_ASYNC);
  370.      PrepareStatement(CHAR_INS_QUEST_POOL_SAVE, "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES (?, ?)", CONNECTION_ASYNC);
  371.      PrepareStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM, "DELETE FROM guild_bank_item WHERE guildid = ? AND TabId = ? AND SlotId = ?", CONNECTION_ASYNC);
  372. diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
  373. index f8a7c24..a5cd8ef 100644
  374. --- a/src/server/shared/Database/Implementation/CharacterDatabase.h
  375. +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
  376. @@ -42,6 +42,11 @@ enum CharacterDatabaseStatements
  377.          name for a suiting suffix.
  378.      */
  379.  
  380. +    FAKE_CHAR_SEL_RACE_BY_NAME,
  381. +    FAKE_CHAR_SEL_RACE_BY_NAME_IS_ONLINE,
  382. +    FAKE_CHAR_ONLINE,
  383. +    FAKE_CHAR_ONLINE_SEARCH,
  384. +
  385.      CHAR_DEL_QUEST_POOL_SAVE,
  386.      CHAR_INS_QUEST_POOL_SAVE,
  387.      CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM,
  388. diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
  389. index c40da51..2f7bfc7 100644
  390. --- a/src/server/worldserver/worldserver.conf.dist
  391. +++ b/src/server/worldserver/worldserver.conf.dist
  392. @@ -2999,6 +2999,16 @@ AuctionHouseBot.forceExcludeItems = ""
  393.  #
  394.  ###################################################################################################
  395.  
  396. +#    Fake.WHO.List
  397. +#        Add fake players to fill in WHO LIST (who is online list, "O" button) if there is less then
  398. +#        49 real players online
  399. +#        Default: 0 (disabled)
  400. +#                 1 (enabled)
  401. +
  402. +Fake.WHO.List = 0
  403. +Fake.WHO.Online.Interval = 5
  404. +Fake.WHO.LevelUp.Interval = 2
  405. +
  406.  ###################################################################################################
  407.  # AUCTION HOUSE BOT BUYER CONFIG
  408.  #
  409. --
  410. 2.1.3
Advertisement
Add Comment
Please, Sign In to add comment