-
[Release] Custom Character"C" UIPanel S9
Season 9 main + IGC released DLL source
"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 0.1 :
- Fix editable textarea.
- Add change text MLV , Reset, GReset
Updated Link : https://drive.google.com/open?id=1n4EnfrtnbtK_w7gbk9nXg_NsDNR50qhe
(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";
char szFormat_3[12] = "%s %s %s";
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];
int iInitOnce = 0;
char szInitTextExtended[20] = "InitTextExtended";
char szLabelMLevel[] = "MLV"; //Change text here, but don't make it too long, won't fit the box.
char szLabelReset[] = "Reset";
char szLabelGReset[] = "GReset";
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)
{
if (!iInitOnce) {
iInitOnce = 1;
pInvokeUI(pCFrame, szInitTextExtended, szFormat_3, szLabelMLevel, szLabelReset, szLabelGReset);
}
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;
}
}
}
}
}
https://i.imgur.com/noOmxUZ.jpg
-
re: [Release] Custom Character"C" UIPanel S9
-
Quote:
Originally Posted by
heroviet2301
Except new boxes MLV, Reset, GReset, which I set to constant strings. It means you can't change these strings by yourself
What wrong with your reds boxes ? I don't edit any of your red boxes.
Update:
@heroviet2301
oh, I saw the editable bug already... my mistake... will update soon... and add change text MLV Reset GReset later
Fixed:
Fixed, see the 1st post for new link & code change.
Let me know if there is any bug? or it just works
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
solarismu
Fixed, see the 1st post for new link & code change.
Let me know if there is any bug? or it just works
Perfect, tks pro
https://i.imgur.com/TNg0oYZ.png
-
re: [Release] Custom Character"C" UIPanel S9
*Updated link 0.20 :
Fix broken OnConstructs.
Add missing hide Reset/GReset funtions.
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
solarismu
*Updated link 0.20 :
Fix broken OnConstructs.
Add missing hide Reset/GReset funtions.
Code:
char szLabelMLevel[] = "MLV";
You can edit this place can write 6 characters, such as "Master" is not! Currently, the client side only shows 4 characters. Thank you xD
-
re: [Release] Custom Character"C" UIPanel S9
how change "MLV","Reset","Greset" to Chinese ? can't support Chinese...lol
-
re: [Release] Custom Character"C" UIPanel S9
Great job.
@solarismu can you try to disable Season 6 UI "resizing". In S6 UI is flexible and it's changing for every resolution.
-
re: [Release] Custom Character"C" UIPanel S9
Bugs: high set level requirements is not working with this C panel, because server only see Normal LVL, and cant equip like 600lvl items
-
Re: Custom Character"C" UIPanel S9
Quote:
Originally Posted by
Forces
Bugs: high set level requirements is not working with this C panel, because server only see Normal LVL, and cant equip like 600lvl items
No item >400 lvl in season 9. That's your custom item, not from webzen/me. So dont call it bug. Fix it yourself man, I dont know how to fix that. :(- - - Updated - - -
Quote:
Originally Posted by
LandOfChaos
Great job. @
solarismu can you try to disable Season 6 UI "resizing". In S6 UI is flexible and it's changing for every resolution.
I dont work on season 6 anymore. You can try to ask someone who has client s6 source ^^
-
re: [Release] Custom Character"C" UIPanel S9
does it work for muemu s8?
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
antoniodel
does it work for muemu s8?
UI file: should be ok
script + offsets : must change
-
re: [Release] Custom Character"C" UIPanel S9
Its possible fix the max level up points after 65k?
I need the offset for that, can help me? :D
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
thevjfla
Its possible fix the max level up points after 65k?
I need the offset for that, can help me? :D
https://i.imgur.com/fRjVL6s.jpg
-
re: [Release] Custom Character"C" UIPanel S9
Oh, let me try compile in the dll and try.
you do any change in theprotocol of gs?
EDIT:
Quote:
Originally Posted by
solarismu
https://i.imgur.com/FPSDHfO.png
What im doing wrong? :(
In the DB the char have 176000 free leveluppoint, i have a little script for write correct lvluppoints but dont work with this main, can you share me the correct asm code for the offset 0x009a92e2 ?
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
thevjfla
Oh, let me try compile in the dll and try.
you do any change in theprotocol of gs?
Yes... MUST sent Addpoints in dword instead of word. Do it by your own risk ^^ I'm watching WC right now. no support ^^
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
solarismu
Yes... MUST sent Addpoints in dword instead of word. Do it by your own risk ^^ I'm watching WC right now. no support ^^
i do that, and the client reads fine the value, only dont show properly.
bro, im from argentina and now are playing hahaha
see u later, and thanx for all :D
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
thevjfla
Oh, let me try compile in the dll and try.
you do any change in theprotocol of gs?
EDIT:
https://i.imgur.com/FPSDHfO.png
What im doing wrong? :(
In the DB the char have 176000 free leveluppoint, i have a little script for write correct lvluppoints but dont work with this main, can you share me the correct asm code for the offset 0x009a92e2 ?
Code:
#define HOOK_FIX_ADDPOINTS 0x9A92E2
#define JMPBACK_FIX_ADDPOINTS 0x9A92E2+0xC
extern int IGCAddPoints = 0; //will recv DWORD value from GameServer
void __declspec(naked) VicFixAddPoints()
{
_asm
{
mov eax, IGCAddPoints;
mov edx, JMPBACK_FIX_ADDPOINTS;
jmp edx;
}
}
-
re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
solarismu
Code:
#define HOOK_FIX_ADDPOINTS 0x9A92E2
#define JMPBACK_FIX_ADDPOINTS 0x9A92E2+0xC
extern int IGCAddPoints = 0; //will recv DWORD value from GameServer
void __declspec(naked) VicFixAddPoints()
{
_asm
{
mov eax, IGCAddPoints;
mov edx, JMPBACK_FIX_ADDPOINTS;
jmp edx;
}
}
i need to put the received lvl up points in IGCAddPoints from the protocol, realy?
but, with this asm the client dont starting, just load a little time the process and closes, dont write dmp or .log
// Fixed with SetCompleteHook :D
Edit2: Need to edit the structs in the GS and the DLL for parse the complete value of leveluppoints when the character loads, level up, addpoints and use /add commands
now working perfect, ty for all @solarismu <3
-
Re: [Release] Custom Character"C" UIPanel S9
Quote:
im comeback to experiment with s9 client. atm the leveluppoints shows perfect up to 65k
the only issue: when use /add dont update the leveluppoints, from the server comes correct value from C1 FA 0x90 proto but... how update the value on the hooked var?! xD
Edit GMMng.cpp in the 5 /add case adding GSProtocol.GCLevelUpMsgSend(aIndex, 0); for force the client to reload LevelUpPoints and fixed ^^
-
Re: [Release] Custom Character"C" UIPanel S9
Can you do it for Season 12 IGCN?
-
Re: [Release] Custom Character"C" UIPanel S9
Quote:
Originally Posted by
solarismu
Season 9 main + IGC released DLL source
"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 0.1 :
- Fix editable textarea.
- Add change text MLV , Reset, GReset
Updated Link :
https://drive.google.com/open?id=1n4EnfrtnbtK_w7gbk9nXg_NsDNR50qhe
(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";
char szFormat_3[12] = "%s %s %s";
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];
int iInitOnce = 0;
char szInitTextExtended[20] = "InitTextExtended";
char szLabelMLevel[] = "MLV"; //Change text here, but don't make it too long, won't fit the box.
char szLabelReset[] = "Reset";
char szLabelGReset[] = "GReset";
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)
{
if (!iInitOnce) {
iInitOnce = 1;
pInvokeUI(pCFrame, szInitTextExtended, szFormat_3, szLabelMLevel, szLabelReset, szLabelGReset);
}
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;
}
}
}
}
}
https://i.imgur.com/noOmxUZ.jpg
Bro help me please
I convert the Ozg to Gfx file, how i can edit this gfx file?
i tried to rename to swf (edit in the notpad the 3 first letters to FWS) and use the Sothink swf decompiler, but no success =/
Can you help me?
-
Re: [Release] Custom Character"C" UIPanel S9
@Luis_br
Anyone got it for MuEmu (Xteam) s8?
-
Re: [Release] Custom Character"C" UIPanel S9
how change "MLV","Reset","Greset" to Chinese ?
-
Re: [Release] Custom Character"C" UIPanel S9
-
Re: [Release] Custom Character"C" UIPanel S9
still no one got it for s8? :/
-
Re: [Release] Custom Character"C" UIPanel S9
hmm, on s12 work? And pls update link for download @solarismu
-
Re: [Release] Custom Character"C" UIPanel S9