#include "pch.h" #include "sock.h" #include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/filereadstream.h" #include "rapidjson/filewritestream.h" #include "rapidjson/istreamwrapper.h" #include "STL.h" //构造 抽奖 类型容器 struct Dargonresult { int ItemIndex; int ItemNum; int ItemGrade; }; struct DargonMap { int Op; int LuckyValue; Dargonresult Result[10]; }; static std::mapDargon_STL; void sock::Pack_抽奖(int idx, int code, void* p3, void* p4) { DWORD Size; Net_Get_Dword(Size); char* Buffer = new char[Size+1]; Net_Get_Buffer(Buffer, Size); Buffer[Size] = '\0'; rapidjson::Document Dom; Dom.Parse(Buffer); //构造res包 结构体 Dargonresult Res_Buffer[10]; for (int i = 0; i < 10; ++i) { Res_Buffer[i].ItemIndex = Dom["result"][i]["item"].GetInt(); Res_Buffer[i].ItemNum = Dom["result"][i]["num"].GetInt(); Res_Buffer[i].ItemGrade = Dom["result"][i]["grade"].GetInt(); } //构造龙盒总 结构体 DargonMap M_Buffer; M_Buffer.Op = Dom["op"].GetInt(); M_Buffer.LuckyValue = Dom["luckyvalue"].GetInt(); for (int b = 0; b < 10; ++b) { M_Buffer.Result[b] = Res_Buffer[b]; } //构造 龙盒 map Dargon_STL["dargonmap"] = M_Buffer; } void sock::R_Register_Pack() { auto Registerfunc = reinterpret_cast(0x7186D0); Registerfunc(130, Pack_抽奖, 0); } bool sock::Net_Get_Byte(BYTE& v) { typedef bool(__cdecl* func_t)(BYTE*); return reinterpret_cast(0x011AEA00)(&v); } bool sock::Net_Get_Short(short int& v) { typedef bool(__cdecl* func_t)(short int*); return reinterpret_cast(0x011AEA30)(&v); } bool sock::Net_Get_Dword(DWORD& v) { typedef bool(__cdecl* func_t)(DWORD*); return reinterpret_cast(0x011AEA60)(&v); } bool sock::Net_Get_Buffer(char* v, int sz) { typedef bool(__cdecl* func_t)(char*, int); return reinterpret_cast(0x011AEA90)(v, sz); } /* bool sock::HookRegistPackHandler(int idx, pack_handler_t handler) { return handleTable.emplace(idx, handler).second; } */