Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Release] Custom Character"C" UIPanel S9

Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
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 :
(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;
                }    
            }
        }
    }
}
noOmxUZ - [Release] Custom Character"C" UIPanel S9 - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Last edited:
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
These can edit text!

BDy0YuN - [Release] Custom Character"C" UIPanel S9 - RaGEZONE Forums

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
 

Attachments

You must be registered for see attachments list
Last edited by a moderator:
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
re: [Release] Custom Character"C" UIPanel S9

*Updated link 0.20 :
Fix broken OnConstructs.
Add missing hide Reset/GReset funtions.
 
Last edited:
Newbie Spellweaver
Joined
Dec 25, 2012
Messages
43
Reaction score
2
re: [Release] Custom Character"C" UIPanel S9

*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
 
Newbie Spellweaver
Joined
Feb 27, 2014
Messages
24
Reaction score
0
re: [Release] Custom Character"C" UIPanel S9

how change "MLV","Reset","Greset" to Chinese ? can't support Chinese...lol
 
Newbie Spellweaver
Joined
Aug 22, 2017
Messages
39
Reaction score
5
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.
 
Newbie Spellweaver
Joined
Jan 2, 2012
Messages
44
Reaction score
1
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
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
Re: 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
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. :(
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 ^^
 
Newbie Spellweaver
Joined
Dec 28, 2013
Messages
57
Reaction score
8
re: [Release] Custom Character"C" UIPanel S9

does it work for muemu s8?
 
Experienced Elementalist
Joined
Apr 15, 2012
Messages
203
Reaction score
25
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
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
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

fRjVL6s - [Release] Custom Character"C" UIPanel S9 - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Experienced Elementalist
Joined
Apr 15, 2012
Messages
203
Reaction score
25
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:



FPSDHfO - [Release] Custom Character"C" UIPanel S9 - RaGEZONE Forums



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 ?
 

Attachments

You must be registered for see attachments list
Last edited:
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
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?

Yes... MUST sent Addpoints in dword instead of word. Do it by your own risk ^^ I'm watching WC right now. no support ^^
 
Experienced Elementalist
Joined
Apr 15, 2012
Messages
203
Reaction score
25
re: [Release] Custom Character"C" UIPanel S9

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
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
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:




FPSDHfO - [Release] Custom Character"C" UIPanel S9 - RaGEZONE Forums



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

Attachments

You must be registered for see attachments list
Experienced Elementalist
Joined
Apr 15, 2012
Messages
203
Reaction score
25
re: [Release] Custom Character"C" UIPanel S9

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
 
Last edited:
Experienced Elementalist
Joined
Apr 15, 2012
Messages
203
Reaction score
25
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 ^^
 
Last edited:
Back
Top