Season 9 main + IGC released DLL source
"Hell" ... Credits
VICIOUS - Me
IGCN - released DLL source
Webzen Season 9 Main
Fix 0.2 :
(Script update, update red lines in CharacterFrame.cpp code)
1st. Paste this new UI file to Data\Interface\GFx
2nd. Coding :
(create) CharacterFrame.h
(create) CharacterFrame.cpp
(Edit) DllMain.cpp
(Edit) Protocol.cpp
"Hell" ... Credits
VICIOUS - Me
IGCN - released DLL source
Webzen Season 9 Main
Fix 0.2 :
- Fix broken OnConstructs
- Add missing hide Reset/GReset Boxes funtions.
- Fix editable textarea.
- Add change text MLV , Reset, GReset
You must be registered to see links
(Script update, update red lines in CharacterFrame.cpp code)
1st. Paste this new UI file to Data\Interface\GFx
2nd. Coding :
(create) CharacterFrame.h
Code:
#pragma once
#define HOOK_SET_LEVEL_TEXT 0x009A90B1
#define JMPBACK_SET_LEVEL_TEXT 0x009A90CA
#define pInvokeUI ((DWORD(__stdcall*)(DWORD pFrame, char * method, char * format ...)) 0x0095A6EA)
void SetLevelResetUI();
extern int iResetVisibleUI;
extern int iGResetVisibleUI;
extern int iResetUI;
extern int iGResetUI;
(create) CharacterFrame.cpp
Code:
#include "stdafx.h"
#include "CharacterFrame.h"
char szFormat_1[4] = "%s";
char szFormat_2[4] = "%d";
[COLOR=#ff0000]char szFormat_3[12] = "%s %s %s";[/COLOR]
char szSetLevel[16] = "SetLevelText";
char szSetMLevel[16] = "SetMLevelText";
char szSetReset[16] = "SetResetText";
char szSetGReset[16] = "SetGResetText";
char szSetResetVisible[20] = "SetResetVisible";
char szSetGResetVisible[20] = "SetGResetVisible";
int iResetVisibleUI = 1; //0:false 1:true
int iGResetVisibleUI = 1;
DWORD pCFrame;
int iLevel = 0;
int iMLevel = 0;
int iResetUI = 0;
int iGResetUI = 0;
char buffer[20];
[COLOR=#ff0000]int iInitOnce = 0;[/COLOR]
[COLOR=#ff0000]char szInitTextExtended[20] = "InitTextExtended";[/COLOR]
[COLOR=#ff0000]
[/COLOR]
[COLOR=#ff0000]char szLabelMLevel[] = "MLV"; //Change text here, but don't make it too long, won't fit the box.[/COLOR]
[COLOR=#ff0000]char szLabelReset[] = "Reset";[/COLOR]
[COLOR=#ff0000]char szLabelGReset[] = "GReset";[/COLOR]
void __declspec(naked) SetLevelResetUI()
{
_asm
{
mov eax, 0x0851ACC4;
mov eax, [eax];
movzx eax, word ptr[eax + 0x10C];
mov iLevel, eax;
mov eax, 0x08B97850
movzx eax, word ptr[eax];
mov iMLevel, eax;
mov edx, 0x00969F14;
call edx;
mov ecx, eax;
mov edx, 0x007F7818;
call edx;
mov pCFrame, eax;
}
if(pCFrame)
{
[COLOR=#ff0000] if (!iInitOnce) {[/COLOR]
[COLOR=#ff0000] iInitOnce = 1;[/COLOR]
[COLOR=#ff0000] pInvokeUI(pCFrame, szInitTextExtended, szFormat_3, szLabelMLevel, szLabelReset, szLabelGReset);[/COLOR]
[COLOR=#ff0000] }[/COLOR]
sprintf(buffer, "%d", iLevel);
pInvokeUI(pCFrame, szSetLevel, szFormat_1, buffer);
sprintf(buffer, "%d", iMLevel);
pInvokeUI(pCFrame, szSetMLevel, szFormat_1, buffer);
if (iResetVisibleUI) {
sprintf(buffer, "%d", iResetUI);
pInvokeUI(pCFrame, szSetReset, szFormat_1, buffer);
}
else {
pInvokeUI(pCFrame, szSetResetVisible, szFormat_2, 0);
}
if (iGResetVisibleUI) {
sprintf(buffer, "%d", iGResetUI);
pInvokeUI(pCFrame, szSetGReset, szFormat_1, buffer);
}
else {
pInvokeUI(pCFrame, szSetGResetVisible, szFormat_2, 0);
}
}
_asm
{
mov edx, JMPBACK_SET_LEVEL_TEXT;
jmp edx;
}
}
(Edit) DllMain.cpp
Code:
#include "CharacterFrame.h"
//...
void SetHook()
{
HookThis((DWORD)&SetLevelResetUI, HOOK_SET_LEVEL_TEXT);
//...
}
(Edit) Protocol.cpp
Code:
#include "CharacterFrame.h"
//...
bool CliProtocolCore(LPBYTE aRecv, BYTE ProtoNum, int len, bool Encrypt)
{
switch(ProtoNum)
{
//...
case 0xFA:
{
if (aRecv[0] == 0xC1)
{
PMSG_DEFAULT2 * lpMsg2 = (PMSG_DEFAULT2 *)aRecv;
switch (lpMsg2->subcode)
{
case 0x0B: //IGCN already coded this on GameServer (they used it for Season 6, but still keep in file till now (S13))
{
struct PMSG_RESET_INGAME_SEND
{
PBMSG_HEAD2 h;
WORD Resets;
}; //Should move this struct to your header file.
PMSG_RESET_INGAME_SEND * pRSMsg = (PMSG_RESET_INGAME_SEND *)aRecv;
iResetUI = pRSMsg->Resets;
iResetVisibleUI = 1;
break;
}
}
}
}
}
Attachments
You must be registered for see attachments list
Last edited: