[Source] Item Creator

10/01/2016 11:52 RingleRangleRob#1
Yep, no comment.

[Only registered and activated users can see links. Click Here To Register...]

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;
	};
}
S4 Function.h
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);
}
Update.h
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;
S4 League.h
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,
};
main.cpp
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;
}
Quote:
Originally Posted by vaynz View Post
gay code
ik hrhrhrh old

FEEL FREE TO FVCK S4LEAGUE

Regards

FazeDaFapper
10/01/2016 11:57 TheMokkо#2
Thank you for the source : )

Quote:
Originally Posted by elementax View Post
I did all the things you showed in your Video tutorial and it worked...
So I decided to upload all in all :D

Link: [Only registered and activated users can see links. Click Here To Register...]
10/01/2016 12:00 Hiruko Fumiko#3
gj i will use it
10/01/2016 12:02 fickmaster#4
gj what programm do you need for it?

or what to download?

lowHertz AA3.1.1 Hook
lowHertz Hook Reloaded
EmptyServers 3.7 by TheFeckless (full source)?
10/01/2016 12:08 vaynz#5
gay code

Quote:
Originally Posted by fickmaster View Post
gj what programm do you need for it?

or what to download?

lowHertz AA3.1.1 Hook
lowHertz Hook Reloaded
EmptyServers 3.7 by TheFeckless (full source)?
C++11 capable compiler and a method to replace virtual function ptrs
10/01/2016 12:16 asexyboy99#6
Quote:
Originally Posted by vaynz View Post
gay code



C++11 capable compiler and a method to replace virtual function ptrs
so i can do it with visual studio?
10/01/2016 12:27 vaynz#7
Quote:
Originally Posted by asexyboy99 View Post
so i can do it with visual studio?
sure
10/01/2016 12:51 xKemya#8
This is kinda broken...

Gj tho, no hate :p
10/01/2016 13:09 fickmaster#9
Did i do it right pls anyone tell me

[Only registered and activated users can see links. Click Here To Register...]
10/01/2016 13:21 xKemya#10
Quote:
Originally Posted by fickmaster View Post
Did i do it right pls anyone tell me

[Only registered and activated users can see links. Click Here To Register...]
And here we start...

Expecting tons of threads in the s4 league section on how to compile this and crashes issues :)
10/01/2016 13:22 fickmaster#11
I dont have crash issuess or problems to complie i just start it and it doesnt ik

ahahaa he cant do it that loser! <--- Say much persons
10/01/2016 13:36 -YourNightmare-#12
Well.. That moment you see something awesome but can't use it 'cause of a lack on C++ knowledge.... Could anyone tell me what to do with that code?
10/01/2016 13:40 Tony.jaw#13
Quote:
Originally Posted by -YourNightmare- View Post
Well.. That moment you see something awesome but can't use it 'cause of a lack on C++ knowledge.... Could anyone tell me what to do with that code?
that moment flame war starting :p
10/01/2016 13:43 -YourNightmare-#14
Quote:
Originally Posted by Tony.jaw View Post
that moment flame war starting :p

Pls don't :x
10/01/2016 13:47 fickmaster#15
Ik that moment xD