Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

PartyBuff's

Skilled Illusionist
Joined
Oct 31, 2008
Messages
341
Reaction score
294
Buffs are random increased u can change here -> " randomBuff(30, 100) "
PHP:
#include <random>


int randomBuff(int from, int to)
{
	std::random_device rd;
	std::mt19937 mt(rd());
	std::uniform_real_distribution<double> dist(from, to);
	return static_cast<int>(dist(mt));
}
void Buffs(int* pPlayer, int* Skill, int BuffID, int SkillIndex, int BuffInc, char* PacketPointer, char* PositionPointer)
{
	int TargetId = 0;
	BYTE Type = 0;
	GameServer::MainServer::ReadPacket(PacketPointer, PositionPointer, "bd", &Type, &TargetId);

	sObjectType ObjectType;
	if (Type == ObjectType.PLAYER)
	{
		int* Target = static_cast<int*>(GameServer::Player::FindPlayerbyID(TargetId));
		int ptPlayer = Target[254];
		void* PartyID = reinterpret_cast<void*>(GameServer::Party::FindParty(ptPlayer));

		if (PartyID)
		{
			for (int i = GameServer::Party::GetPlayerList(PartyID); i; i = GameServer::BaseList::Pop(reinterpret_cast<void*>(i)))
			{
				int ListPlayer = GameServer::MainServer::unknown_libname_77(reinterpret_cast<void*>(i));
				if (ListPlayer)
				{
					if (pPlayer)
					{
						if (GameServer::MainServer::GetDistance(ListPlayer + 332, reinterpret_cast<int>(Target) + 332) <= 640)
						{
							const int TargetID = *reinterpret_cast<int*>(static_cast<int>(ListPlayer)+0x1C);
							const int PlayerID = *reinterpret_cast<int*>(reinterpret_cast<int>(pPlayer)+0x1C);
							GameServer::Character::CancelBuff(reinterpret_cast<void*>(ListPlayer), BuffID);
							GameServer::Player::AddBuff(ListPlayer, GameServer::Character::CreateBuff(BuffID, 1800, BuffInc * Skill[2], 0));
							GameServer::Character::WriteInSight(pPlayer, 63, "bddbbwwb", SkillIndex, PlayerID, TargetID, 1, Skill[2], 0, 0, 0);
						}
					}
				}
			}
		}
		else
		{
			if (pPlayer)
			{
				if (Target)
				{

					const int TargetID = *reinterpret_cast<int*>(reinterpret_cast<int>(Target)+0x1C);
					const int PlayerID = *reinterpret_cast<int*>(reinterpret_cast<int>(pPlayer)+0x1C);
					GameServer::Character::CancelBuff(reinterpret_cast<void*>(Target), BuffID);
					GameServer::Player::AddBuff(reinterpret_cast<int>(Target), GameServer::Character::CreateBuff(BuffID, 1800, BuffInc * Skill[2], 0));
					GameServer::Character::WriteInSight(pPlayer, 63, "bddbbwwb", SkillIndex, PlayerID, TargetID, 1, Skill[2], 0, 0, 0);
				}
			}
		}
	}
}

static int(__thiscall *ExecuteSkill)(void *thispointer, signed int a2, char* a3, char* a4) = (int(__thiscall*)(void *thispointerpointer, signed int a2, char* a3, char* a4))0x0047FBB0;
void __fastcall Hooked_ExcuteSkill(int* PointToPlayerBase, void* _edx, signed int nSkillID, char* PacketPointer, char* PositionPointer)
{
	UNREFERENCED_PARAMETER(_edx);
	bool forward = true;

	int Class = *reinterpret_cast<unsigned long*>(*reinterpret_cast<unsigned long*>(reinterpret_cast<int>(PointToPlayerBase)) + 460);

	if (Class == 1)//Mage
	{
		/*
		if (nSkillID == 26) // Speed Up
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 12, nSkillID, 15, PacketPointer, PositionPointer);
			forward = false;
		}
		*/
		if (nSkillID == 38) // Refining Weapon
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 36, nSkillID, randomBuff(30, 100), PacketPointer, PositionPointer);
			forward = false;
		}
		if (nSkillID == 39) // Defense Improvement
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 37, nSkillID, randomBuff(30, 60), PacketPointer, PositionPointer);
			forward = false;
		}
		if (nSkillID == 49) // Blessing of Strength
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 46, nSkillID, randomBuff(5, 15), PacketPointer, PositionPointer);
			forward = false;
		}
		if (nSkillID == 50) // Blessing of Health
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 47, nSkillID, randomBuff(5, 15), PacketPointer, PositionPointer);
			forward = false;
		}
		if (nSkillID == 51) // Blessing of Agility
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 48, nSkillID, randomBuff(5, 15), PacketPointer, PositionPointer);
			forward = false;
		}
		if (nSkillID == 52) // Blessing of Intelligence
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 49, nSkillID, randomBuff(5, 15), PacketPointer, PositionPointer);
			forward = false;
		}
		if (nSkillID == 53) // Blessing of Critical
		{
			int* PlayerPointer = reinterpret_cast<int*>(*reinterpret_cast<unsigned long*>(PointToPlayerBase));
			int* pSkill = *reinterpret_cast<int**>(reinterpret_cast<char*>(PointToPlayerBase)+static_cast<int>(nSkillID)* 4 + 8);
			Buffs(PlayerPointer, pSkill, 50, nSkillID, randomBuff(2, 5), PacketPointer, PositionPointer);
			forward = false;
		}
	}
	if (forward)
		ExecuteSkill(static_cast<void*>(PointToPlayerBase), nSkillID, PacketPointer, PositionPointer);
}
void HookSkills()
{
	Intercept(INST_CALL, (DWORD)0x004533D4, (DWORD)Hooked_ExcuteSkill, 5);
}
 
Junior Spellweaver
Joined
Dec 16, 2012
Messages
187
Reaction score
29
Dear Bloodx, kindly message me via private messages..
We've got to talk, business purpose.
Regards.
 
Newbie Spellweaver
Joined
Dec 31, 2008
Messages
60
Reaction score
13
Time of crit and defense can be changed to 30 minuts int-style ? anyway, thanks alot for this release.
 
Back
Top