Experienced Elementalist
- Joined
- Feb 10, 2008
- Messages
- 249
- Reaction score
- 161
Yoooooo Merry Christmas /f425/
Since September I got back into maple and have been working on my from scratch v95 server and client. I've learned so much and got making localhost enablers down to a science for every version using GG and HS.
I'll release all that stuff once I get hit by that Nexon lawsuit
But in the meantime here are some fun client edits you can use !!!
Also check out my analysis of v95 AntiHack:
Lie Detector Fix : http://forum.ragezone.com/f921/xmas-2018-fix-lie-detector-1157154/
ZXString is really a struct but we can get away with doing this for most things
PatchRetZero Function
StringPool Hook
Attack without a weapon (punch) | Credits to VirtualKernel for the idea
Implement your own custom HWID
Custom MapleTips
Unlimited Attack
Logo Skipper
Essentially it nops the if statement here so the body executes
No Fades ( Map Loads Faster )
GodMode
Shorten Whisper Sending IntervalJust look in the func and locate where the 3000 const is
Skip the "You have unused SP message"The start is the block that checks if you're a GM. If that if statement returns true the body jumps to a block that send the skill request. Start is the first jnz after first cmp. End is the goto inside the if statement
Yooooo also you can embed your own win32 dialogs into the games CWnd's . But I'll leave that do you guys to figure out :
If you have any good quality of life patches you'd like to see let me know maybe ill code it!!!
Credits would always be appreciated if you used these but I doubt y'all gon do that.
Holla @ me if you need someone to create a custom client for your server
Merry Christmas.
Since September I got back into maple and have been working on my from scratch v95 server and client. I've learned so much and got making localhost enablers down to a science for every version using GG and HS.
I'll release all that stuff once I get hit by that Nexon lawsuit
But in the meantime here are some fun client edits you can use !!!
Also check out my analysis of v95 AntiHack:
You must be registered to see links
Lie Detector Fix : http://forum.ragezone.com/f921/xmas-2018-fix-lie-detector-1157154/
ZXString is really a struct but we can get away with doing this for most things
Code:
#define ZXString char*
PatchRetZero Function
Code:
xor eax,eax
ret
StringPool Hook
Code:
bool Hook_StringPool__GetString(bool enable){ typedef ZXString*(__fastcall* StringPool__GetString_t)(void* ecx, void* edx, ZXString* result, unsigned int nIdx, char formal); static auto StringPool__GetString = reinterpret_cast<StringPool__GetString_t>(0xBADF00D); StringPool__GetString_t Hook = [](void* ecx, void* edx, ZXString* result, unsigned int nIdx, char formal) -> ZXString* { auto ret = StringPool__GetString(ecx, edx, result, nIdx, formal); //Replace the strings here!!! if (nIdx == 2722) //Ranking URL for the ingame WebBrowser { strcpy(*ret, "http://rebirth.ms"); } //Log("StringPool__GetString: %s\r\n", *result); return ret; }; return SetHook(enable, reinterpret_cast<void**>(&StringPool__GetString), Hook);}
Code:
bool Hook_CUserLocal__CanUseBareHand(bool enable){ typedef int(__fastcall* CUserLocal__CanUseBareHand_t)(LPVOID lpvClassPtr, LPVOID lpvEdx); static auto CUserLocal__CanUseBareHand = reinterpret_cast<CUserLocal__CanUseBareHand_t>(0xBADF00D); CUserLocal__CanUseBareHand_t Hook = [](void* ecx, void* edx) -> int { return 1; }; return SetHook(enable, reinterpret_cast<void**>(&CUserLocal__CanUseBareHand), Hook);}
Code:
struct CSystemInfo{ void *vfptr; char SupportId[16]; char MachineId[16];};bool Hook_CSystemInfo__Init(bool enable){ typedef int(__fastcall* CSystemInfo__Init_t)(CSystemInfo* lpvClassPtr, LPVOID lpvEdx); static auto CSystemInfo__Init = reinterpret_cast<CSystemInfo__Init_t>(0xBADF00D); CSystemInfo__Init_t Hook = [](CSystemInfo* ecx, void* edx) -> int { auto ret = CSystemInfo__Init(ecx, edx); //Replace the struct values here!!! return ret; }; return SetHook(enable, reinterpret_cast<void**>(&CSystemInfo__Init), Hook);}
Code:
bool Hook_CTips__GetTip(bool enable){ typedef int(__fastcall* CTips__GetTip_t)(LPVOID lpvClassPtr, LPVOID lpvEdx, int nJob, int nLevel, ZXString* sTip); static auto CTips__GetTip = reinterpret_cast<CTips__GetTip_t>(0xBADF00D); CTips__GetTip_t Hook = [](LPVOID lpvClassPtr, LPVOID lpvEdx, int nJob, int nLevel, ZXString* sTip)-> int { int ret = CTips__GetTip(lpvClassPtr, lpvEdx, nJob, nLevel, sTip); if (ret) { //Edit the MapleTip in here!!! Log("CTips__GetTip: %s", *sTip); } return ret; }; return SetHook(enable, reinterpret_cast<void**>(&CTips__GetTip), Hook);}
Code:
bool Hook_CAntiRepeat__TryRepeat(bool enable){ typedef int(__fastcall* CAntiRepeat__TryRepeat_t)(LPVOID lpvClassPtr, LPVOID lpvEdx, int nX, int nY); static auto CAntiRepeat__TryRepeat = reinterpret_cast<CAntiRepeat__TryRepeat_t>(0xBADF00D); CAntiRepeat__TryRepeat_t Hook = [](LPVOID lpvClassPtr, LPVOID lpvEdx, int nX, int nY)-> int { return 1; //Can attack }; return SetHook(enable, reinterpret_cast<void**>(&CAntiRepeat__TryRepeat), Hook);}
Code:
PatchNop(g_CLogo__Init_Skip, 16);
Code:
if ( sPasswd._m_pStr && *sPasswd._m_pStr && TSingleton<CWvsApp>::ms_pInstance->m_bAutoConnect )
CLogo::LogoEnd(v2, (int)sPasswd._m_pStr);
Code:
PatchRetZero(g_CStage__FadeIn);
PatchRetZero(g_CStage__FadeOut);
Code:
PatchRetZero(g_CUserLocal__SetDamaged);
Code:
WriteValue(g_CField__Update_WhisperDelay, 50); //3000ms delay on sending whispers to 50ms
Code:
PatchJmp(g_CUISkill__OnSkillLevelUpButton_Start,
(void*)g_CUISkill__OnSkillLevelUpButton_End);
Yooooo also you can embed your own win32 dialogs into the games CWnd's . But I'll leave that do you guys to figure out :
If you have any good quality of life patches you'd like to see let me know maybe ill code it!!!
Credits would always be appreciated if you used these but I doubt y'all gon do that.
Holla @ me if you need someone to create a custom client for your server
Merry Christmas.
Last edited: