From fb52e9ea035f6174e6925e97ed8eaf15f9867d6a Mon Sep 17 00:00:00 2001 From: Ascathor Date: Sun, 26 May 2013 01:52:28 +0200 Subject: [PATCH 01/19] Core/Command: Optimized .pinfo more * Moved some checks around * Added RBAC Permission for Email, last login and last ip (group 3 and 4) -- If missing RBAC permission, then it displays "Unauthorized (RBAC)" * Changed totalmail output from uint64 to uint32 * Level either puts Max level, or a list of information necessary * Only queries guild if the current xp query also detects guild membership * Incorporated recent changes into code * Commander requires higher than target to get sensitive data beside RBAC permission. --- sql/base/auth_database.sql | 8 +- sql/updates/auth/2013_05_26_00_auth_rbac.sql | 14 +++ .../2013_05_26_00_world_trinity_string.sql | 9 ++ src/server/game/Accounts/RBAC.h | 1 + src/server/game/Miscellaneous/Language.h | 6 +- src/server/scripts/Commands/cs_misc.cpp | 110 +++++++++++------- .../Implementation/CharacterDatabase.cpp | 2 +- 7 files changed, 99 insertions(+), 51 deletions(-) create mode 100644 sql/updates/auth/2013_05_26_00_auth_rbac.sql create mode 100644 sql/updates/world/2013_05_26_00_world_trinity_string.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 05e680f94eb..4dc5cb2e7b6 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -292,7 +292,7 @@ CREATE TABLE `rbac_group_roles` ( LOCK TABLES `rbac_group_roles` WRITE; /*!40000 ALTER TABLE `rbac_group_roles` DISABLE KEYS */; -INSERT INTO `rbac_group_roles` VALUES (1,1),(2,2),(3,3),(4,4),(2,5),(1,6),(1,7),(2,8),(3,8),(4,8),(2,9),(3,9),(4,9),(2,10),(3,10),(4,10),(2,11),(3,11),(4,11),(2,12),(3,12),(4,12),(2,13),(3,13),(4,13),(2,14),(3,14),(4,14),(2,15),(3,15),(4,15),(2,16),(3,16),(4,16),(2,17),(3,17),(4,17),(4,18),(2,19),(3,19),(4,19),(2,20),(3,20),(4,20),(2,21),(3,21),(4,21),(2,22),(3,22),(4,22),(4,23),(2,24),(3,24),(4,24),(2,25),(3,25),(4,25),(2,26),(3,26),(4,26),(2,27),(3,27),(4,27),(2,28),(3,28),(4,28),(2,29),(3,29),(4,29),(2,30),(3,30),(4,30),(2,32),(3,32),(4,32),(2,33),(3,33),(4,33),(1,34),(2,35),(3,35),(4,35),(2,36),(3,36),(4,36),(2,37),(3,37),(4,37),(2,38),(3,38),(4,38); +INSERT INTO `rbac_group_roles` VALUES (1,1),(2,2),(3,3),(4,4),(2,5),(1,6),(1,7),(2,8),(3,8),(4,8),(2,9),(3,9),(4,9),(2,10),(3,10),(4,10),(2,11),(3,11),(4,11),(2,12),(3,12),(4,12),(2,13),(3,13),(4,13),(2,14),(3,14),(4,14),(2,15),(3,15),(4,15),(2,16),(3,16),(4,16),(2,17),(3,17),(4,17),(4,18),(2,19),(3,19),(4,19),(2,20),(3,20),(4,20),(2,21),(3,21),(4,21),(2,22),(3,22),(4,22),(4,23),(2,24),(3,24),(4,24),(2,25),(3,25),(4,25),(2,26),(3,26),(4,26),(2,27),(3,27),(4,27),(2,28),(3,28),(4,28),(2,29),(3,29),(4,29),(2,30),(3,30),(4,30),(2,32),(3,32),(4,32),(2,33),(3,33),(4,33),(1,34),(2,35),(3,35),(4,35),(2,36),(3,36),(4,36),(2,37),(3,37),(4,37),(2,38),(3,38),(4,38),(3,39),(4,39); /*!40000 ALTER TABLE `rbac_group_roles` ENABLE KEYS */; UNLOCK TABLES; @@ -340,7 +340,7 @@ CREATE TABLE `rbac_permissions` ( LOCK TABLES `rbac_permissions` WRITE; /*!40000 ALTER TABLE `rbac_permissions` DISABLE KEYS */; -INSERT INTO `rbac_permissions` VALUES (1,'Instant logout'),(2,'Skip Queue'),(3,'Join Normal Battleground'),(4,'Join Random Battleground'),(5,'Join Arenas'),(6,'Join Dungeon Finder'),(7,'Player Commands (Temporal till commands moved to rbac)'),(8,'Moderator Commands (Temporal till commands moved to rbac)'),(9,'GameMaster Commands (Temporal till commands moved to rbac)'),(10,'Administrator Commands (Temporal till commands moved to rbac)'),(11,'Log GM trades'),(13,'Skip Instance required bosses check'),(14,'Skip character creation team mask check'),(15,'Skip character creation class mask check'),(16,'Skip character creation race mask check'),(17,'Skip character creation reserved name check'),(18,'Skip character creation heroic min level check'),(19,'Skip needed requirements to use channel check'),(20,'Skip disable map check'),(21,'Skip reset talents when used more than allowed check'),(22,'Skip spam chat check'),(23,'Skip over-speed ping check'),(24,'Two side faction characters on the same account'),(25,'Allow say chat between factions'),(26,'Allow channel chat between factions'),(27,'Two side mail interaction'),(28,'See two side who list'),(29,'Add friends of other faction'),(30,'Save character without delay with .save command'),(31,'Use params with .unstuck command'),(32,'Can be assigned tickets with .assign ticket command'),(33,'Notify if a command was not found'),(34,'Check if should appear in list using .gm ingame command'),(35,'See all security levels with who command'),(36,'Filter whispers'),(37,'Use staff badge in chat'),(38,'Resurrect with full Health Points'),(39,'Restore saved gm setting states'),(40,'Allows to add a gm to friend list'),(41,'Use Config option START_GM_LEVEL to assign new character level'),(42,'Allows to use CMSG_WORLD_TELEPORT opcode'),(43,'Allows to use CMSG_WHOIS opcode'),(44,'Receive global GM messages/texts'),(45,'Join channels without announce'),(46,'Change channel settings without being channel moderator'),(47,'Enables lower security than target check'); +INSERT INTO `rbac_permissions` VALUES (1,'Instant logout'),(2,'Skip Queue'),(3,'Join Normal Battleground'),(4,'Join Random Battleground'),(5,'Join Arenas'),(6,'Join Dungeon Finder'),(7,'Player Commands (Temporal till commands moved to rbac)'),(8,'Moderator Commands (Temporal till commands moved to rbac)'),(9,'GameMaster Commands (Temporal till commands moved to rbac)'),(10,'Administrator Commands (Temporal till commands moved to rbac)'),(11,'Log GM trades'),(13,'Skip Instance required bosses check'),(14,'Skip character creation team mask check'),(15,'Skip character creation class mask check'),(16,'Skip character creation race mask check'),(17,'Skip character creation reserved name check'),(18,'Skip character creation heroic min level check'),(19,'Skip needed requirements to use channel check'),(20,'Skip disable map check'),(21,'Skip reset talents when used more than allowed check'),(22,'Skip spam chat check'),(23,'Skip over-speed ping check'),(24,'Two side faction characters on the same account'),(25,'Allow say chat between factions'),(26,'Allow channel chat between factions'),(27,'Two side mail interaction'),(28,'See two side who list'),(29,'Add friends of other faction'),(30,'Save character without delay with .save command'),(31,'Use params with .unstuck command'),(32,'Can be assigned tickets with .assign ticket command'),(33,'Notify if a command was not found'),(34,'Check if should appear in list using .gm ingame command'),(35,'See all security levels with who command'),(36,'Filter whispers'),(37,'Use staff badge in chat'),(38,'Resurrect with full Health Points'),(39,'Restore saved gm setting states'),(40,'Allows to add a gm to friend list'),(41,'Use Config option START_GM_LEVEL to assign new character level'),(42,'Allows to use CMSG_WORLD_TELEPORT opcode'),(43,'Allows to use CMSG_WHOIS opcode'),(44,'Receive global GM messages/texts'),(45,'Join channels without announce'),(46,'Change channel settings without being channel moderator'),(47,'Enables lower security than target check'),(48,'Enable IP, Last Login and EMail output in pinfo'); /*!40000 ALTER TABLE `rbac_permissions` ENABLE KEYS */; UNLOCK TABLES; @@ -367,7 +367,7 @@ CREATE TABLE `rbac_role_permissions` ( LOCK TABLES `rbac_role_permissions` WRITE; /*!40000 ALTER TABLE `rbac_role_permissions` DISABLE KEYS */; -INSERT INTO `rbac_role_permissions` VALUES (5,1),(5,2),(6,3),(6,4),(6,5),(7,6),(1,7),(2,8),(3,9),(4,10),(8,11),(9,13),(33,14),(33,15),(33,16),(33,17),(33,18),(27,19),(22,20),(23,21),(24,22),(17,23),(34,24),(28,25),(30,26),(19,27),(35,28),(36,29),(11,30),(12,31),(10,32),(20,33),(14,34),(37,35),(29,36),(15,37),(13,38),(25,39),(38,40),(26,41),(18,42),(18,43),(16,44),(31,45),(32,46),(21,47); +INSERT INTO `rbac_role_permissions` VALUES (5,1),(5,2),(6,3),(6,4),(6,5),(7,6),(1,7),(2,8),(3,9),(4,10),(8,11),(9,13),(33,14),(33,15),(33,16),(33,17),(33,18),(27,19),(22,20),(23,21),(24,22),(17,23),(34,24),(28,25),(30,26),(19,27),(35,28),(36,29),(11,30),(12,31),(10,32),(20,33),(14,34),(37,35),(29,36),(15,37),(13,38),(25,39),(38,40),(26,41),(18,42),(18,43),(16,44),(31,45),(32,46),(21,47),(39,48); /*!40000 ALTER TABLE `rbac_role_permissions` ENABLE KEYS */; UNLOCK TABLES; @@ -391,7 +391,7 @@ CREATE TABLE `rbac_roles` ( LOCK TABLES `rbac_roles` WRITE; /*!40000 ALTER TABLE `rbac_roles` DISABLE KEYS */; -INSERT INTO `rbac_roles` VALUES (1,'Player Commands'),(2,'Moderator Commands'),(3,'GameMaster Commands'),(4,'Administrator Commands'),(5,'Quick Login/Logout'),(6,'Use Battleground/Arenas'),(7,'Use Dungeon Finder'),(8,'Log GM trades'),(9,'Skip Instance required bosses check'),(10,'Ticket management'),(11,'Instant .save'),(12,'Allow params with .unstuck'),(13,'Full HP after resurrect'),(14,'Appear in GM ingame list'),(15,'Use staff badge in chat'),(16,'Receive global GM messages/texts'),(17,'Skip over-speed ping check'),(18,'Allows Admin Opcodes'),(19,'Two side mail interaction'),(20,'Notify if a command was not found'),(21,'Enables lower security than target check'),(22,'Skip disable map check'),(23,'Skip reset talents when used more than allowed check'),(24,'Skip spam chat check'),(25,'Restore saved gm setting states'),(26,'Use Config option START_GM_LEVEL to assign new character level'),(27,'Skip needed requirements to use channel check'),(28,'Allow say chat between factions'),(29,'Filter whispers'),(30,'Allow channel chat between factions'),(31,'Join channels without announce'),(32,'Change channel settings without being channel moderator'),(33,'Skip character creation checks'),(34,'Two side faction characters on the same account'),(35,'See two side who list'),(36,'Add friends of other faction'),(37,'See all security levels with who command'),(38,'Allows to add a gm to friend list'); +INSERT INTO `rbac_roles` VALUES (1,'Player Commands'),(2,'Moderator Commands'),(3,'GameMaster Commands'),(4,'Administrator Commands'),(5,'Quick Login/Logout'),(6,'Use Battleground/Arenas'),(7,'Use Dungeon Finder'),(8,'Log GM trades'),(9,'Skip Instance required bosses check'),(10,'Ticket management'),(11,'Instant .save'),(12,'Allow params with .unstuck'),(13,'Full HP after resurrect'),(14,'Appear in GM ingame list'),(15,'Use staff badge in chat'),(16,'Receive global GM messages/texts'),(17,'Skip over-speed ping check'),(18,'Allows Admin Opcodes'),(19,'Two side mail interaction'),(20,'Notify if a command was not found'),(21,'Enables lower security than target check'),(22,'Skip disable map check'),(23,'Skip reset talents when used more than allowed check'),(24,'Skip spam chat check'),(25,'Restore saved gm setting states'),(26,'Use Config option START_GM_LEVEL to assign new character level'),(27,'Skip needed requirements to use channel check'),(28,'Allow say chat between factions'),(29,'Filter whispers'),(30,'Allow channel chat between factions'),(31,'Join channels without announce'),(32,'Change channel settings without being channel moderator'),(33,'Skip character creation checks'),(34,'Two side faction characters on the same account'),(35,'See two side who list'),(36,'Add friends of other faction'),(37,'See all security levels with who command'),(38,'Allows to add a gm to friend list'),(39,'Enable IP, Last Login and EMail output in pinfo'); /*!40000 ALTER TABLE `rbac_roles` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/2013_05_26_00_auth_rbac.sql b/sql/updates/auth/2013_05_26_00_auth_rbac.sql new file mode 100644 index 00000000000..aa05c842932 --- /dev/null +++ b/sql/updates/auth/2013_05_26_00_auth_rbac.sql @@ -0,0 +1,14 @@ +DELETE FROM `rbac_permissions` WHERE `id` = 48; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES (48, 'Enable IP, Last Login and EMail output in pinfo'); + +DELETE FROM `rbac_roles` WHERE `id` = 39; +INSERT INTO `rbac_roles` (`id`, `name`) VALUES (39, 'Enable IP, Last Login and EMail output in pinfo'); + +DELETE FROM `rbac_role_permissions` WHERE `roleId` = 39 AND `permissionId` = 48; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES (39, 48); + +DELETE FROM `rbac_group_roles` WHERE `groupId` = 3 AND `roleId` = 39; +INSERT INTO `rbac_group_roles` (`groupId`, `roleId`) VALUES (3, 39); + +DELETE FROM `rbac_group_roles` WHERE `groupId` = 4 AND `roleId` = 39; +INSERT INTO `rbac_group_roles` (`groupId`, `roleId`) VALUES (4, 39); diff --git a/sql/updates/world/2013_05_26_00_world_trinity_string.sql b/sql/updates/world/2013_05_26_00_world_trinity_string.sql new file mode 100644 index 00000000000..591021a5f84 --- /dev/null +++ b/sql/updates/world/2013_05_26_00_world_trinity_string.sql @@ -0,0 +1,9 @@ +DELETE FROM `trinity_string` WHERE `entry`=854 LIMIT 1; +INSERT INTO `trinity_string` (`entry`, `content_default`, content_loc1, content_loc2, content_loc3, content_loc4, content_loc5, content_loc6, content_loc7, content_loc8) VALUES +(854, '└ Mails: %d Read/%u Total', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +DELETE FROM `trinity_string` WHERE `entry`=871 LIMIT 1; +INSERT INTO `trinity_string` (`entry`, `content_default`, content_loc1, content_loc2, content_loc3, content_loc4, content_loc5, content_loc6, content_loc7, content_loc8) VALUES +(871, '│ Level: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +UPDATE `trinity_string` SET `content_default`='│ Level: %u (%u/%u XP (%u XP left))' WHERE `entry`=843 LIMIT 1; diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 5a6514e5356..35024fc4152 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -95,6 +95,7 @@ enum RBACPermissions RBAC_PERM_SILENTLY_JOIN_CHANNEL = 45, RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR = 46, RBAC_PERM_CHECK_FOR_LOWER_SECURITY = 47, + RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA = 48, RBAC_PERM_MAX }; diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 15673ffd0c5..0da63a61b43 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -812,7 +812,7 @@ enum TrinityStrings LANG_PINFO_ACC_LASTLOGIN = 716, LANG_PINFO_ACC_OS = 749, LANG_PINFO_ACC_IP = 752, - LANG_PINFO_CHR_LEVEL = 843, + LANG_PINFO_CHR_LEVEL_LOW = 843, LANG_PINFO_CHR_RACE = 844, LANG_PINFO_CHR_ALIVE = 845, LANG_PINFO_CHR_PHASE = 846, @@ -824,6 +824,7 @@ enum TrinityStrings LANG_PINFO_CHR_GUILD_ONOTE = 852, LANG_PINFO_CHR_PLAYEDTIME = 853, LANG_PINFO_CHR_MAILS = 854, + LANG_PINFO_CHR_LEVEL_HIGH = 871, LANG_CHARACTER_GENDER_MALE = 855, LANG_CHARACTER_GENDER_FEMALE = 856, @@ -842,7 +843,8 @@ enum TrinityStrings LANG_ARENA_INFO_HEADER = 868, LANG_ARENA_INFO_MEMBERS = 869, LANG_ARENA_LOOKUP = 870, - // Room for in-game strings 870-999 not used + // = 871, see LANG_PINFO_CHR_LEVEL_HIGH + // Room for in-game strings 872-999 not used // Level 4 (CLI only commands) LANG_COMMAND_EXIT = 1000, diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 3051580a933..c49514cacc4 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1587,7 +1587,12 @@ public: std::string areaName = ""; std::string zoneName = ""; - // Guild data print is only defined if part of Guild + // Guild data print variables defined so that they exist, but are not necessarily used + uint32 guildId = 0; + std::string guildName; + std::string guildRank; + std::string note; + std::string officeNote; // Mail data print is only defined if you have a mail @@ -1626,18 +1631,19 @@ public: if (!result) return false; - Field* fields = result->Fetch(); - totalPlayerTime = fields[0].GetUInt32(); - level = fields[1].GetUInt8(); - money = fields[2].GetUInt32(); - accId = fields[3].GetUInt32(); - raceid = fields[4].GetUInt8(); - classid = fields[5].GetUInt8(); - mapId = fields[6].GetUInt16(); - areaId = fields[7].GetUInt16(); - gender = fields[8].GetUInt8(); - uint32 health = fields[9].GetUInt32(); + Field* fields = result->Fetch(); + totalPlayerTime = fields[0].GetUInt32(); + level = fields[1].GetUInt8(); + money = fields[2].GetUInt32(); + accId = fields[3].GetUInt32(); + raceid = fields[4].GetUInt8(); + classid = fields[5].GetUInt8(); + mapId = fields[6].GetUInt16(); + areaId = fields[7].GetUInt16(); + gender = fields[8].GetUInt8(); + uint32 health = fields[9].GetUInt32(); uint32 playerFlags = fields[10].GetUInt32(); + if (!health || playerFlags & PLAYER_FLAGS_GHOST) alive = "No"; else @@ -1655,13 +1661,13 @@ public: Field* fields = result->Fetch(); userName = fields[0].GetString(); security = fields[1].GetUInt8(); - eMail = fields[2].GetString(); - // Only fetch these fields if commander has sufficient rights AND is online (prevent cheating) - /// @TODO: Add RBAC for "Can query ip and login data" - if (!handler->GetSession() || handler->GetSession()->GetSecurity() >= AccountTypes(security)) + // Only fetch these fields if commander has sufficient rights) + if (handler->HasPermission(RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA) && // RBAC Perm. 48, Role 39 + (!handler->GetSession() || handler->GetSession()->GetSecurity() >= security)) { - lastIp = fields[3].GetString(); + eMail = fields[2].GetString(); + lastIp = fields[3].GetString(); lastLogin = fields[4].GetString(); uint32 ip = inet_addr(lastIp.c_str()); @@ -1678,6 +1684,12 @@ public: lastIp.append(")"); } } + else + { + eMail = "Unauthorized"; + lastIp = "Unauthorized"; + lastLogin = "Unauthorized"; + } muteTime = fields[5].GetUInt64(); muteReason = fields[6].GetString(); muteBy = fields[7].GetString(); @@ -1728,7 +1740,25 @@ public: if (result4) { Field* fields = result4->Fetch(); - xp = fields[0].GetUInt32(); + xp = fields[0].GetUInt32(); // Used for "current xp" output and "%u XP Left" calculation + uint32 gguid = fields[1].GetUInt32(); // We check if have a guild for the person, so we might not require to query it at all + + if (gguid != 0) + { + // Guild Data - an own query, because it may not happen. + PreparedStatement* stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED); + stmt3->setUInt32(0, lowguid); + PreparedQueryResult result5 = CharacterDatabase.Query(stmt3); + if (result5) + { + Field* fields = result5->Fetch(); + guildId = fields[0].GetUInt32(); + guildName = fields[1].GetString(); + guildRank = fields[2].GetString(); + note = fields[3].GetString(); + officeNote = fields[4].GetString(); + } + } } // Initiate output @@ -1760,7 +1790,10 @@ public: handler->PSendSysMessage(LANG_PINFO_ACC_IP, lastIp.c_str(), locked ? "Yes" : "No"); // Output X. LANG_PINFO_CHR_LEVEL - handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL, level, xp, xptotal, (xptotal - xp)); + if (level != sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) + handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL_LOW, level, xp, xptotal, (xptotal - xp)); + else + handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL_HIGH, level); // Output XI. LANG_PINFO_CHR_RACE raceStr = GetRaceName(raceid, locale); @@ -1795,27 +1828,15 @@ public: if (target) handler->PSendSysMessage(LANG_PINFO_CHR_MAP, map->name[locale], (!zoneName.empty() ? zoneName.c_str() : ""), (!areaName.empty() ? areaName.c_str() : "")); - // Guild Data - an own query, because it may not happen. - PreparedStatement* stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED); - stmt3->setUInt32(0, lowguid); - PreparedQueryResult result5 = CharacterDatabase.Query(stmt3); - if (result5) + // Output XVII. - XX. if they are not empty + if (!guildName.empty()) { - Field* fields = result5->Fetch(); - uint32 guildId = fields[0].GetUInt32(); - std::string guildName = fields[1].GetString(); - std::string guildRank = fields[2].GetString(); - std::string note = fields[3].GetString(); - std::string officeNote = fields[4].GetString(); - - // Output XVII. - XX. - handler->PSendSysMessage(LANG_PINFO_CHR_GUILD, guildName.c_str(), guildId); - handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank.c_str()); - // Only output XIX and XX if they are not empty - if (!note.empty()) - handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_NOTE, note.c_str()); - if (!officeNote.empty()) - handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_ONOTE, officeNote.c_str()); + handler->PSendSysMessage(LANG_PINFO_CHR_GUILD, guildName.c_str(), guildId); + handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank.c_str()); + if (!note.empty()) + handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_NOTE, note.c_str()); + if (!officeNote.empty()) + handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_ONOTE, officeNote.c_str()); } // Output XXI. LANG_PINFO_CHR_PLAYEDTIME @@ -1823,23 +1844,24 @@ public: // Mail Data - an own query, because it may or may not be useful. // SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?" - stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS); - stmt3->setUInt32(0, lowguid); - PreparedQueryResult result6 = CharacterDatabase.Query(stmt3); + PreparedStatement* stmt4 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS); + stmt4->setUInt32(0, lowguid); + PreparedQueryResult result6 = CharacterDatabase.Query(stmt4); if (result6) { // Define the variables, so the compiler knows they exist uint32 rmailint = 0; // Fetch the fields - readmail is a SUM(x) and given out as char! Thus... + // ... while totalmail is a COUNT(x), which is given out as INt64, which we just convert on fetch... Field* fields = result6->Fetch(); std::string readmail = fields[0].GetString(); - uint64 totalmail = fields[1].GetUInt64(); + uint32 totalmail = uint32(fields[1].GetUInt64()); // ... we have to convert it from Char to int. We can use totalmail as it is rmailint = atol(readmail.c_str()); - // Output XXII. LANG_INFO_CHR_MAILS if at least one mails is given + // Output XXII. LANG_INFO_CHR_MAILS if at least one mail is given if (totalmail >= 1) handler->PSendSysMessage(LANG_PINFO_CHR_MAILS, rmailint, totalmail); } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 069f2127a72..fce78638414 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -427,7 +427,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() //0: lowGUID PrepareStatement(CHAR_SEL_PINFO_MAILS, "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?", CONNECTION_SYNCH); //0: lowGUID - PrepareStatement(CHAR_SEL_PINFO_XP, "SELECT xp FROM characters WHERE guid = ?", CONNECTION_SYNCH); + PrepareStatement(CHAR_SEL_PINFO_XP, "SELECT a.xp, b.guid FROM characters a LEFT JOIN guild_member b ON a.guid = b.guid WHERE a.guid = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name FROM characters WHERE account = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_POOL_QUEST_SAVE, "SELECT quest_id FROM pool_quest_save WHERE pool_id = ?", CONNECTION_SYNCH); From 55b3819d12699ee5d255b8dea82ab6aaee093a07 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 1 Jun 2013 12:57:37 -0500 Subject: [PATCH 02/19] Core/Database: Deleted characters will no longer be loaded when sending the SMSG_CHAR_ENUM packet. --- .../shared/Database/Implementation/CharacterDatabase.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 069f2127a72..a4494d5d53a 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -45,12 +45,12 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_SEL_ENUM, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, " "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, cb.guid " "FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? LEFT JOIN guild_member AS gm ON c.guid = gm.guid " - "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? ORDER BY c.guid", CONNECTION_ASYNC); + "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name = NULL ORDER BY c.guid", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_ENUM_DECLINED_NAME, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, " "c.position_x, c.position_y, c.position_z, gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, " "cb.guid, cd.genitive FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? " "LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid LEFT JOIN guild_member AS gm ON c.guid = gm.guid " - "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? ORDER BY c.guid", CONNECTION_ASYNC); + "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name = NULL ORDER BY c.guid", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_FREE_NAME, "SELECT guid, name FROM characters WHERE guid = ? AND account = ? AND (at_login & ?) = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_GUID_RACE_ACC_BY_NAME, "SELECT guid, race, account FROM characters WHERE name = ?", CONNECTION_BOTH); PrepareStatement(CHAR_SEL_CHAR_RACE, "SELECT race FROM characters WHERE guid = ?", CONNECTION_SYNCH); From 15b055fe87b381c143341dca1686bfe0f9aef152 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sat, 1 Jun 2013 23:47:46 +0200 Subject: [PATCH 03/19] Core/Database: Fix bad sql query in 55b3819d12699ee5d255b8dea82ab6aaee093a07 (thx Shauren) --- .../shared/Database/Implementation/CharacterDatabase.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index a4494d5d53a..74602240ed7 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -45,12 +45,12 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_SEL_ENUM, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, " "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, cb.guid " "FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? LEFT JOIN guild_member AS gm ON c.guid = gm.guid " - "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name = NULL ORDER BY c.guid", CONNECTION_ASYNC); + "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name IS NULL ORDER BY c.guid", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_ENUM_DECLINED_NAME, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, " "c.position_x, c.position_y, c.position_z, gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, " "cb.guid, cd.genitive FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? " "LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid LEFT JOIN guild_member AS gm ON c.guid = gm.guid " - "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name = NULL ORDER BY c.guid", CONNECTION_ASYNC); + "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name IS NULL ORDER BY c.guid", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_FREE_NAME, "SELECT guid, name FROM characters WHERE guid = ? AND account = ? AND (at_login & ?) = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_GUID_RACE_ACC_BY_NAME, "SELECT guid, race, account FROM characters WHERE name = ?", CONNECTION_BOTH); PrepareStatement(CHAR_SEL_CHAR_RACE, "SELECT race FROM characters WHERE guid = ?", CONNECTION_SYNCH); From 3e108f068026e6bc54828c2f829c728928c349c7 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 2 Jun 2013 19:28:53 +0200 Subject: [PATCH 04/19] DB/Autobroadcast: Update correct db struktur and auth base --- sql/base/auth_database.sql | 14 ++++++++++++++ .../auth/2013_06_02_00_auth_autobroadcast.sql | 5 +++++ src/server/game/World/World.cpp | 2 -- 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 05e680f94eb..bf2d3f9256d 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -109,6 +109,20 @@ LOCK TABLES `account_banned` WRITE; /*!40000 ALTER TABLE `account_banned` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Dumping data for table `autobroadcast` +-- + +DROP TABLE IF EXISTS `autobroadcast`; + +CREATE TABLE `autobroadcast` ( + `realmid` int(11) NOT NULL DEFAULT '-1', + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `weight` tinyint(3) unsigned DEFAULT '1', + `text` longtext NOT NULL, + PRIMARY KEY (`id`,`realmid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + -- -- Table structure for table `ip_banned` -- diff --git a/sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql b/sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql new file mode 100644 index 00000000000..2e689ffd64d --- /dev/null +++ b/sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql @@ -0,0 +1,5 @@ +ALTER TABLE `autobroadcast` + CHANGE `realmid` `realmid` INT(11) NOT NULL DEFAULT '-1', + CHANGE `id` `id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT, + CHANGE `weight` `weight` TINYINT(3) UNSIGNED DEFAULT '1', + ENGINE=INNODB; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 80577c3462e..9d2ee2eb2ba 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2675,14 +2675,12 @@ void World::SendAutoBroadcast() if (abcenter == 0) sWorld->SendWorldText(LANG_AUTO_BROADCAST, msg.c_str()); - else if (abcenter == 1) { WorldPacket data(SMSG_NOTIFICATION, (msg.size()+1)); data << msg; sWorld->SendGlobalMessage(&data); } - else if (abcenter == 2) { sWorld->SendWorldText(LANG_AUTO_BROADCAST, msg.c_str()); From 216827201ec604a25ea05d12e609f1f136e12b13 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 2 Jun 2013 23:16:18 +0200 Subject: [PATCH 05/19] Script/Ulduar: Fix try for Assembly Of Iron achievement "I choose you, xxx" --- ..._02_00_world_achievement_criteria_data.sql | 16 +++++++ .../Ulduar/Ulduar/boss_assembly_of_iron.cpp | 48 +++++++++++++++++-- 2 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql new file mode 100644 index 00000000000..55ee9f6b954 --- /dev/null +++ b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql @@ -0,0 +1,16 @@ +DELETE FROM `disables` WHERE `sourceType` IN (10082,10083,10084,10085,10086,10087); + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10082,10083,10084,10085,10086,10087); +INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES +(10082, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10082, 12, 0, 0, ''), +(10083, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10083, 12, 0, 0, ''), +(10084, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10084, 12, 0, 0, ''), +(10085, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10085, 12, 1, 0, ''), +(10086, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10086, 12, 1, 0, ''), +(10087, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10087, 12, 1, 0, ''); \ No newline at end of file diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 6ad70d38635..b3f5cc38c9f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -122,9 +122,11 @@ enum AssemblyYells EMOTE_BRUNDIR_OVERLOAD = 7 }; -enum AssemblyNPCs +enum Misc { - NPC_WORLD_TRIGGER = 22515 + NPC_WORLD_TRIGGER = 22515, + + DATA_PHASE_3 = 1 }; #define FLOOR_Z 427.28f @@ -158,6 +160,14 @@ class boss_steelbreaker : public CreatureScript events.ScheduleEvent(EVENT_FUSION_PUNCH, 15000); } + uint32 GetData(uint32 type) const + { + if (type == DATA_PHASE_3) + return (phase >= 3) ? 1 : 0; + + return 0; + } + void DoAction(int32 action) { switch (action) @@ -184,7 +194,7 @@ class boss_steelbreaker : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - DoCastAOE(SPELL_KILL_CREDIT); + DoCastAOE(SPELL_KILL_CREDIT, true); Talk(SAY_STEELBREAKER_ENCOUNTER_DEFEATED); } else @@ -287,6 +297,14 @@ class boss_runemaster_molgeim : public CreatureScript events.ScheduleEvent(EVENT_RUNE_OF_POWER, 20000); } + uint32 GetData(uint32 type) const + { + if (type == DATA_PHASE_3) + return (phase >= 3) ? 1 : 0; + + return 0; + } + void DoAction(int32 action) { switch (action) @@ -313,7 +331,7 @@ class boss_runemaster_molgeim : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - DoCastAOE(SPELL_KILL_CREDIT); + DoCastAOE(SPELL_KILL_CREDIT, true); Talk(SAY_MOLGEIM_ENCOUNTER_DEFEATED); } else @@ -429,6 +447,14 @@ class boss_stormcaller_brundir : public CreatureScript me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default } + uint32 GetData(uint32 type) const + { + if (type == DATA_PHASE_3) + return (phase >= 3) ? 1 : 0; + + return 0; + } + void EnterCombat(Unit* /*who*/) { _EnterCombat(); @@ -470,7 +496,7 @@ class boss_stormcaller_brundir : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - DoCastAOE(SPELL_KILL_CREDIT); + DoCastAOE(SPELL_KILL_CREDIT, true); Talk(SAY_BRUNDIR_ENCOUNTER_DEFEATED); } else @@ -697,6 +723,17 @@ class spell_assembly_rune_of_summoning : public SpellScriptLoader } }; +class achievement_assembly_i_choose_you : public AchievementCriteriaScript +{ + public: + achievement_assembly_i_choose_you() : AchievementCriteriaScript("achievement_assembly_i_choose_you") { } + + bool OnCheck(Player* /*player*/, Unit* target) + { + return target && target->GetAI()->GetData(DATA_PHASE_3); + } +}; + void AddSC_boss_assembly_of_iron() { new boss_steelbreaker(); @@ -705,4 +742,5 @@ void AddSC_boss_assembly_of_iron() new spell_shield_of_runes(); new spell_assembly_meltdown(); new spell_assembly_rune_of_summoning(); + new achievement_assembly_i_choose_you(); } From 21d9e1852227daea1b0db0407129a0b38e0e0994 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 2 Jun 2013 23:21:44 +0200 Subject: [PATCH 06/19] SQL: Fix typo in 216827201ec604a25ea05d12e609f1f136e12b13 --- .../world/2013_06_02_00_world_achievement_criteria_data.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql index 55ee9f6b954..053ade0486d 100644 --- a/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql +++ b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql @@ -1,4 +1,4 @@ -DELETE FROM `disables` WHERE `sourceType` IN (10082,10083,10084,10085,10086,10087); +DELETE FROM `disables` WHERE `sourceType`=4 AND `entry` IN (10082,10083,10084,10085,10086,10087); DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10082,10083,10084,10085,10086,10087); INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES @@ -13,4 +13,4 @@ INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value (10086, 11, 0, 0, 'achievement_assembly_i_choose_you'), (10086, 12, 1, 0, ''), (10087, 11, 0, 0, 'achievement_assembly_i_choose_you'), -(10087, 12, 1, 0, ''); \ No newline at end of file +(10087, 12, 1, 0, ''); From 476dc0e636e4b2a819a11cf1c0446f0d042f56ea Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 20:35:41 -0230 Subject: [PATCH 07/19] DB/Conditions: Add gossip option conditions for mage trainers. --- .../world/2013_06_02_01_world_conditions.sql | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sql/updates/world/2013_06_02_01_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_01_world_conditions.sql b/sql/updates/world/2013_06_02_01_world_conditions.sql new file mode 100644 index 00000000000..4f3993bd1e0 --- /dev/null +++ b/sql/updates/world/2013_06_02_01_world_conditions.sql @@ -0,0 +1,78 @@ +-- Add option conditions for mage trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (63,64,4484,4485,4486,4517,4518,4519,4520,4537,4538,4539,4552,4651,4654,4660,4661,4685,4686,6648,7264,9990,9580,7366,4535); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,63,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,63,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,63,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,64,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,64,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,64,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4484,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4484,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4484,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4485,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4485,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4485,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4486,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4486,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4486,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4517,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4517,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4517,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4518,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4518,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4518,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4519,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4519,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4519,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4520,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4520,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4520,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4537,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4537,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4537,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4538,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4538,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4538,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4539,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4539,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4539,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4552,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4552,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4552,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4651,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4651,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4651,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4654,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4654,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4654,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4660,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4660,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4660,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4661,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4661,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4661,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4685,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4685,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4685,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4686,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4686,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4686,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,6648,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,6648,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,6648,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,7264,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,7264,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,7264,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,9990,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,9990,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,9990,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,9580,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,9580,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,9580,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,7366,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,7366,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,7366,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4535,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4535,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'), +(15,4535,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'); From 617b0c0f7c11e6ab20936202d706f68d2b79dab0 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 21:06:32 -0230 Subject: [PATCH 08/19] DB/Conditions: Add gossip option conditions for Warlock trainers. --- .../world/2013_06_02_02_world_conditions.sql | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sql/updates/world/2013_06_02_02_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_02_world_conditions.sql b/sql/updates/world/2013_06_02_02_world_conditions.sql new file mode 100644 index 00000000000..9d1b80e7a3f --- /dev/null +++ b/sql/updates/world/2013_06_02_02_world_conditions.sql @@ -0,0 +1,78 @@ +-- Add option conditions for Warlock trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (1503,1522,2381,2383,2384,4503,4504,4505,4566,4567,4603,4604,4609,4610,4641,4643,4655,4656,4667,4681,4682,6628,7437,7566,4642); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,1503,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,1503,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,1503,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,1522,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,1522,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,1522,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2381,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2381,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2381,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2383,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2383,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2383,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2384,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2384,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,2384,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4503,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4503,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4503,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4504,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4504,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4504,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4505,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4505,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4505,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4566,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4566,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4566,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4567,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4567,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4567,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4603,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4603,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4603,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4604,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4604,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4604,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4609,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4609,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4609,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4610,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4610,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4610,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4641,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4641,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4641,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4643,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4643,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4643,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4655,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4655,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4655,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4656,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4656,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4656,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4667,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4667,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4667,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4681,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4681,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4681,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4682,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4682,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4682,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,6628,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,6628,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,6628,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,7437,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,7437,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,7437,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,7566,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,7566,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,7566,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4642,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4642,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'), +(15,4642,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'); From ee603802b05300f9a7c17a1cb27a5e55e732472b Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 21:14:37 -0230 Subject: [PATCH 09/19] DB/Conditions: Add gossip option conditions for paladin trainers. --- .../world/2013_06_02_03_world_conditions.sql | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sql/updates/world/2013_06_02_03_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_03_world_conditions.sql b/sql/updates/world/2013_06_02_03_world_conditions.sql new file mode 100644 index 00000000000..c2d730ffc6d --- /dev/null +++ b/sql/updates/world/2013_06_02_03_world_conditions.sql @@ -0,0 +1,42 @@ +-- Add option conditions for Paladin trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (2304,4556,4557,4469,4470,4471,4662,4663,4664,4677,4678,7260,8111); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,2304,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,2304,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,2304,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4556,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4556,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4556,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4557,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4557,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4557,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4469,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4469,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4469,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4470,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4470,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4470,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4471,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4471,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4471,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4662,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4662,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4662,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4663,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4663,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4663,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4664,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4664,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4664,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4677,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4677,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4677,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4678,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4678,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,4678,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,7260,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,7260,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,7260,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,8111,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,8111,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'), +(15,8111,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'); From 149992d205c0094bff00104cffd24df750344da8 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 21:29:03 -0230 Subject: [PATCH 10/19] DB/Conditions: Add gossip option conditions for Warrior trainers. --- .../world/2013_06_02_04_world_conditions.sql | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 sql/updates/world/2013_06_02_04_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_04_world_conditions.sql b/sql/updates/world/2013_06_02_04_world_conditions.sql new file mode 100644 index 00000000000..82ee44df19d --- /dev/null +++ b/sql/updates/world/2013_06_02_04_world_conditions.sql @@ -0,0 +1,93 @@ +-- Add option conditions for Warrior trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (523,655,656,4091,4475,4481,4482,4509,4511,4525,4526,4527,4546,4547,4548,4568,4569,4570,4578,4579,4581,4645,4649,4650,4653,4683,4684,4696,4697,7263); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,523,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,523,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,523,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,655,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,655,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,655,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,656,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,656,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,656,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4091,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4091,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4091,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4475,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4475,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4475,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4481,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4481,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4481,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4482,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4482,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4482,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4509,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4509,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4509,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4511,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4511,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4511,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4525,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4525,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4525,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4526,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4526,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4526,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4527,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4527,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4527,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4546,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4546,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4546,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4547,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4547,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4547,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4548,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4548,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4548,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4568,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4568,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4568,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4569,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4569,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4569,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4570,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4570,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4570,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4578,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4578,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4578,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4579,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4579,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4579,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4581,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4581,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4581,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4645,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4645,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4645,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4649,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4649,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4649,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4650,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4650,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4650,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4653,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4653,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4653,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4683,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4683,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4683,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4684,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4684,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4684,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4696,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4696,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4696,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4697,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4697,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,4697,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,7263,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,7263,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'), +(15,7263,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'); From 24e528d4fdfa188f1f860649c40990cb05977db9 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 21:37:33 -0230 Subject: [PATCH 11/19] DB/Conditions: Add option conditions for Druid trainers. --- .../world/2013_06_02_05_world_conditions.sql | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 sql/updates/world/2013_06_02_05_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_05_world_conditions.sql b/sql/updates/world/2013_06_02_05_world_conditions.sql new file mode 100644 index 00000000000..2a3f90f1440 --- /dev/null +++ b/sql/updates/world/2013_06_02_05_world_conditions.sql @@ -0,0 +1,48 @@ +-- Add option conditions for Druid trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (1403,3921,3924,3925,3926,4507,4508,4571,4605,4606,4607,4687,4688,7567,4646); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,1403,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,1403,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,1403,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3921,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3921,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3921,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3924,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3924,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3924,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3925,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3925,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3925,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3926,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3926,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,3926,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4507,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4507,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4507,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4508,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4508,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4508,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4571,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4571,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4571,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4605,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4605,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4605,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4606,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4606,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4606,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4607,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4607,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4607,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4687,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4687,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4687,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4688,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4688,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4688,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,7567,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,7567,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,7567,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4646,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4646,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,4646,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'); From 937ef9e63e86bc3a705cacffd97fb44f88471e2c Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 22:05:22 -0230 Subject: [PATCH 12/19] DB/Conditions: Replace condition accidently removed. --- sql/updates/world/2013_06_02_05_world_conditions.sql | 1 + sql/updates/world/2013_06_02_06_world_conditions.sql | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 sql/updates/world/2013_06_02_06_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_05_world_conditions.sql b/sql/updates/world/2013_06_02_05_world_conditions.sql index 2a3f90f1440..fdee846a275 100644 --- a/sql/updates/world/2013_06_02_05_world_conditions.sql +++ b/sql/updates/world/2013_06_02_05_world_conditions.sql @@ -4,6 +4,7 @@ INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`, (15,1403,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), (15,1403,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), (15,1403,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), +(15,1403,3,0,8,0,3781,0,0,'','Mathrengyl Bearwalker - Show gossip option if player has rewarded quest 3781'), (15,3921,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), (15,3921,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), (15,3921,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'), diff --git a/sql/updates/world/2013_06_02_06_world_conditions.sql b/sql/updates/world/2013_06_02_06_world_conditions.sql new file mode 100644 index 00000000000..b2605b97d26 --- /dev/null +++ b/sql/updates/world/2013_06_02_06_world_conditions.sql @@ -0,0 +1,4 @@ +-- Add option conditions for Druid trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (1403) AND `SourceEntry` IN (3); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,1403,3,0,8,0,3781,0,0,'','Mathrengyl Bearwalker - Show gossip option if player has rewarded quest 3781'); From 87032a4630f8ad09dfd88514115f98fe8c5b87c8 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 22:09:02 -0230 Subject: [PATCH 13/19] DB/Conditions: Add option conditions for Hunter trainers. --- .../world/2013_06_02_07_world_conditions.sql | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 sql/updates/world/2013_06_02_07_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_07_world_conditions.sql b/sql/updates/world/2013_06_02_07_world_conditions.sql new file mode 100644 index 00000000000..696c69ca62e --- /dev/null +++ b/sql/updates/world/2013_06_02_07_world_conditions.sql @@ -0,0 +1,80 @@ +-- Add option conditions for Hunter trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (4008,4009,4010,4011,4012,4017,4023,4101,4472,4473,4474,4506,4524,4549,4550,4551,4647,4648,4657,4675,4693,4695,6652,7262,7368); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,4008,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4008,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4008,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4009,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4009,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4009,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4010,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4010,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4010,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4011,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4011,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4011,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4012,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4012,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4012,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4017,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4017,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4017,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4023,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4023,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4023,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4101,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4101,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4101,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4472,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4472,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4472,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4473,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4473,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4473,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4474,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4474,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4474,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4506,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4506,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4506,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4524,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4524,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4524,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4549,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4549,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4549,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4550,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4550,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4550,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4551,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4551,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4551,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4647,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4647,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4647,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4648,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4648,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4648,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4657,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4657,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4657,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4675,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4675,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4675,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4693,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4693,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4693,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4695,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4695,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,4695,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,6652,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,6652,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,6652,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,7262,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,7262,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,7262,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,7368,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,7368,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,7368,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'), +(15,7368,3,0,9,0,9454,0,0,'','Acteon - Show gossip option if player has quest 9454'), +(15,7368,4,0,9,0,10324,0,0,'','Acteon - Show gossip option if player has quest 10324'); From 4e5baa4f163c625e16d6065072dd2fbbe2884cb4 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 22:32:37 -0230 Subject: [PATCH 14/19] DB/Conditions: Add option conditions for Rogue trainers. --- .../world/2013_06_02_08_world_conditions.sql | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 sql/updates/world/2013_06_02_08_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_08_world_conditions.sql b/sql/updates/world/2013_06_02_08_world_conditions.sql new file mode 100644 index 00000000000..2fe812c1934 --- /dev/null +++ b/sql/updates/world/2013_06_02_08_world_conditions.sql @@ -0,0 +1,75 @@ +-- Add option conditions for Rogue trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (85,141,381,410,411,436,3984,4502,4512,4513,4540,4541,4542,4561,4562,4575,4576,4577,4658,4659,4676,4690,5061,6650); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,85,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,85,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,85,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,141,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,141,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,141,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,381,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,381,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,381,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,410,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,410,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,410,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,411,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,411,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,411,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,436,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,436,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,436,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,3984,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,3984,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,3984,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4502,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4502,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4502,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4512,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4512,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4512,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4513,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4513,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4513,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4540,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4540,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4540,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4541,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4541,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4541,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4542,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4542,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4542,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4561,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4561,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4561,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4562,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4562,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4562,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4575,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4575,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4575,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4576,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4576,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4576,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4577,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4577,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4577,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4658,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4658,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4658,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4659,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4659,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4659,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4676,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4676,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4676,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4690,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4690,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,4690,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,5061,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,5061,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,5061,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,6650,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,6650,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'), +(15,6650,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'); From 51aa56beabd3c730c5db0ed451c0d630f47fb96a Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 2 Jun 2013 23:50:36 -0230 Subject: [PATCH 15/19] DB/Conditions: Add option conditions for Priest trainers. --- .../world/2013_06_02_09_world_conditions.sql | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 sql/updates/world/2013_06_02_09_world_conditions.sql diff --git a/sql/updates/world/2013_06_02_09_world_conditions.sql b/sql/updates/world/2013_06_02_09_world_conditions.sql new file mode 100644 index 00000000000..647e608df87 --- /dev/null +++ b/sql/updates/world/2013_06_02_09_world_conditions.sql @@ -0,0 +1,99 @@ +-- Add option conditions for Priest trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (3642,3643,3644,3645,4466,4467,4468,4521,4522,4523,4531,4532,4533,4543,4544,4545,4558,4559,4572,4573,4574,4665,4666,4679,4680,4691,4692,4801,6649,7265,7349,7438); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,3642,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3642,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3642,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3643,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3643,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3643,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3644,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3644,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3644,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3645,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3645,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,3645,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4466,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4466,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4466,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4467,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4467,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4467,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4468,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4468,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4468,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4521,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4521,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4521,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4522,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4522,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4522,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4523,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4523,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4523,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4531,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4531,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4531,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4532,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4532,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4532,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4533,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4533,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4533,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4543,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4543,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4543,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4544,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4544,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4544,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4545,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4545,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4545,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4558,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4558,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4558,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4559,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4559,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4559,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4572,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4572,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4572,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4573,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4573,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4573,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4574,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4574,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4574,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4665,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4665,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4665,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4666,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4666,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4666,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4679,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4679,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4679,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4680,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4680,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4680,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4691,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4691,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4691,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4692,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4692,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4692,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4801,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4801,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,4801,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,6649,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,6649,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,6649,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7265,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7265,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7265,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7349,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7349,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7349,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7438,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7438,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'), +(15,7438,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'); From 8266fe9b86ed8552a3201d68acf2164fb4c92bb4 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Mon, 3 Jun 2013 00:03:04 -0230 Subject: [PATCH 16/19] DB/Conditions: Add option conditions for Shaman trainers. --- .../world/2013_06_03_00_world_conditions.sql | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sql/updates/world/2013_06_03_00_world_conditions.sql diff --git a/sql/updates/world/2013_06_03_00_world_conditions.sql b/sql/updates/world/2013_06_03_00_world_conditions.sql new file mode 100644 index 00000000000..518479930f2 --- /dev/null +++ b/sql/updates/world/2013_06_03_00_world_conditions.sql @@ -0,0 +1,42 @@ +-- Add option conditions for Shaman trainers +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (4103,4104,4515,4516,4528,4529,4530,4652,5123,7357,7467,7522,8110,7377); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,4103,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4103,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4103,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4104,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4104,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4104,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4515,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4515,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4515,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4516,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4516,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4516,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4528,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4528,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4528,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4529,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4529,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4529,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4530,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4530,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4530,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4652,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4652,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,4652,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,5123,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,5123,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,5123,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7357,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7357,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7357,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7467,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7467,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7467,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,8110,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,8110,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,8110,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7377,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7377,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'), +(15,7377,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'); From 15f856ae1eb7a6e3cf6a720baeaa4d863ab9efa5 Mon Sep 17 00:00:00 2001 From: LeGuybrush Date: Mon, 3 Jun 2013 04:02:55 -0300 Subject: [PATCH 17/19] Update 2013_05_26_00_world_trinity_string.sql Remove BOM --- sql/updates/world/2013_05_26_00_world_trinity_string.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/updates/world/2013_05_26_00_world_trinity_string.sql b/sql/updates/world/2013_05_26_00_world_trinity_string.sql index 591021a5f84..80ad953b3b7 100644 --- a/sql/updates/world/2013_05_26_00_world_trinity_string.sql +++ b/sql/updates/world/2013_05_26_00_world_trinity_string.sql @@ -1,4 +1,4 @@ -DELETE FROM `trinity_string` WHERE `entry`=854 LIMIT 1; +DELETE FROM `trinity_string` WHERE `entry`=854 LIMIT 1; INSERT INTO `trinity_string` (`entry`, `content_default`, content_loc1, content_loc2, content_loc3, content_loc4, content_loc5, content_loc6, content_loc7, content_loc8) VALUES (854, '└ Mails: %d Read/%u Total', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); From 4ffdaa011d3b9d732733297a57647b74375901c0 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 3 Jun 2013 10:33:34 +0300 Subject: [PATCH 18/19] Update README --- README | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README b/README index b274e53dc32..3eea1dccdc5 100644 --- a/README +++ b/README @@ -41,16 +41,20 @@ project website at http://www.TrinityCore.org Documentation including installation instructions can be found inside the doc directory. -SQL files to create the database can be found in the sql directory. Files -to update your database from an older revision/version can be found in the -sql/updates directory. +SQL files to create the database can be found in the sql/create and sql/base directory. +You need to download world database from http://www.trinitycore.org/f/files/ be sure you get the higher numbered database. +When installing a core the 1st time you need to import also the files at sql/updates/world directory. +To save time importing multiple files, you can use copy *.sql world_updates.sql under Windows or cat *.sql > world_updates under Linux. +You need to update your core (recompile and overwrite binaries) when updating your database, usually you can't use one older core with a newer database or a newer core with a older database. +When updating your core you also need to import the files at sql/updates/auth and sql/updates/characters along with sql/updates/world files. +You can't merge all the sql files on sql/updates into a single file, because they belong to 3 different databases and they don't use database name. TrinityCore Requirements Platform: Linux, Windows or Mac Processor with SSE2 support ACE ≥ 5.8.3 MySQL ≥ 5.1.0 -CMake ≥ 2.8.0 +CMake ≥ 2.8.0 (max 2.8.9 under linux) OpenSSL ≥ 0.9.8o GCC ≥ 4.3 (Linux only) MS Visual Studio ≥ 9 (2008) (Windows only) From f6c1a9a8c4c403996b5b40e565e807c807e47aaa Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Mon, 3 Jun 2013 18:04:42 +0200 Subject: [PATCH 19/19] Core: Fix warning --- ...rinity_string.sql => 2013_06_03_00_world_trinity_string.sql} | 0 src/server/scripts/Commands/cs_misc.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename sql/updates/world/{2013_05_26_00_world_trinity_string.sql => 2013_06_03_00_world_trinity_string.sql} (100%) diff --git a/sql/updates/world/2013_05_26_00_world_trinity_string.sql b/sql/updates/world/2013_06_03_00_world_trinity_string.sql similarity index 100% rename from sql/updates/world/2013_05_26_00_world_trinity_string.sql rename to sql/updates/world/2013_06_03_00_world_trinity_string.sql diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index c49514cacc4..e6a7b096a34 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1664,7 +1664,7 @@ public: // Only fetch these fields if commander has sufficient rights) if (handler->HasPermission(RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA) && // RBAC Perm. 48, Role 39 - (!handler->GetSession() || handler->GetSession()->GetSecurity() >= security)) + (!handler->GetSession() || handler->GetSession()->GetSecurity() >= AccountTypes(security))) { eMail = fields[2].GetString(); lastIp = fields[3].GetString();