- 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);
}