CGameServerClient.h (Ant's(Edited))
Code:
//S4League's CGameServerClient - This handles every packet sent to and received from the GameServer. #pragma once namespace S4 { class CGameServerClient { public: int32_t m_ReferenceCount; //4 uint8_t m_S2CStuff[16]; //8 class CGameServerS2C { public: virtual void Function0(); virtual void Function1(); virtual void Function2(); virtual void Function3(); virtual void Function4(); virtual void Function5(); virtual void Function6(); virtual void Function7(); virtual void Function8(); virtual void Function9(); virtual void Function10(); virtual void Item_InventoryInfo_Ack(uint8_t a2,uint8_t *a3, std::vector<Item> * ItemBuffer); virtual void Function12(); virtual void Function13(); virtual BOOL CSuccessCreateCharacterAck(uint8_t a2, uint32_t *a3, uint32_t *a4, uint32_t *a5, uint32_t *a6, uint32_t *a7); virtual void Function15(); virtual void Function16(); virtual BOOL Item_UseItem_Ack(uint8_t a2,uint8_t * zero,uint8_t * char_id,uint8_t * slotid,uint64_t * itemid, uint8_t * equipid); virtual BOOL Item_UpdateInventory_Ack(uint8_t a2, uint32_t * a3, Create_Item * Item); virtual void Function19(); virtual void Function20(); virtual void Function21(); virtual void Function22(); virtual void Function23(); virtual void Function24(); virtual void Function25(); virtual void Function26(); virtual void Function27(); virtual void Function28(); virtual void Function29(); virtual void Function30(); virtual void Function31(); virtual void Function32(); virtual void Function33(); virtual void Function34(); virtual void Function35(); virtual void Function36(); virtual void Function37(); virtual void Function38(); virtual void Function39(); virtual void Function40(); virtual void Function41(); virtual void Function42(); virtual void Function43(); virtual void Function44(); virtual void Function45(); virtual void Function46(); virtual void Function47(); virtual void Function48(); virtual void Function49(); virtual void Function50(); virtual void Function51(); virtual void Function52(); virtual void Function53(); virtual void Function54(); virtual void Function55(); virtual void Function56(); virtual void Function57(); virtual void Function58(); virtual void Function59(); virtual void Function60(); virtual void Function61(); virtual void Function62(); virtual void Function63(); virtual void Function64(); virtual void Function65(); virtual void Function66(); virtual void Function67(); virtual void Function68(); virtual void Function69(); virtual BOOL Item_DiscardItem_Ack(uint8_t a2,uint32_t *zero, uint32_t * one , uint64_t * iid); virtual void Function71(); virtual void Function72(); virtual void Function73(); virtual void Function74(); virtual void Function75(); virtual void Function76(); virtual void Function77(); virtual void Function78(); virtual void Function79(); virtual void Function80(); virtual void Function81(); virtual void Function82(); virtual void Function83(); virtual void Function84(); virtual void Function85(); virtual void Function86(); virtual void Function87(); virtual void Function88(); virtual void Function89(); virtual void Function90(); virtual void Function91(); virtual void Function92(); virtual void Function93(); virtual void Function94(); virtual void Function95(); virtual void Function96(); virtual void Function97(); virtual void Function98(); virtual void Function99(); virtual void Function100(); virtual void Function101(); virtual void Function102(); virtual void Function103(); virtual void Function104(); virtual void Function105(); virtual void Function106(); virtual void Function107(); virtual void Function108(); virtual void Function109(); virtual void Function110(); virtual void Function111(); virtual void Function112(); virtual void Function113(); virtual void Function114(); virtual void Function115(); virtual void Function116(); virtual void Function117(); virtual void Function118(); virtual void Function119(); virtual void Function120(); virtual void Function121(); virtual void Function122(); virtual void Function123(); virtual void Function124(); virtual void Function125(); virtual void Function126(); virtual void Function127(); virtual void Function128(); virtual void Function129(); virtual void Function130(); virtual void Function131(); virtual void Function132(); virtual void Function133(); virtual void Function134(); virtual void Function135(); virtual void Function136(); virtual void Function137(); virtual void Function138(); virtual void Function139(); virtual void Function140(); virtual void Function141(); virtual void Function142(); virtual void Function143(); virtual void Function144(); virtual void Function145(); virtual void Function146(); virtual void Function147(); virtual void Function148(); virtual void Function149(); virtual void Function150(); virtual void Function151(); virtual void Function152(); virtual void Function153(); virtual void Function154(); virtual void Function155(); virtual void Function156(); virtual void Function157(); virtual void Function158(); virtual void Function159(); virtual void Function160(); virtual void Function161(); virtual void Function162(); virtual void Function163(); virtual void Function164(); virtual void Function165(); virtual void Function166(); virtual void Function167(); virtual void Function168(); virtual void Function169(); virtual void Function170(); virtual void Function171(); virtual void Function172(); virtual void Function173(); virtual void Function174(); virtual void Function175(); virtual void Function176(); virtual void Function177(); virtual void Function178(); virtual void Function179(); virtual void Function180(); virtual void Function181(); virtual void Function182(); virtual void Function183(); virtual void Function184(); virtual void Function185(); virtual void Function186(); virtual void Function187(); virtual void Function188(); virtual void Function189(); virtual void Function190(); virtual void Function191(); virtual void Function192(); virtual void Function193(); virtual void Function194(); virtual void Function195(); virtual void Function196(); virtual BOOL Esper_Chip_Ack(uint8_t a2, uint32_t * a3, uint32_t * esperid); virtual void Function198(); virtual void Function199(); virtual void Function200(); }m_GameServerS2C; //24 uint8_t m_S2CStuff_[36]; //28 class CGameServerC2S { public: virtual void Function0(); virtual void Function1(); virtual void Function2(); virtual void Function3(); virtual void Function4(); virtual void Function5(); virtual bool Character_Create_Req(int8_t a2, int32_t * Proudnet, uint8_t * char_id, uint32_t * sex_id); virtual void Function7(); virtual bool Character_Select_Req(); virtual void Function9(); virtual bool Character_Delete_Req(int8_t a2, int32_t * Proudnet, uint8_t * char_id); virtual void Function11(); virtual void Function12(); virtual void Function13(); virtual void Function14(); virtual void Function15(); virtual void Function16(); virtual void Function17(); virtual void Function18(); virtual void Function19(); virtual void Item_UseItem_Req(uint8_t a2, int32_t * Proudnet, uint8_t * equip_id, uint8_t * char_id, uint8_t * slot_id,uint64_t * item_id); }m_GameServerC2S; //64 //64 uint8_t m_SC2Stuff__[16]; class CGameRuleC2S { public: virtual void Function0(); virtual void Function1(); virtual void Function2(); virtual bool RMI_CMessageSend(int8_t* remotes, int32_t remoteCount, uintptr_t rmiContext, uintptr_t Message, LPCWSTR RMI_Name, int32_t RMI_ID); }m_GameRuleC2S; }; }
Code:
#pragma once #include <iostream> #include <string> #include "Update.h" #include "S4 League.h" BOOL __fastcall hk_RMI_CMessageSend(uintptr_t * thispointer, void * edx, int8_t* a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7) { if (a7 == Game_EquipCheck_Req || a7 == Room_ReadyRound_Req_2 || a7 == Room_BeginRound_Req_2 || a7 == Room_IntrudeRound_Req_2) { uint8_t start_offset; switch (a7) { case Room_IntrudeRound_Req_2: case Game_EquipCheck_Req: start_offset = 0x2; break; case Room_ReadyRound_Req_2: case Room_BeginRound_Req_2: start_offset = 0x3; break; } uintptr_t current_pos = *reinterpret_cast<uintptr_t*> (*reinterpret_cast<uintptr_t*>(a5+0x8)+0x8)+start_offset; size_t Size = *reinterpret_cast<size_t*> (*reinterpret_cast<uintptr_t*>(a5+0x8)+0xC); *reinterpret_cast<uint32_t*>(current_pos+Size-0xC-start_offset) = EsperID::NONE; for (int i = 0; i != 12; i++) { ZeroMemory((DWORD*)current_pos, sizeof(uint64_t)); uint32_t Effect = *reinterpret_cast<uint32_t*>(current_pos + 0x10); if (Effect != 0) { Effect *= 0x4; } current_pos += Effect + 0x1C; } } return VT_RMI_CMessageSend(thispointer, a2, a3, a4, a5, a6, a7); } BOOL __fastcall hk_Character_CurrentItemInfo_Ack(uintptr_t* thispointer, void * edx, uint8_t a2, uint8_t* a3, uint8_t* char_id, std::vector<Character_Item_Buffer>* Weapon, std::vector<Character_Item_Buffer>* Skill, std::vector<Character_Item_Buffer>* Clothes) { uint8_t equip_id = 2; for (auto it = Clothes->begin(); it != Clothes->end(); it++) { if (it->item_id != 0) { m_GameServerClient->m_GameServerC2S.Item_UseItem_Req(1, m_PNetPtr, &equip_id, char_id, &it->slot_id, &it->item_id); } } for (auto it = Weapon->begin(); it != Weapon->end(); it++) { if (it->item_id != 0) { m_GameServerClient->m_GameServerC2S.Item_UseItem_Req(1, m_PNetPtr, &equip_id, char_id, &it->slot_id, &it->item_id); } } for (auto it = Skill->begin(); it != Skill->end(); it++) { if (it->item_id != 0) { m_GameServerClient->m_GameServerC2S.Item_UseItem_Req(1, m_PNetPtr, &equip_id, char_id, &it->slot_id, &it->item_id); } } return VT_Character_CurrentItemInfo_Ack(thispointer, a2, a3, char_id, Weapon, Skill, Clothes); } BOOL __fastcall hk_Item_InventoryInfo_Ack(uintptr_t* thispointer, void* edx, uint8_t a2, uint8_t* a3, std::vector<Item>* ItemBuffer) { return VT_Item_InventoryInfo_Ack(thispointer, a2, a3, &S4_ItemList); } BOOL __fastcall hk_Esper_Chip_Ack(uintptr_t * thispointer, void * edx, uint8_t a2, uint32_t * a3, uint32_t * esperid) { return VT_Esper_Chip_Ack(thispointer, a2, a3, &esper_id); } BOOL __fastcall hk_Item_UseItem_Ack(uintptr_t * thispointer, void * edx, uint8_t a2, uint8_t * zero, uint8_t * Character_ID, uint8_t * Slot_ID, uint64_t * Unique_ID, uint8_t * Equip_ID) { for (auto it = S4_ItemList.begin(); it != S4_ItemList.end(); it++) { if ((*it).UniqueID == *reinterpret_cast<uint64_t*>(Unique_ID)) { uint8_t Item_Type = (*it).ItemID / 1000000 - 1; uint64_t UniqueID_Slot = Character[*reinterpret_cast<uint8_t*>(Character_ID)][Item_Type * 8 + *reinterpret_cast<uint8_t*>(Slot_ID)]; uint8_t Equip_Buffer; if (UniqueID_Slot == (*it).UniqueID) { Character[*reinterpret_cast<uint8_t*>(Character_ID)][Item_Type * 8 + *reinterpret_cast<uint8_t*>(Slot_ID)] = 0; Equip_Buffer = 2; Equip_ID = &Equip_Buffer; } else { Character[*reinterpret_cast<uint8_t*>(Character_ID)][Item_Type * 8 + *reinterpret_cast<uint8_t*>(Slot_ID)] = (*it).UniqueID; Equip_Buffer = 1; Equip_ID = &Equip_Buffer; } break; } } m_GameServerClient->m_GameServerS2C.Esper_Chip_Ack(01, &unknow, &Default_Esper); return VT_Item_UseItem_Ack(thispointer, a2, zero, Character_ID, Slot_ID, Unique_ID, Equip_ID); }
Code:
#pragma once #include "S4 League.h" #include "CGameServerClient.h" #include "VMTH.h" S4::CGameServerClient* m_GameServerClient = nullptr; int32_t* m_PNetPtr; std::vector<Item> S4_ItemList; #define Game_EquipCheck_Req 1049 #define Room_ReadyRound_Req_2 1059 #define Room_BeginRound_Req_2 1060 #define Room_IntrudeRound_Req_2 1061 uint64_t Character[3][17]; typedef BOOL(__thiscall* p_VT_Item_UseItem_Ack)(uintptr_t*, uint8_t, uint8_t*, uint8_t*, uint8_t*, uint64_t*, uint8_t*); p_VT_Item_UseItem_Ack VT_Item_UseItem_Ack; typedef BOOL(__thiscall* p_VT_Esper_Chip_Ack)(uintptr_t*, uint8_t, uint32_t*, uint32_t*); p_VT_Esper_Chip_Ack VT_Esper_Chip_Ack; typedef BOOL(__thiscall* p_VT_Item_InventoryInfo_Ack)(uintptr_t*, uint8_t, uint8_t*, std::vector<Item>*); p_VT_Item_InventoryInfo_Ack VT_Item_InventoryInfo_Ack; typedef BOOL(__thiscall* p_VT_RMI_CMessageSend)(uintptr_t*, int8_t*, int32_t, int32_t, int32_t, int32_t, int32_t); p_VT_RMI_CMessageSend VT_RMI_CMessageSend; typedef BOOL(__thiscall* p_VT_Character_CurrentItemInfo_Ack)(uintptr_t*, uint8_t, uint8_t*, uint8_t*, std::vector<Character_Item_Buffer>*, std::vector<Character_Item_Buffer>*, std::vector<Character_Item_Buffer>*); p_VT_Character_CurrentItemInfo_Ack VT_Character_CurrentItemInfo_Ack; uint32_t esper_id = 2; uint32_t unknow = 0; uint32_t Default_Esper = EsperID::NONE;
Code:
#pragma once #include <windows.h> #include <thread> #include <vector> #include <sstream> #include <process.h> #include <cstdint> struct Effect { uint32_t EnchantID; uint32_t Period; uint64_t PurchaseTime; uint32_t uk = 0; uint32_t uk_01 = 0; }; struct Item { uint64_t UniqueID; uint32_t ItemID; uint32_t PriceType = 3; uint32_t PeriodType = 1; uint16_t Period = 1; uint32_t Color = 0; uint64_t PurchaseDate = 0; uint32_t Energy = 2400; std::vector<Effect> Effects; uint32_t MP = 0; uint32_t EnchantCount = 0; uint32_t EsperID = 0; }; struct Character_Item_Buffer { uint8_t slot_id; uint8_t unknow[7]; uint64_t item_id; }; struct Create_Item { uint32_t UpdateID = 1; uint32_t uk_01 = 0; Item ItemBuffer; }; enum EsperID { STRONG = 0, SOLID = 1, SPECIAL = 2, STYLE = 3, SHINY = 4, NONE = UINT_MAX, };
Code:
#pragma once #include "Update.h" #include "S4 Function.h" #include "S4 League.h" #include "Unlinking.h" namespace Convert { template <typename T> bool ToIn32(const std::string & value, T & result) { std::istringstream iss(value); return !(iss >> result).fail(); } } void Init(void*) { uintptr_t uptr_BaseAddr = (DWORD)GetModuleHandle(0); uintptr_t GameServerClient = uptr_BaseAddr + 0x16B7108; while (!(*reinterpret_cast<uintptr_t*>(GameServerClient))) Sleep(10); m_GameServerClient = reinterpret_cast<S4::CGameServerClient*>(GameServerClient); m_PNetPtr = reinterpret_cast<int32_t*>(uptr_BaseAddr+0x1669030); VT_Item_UseItem_Ack = (p_VT_Item_UseItem_Ack)(*(PDWORD**)(&m_GameServerClient->m_GameServerS2C))[17]; VMTH::HookVMTFunction(reinterpret_cast<PDWORD*>(&m_GameServerClient->m_GameServerS2C), reinterpret_cast<DWORD>(&hk_Item_UseItem_Ack), 17); VT_Esper_Chip_Ack = (p_VT_Esper_Chip_Ack)(*(PDWORD**)(&m_GameServerClient->m_GameServerS2C))[197]; VMTH::HookVMTFunction(reinterpret_cast<PDWORD*>(&m_GameServerClient->m_GameServerS2C), reinterpret_cast<DWORD>(&hk_Esper_Chip_Ack), 197); VT_Item_InventoryInfo_Ack = (p_VT_Item_InventoryInfo_Ack)(*(PDWORD**)(&m_GameServerClient->m_GameServerS2C))[11]; VMTH::HookVMTFunction(reinterpret_cast<PDWORD*>(&m_GameServerClient->m_GameServerS2C), reinterpret_cast<DWORD>(&hk_Item_InventoryInfo_Ack), 11); VT_Character_CurrentItemInfo_Ack = (p_VT_Character_CurrentItemInfo_Ack)(*(PDWORD**)(&m_GameServerClient->m_GameServerS2C))[10]; VMTH::HookVMTFunction(reinterpret_cast<PDWORD*>(&m_GameServerClient->m_GameServerS2C), reinterpret_cast<DWORD>(&hk_Character_CurrentItemInfo_Ack), 10); VT_RMI_CMessageSend = (p_VT_RMI_CMessageSend)(*(PDWORD**)(&m_GameServerClient->m_GameRuleC2S))[3]; VMTH::HookVMTFunction(reinterpret_cast<PDWORD*>(&m_GameServerClient->m_GameRuleC2S), reinterpret_cast<DWORD>(&hk_RMI_CMessageSend), 3); _endthread(); } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hinstDLL); _beginthread(&Init, 0, 0); break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; }
ik hrhrhrh oldQuote:
gay code
FEEL FREE TO FVCK S4LEAGUE
Regards
FazeDaFapper