diff options
-rw-r--r-- | sql/updates/world/2014_04_23_03_world_misc.sql | 15 | ||||
-rw-r--r-- | src/server/game/Handlers/AuctionHouseHandler.cpp | 21 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_rbac.cpp | 2 |
3 files changed, 36 insertions, 2 deletions
diff --git a/sql/updates/world/2014_04_23_03_world_misc.sql b/sql/updates/world/2014_04_23_03_world_misc.sql new file mode 100644 index 00000000000..a66bada05d1 --- /dev/null +++ b/sql/updates/world/2014_04_23_03_world_misc.sql @@ -0,0 +1,15 @@ +UPDATE `npc_text` SET `BroadcastTextID0`=27076 WHERE `ID`=12946; + +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`=9359 WHERE `menu_id`=5712 AND `id`=0; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`=9359 WHERE `menu_id`=6880 AND `id`=0; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`=18411 WHERE `menu_id`=7139 AND `id`=0; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`=19691 WHERE `menu_id`=8439 AND `id`=0; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`=29539 WHERE `menu_id`=9573 AND `id`=0; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`=29539 WHERE `menu_id`=9574 AND `id`=0; + +UPDATE `creature_text` SET `BroadcastTextID`=13099 WHERE `entry`=16063 AND `groupid`=3 AND `id`=0; +UPDATE `creature_text` SET `BroadcastTextID`=29430 WHERE `entry`=28030 AND `groupid`=0 AND `id`=2; +UPDATE `creature_text` SET `BroadcastTextID`=35743 WHERE `entry`=34496 AND `groupid`=7 AND `id`=0; +UPDATE `creature_text` SET `BroadcastTextID`=35743 WHERE `entry`=34497 AND `groupid`=7 AND `id`=0; +UPDATE `creature_text` SET `BroadcastTextID`=37133 WHERE `entry`=36853 AND `groupid`=8 AND `id`=0; +UPDATE `creature_text` SET `BroadcastTextID`=38061 WHERE `entry`=37955 AND `groupid`=4 AND `id`=0; diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index fddbfac0a5e..12bc18298b7 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -143,7 +143,9 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) recvData >> itemsCount; uint64 itemGUIDs[MAX_AUCTION_ITEMS]; // 160 slot = 4x 36 slot bag + backpack 16 slot + memset(itemGUIDs, 0, sizeof(itemGUIDs)); uint32 count[MAX_AUCTION_ITEMS]; + memset(count, 0, sizeof(count)); if (itemsCount > MAX_AUCTION_ITEMS) { @@ -211,6 +213,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) Item* items[MAX_AUCTION_ITEMS]; uint32 finalCount = 0; + uint32 itemEntry = 0; for (uint32 i = 0; i < itemsCount; ++i) { @@ -222,9 +225,12 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) return; } + if (itemEntry == 0) + itemEntry = item->GetTemplate()->ItemId; + if (sAuctionMgr->GetAItem(item->GetGUIDLow()) || !item->CanBeTraded() || item->IsNotEmptyBag() || item->GetTemplate()->Flags & ITEM_PROTO_FLAG_CONJURED || item->GetUInt32Value(ITEM_FIELD_DURATION) || - item->GetCount() < count[i]) + item->GetCount() < count[i] || itemEntry != item->GetTemplate()->ItemId) { SendAuctionCommandResult(NULL, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); return; @@ -240,6 +246,19 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) return; } + // check if there are 2 identical guids, in this case user is most likely cheating + for (uint32 i = 0; i < itemsCount - 1; ++i) + { + for (uint32 j = i + 1; j < itemsCount; ++j) + { + if (itemGUIDs[i] == itemGUIDs[j]) + { + SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + return; + } + } + } + for (uint32 i = 0; i < itemsCount; ++i) { Item* item = items[i]; diff --git a/src/server/scripts/Commands/cs_rbac.cpp b/src/server/scripts/Commands/cs_rbac.cpp index df4ce993433..47fa01837f6 100644 --- a/src/server/scripts/Commands/cs_rbac.cpp +++ b/src/server/scripts/Commands/cs_rbac.cpp @@ -320,7 +320,7 @@ public: handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, permission->GetId(), permission->GetName().c_str());
}
}
- handler->PSendSysMessage(LANG_RBAC_LIST_HEADER_DENIED, command->rbac->GetId(), command->rbac->GetName().c_str());
+ handler->PSendSysMessage(LANG_RBAC_LIST_HEADER_BY_SEC_LEVEL, command->rbac->GetId(), command->rbac->GetName().c_str(), command->rbac->GetSecurityLevel());
rbac::RBACPermissionContainer const& defaultPermissions = sAccountMgr->GetRBACDefaultPermissions(command->rbac->GetSecurityLevel());
if (defaultPermissions.empty())
handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
|