mirror of
https://github.com/brues-code/ClassicAPI.git
synced 2026-11-14 23:20:44 +00:00
QueryQuestsCompleted, GetQuestsCompleted, C_QuestLog.IsQuestFlaggedCompleted, C_QuestLog.GetAllCompletedQuestIDs and QUEST_QUERY_COMPLETE, on Turtle clients only. The server answers `.queststatuses` with TWQUEST guild addon messages from the player, split at 2000 characters; the shorter last message is the end of the list, so no timers are needed. The DLL sends the request itself on SMSG_LOGIN_VERIFY_WORLD (the earliest request the server answers), after each turn-in, and from QueryQuestsCompleted. It reads every answer at the packet funnel, checks that the sender is the player, replaces the list and fires QUEST_QUERY_COMPLETE. A turned-in quest goes into the list at once; the server's next answer takes repeatable quests out again. The list lives through /reload. Net::OutPacket replaces the two hand-built CDataStore senders (item cache resend, SetPVP). Replaces the closed Lua collector of PR #86.
33 lines
1.2 KiB
C++
33 lines
1.2 KiB
C++
// This file is part of ClassicAPI.
|
|
//
|
|
// ClassicAPI is free software: you can redistribute it and/or modify it under the terms
|
|
// of the GNU General Public License as published by the Free Software Foundation, either
|
|
// version 3 of the License, or (at your option) any later version.
|
|
//
|
|
// ClassicAPI is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
// PURPOSE. See the GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License along with
|
|
// ClassicAPI. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
#include "cache/Query.h"
|
|
|
|
#include "Game.h"
|
|
#include "Offsets.h"
|
|
#include "net/PacketWriter.h"
|
|
|
|
namespace Cache::Query {
|
|
|
|
// The send of FUN_DBCACHE_ITEMSTATS_GET_RECORD (0x0055BB18..0x0055BB89),
|
|
// step for step. Every DBCache<T> clone builds the same packet.
|
|
void Send(void *cache, uint32_t key) {
|
|
Net::OutPacket packet(Game::Read<uint32_t>(cache, Offsets::OFF_DBCACHE_QUERY_OPCODE));
|
|
packet.PutU32(key);
|
|
if (Game::Read<uint8_t>(cache, Offsets::OFF_DBCACHE_OWNER_FLAG) != 0)
|
|
packet.PutGuid(0);
|
|
packet.Send();
|
|
}
|
|
|
|
} // namespace Cache::Query
|