[Release] Chat Emoji (Devkit)

08/31/2022 03:16 bimbum*#1
Hey,
Today iam releasing a chat emoji based at devkit. Actually there are 2 ways to achieve such a thing easiest one will be the one which will be released today. the other one is hooking d3d write text thing , i already made a good progress in the second way but it ended up fucking textures so i gave up on it.

[Only registered and activated users can see links. Click Here To Register...]

Basically what we gonna do today is detecting the exact height and width of the key of the emoji based at its location at the chatwindow then we gonna replace a ddj over it.

the first thing we can start at is creating our slots, the classes can be found at the end of thread. here we creating 2 dimensional array of 24 items which represents the biggest chat size could be,also intinializing emoji list with desired emojis.

Code:
void CIFChatViewer::initializeEmojis()
{
    CIFEmojiSlot** emojiSlots = new CIFEmojiSlot*[24];

    RECT emojiSlotsRect = {0,0,1,1};
    for(int i=0;i<24;i++)
        emojiSlots[i] = (CIFEmojiSlot*)CGWnd::CreateInstance(g_pCGInterface, GFX_RUNTIME_CLASS(CIFEmojiSlot), emojiSlotsRect, 14300+i, 0);

    emojiList[":P"] = "interface\\bimbum\\tongue.ddj";
    emojiList[":D"] = "interface\\bimbum\\smile2.ddj";
    emojiList[":)"] = "interface\\bimbum\\smile1.ddj";
}
the actual juice is here, this function will be looping over all shown lines in of the active windows and checks if any of them contains special key defined at emojilist then it will be replace the key by a ddj


thanks to b0ykoe from here we getting the exact width along to the special key.

Code:
int CIFChatViewer::getWidth(std::n_wstring str,CIFListCtrl* pList,std::string emojiCode,int index)
{
    std::n_wstring tempStr;
    CIFListCtrl::SLineOfText* tempLine;
    int Width=0;
    std::n_wstring tempText = str.substr(0, index);
    if(pList)
    {
        tempLine = pList->GetTextByIndex(0);
        if(tempLine)
        {
            CGFontTexture* cgFont = tempLine->m_font;
            if(cgFont)
            {
                cgFont->GetText(&tempStr);
                cgFont->sub_8B3B60(&tempText);
                Width = cgFont->GetDimensions().width;
                cgFont->sub_8B3B60(&tempStr);
            }
        }
    }
    return Width;
}

Note:

the full codes can be found at the end of thread, keep in mind that the current emojis per line are 5, however you can control them easily.

all given there are offsets so that you can populate devkit classes with them

usage:
Code:
    CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);

    chatView->hideEmojis();
    chatView->emojiHandler();
so where to insert that code ?
well its up to you. you may just insert it in any rendering function or hook all these functions (it wont be provided at the code)
Code:
0063AACF
00656160
00656060
00656160
0063AA50
0064CC30
00656324
Codes:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
08/31/2022 11:37 hvdnghia#2
Dance emoji like Audition ko bac ?
08/31/2022 12:25 gmhasan13#3
bro you are the bottom of the man i love you discord name exadus
08/31/2022 12:40 VORTEX*#4
King as always
09/01/2022 18:21 Venom7x#5
CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);

chatView->hideEmojis();
chatView->emojiHandler();

when using this with rendering functions get crash.
what we need for active it?
we need some hook for work it?
can share a little code?
09/01/2022 18:29 bimbum*#6
Quote:
Originally Posted by Venom7x View Post
CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);

chatView->hideEmojis();
chatView->emojiHandler();

when using this with rendering functions get crash.
what we need for active it?
we need some hook for work it?
can share a little code?
forget to mention to override the chat class at the dll main
Code:
        OverrideObject<CIFChatViewer, 0x00EEC168>();
edit: (its optional) few edits at the code and it wont be needing overriding
09/01/2022 18:39 Venom7x#7
CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);
chatView->initializeEmojis();
chatView->hideEmojis();
chatView->emojiHandler();

using this. Thanks for share old friend.
09/01/2022 18:51 bimbum*#8
Quote:
Originally Posted by Venom7x View Post
ah i was did it. but hideslots is giving error.

like here


[Only registered and activated users can see links. Click Here To Register...]
the window is null, that means:

1- the pointer pointed to the parent isnt g_pCGInterface
Code:
        emojiSlots[i] = (CIFEmojiSlot*)CGWnd::CreateInstance([B]g_pCGInterface[/B], GFX_RUNTIME_CLASS(CIFEmojiSlot), emojiSlotsRect, 14300+i, 0);
2- you didn't create instance at all
09/02/2022 13:11 bilalctn#9
anyone install for me ? :)
09/02/2022 13:12 !Ego#10
unbelievable!
thanks for the great release! :handsdown:
09/02/2022 22:57 theonlydark#11
Quote:
Originally Posted by bimbum* View Post
Hey,
Today iam releasing a chat emoji based at devkit. Actually there are 2 ways to achieve such a thing easiest one will be the one which will be released today. the other one is hooking d3d write text thing , i already made a good progress in the second way but it ended up fucking textures so i gave up on it.

[Only registered and activated users can see links. Click Here To Register...]

Basically what we gonna do today is detecting the exact height and width of the key of the emoji based at its location at the chatwindow then we gonna replace a ddj over it.

the first thing we can start at is creating our slots, the classes can be found at the end of thread. here we creating 2 dimensional array of 24 items which represents the biggest chat size could be,also intinializing emoji list with desired emojis.

Code:
void CIFChatViewer::initializeEmojis()
{
    CIFEmojiSlot** emojiSlots = new CIFEmojiSlot*[24];

    RECT emojiSlotsRect = {0,0,1,1};
    for(int i=0;i<24;i++)
        emojiSlots[i] = (CIFEmojiSlot*)CGWnd::CreateInstance(g_pCGInterface, GFX_RUNTIME_CLASS(CIFEmojiSlot), emojiSlotsRect, 14300+i, 0);

    emojiList[":P"] = "interface\\bimbum\\tongue.ddj";
    emojiList[":D"] = "interface\\bimbum\\smile2.ddj";
    emojiList[":)"] = "interface\\bimbum\\smile1.ddj";
}
the actual juice is here, this function will be looping over all shown lines in of the active windows and checks if any of them contains special key defined at emojilist then it will be replace the key by a ddj


thanks to b0ykoe from here we getting the exact width along to the special key.

Code:
int CIFChatViewer::getWidth(std::n_wstring str,CIFListCtrl* pList,std::string emojiCode,int index)
{
    std::n_wstring tempStr;
    CIFListCtrl::SLineOfText* tempLine;
    int Width=0;
    std::n_wstring tempText = str.substr(0, index);
    if(pList)
    {
        tempLine = pList->GetTextByIndex(0);
        if(tempLine)
        {
            CGFontTexture* cgFont = tempLine->m_font;
            if(cgFont)
            {
                cgFont->GetText(&tempStr);
                cgFont->sub_8B3B60(&tempText);
                Width = cgFont->GetDimensions().width;
                cgFont->sub_8B3B60(&tempStr);
            }
        }
    }
    return Width;
}

Note:

the full codes can be found at the end of thread, keep in mind that the current emojis per line are 5, however you can control them easily.

all given there are offsets so that you can populate devkit classes with them

usage:
Code:
    CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);

    chatView->hideEmojis();
    chatView->emojiHandler();
so where to insert that code ?
well its up to you. you may just insert it in any rendering function or hook all these functions (it wont be provided at the code)
Code:
0063AACF
00656160
00656060
00656160
0063AA50
0064CC30
00656324
Codes:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Nice Release Bro as always Top .... Thanks
09/03/2022 17:01 eslamwiza#12
Quote:
Originally Posted by bimbum* View Post
Hey,
Today iam releasing a chat emoji based at devkit. Actually there are 2 ways to achieve such a thing easiest one will be the one which will be released today. the other one is hooking d3d write text thing , i already made a good progress in the second way but it ended up fucking textures so i gave up on it.

[Only registered and activated users can see links. Click Here To Register...]

Basically what we gonna do today is detecting the exact height and width of the key of the emoji based at its location at the chatwindow then we gonna replace a ddj over it.

the first thing we can start at is creating our slots, the classes can be found at the end of thread. here we creating 2 dimensional array of 24 items which represents the biggest chat size could be,also intinializing emoji list with desired emojis.

Code:
void CIFChatViewer::initializeEmojis()
{
    CIFEmojiSlot** emojiSlots = new CIFEmojiSlot*[24];

    RECT emojiSlotsRect = {0,0,1,1};
    for(int i=0;i<24;i++)
        emojiSlots[i] = (CIFEmojiSlot*)CGWnd::CreateInstance(g_pCGInterface, GFX_RUNTIME_CLASS(CIFEmojiSlot), emojiSlotsRect, 14300+i, 0);

    emojiList[":P"] = "interface\\bimbum\\tongue.ddj";
    emojiList[":D"] = "interface\\bimbum\\smile2.ddj";
    emojiList[":)"] = "interface\\bimbum\\smile1.ddj";
}
the actual juice is here, this function will be looping over all shown lines in of the active windows and checks if any of them contains special key defined at emojilist then it will be replace the key by a ddj


thanks to b0ykoe from here we getting the exact width along to the special key.

Code:
int CIFChatViewer::getWidth(std::n_wstring str,CIFListCtrl* pList,std::string emojiCode,int index)
{
    std::n_wstring tempStr;
    CIFListCtrl::SLineOfText* tempLine;
    int Width=0;
    std::n_wstring tempText = str.substr(0, index);
    if(pList)
    {
        tempLine = pList->GetTextByIndex(0);
        if(tempLine)
        {
            CGFontTexture* cgFont = tempLine->m_font;
            if(cgFont)
            {
                cgFont->GetText(&tempStr);
                cgFont->sub_8B3B60(&tempText);
                Width = cgFont->GetDimensions().width;
                cgFont->sub_8B3B60(&tempStr);
            }
        }
    }
    return Width;
}

Note:

the full codes can be found at the end of thread, keep in mind that the current emojis per line are 5, however you can control them easily.

all given there are offsets so that you can populate devkit classes with them

usage:
Code:
    CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);

    chatView->hideEmojis();
    chatView->emojiHandler();
so where to insert that code ?
well its up to you. you may just insert it in any rendering function or hook all these functions (it wont be provided at the code)
Code:
0063AACF
00656160
00656060
00656160
0063AA50
0064CC30
00656324
Codes:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

thanks for you but can make a video to help me how to use Devkit

Quote:
Originally Posted by bimbum* View Post
Hey,
Today iam releasing a chat emoji based at devkit. Actually there are 2 ways to achieve such a thing easiest one will be the one which will be released today. the other one is hooking d3d write text thing , i already made a good progress in the second way but it ended up fucking textures so i gave up on it.

[Only registered and activated users can see links. Click Here To Register...]

Basically what we gonna do today is detecting the exact height and width of the key of the emoji based at its location at the chatwindow then we gonna replace a ddj over it.

the first thing we can start at is creating our slots, the classes can be found at the end of thread. here we creating 2 dimensional array of 24 items which represents the biggest chat size could be,also intinializing emoji list with desired emojis.

Code:
void CIFChatViewer::initializeEmojis()
{
    CIFEmojiSlot** emojiSlots = new CIFEmojiSlot*[24];

    RECT emojiSlotsRect = {0,0,1,1};
    for(int i=0;i<24;i++)
        emojiSlots[i] = (CIFEmojiSlot*)CGWnd::CreateInstance(g_pCGInterface, GFX_RUNTIME_CLASS(CIFEmojiSlot), emojiSlotsRect, 14300+i, 0);

    emojiList[":P"] = "interface\\bimbum\\tongue.ddj";
    emojiList[":D"] = "interface\\bimbum\\smile2.ddj";
    emojiList[":)"] = "interface\\bimbum\\smile1.ddj";
}
the actual juice is here, this function will be looping over all shown lines in of the active windows and checks if any of them contains special key defined at emojilist then it will be replace the key by a ddj


thanks to b0ykoe from here we getting the exact width along to the special key.

Code:
int CIFChatViewer::getWidth(std::n_wstring str,CIFListCtrl* pList,std::string emojiCode,int index)
{
    std::n_wstring tempStr;
    CIFListCtrl::SLineOfText* tempLine;
    int Width=0;
    std::n_wstring tempText = str.substr(0, index);
    if(pList)
    {
        tempLine = pList->GetTextByIndex(0);
        if(tempLine)
        {
            CGFontTexture* cgFont = tempLine->m_font;
            if(cgFont)
            {
                cgFont->GetText(&tempStr);
                cgFont->sub_8B3B60(&tempText);
                Width = cgFont->GetDimensions().width;
                cgFont->sub_8B3B60(&tempStr);
            }
        }
    }
    return Width;
}

Note:

the full codes can be found at the end of thread, keep in mind that the current emojis per line are 5, however you can control them easily.

all given there are offsets so that you can populate devkit classes with them

usage:
Code:
    CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);

    chatView->hideEmojis();
    chatView->emojiHandler();
so where to insert that code ?
well its up to you. you may just insert it in any rendering function or hook all these functions (it wont be provided at the code)
Code:
0063AACF
00656160
00656060
00656160
0063AA50
0064CC30
00656324
Codes:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

thanks for you but can make a video to help me how to use Devkit

any one can make video to see me how to add any thing on Devkit or how to use this Tool devkit
09/03/2022 17:14 SubZero**#13
Quote:
Originally Posted by eslamwiza View Post
thanks for you but can make a video to help me how to use Devkit




thanks for you but can make a video to help me how to use Devkit

any one can make video to see me how to add any thing on Devkit or how to use this Tool devkit
[Only registered and activated users can see links. Click Here To Register...]
09/29/2022 04:31 thetamebewolf#14
after finsh when build problem can help
09/29/2022 04:50 SuNDevills#15
great work bro :rolleyes:
can you release how can we make a specific map or region same like an event ctf or arena ?
i mean like to make this specific map or region all player spawn there with cape , Uniform , all have same weapon dg , hide names or change with something else , and countdown timer for event time , hide guild name