Register for your free account! | Forgot your password?

You last visited: Today at 04:18

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Chat Emoji (Devkit)

Discussion on [Release] Chat Emoji (Devkit) within the SRO PServer Guides & Releases forum part of the SRO Private Server category.

Reply
 
Old   #1
 
bimbum*'s Avatar
 
elite*gold: 147
Join Date: Oct 2017
Posts: 548
Received Thanks: 882
[Release] Chat Emoji (Devkit)

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.


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:





bimbum* is offline  
Thanks
32 Users
Old 08/31/2022, 11:37   #2
 
elite*gold: 0
Join Date: Aug 2008
Posts: 59
Received Thanks: 5
Dance emoji like Audition ko bac ?
hvdnghia is offline  
Old 08/31/2022, 12:25   #3
 
elite*gold: 0
Join Date: Dec 2013
Posts: 66
Received Thanks: 6
bro you are the bottom of the man i love you discord name exadus
gmhasan13 is offline  
Old 08/31/2022, 12:40   #4


 
VORTEX*'s Avatar
 
elite*gold: 100
Join Date: Apr 2015
Posts: 956
Received Thanks: 1,174
King as always
VORTEX* is offline  
Thanks
1 User
Old 09/01/2022, 18:21   #5
 
elite*gold: 0
Join Date: Jun 2021
Posts: 23
Received Thanks: 3
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?
Venom7x is offline  
Old 09/01/2022, 18:29   #6
 
bimbum*'s Avatar
 
elite*gold: 147
Join Date: Oct 2017
Posts: 548
Received Thanks: 882
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
bimbum* is offline  
Old 09/01/2022, 18:39   #7
 
elite*gold: 0
Join Date: Jun 2021
Posts: 23
Received Thanks: 3
CIFChatViewer* chatView = (CIFChatViewer*)g_pCGInterface->m_IRM.GetResObj(1, 1);
chatView->initializeEmojis();
chatView->hideEmojis();
chatView->emojiHandler();

using this. Thanks for share old friend.
Venom7x is offline  
Old 09/01/2022, 18:51   #8
 
bimbum*'s Avatar
 
elite*gold: 147
Join Date: Oct 2017
Posts: 548
Received Thanks: 882
Quote:
Originally Posted by Venom7x View Post
ah i was did it. but hideslots is giving error.

like here


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
bimbum* is offline  
Old 09/02/2022, 13:11   #9
 
bilalctn's Avatar
 
elite*gold: 0
Join Date: Mar 2020
Posts: 18
Received Thanks: 2
anyone install for me ?
bilalctn is offline  
Old 09/02/2022, 13:12   #10
 
!Ego's Avatar
 
elite*gold: 70
Join Date: May 2014
Posts: 206
Received Thanks: 20
unbelievable!
thanks for the great release!
!Ego is offline  
Old 09/02/2022, 22:57   #11
 
theonlydark's Avatar
 
elite*gold: 0
Join Date: Oct 2007
Posts: 47
Received Thanks: 29
Thumbs up

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.


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:





Nice Release Bro as always Top .... Thanks
theonlydark is offline  
Old 09/03/2022, 17:01   #12
 
elite*gold: 0
Join Date: Dec 2015
Posts: 41
Received Thanks: 2
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.


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:






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.


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:






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
eslamwiza is offline  
Old 09/03/2022, 17:14   #13

 
SubZero**'s Avatar
 
elite*gold: 0
Join Date: Apr 2017
Posts: 987
Received Thanks: 456
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
SubZero** is offline  
Old 09/29/2022, 04:31   #14
 
thetamebewolf's Avatar
 
elite*gold: 90
Join Date: Aug 2019
Posts: 101
Received Thanks: 23
after finsh when build problem can help
thetamebewolf is offline  
Old 09/29/2022, 04:50   #15
 
elite*gold: 312
Join Date: Jun 2011
Posts: 181
Received Thanks: 34
great work bro
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
SuNDevills is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[Release] STFilter-Devkit-Client - Database - Chat Item Link - New Reverse Scroll
05/03/2024 - SRO PServer Guides & Releases - 344 Replies
hi everyone , today i will release ST Filter version written by me based on sr_proxy , exclusively for Vietnamese people This version still has some bugs so if you find any errors, please post them and I will fix it Some Features Are Available : Battle Royale Event https://youtu.be/47EsgqQqZSs Item Viewer https://youtu.be/g3yKUEx9DlA
[Release] STFilter - Devkit - Client - Database - Chat Item Link - New Reverse Scroll
11/29/2021 - SRO Coding Corner - 11 Replies
hi everyone , today i will release ST Filter version written by me based on sr_proxy , exclusively for Vietnamese people This version still has some bugs so if you find any errors, please post them and I will fix it some features are available : https://s1.uphinh.org/2021/11/28/7e950e5cf269a620 9.png https://s1.uphinh.org/2021/11/28/8.png https://s1.uphinh.org/2021/11/28/9.png https://s1.uphinh.org/2021/11/28/10.png https://s1.uphinh.org/2021/11/28/11.png...



All times are GMT +2. The time now is 04:18.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.