[C++] Refresh friend list

Member
Apr
Threads
3
74
98
18

AD: Mt2009 - Mobile & PC - 30 January 2026 CHECK THE PRESENTATION!

C++:
Client_source side
Userinterface/packet.h:

Search:
MESSENGER_SUBHEADER_GC_INVITE,

Add to Graund:

#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    MESSENGER_SUBHEADER_GC_REMOVE_FRIEND,
#endif

Userinterface/PythonMessenger.cpp

Search:
m_FriendNameMap.erase(c_szKey);

Add to ground:
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    if (m_poMessengerHandler)
        PyCallClassMemberFunc(m_poMessengerHandler, "OnRemoveList", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_FRIEND, c_szKey));
#endif

Code block result:

void CPythonMessenger::RemoveFriend(const char * c_szKey)
{
    m_FriendNameMap.erase(c_szKey);
  
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    if (m_poMessengerHandler)
        PyCallClassMemberFunc(m_poMessengerHandler, "OnRemoveList", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_FRIEND, c_szKey));
#endif
}

PythonNetworkStreamPhaseGame.cpp
Search:
case MESSENGER_SUBHEADER_GC_LOGOUT:

Add to command block end
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
        case MESSENGER_SUBHEADER_GC_REMOVE_FRIEND:
        {
            BYTE bLength;
            if (!Recv(sizeof(bLength), &bLength))
                return false;

            if (!Recv(bLength, char_name))
                return false;

            char_name[bLength] = 0;
            CPythonMessenger::Instance().RemoveFriend(char_name);
            break;
        }
#endif

C++:
common/service.h

Add:
#define ENABLE_DELETE_FRIEND_REFRESH_FIX

game/src/messenger_manager.cpp

Search:
MessengerManager::MessengerManager()

Add to over:
static char    __account[CHARACTER_NAME_MAX_LEN*2+1];
static char    __companion[CHARACTER_NAME_MAX_LEN*2+1];

Search:
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList)

Add to over:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    if (account.compare(__account))
        return;

Search:
    if (m_Relation[account].find(companion) != m_Relation[account].end())

Add to below:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    DBManager::instance().EscapeString(__companion, sizeof(__companion), companion.c_str(), companion.size());
    if (account.compare(__account) || companion.compare(__companion))
        return;

Search:
    sys_log(1, "Messenger Remove %s %s", account.c_str(), companion.c_str());

Add to over:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    DBManager::instance().EscapeString(__companion, sizeof(__companion), companion.c_str(), companion.size());
  
    if (account.compare(__account) || companion.compare(__companion))
        return;

Search:
std::set<keyT>    company(m_Relation[account]);

Add to below:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    if (account.compare(__account))
        return;

Search:
    m_InverseRelation[companion].erase(account);

Add to below:
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    m_Relation[companion].erase(account);
    m_InverseRelation[account].erase(companion);
#endif

Search:
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Messenger> You deleted %s off the list."), companion.c_str());

Add to below:
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    LPCHARACTER tch = CHARACTER_MANAGER::Instance().FindPC(companion.c_str());
    if (tch && tch->GetDesc())
    {
        TPacketGCMessenger p;
        p.header        = HEADER_GC_MESSENGER;
        p.subheader        = MESSENGER_SUBHEADER_GC_REMOVE_FRIEND;
        p.size            = sizeof(TPacketGCMessenger) + sizeof(BYTE) + account.size();
        BYTE bLen        = account.size();
        tch->GetDesc()->BufferedPacket(&p, sizeof(p));
        tch->GetDesc()->BufferedPacket(&bLen, sizeof(BYTE));
        tch->GetDesc()->Packet(account.c_str(), account.size());
    }
#endif

 
Last edited:
Metin2Hub Bot
M2Hub Bot
Feb
Threads
66
2,381
2
1,309
113
C++:
Client_source side
Userinterface/packet.h:

Search:
MESSENGER_SUBHEADER_GC_INVITE,

Add to Graund:

#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    MESSENGER_SUBHEADER_GC_REMOVE_FRIEND,
#endif

Userinterface/PythonMessenger.cpp

Search:
m_FriendNameMap.erase(c_szKey);

Add to ground:
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    if (m_poMessengerHandler)
        PyCallClassMemberFunc(m_poMessengerHandler, "OnRemoveList", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_FRIEND, c_szKey));
#endif

Code block result:

void CPythonMessenger::RemoveFriend(const char * c_szKey)
{
    m_FriendNameMap.erase(c_szKey);
    
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    if (m_poMessengerHandler)
        PyCallClassMemberFunc(m_poMessengerHandler, "OnRemoveList", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_FRIEND, c_szKey));
#endif
}

Search:
case MESSENGER_SUBHEADER_GC_LOGOUT:

Add to command block end
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
        case MESSENGER_SUBHEADER_GC_REMOVE_FRIEND:
        {
            BYTE bLength;
            if (!Recv(sizeof(bLength), &bLength))
                return false;

            if (!Recv(bLength, char_name))
                return false;

            char_name[bLength] = 0;
            CPythonMessenger::Instance().RemoveFriend(char_name);
            break;
        }
#endif

C++:
common/service.h

Add:
#define ENABLE_DELETE_FRIEND_REFRESH_FIX

game/src/messenger_manager.cpp

Search:
MessengerManager::MessengerManager()

Add to over:
static char    __account[CHARACTER_NAME_MAX_LEN*2+1];
static char    __companion[CHARACTER_NAME_MAX_LEN*2+1];

Search:
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList)

Add to over:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    if (account.compare(__account))
        return;

Search:
    if (m_Relation[account].find(companion) != m_Relation[account].end())

Add to below:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    DBManager::instance().EscapeString(__companion, sizeof(__companion), companion.c_str(), companion.size());
    if (account.compare(__account) || companion.compare(__companion))
        return;

Search:
    sys_log(1, "Messenger Remove %s %s", account.c_str(), companion.c_str());

Add to over:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    DBManager::instance().EscapeString(__companion, sizeof(__companion), companion.c_str(), companion.size());
    
    if (account.compare(__account) || companion.compare(__companion))
        return;

Search:
std::set<keyT>    company(m_Relation[account]);

Add to below:
    DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
    if (account.compare(__account))
        return;

Search:
    m_InverseRelation[companion].erase(account);

Add to below:
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    m_Relation[companion].erase(account);
    m_InverseRelation[account].erase(companion);
#endif

Search:
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Messenger> You deleted %s off the list."), companion.c_str());

Add to below:
#ifdef ENABLE_DELETE_FRIEND_REFRESH_FIX
    LPCHARACTER tch = CHARACTER_MANAGER::Instance().FindPC(companion.c_str());
    if (tch && tch->GetDesc())
    {
        TPacketGCMessenger p;
        p.header        = HEADER_GC_MESSENGER;
        p.subheader        = MESSENGER_SUBHEADER_GC_REMOVE_FRIEND;
        p.size            = sizeof(TPacketGCMessenger) + sizeof(BYTE) + account.size();
        BYTE bLen        = account.size();
        tch->GetDesc()->BufferedPacket(&p, sizeof(p));
        tch->GetDesc()->BufferedPacket(&bLen, sizeof(BYTE));
        tch->GetDesc()->Packet(account.c_str(), account.size());
    }
#endif

Hello dear user,

Your post will be under surveillance by bots for the next few hours.

Forum description : Metin2 private server, Metin2 download, Metin2 support, Metin2 Forum, Metin2 Pvp Servers, Errors, Bugs, Requests, Metin2 Pvp Forum, Everything About Metin2.
 
AdBlock Detected

We get it, advertisements are annoying!

Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

I've Disabled AdBlock