Шифт предметов в чате на ru/eng патче.

romash

Выдающийся
VIP
Сообщения
226
Розыгрыши
0
Репутация
0
Реакции
44
Баллы
1 335
Salvation клиент 140 протокол. На сервере 2 патча ru и en. Если человек шифтует с Ru патча свои предметы, человек с англ патча не видит сообщения в чате и наоборот.
Предметы в ру версии на русском, в eng на английском. Как это можно исправить?
 
Решение
Salvation клиент 140 протокол. На сервере 2 патча ru и en. Если человек шифтует с Ru патча свои предметы, человек с англ патча не видит сообщения в чате и наоборот.
Предметы в ру версии на русском, в eng на английском. Как это можно исправить?
просто в сай пакете передай инфу о имени предмета в зависимости от локализации и все будет ок.
П.С
Код:
                    wstring nMessageTex = packet.m_wsMessageText;
                    //g_Log.Add(Blue, L"packet.m_wsMessageText %s", packet.m_wsMessageText);
                    if (nMessageTex.find(L"ClassID") != -1 && g_Config.g_RuEngShiftClickItemShow)
                    {
                        wstring sItemid= Parser::ParseOptionString(nMessageTex, L"ClassID")...
Странно конечно, ведь сервер по идее с этого линка берет чисто objId предмета и ему пофигу должно быть на остальную инфу оттуда, в частности на название предмета и т.д.
Могу лишь предположить что как-то отличаются отправляемые с клиента линки в зависимости от языка и регэксп, обрабатывающий такие строки некорректно их обрабатывает.
В овере если что регеэкспы эти в Say2C, что-то типа таких
Java:
    // RegExp для кэширования ссылок на предметы
    private static final Pattern EX_ITEM_LINK_PATTERN = Pattern.compile("[\b]\tType=[0-9]+[\\s]+\tID=([0-9]+)[\\s]+\tColor=[0-9]+[\\s]+\tUnderline=[0-9]+[\\s]+\tClassID=([0-9]+)+[\\s]+\tTitle=\u001B(.[^\u001B]*)[^\b]");
    private static final Pattern SKIP_ITEM_LINK_PATTERN = Pattern.compile("[\b]\tType=[0-9]+(.[^\b]*)[\b]");
 
Salvation клиент 140 протокол. На сервере 2 патча ru и en. Если человек шифтует с Ru патча свои предметы, человек с англ патча не видит сообщения в чате и наоборот.
Предметы в ру версии на русском, в eng на английском. Как это можно исправить?
Только клиент экст .
 
Salvation клиент 140 протокол. На сервере 2 патча ru и en. Если человек шифтует с Ru патча свои предметы, человек с англ патча не видит сообщения в чате и наоборот.
Предметы в ру версии на русском, в eng на английском. Как это можно исправить?
просто в сай пакете передай инфу о имени предмета в зависимости от локализации и все будет ок.
П.С
Код:
                    wstring nMessageTex = packet.m_wsMessageText;
                    //g_Log.Add(Blue, L"packet.m_wsMessageText %s", packet.m_wsMessageText);
                    if (nMessageTex.find(L"ClassID") != -1 && g_Config.g_RuEngShiftClickItemShow)
                    {
                        wstring sItemid= Parser::ParseOptionString(nMessageTex, L"ClassID");
                        wstringstream nStream(sItemid);
                        int32_t nItemID;
                        while (nStream >> nItemID)
                        {
                            if (nItemID > 0 && nItemID < 65535)
                            {
                                if (ClientItemInfo* nClientItemInfo = g_ClientDataParser.GetClientItemInfo(nItemID))
                                {
                                    if (User* pUser = socket->GetUser())
                                    {
                                        map<uint8_t, wstring>::iterator Iter = nClientItemInfo->m_ItemNames.find(pUser->pSD->m_lang);
                                        if (Iter != nClientItemInfo->m_ItemNames.end())
                                        {
                                            wstring nItemName = Iter->second;
                                            nMessageTex = nMessageTex.substr(0, nMessageTex.find(L"Title"));
                                            nMessageTex = nMessageTex + L"Title=\u001b" + nItemName + L"\u001b\b";
                                            //g_Log.Add(Blue, L"nMessageTex %s", nMessageTex.c_str());
                                        }
                                    }
                                }
                            }
                        }
                        wchar_t* nWMessageTex = _wcsdup(nMessageTex.c_str());
                        serializer.S(nWMessageTex);
 
Решение
Назад
Сверху Снизу