Другое С/С++ Вопрос - Ответ

thelupa1488

Новичок
9
2
Всем привет, сделал показ информации о игроках которые на сервере (id, ping, score, name),
но на некоторых игроках пишет вместо ника, иероглифы.
C++:
                RemotePlayer[i].id = i;
                RemotePlayer[i].ping = readMem<int>(Memory.RemotePlayer_PTR + 0x28);
                RemotePlayer[i].score = readMem<int>(Memory.RemotePlayer_PTR + 0x24);
                RemotePlayer[i].isNpc = readMem<int>(Memory.RemotePlayer_PTR + 0x4);

                char remote_name[32];
                DWORD oldProtect = 0;
                DWORD Address = Memory.RemotePlayer_PTR + 0xC;
                VirtualProtectEx(Memory.processHandle, (void*)Address, sizeof(remote_name), PAGE_EXECUTE_READWRITE, &oldProtect);
                ReadProcessMemory(Memory.processHandle, (LPVOID)(Address), &remote_name, sizeof(remote_name), NULL);
                VirtualProtectEx(Memory.processHandle, (void*)Address, sizeof(remote_name), oldProtect, NULL);
                RemotePlayer[i].name = remote_name;
                RemotePlayer[i].address = Memory.RemotePlayer_PTR;
C++:
int player = MenuFunction.test;
        if (player > REDFIRE_MAX_PLAYER || player < 0)
            player = 0;

        if (LocalPlayer.id == player) {
            sprintf(TestInfo, "Address: %X\nID: %d\nName: %s\nScore: %d\nPing: %d\n", LocalPlayer.address, LocalPlayer.id, LocalPlayer.name.c_str(), LocalPlayer.score, LocalPlayer.ping);
        }
        else if (RemotePlayer[player].address != NULL) {
            sprintf(TestInfo, "Address: %X\nID: %d\nName: %s\nScore: %d\nPing: %d\n", RemotePlayer[player].address, RemotePlayer[player].id, RemotePlayer[player].name.c_str(), RemotePlayer[player].score, RemotePlayer[player].ping);
        }
        else {
            sprintf(TestInfo, "Данный игрок не найден!");
        }
        DrawStrokeText(200, 200, &White, TestInfo);
C++:
void DrawStrokeText(int x, int y, RGBA* color, const char* str) {
    ImFont a;
    std::string utf_8_1 = std::string(str);
    std::string utf_8_2 = string_To_UTF8(utf_8_1);
    ImGui::GetForegroundDrawList()->AddText(ImVec2(x, y - 1), ImGui::ColorConvertFloat4ToU32(ImVec4(1 / 255.0, 1 / 255.0, 1 / 255.0, 255 / 255.0)), utf_8_2.c_str());
    ImGui::GetForegroundDrawList()->AddText(ImVec2(x, y + 1), ImGui::ColorConvertFloat4ToU32(ImVec4(1 / 255.0, 1 / 255.0, 1 / 255.0, 255 / 255.0)), utf_8_2.c_str());
    ImGui::GetForegroundDrawList()->AddText(ImVec2(x - 1, y), ImGui::ColorConvertFloat4ToU32(ImVec4(1 / 255.0, 1 / 255.0, 1 / 255.0, 255 / 255.0)), utf_8_2.c_str());
    ImGui::GetForegroundDrawList()->AddText(ImVec2(x + 1, y), ImGui::ColorConvertFloat4ToU32(ImVec4(1 / 255.0, 1 / 255.0, 1 / 255.0, 255 / 255.0)), utf_8_2.c_str());
    ImGui::GetForegroundDrawList()->AddText(ImVec2(x, y), ImGui::ColorConvertFloat4ToU32(ImVec4(color->R / 255.0, color->G / 255.0, color->B / 255.0, color->A / 255.0)), utf_8_2.c_str());
}

C++:
std::string string_To_UTF8(const std::string& str) {
    int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);
    wchar_t* pwBuf = new wchar_t[nwLen + 1];
    ZeroMemory(pwBuf, nwLen * 2 + 2);
    ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);
    int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);
    char* pBuf = new char[nLen + 1];
    ZeroMemory(pBuf, nLen + 1);
    ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);
    std::string retStr(pBuf);
    delete[]pwBuf;
    delete[]pBuf;
    pwBuf = NULL;
    pBuf = NULL;
    return retStr;
}

Кривое отображение.png
Нормальное.png
 

THERION

Известный
Проверенный
88
327
Кто уже смешарик, дайте, пожалуйста, ответ на глупый вопрос. Какой патч процессор (x86) выполнит быстрее:
1. Блок NOP'ов (Длиной 58 к примеру)
2. Прыжок c начала такого блока в его конец
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,809
Кто уже смешарик, дайте, пожалуйста, ответ на глупый вопрос. Какой патч процессор (x86) выполнит быстрее:
1. Блок NOP'ов (Длиной 58 к примеру)
2. Прыжок c начала такого блока в его конец
NOP’ы это xchg eax, eax; ~3 такта
jump зависит от контекста, но безусловный прыжок почти бесплатный, если инструкции в кеш подгружены в кеш. Прыжок должен быть выгоднее наверное
 
  • Нравится
Реакции: THERION и legendabrn

Rafaelofff

Потрачен
120
5
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как найти координаты объекта по его id? (Asi)
 

Apsapeh

Участник
64
10
Вопрос: Есть ли способ эмуляции клика мыши в игровом окне, mouse_event() не работает?
 
У

Удалённый пользователь 448549

Гость
А шо имеется способ получения своего ника?
samp::CLocalPlayer().m_szName - пустота, samp::CPlayerPool().GetLocalPlayerName() - крашит
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,809

Rafaelofff

Потрачен
120
5
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть у кого сурсы рванки написанные на asi?
 
  • Bug
Реакции: kin4stat

Rafaelofff

Потрачен
120
5
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А давно на расширениях файлов можно код писать?
Объясняю, я шарю что на C++, но мне нужно asi, за сф я хз как переписать с SF на ASI, если не трудно объясни. Или скинь сурсы если есть, могу заплатить.