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

Skilled Illusionist
Joined
Apr 7, 2012
Messages
319
Reaction score
7
Can you do it for Season 12 IGCN?
 
Junior Spellweaver
Joined
Apr 21, 2005
Messages
154
Reaction score
126
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

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?
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Feb 12, 2018
Messages
18
Reaction score
1
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 ?
@solarismu @thevjfla After apply the Visual Fix for the S9 in the GameServer, DataServer and Client Side .dll
My "C" windows looks like this:

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

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


Could you tell me what Im doing wrong? As you can see the LevelUpPoints are fixed but the Strength value is now wrong.
Any ideas?
 

Attachments

You must be registered for see attachments list
Back
Top