GS :: 1.00.18 AutoZen PickUp
Credit to original idea is Haziel.
Problem only left to fix: 0 Zen Obtained
Code:
#include "StdAfx.h"
//==============================================================================================
//-- New Fix Max Zen :) - Credits to Haziel
//==============================================================================================
void ReadAutoZen()
{
BYTE AutoZen = GetPrivateProfileIntA("AutoZen", "Enable", 0, SERVER_PATH);
if (AutoZen != 0)
{
hook_proc(0x0041B8D1, (DWORD)(&AutoRecvZenMod1)); // gObjMonsterDieGiveItem 0041A090
memset((int*)(0x0041B8D6), 0x90, 49); // Okey
hook_proc(0x0041B7B9, (DWORD)(&AutoRecvZenMod2)); // Okey
memset((int*)(0x0041B7BE), 0x90, 49); // Okey
hook_proc(0x0041AAA6, (DWORD)(&AutoRecvZenMod3)); // Okey
memset((int*)(0x0041AAB1), 0x90, 36); // Okey
}
}
void AutoRecvZen(LPOBJ lpObj, int Money)
{
if (lpObj->Type == OBJECT_MONSTER)
{
LPOBJ lpTarget = (LPOBJ)OBJECT_POINTER(lpObj->TargetNumber);
if ((lpTarget->Money + Money) < 0)
{
lpTarget->Money = Money;
GCMoneySend(lpTarget->m_Index, lpTarget->Money);
MsgOutput(lpTarget->m_Index, "%s zen incorrect %d ", lpTarget->Name, Money);
}
else
{
if ((lpTarget->Money + Money) > 2000000000)
{
lpTarget->Money = 2000000000;
GCMoneySend(lpTarget->m_Index, lpTarget->Money);
MsgOutput(lpTarget->m_Index, "%s You have Max Zen Reached!", lpTarget->Name);
}
else
{
lpTarget->Money += Money;
GCMoneySend(lpTarget->m_Index, lpTarget->Money);
MsgOutput(lpTarget->m_Index, "%s obtained %d Zen!", lpTarget->Name, Money);
}
}
}
}
__declspec(naked) void AutoRecvZenMod1()
{
LPOBJ lpObj;
_asm
{
MOV ECX, DWORD PTR SS : [EBP + 0x8];
MOV lpObj, ECX;
}
AutoRecvZen(lpObj, lpObj->Money);
_asm
{
MOV EDI, 0x0041B907;
JMP EDI;
}
}
__declspec(naked) void AutoRecvZenMod2()
{
LPOBJ lpObj;
int Money;
_asm
{
MOV ECX, DWORD PTR SS : [EBP + 0x8];
MOV lpObj, ECX;
FLD DWORD PTR SS : [EBP - 0x98];
MOV EDI, 0x0059897C;
CALL EDI;
MOV Money, EAX;
}
AutoRecvZen(lpObj, Money);
_asm
{
MOV EDI, 0x0041B81C;
JMP EDI;
}
}
__declspec(naked) void AutoRecvZenMod3()
{
LPOBJ lpObj;
_asm
{
MOV ECX, DWORD PTR SS : [EBP + 0x8];
MOV lpObj, ECX;
}
AutoRecvZen(lpObj, 10000);
_asm
{
MOV EDI, 0x0041AAD5;
JMP EDI;
}
}
Re: GS :: 1.00.18 AutoZen PickUp
0x4096E5 - 0.96.40 - Correct PUSH EBP
0x41AAB1 - 1.00.18 - Incorrect DB FF <--<