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

Nexter1

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

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

вайега52

cache miss
Модератор
3,060
3,293
Почему игра может вылетать?

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

Nexter1

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

Nexter1

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

вайега52

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

Smeruxa

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

maksmanus228

Известный
135
61
добрый день, у меня есть новая функция UpdateNetwork (пока что переписанная с idb сампа) и у меня крашит игра при попытке прописать packet->data
вот код
[/I] void __fastcall SSmpPackets::UpdateNetwork(CNetGame* game, void* edx) { Packet* packet = nullptr; uint8_t* localdata = nullptr; uint8_t state {}; for(packet = game->m_pRakClient->Receive(); packet; packet = game->m_pRakClient->Receive()) { localdata = packet->data; if(*localdata == 40) state = localdata[5]; switch(state) { case 12: game->Packet_AuthKey(packet); break; case 29: { AddDebugMessage("The server didn't respond. Retrying.."); game->m_nGameState = 1; break; } case 31: { AddDebugMessage("The server didn't respond. Retrying.."); break; } case 32: game->Packet_DisconnectionNotification(packet); break; case 33: game->Packet_ConnectionLost(packet); break; case 34: game->Packet_ConnectionSucceeded(packet); break; case 35: AddDebugMessage("Failed to initialize encryption."); break; case 36: AddDebugMessage("You are banned from this server."); break; case 37: { AddDebugMessage("Wrong server password."); game->m_pRakClient->Disconnect(0, 0); break; } case 200: game->Packet_VehicleSync(packet); break; case 203: game->Packet_AimSync(packet); break; case 206: game->Packet_BulletSync(packet); break; case 207: game->Packet_PlayerSync(packet); break; case 208: game->Packet_MarkersSync(packet); break; case 209: game->Packet_UnoccupiedSync(packet); break; case 210: game->Packet_TrailerSync(packet); break; case 211: game->Packet_PassengerSync(packet); break; default: break; } game->m_pRakClient->DeallocatePacket(packet); } } [I]

В чем может быть дело? структура Packet взяты из этого репозитория:

рак нет для сампа

и еще: работает ли правильно структура Packet2 от этого же репозитория
 

EclipsedFlow

Известный
Проверенный
1,044
491
Что стало с выгрузкой ASI файлов при выгрузке(иногда даже загрузке)?
Все Visual C++ 2005-2022 установлены.
Раньше стабильно загружал/выгружал через консоль SF (pload, pfree) - сейчас ловлю краш игры.
При попытке отладить стек вызовов направляет на ntdll модуль. При ещё более подробной отладке выяснил что после вызова DLLMain со статусом DLL_PROCESS_DETACH проходит корректно и дальше уходит в dll_main_dispatch и внутрение штуки виндовс.
Данную штуку не проверял на обычной сборке, может вне запуска аризоны через лаунчер работает все корректно.
 

вайега52

cache miss
Модератор
3,060
3,293
Что стало с выгрузкой ASI файлов при выгрузке(иногда даже загрузке)?
Все Visual C++ 2005-2022 установлены.
Раньше стабильно загружал/выгружал через консоль SF (pload, pfree) - сейчас ловлю краш игры.
При попытке отладить стек вызовов направляет на ntdll модуль. При ещё более подробной отладке выяснил что после вызова DLLMain со статусом DLL_PROCESS_DETACH проходит корректно и дальше уходит в dll_main_dispatch и внутрение штуки виндовс.
Данную штуку не проверял на обычной сборке, может вне запуска аризоны через лаунчер работает все корректно.
а плагин может быть даже пустым и крашить? он точно не оставляет никаких своих следов в игре?
 

EclipsedFlow

Известный
Проверенный
1,044
491
а плагин может быть даже пустым и крашить? он точно не оставляет никаких своих следов в игре?
Решил проблему. Оказалось краш происходил из-за не корректного хука dx9 (present, reset).
Заюзал пример из этого треда и выгрузка работает на УРА.
Линк - LINK
 
  • Нравится
Реакции: вайега52

EclipsedFlow

Известный
Проверенный
1,044
491
Как исправить рендер текста кириллицы из текст_дравов. Шрифт имгуи точно поддерживает кириллицу. При дебаге текст так-же валидный, а на рисовке уже покрывается знаками вопроса.
Юзаю смейк проект, стандарт С++ 20, sampapi
изображение_2024-11-03_222612270.png


1730665614181.png