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

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,800
2,665
Из-за чего может не реагировать менюшка на курсор (нажатия, растягивание), при этом скролл меню при помощи колесика и шифта работает?

C++:
void menu::set_visible(bool visible) {
  this->visible = visible;
  if (!visible)
    sampapi::v037r3::RefGame()->SetCursorMode(sampapi::v037r3::CURSOR_NONE, 1);
  ;
}

void menu::present() {
  if (!visible) return;

  ImGui_ImplDX9_NewFrame();
  ImGui_ImplWin32_NewFrame();
  ImGui::NewFrame();

  ImGui::SetNextWindowPos(
      ImVec2(RsGlobal.maximumWidth / 2, RsGlobal.maximumHeight / 2),
      ImGuiCond_FirstUseEver, ImVec2(0.5, 0.5));
  ImGui::SetNextWindowSize(ImVec2(700, 420), ImGuiCond_FirstUseEver);
  if (ImGui::Begin("abcde", nullptr, ImGuiWindowFlags_NoCollapse)) {
    sampapi::v037r3::RefGame()->SetCursorMode(sampapi::v037r3::CURSOR_LOCKCAM,
                                              0);
      // render

    ImGui::End();
  }

  ImGui::EndFrame();
  ImGui::Render();
  ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
}

bool menu::wndproc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  switch (uMsg) {
    case WM_CHAR: {
      wchar_t wch;
      MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,
                          reinterpret_cast<char*>(&wParam), 1, &wch, 1);
      wParam = wch;
      break;
    }
    case WM_KEYUP:
      if (wParam == VK_ESCAPE) set_visible(false);
      break;
  }

  ImGui_ImplWin32_WndProcHandler(hwnd, uMsg, wParam, lParam);
  auto& io = ImGui::GetIO();
  if (io.WantCaptureKeyboard || io.WantCaptureMouse) {
    return false;
  }
  return true;
}
 

Smeruxa

Известный
1,372
726
Из-за чего может не реагировать менюшка на курсор (нажатия, растягивание), при этом скролл меню при помощи колесика и шифта работает?

C++:
void menu::set_visible(bool visible) {
  this->visible = visible;
  if (!visible)
    sampapi::v037r3::RefGame()->SetCursorMode(sampapi::v037r3::CURSOR_NONE, 1);
  ;
}

void menu::present() {
  if (!visible) return;

  ImGui_ImplDX9_NewFrame();
  ImGui_ImplWin32_NewFrame();
  ImGui::NewFrame();

  ImGui::SetNextWindowPos(
      ImVec2(RsGlobal.maximumWidth / 2, RsGlobal.maximumHeight / 2),
      ImGuiCond_FirstUseEver, ImVec2(0.5, 0.5));
  ImGui::SetNextWindowSize(ImVec2(700, 420), ImGuiCond_FirstUseEver);
  if (ImGui::Begin("abcde", nullptr, ImGuiWindowFlags_NoCollapse)) {
    sampapi::v037r3::RefGame()->SetCursorMode(sampapi::v037r3::CURSOR_LOCKCAM,
                                              0);
      // render

    ImGui::End();
  }

  ImGui::EndFrame();
  ImGui::Render();
  ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
}

bool menu::wndproc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  switch (uMsg) {
    case WM_CHAR: {
      wchar_t wch;
      MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,
                          reinterpret_cast<char*>(&wParam), 1, &wch, 1);
      wParam = wch;
      break;
    }
    case WM_KEYUP:
      if (wParam == VK_ESCAPE) set_visible(false);
      break;
  }

  ImGui_ImplWin32_WndProcHandler(hwnd, uMsg, wParam, lParam);
  auto& io = ImGui::GetIO();
  if (io.WantCaptureKeyboard || io.WantCaptureMouse) {
    return false;
  }
  return true;
}
C++:
if (io.WantCaptureKeyboard || io.WantCaptureMouse) {
    return true;
}
 
  • Влюблен
Реакции: whyega52

daun.daunovich.01

Новичок
10
1
Кто то работал с номерами GTA? Нужно установить кастомный номер на машину, а получается пока только на модель. Помогите.


C++:
srand(static_cast<unsigned>(time(0)));
int randomNumber = 1000 + rand() % 49001;
char randomPlateText[9];
sprintf(randomPlateText, "%d", randomNumber);
const auto plateRaster = RwRasterCreate(64, 16, 32, rwRASTERFORMAT888 | rwRASTERPIXELLOCKEDWRITE);
if (!plateRaster) return true;
if (!RwTextureGetRaster(pCharsetTex)) {
    RwRasterDestroy(plateRaster);
    return true;
}
if (!RenderLicenseplateTextToRaster(randomPlateText, RwTextureGetRaster(pCharsetTex), CCustomCarPlateMgr::pPalette1555Tab[ResolvePlateType(modelInfo->m_nPlateType)], plateRaster)) {
    RwRasterDestroy(plateRaster);
    return true;
}
if (const auto plateTex = RwTextureCreate(plateRaster)) {
    RwTextureSetName(plateTex, randomPlateText);
    RwTextureSetFilterMode(plateTex, rwFILTERNEAREST);
}
Пробовали этим способом, ставит только на передний номер.
 

Nexter1

Участник
33
7
Почему игра может вылетать?

deletee:
void deletee(const char* params) {
    auto id = atoi(params);
    sampapi::v037r3::RefNetGame()->GetPlayerPool()->GetPlayer(id)->Remove();
}
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,800
2,665
Почему игра может вылетать?

deletee:
void deletee(const char* params) {
    auto id = atoi(params);
    sampapi::v037r3::RefNetGame()->GetPlayerPool()->GetPlayer(id)->Remove();
}
я бы добавил обработчик исключений для atoi + добавил проверку на то, что игрок с таким id существует
 

Nexter1

Участник
33
7
я бы добавил обработчик исключений для atoi + добавил проверку на то, что игрок с таким id существует
Да именно крашит когда существующий ид игрока (в зоне стрима) ввожу. Если игрока нет в зоне стрима - ничего не происходит.
 
  • Вау
Реакции: whyega52

Nexter1

Участник
33
7
Как можно в sampapi выключить коллизию у объекта? (определенного по id) в cobject не нашел ничего связанного с этим
 
Последнее редактирование:

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,800
2,665
Как можно в sampapi выключить коллизию у объекта? (определенного по id) в cobject не нашел ничего связанного с этим
CObject наследуется от CEntity, то есть имеет все его поля
 
  • Влюблен
Реакции: Nexter1

Smeruxa

Известный
1,372
726
Почему крашит при использовании?
C++:
sampapi::v037r1::RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData.m_controllerState.m_bRightShoulder1
Это в условие сую, как я понял, плагин вызывает краш на этапе с GetLocalPlayer
Криво косо что-то попытался сделать так sampapi::v037r1::CLocalPlayer* localPlayer = *(sampapi::v037r1::CLocalPlayer**)0xB6F5F0;
Но не срабатывало, хоть краш и пропал 😅