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

manukhov

Известный
122
129
Как правильно работать с рендером через CSprite2D::Draw?
C++:
CRect rect;
rect.left = -0.5f;
rect.top = -0.5f;
rect.right = RsGlobal.maximumWidth;
rect.bottom = RsGlobal.maximumHeight;
sprite.Draw(rect, {0xFF, 0xFF, 0xFF, 0xFF});
Картинка рендерится, однако получается что-то не то:
Посмотреть вложение 250825
А попробуй так
C++:
CRect rect;
rect.left = 1.0f;
rect.top = 0.5f;
rect.right = RsGlobal.maximumWidth + 1.0f;
rect.bottom = RsGlobal.maximumHeight  + 0.5f;
sprite.Draw(rect, {0xFF, 0xFF, 0xFF, 0xFF});
 

вайега52

Налуашил состояние
Модератор
2,994
3,116
А попробуй так
C++:
CRect rect;
rect.left = 1.0f;
rect.top = 0.5f;
rect.right = RsGlobal.maximumWidth + 1.0f;
rect.bottom = RsGlobal.maximumHeight  + 0.5f;
sprite.Draw(rect, {0xFF, 0xFF, 0xFF, 0xFF});
дело, если правильно помню, было не в координатах, а в том, что рендерил не в том месте, не в то время (не в пресенте напрямую, а в хуке PlayerTags::DrawLabel)
 

xtngerr

Новичок
6
0
Как вообще работает антистан?
Я правильно понимаю, что есть состояния игрока, которые сервер получает?
 

Smeruxa

smeruxa.ru
Проверенный
1,431
789
Как получить, что игрок с каким-то ID (любой) находится в АФК? Через нотепад весь сампапи перебрал, там нет ничего связанного с АФК 0.0
Решение: sampapi::v037r1::RefNetGame()->GetPlayerPool()->GetPlayer(id)->m_nStatus == 2
 
Последнее редактирование:

vmprotect

Известный
396
272
где находится переменная в самп r3 которая отвечает за хранение денег найти не могу в idb
 

вайега52

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

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;
}