Jump to content
Returning Members: Password Reset Required ×

Recommended Posts

Posted

Hi everyone,

I'm working on a Conquer Online 6609 source and I'm trying to customize the Forging UI I have already removed the Perfection button from the UI but the window still defaults to the Perfection tab

I've been digging through the client binary and found some logic in dlgequappend.cpp and sub_4879D8, but I'm looking for the specific part that sets the default tabIndex or ActionID when the window initializes

Does anyone have a hint on where the client hardcodes the default tab for the Forge window? Or is there a way to force it to the Compose tab via memory patch/hook?

Any hints would be greatly appreciated!

Screenshot 2026-05-01 185800.png

Posted

If you know the MsgAction::ACTION_OPEN_DIALOG Window ID, you can open it and switch tabs.

I just don't know if it will work perfectly, but it will work

Posted

There is should be indeed a memory patch I have seen servers forcing it to compose window instead. 

Posted (edited)
14 hours ago, xFranko said:

 

Hey everyone,

Thanks for the answers and for trying to help I really like the community here and I'm glad to be part of it.

Alhamdulilah i figured this out through reverse engineering the client binary.

The key function is sub_48A2B2 which is the tab switcher It takes a tab ID and maps it through sub_48932E

2017 ==> Upgrade
2018 ==> Compose
2026 ==> Perfection (the default)

The fix is a simple MinHook on sub_48A2B2 that intercepts when the window opens with Perfection (2026) and redirects it to Compose (2018) leaving all other tab clicks unaffected.

Hope this helps!

 

Edited by NourSoliman
  • 2 weeks later...
  • 2 weeks later...
Posted (edited)
On 5/12/2026 at 9:47 AM, kennylovecode said:

To be honest, I'm thinking about how to open this forging window through NPC.

I did exactly that in my process of making a 3.0 setup "classic".

this is what I did for my WuxingOven npc to make it so players had to talk to that npc to open the forge menu, its also removed from the main UI and was edited in gui.ini so only classic like features were there. All they do is click on the npc like normal and then choose that they want to compose or bless there gear through the npc dialog and when they choose that option this forge menu opens. I had an issue with opening specific pages so it was a bit easier to just have the oven npc control/advertise those 4 forging areas instead of having an npc for each upgrade type like a blessing npc, enchantment npc and gem npc, which is what I wanted to originally do. if you can figure out how to make it open an exact page then maybe you can bless me with some info back but I did try a ton of different things to open specific pages, just couldn't get it to work. IIRC it defaults to the compose page when first opened.

case 1:
    {
        ActionQuery action = new ActionQuery()
        {
            Type = ActionType.ClientCommand,
            ObjId = client.Player.UID,
            dwParam = 0,
            PositionX = client.Player.X,
            PositionY = client.Player.Y,
            Timestamp = (uint)Time32.timeGetTime().GetHashCode(),
            Strings = new string[] { "LuaUIMgr_OpenWindow|335" },
        };

        client.Send(stream.ActionCreate(action));
        break;
    }

image.thumb.png.cae24bd31eb6c7719a80faa299f803c8.png

Edited by Paradox
typo fixes
Posted
19 hours ago, Paradox said:

I did exactly that in my process of making a 3.0 setup "classic".

this is what I did for my WuxingOven npc to make it so players had to talk to that npc to open the forge menu, its also removed from the main UI and was edited in gui.ini so only classic like features were there. All they do is click on the npc like normal and then choose that they want to compose or bless there gear through the npc dialog and when they choose that option this forge menu opens. I had an issue with opening specific pages so it was a bit easier to just have the oven npc control/advertise those 4 forging areas instead of having an npc for each upgrade type like a blessing npc, enchantment npc and gem npc, which is what I wanted to originally do. if you can figure out how to make it open an exact page then maybe you can bless me with some info back but I did try a ton of different things to open specific pages, just couldn't get it to work. IIRC it defaults to the compose page when first opened.

case 1:
    {
        ActionQuery action = new ActionQuery()
        {
            Type = ActionType.ClientCommand,
            ObjId = client.Player.UID,
            dwParam = 0,
            PositionX = client.Player.X,
            PositionY = client.Player.Y,
            Timestamp = (uint)Time32.timeGetTime().GetHashCode(),
            Strings = new string[] { "LuaUIMgr_OpenWindow|335" },
        };

        client.Send(stream.ActionCreate(action));
        break;
    }

image.thumb.png.cae24bd31eb6c7719a80faa299f803c8.png

This is quite cool. In fact, I spent a considerable amount of time rebuilding some old UIs and customizing MFC for packet management. However, I believe I should allow both to coexist.

Posted
19 hours ago, Paradox said:

I did exactly that in my process of making a 3.0 setup "classic".

this is what I did for my WuxingOven npc to make it so players had to talk to that npc to open the forge menu, its also removed from the main UI and was edited in gui.ini so only classic like features were there. All they do is click on the npc like normal and then choose that they want to compose or bless there gear through the npc dialog and when they choose that option this forge menu opens. I had an issue with opening specific pages so it was a bit easier to just have the oven npc control/advertise those 4 forging areas instead of having an npc for each upgrade type like a blessing npc, enchantment npc and gem npc, which is what I wanted to originally do. if you can figure out how to make it open an exact page then maybe you can bless me with some info back but I did try a ton of different things to open specific pages, just couldn't get it to work. IIRC it defaults to the compose page when first opened.

case 1:
    {
        ActionQuery action = new ActionQuery()
        {
            Type = ActionType.ClientCommand,
            ObjId = client.Player.UID,
            dwParam = 0,
            PositionX = client.Player.X,
            PositionY = client.Player.Y,
            Timestamp = (uint)Time32.timeGetTime().GetHashCode(),
            Strings = new string[] { "LuaUIMgr_OpenWindow|335" },
        };

        client.Send(stream.ActionCreate(action));
        break;
    }

image.thumb.png.cae24bd31eb6c7719a80faa299f803c8.png

Regarding the action button, it used to appear directly in the button group in the old version. Later, it was officially included in the Emoji tag component. I haven't found a way to move it out. Do you have any experience to share

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...