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

maksmanus228

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

whyega52

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

EclipsedFlow

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

EclipsedFlow

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


1730665614181.png

 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
Как исправить рендер текста кириллицы из текст_дравов. Шрифт имгуи точно поддерживает кириллицу. При дебаге текст так-же валидный, а на рисовке уже покрывается знаками вопроса.
Юзаю смейк проект, стандарт С++ 20, sampapi
Посмотреть вложение 256237

Посмотреть вложение 256238
imgui понимает текст только в utf8, самп - только в cp1251. Конвертируй кодировки
 
  • Нравится
Реакции: EclipsedFlow и ARMOR

EclipsedFlow

Известный
Проверенный
1,044
474
Как корректно получить киррилицу при хуке rpc 134(RPC_ScrShowTextDraw).

1731959236160.png
C++:
rakhook::on_receive_rpc += [](unsigned char& id, RakNet::BitStream* bs) -> bool {
    // Версия сампа R1/R3
    if (id == 134) // RPC_ScrShowTextDraw
    {
        WORD TID, TLen;
        char Text[1024];
        bs->Read(TID);
        bs->IgnoreBits(504);
        bs->Read(TLen);
        bs->Read(Text, TLen);
        bs->ResetReadPointer();
        Text[TLen] = '\0';

        SendChatMessage("[%d]: %s", TID, Text);
    }

    return true;
};
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,783
2,608
Как корректно получить киррилицу при хуке rpc 134(RPC_ScrShowTextDraw).

C++:
rakhook::on_receive_rpc += [](unsigned char& id, RakNet::BitStream* bs) -> bool {
    // Версия сампа R1/R3
    if (id == 134) // RPC_ScrShowTextDraw
    {
        WORD TID, TLen;
        char Text[1024];
        bs->Read(TID);
        bs->IgnoreBits(504);
        bs->Read(TLen);
        bs->Read(Text, TLen);
        bs->ResetReadPointer();
        Text[TLen] = '\0';

        SendChatMessage("[%d]: %s", TID, Text);
    }

    return true;
};