я бы добавил обработчик исключений для atoi + добавил проверку на то, что игрок с таким id существуетПочему игра может вылетать?
deletee:void deletee(const char* params) { auto id = atoi(params); sampapi::v037r3::RefNetGame()->GetPlayerPool()->GetPlayer(id)->Remove(); }
Да именно крашит когда существующий ид игрока (в зоне стрима) ввожу. Если игрока нет в зоне стрима - ничего не происходит.я бы добавил обработчик исключений для atoi + добавил проверку на то, что игрок с таким id существует
Покажи кодКрашит при вызове RefNetGame::GetRakClient, имеется rce фикс, самп р3
Покажи код
RakNet::BitStream stream {};
stream.Write("hui");
GetRefGame()->GetRakClient()->Send(&stream, HIGH_PRIORITY, RELIABLE_ORDERED, 0);
CObject наследуется от CEntity, то есть имеет все его поляКак можно в sampapi выключить коллизию у объекта? (определенного по id) в cobject не нашел ничего связанного с этим
sampapi::v037r1::RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData.m_controllerState.m_bRightShoulder1

[/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]может возвращать nullptr, поэтому проверяй, что пакет и дата в нем указывают на данныеm_pRakClient->Receive
а плагин может быть даже пустым и крашить? он точно не оставляет никаких своих следов в игре?Что стало с выгрузкой ASI файлов при выгрузке(иногда даже загрузке)?
Все Visual C++ 2005-2022 установлены.
Раньше стабильно загружал/выгружал через консоль SF (pload, pfree) - сейчас ловлю краш игры.
При попытке отладить стек вызовов направляет на ntdll модуль. При ещё более подробной отладке выяснил что после вызова DLLMain со статусом DLL_PROCESS_DETACH проходит корректно и дальше уходит в dll_main_dispatch и внутрение штуки виндовс.
Данную штуку не проверял на обычной сборке, может вне запуска аризоны через лаунчер работает все корректно.
Решил проблему. Оказалось краш происходил из-за не корректного хука dx9 (present, reset).а плагин может быть даже пустым и крашить? он точно не оставляет никаких своих следов в игре?