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

Adder

Известный
22
0
Приветствую, при попытке декодить стринг с диалога всё время крашется игра. Если закоментить строку с компресором, не крашит

Код:
            case RPC_ShowDialog:
            {

                if (cheat_state->_generic.cheat_panic_enabled)
                    break;

                WORD DialogID;
                BYTE style, caplen, button1_len, button2_len, button = 1;
                char caption[255], button1[25], button2[25], info[256];
                BitStream        bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);

                bsData.ResetReadPointer();
                bsData.Read(DialogID);
                bsData.Read(style);
                bsData.Read(caplen);
                bsData.Read(caption, caplen);
                caption[caplen] = '\0';
                bsData.Read(button1_len);
                bsData.Read(button1, button1_len);
                button1[button1_len] = '\0';
                bsData.Read(button2_len);
                bsData.Read(button2, button2_len);
                button2[button2_len] = '\0';
                stringCompressor->DecodeString(info, 256, &bsData);


                break;

            }
 

Roger571

Известный
58
31
@Adder, для использования stringCompressor'а его нужно инициализировать, ну и ессна читать длину строки, как сказал тим

C++:
// при первом запуске или при инициализации RakClient
StringCompressor::AddReference();
StringTable::AddReference();
 
  • Нравится
Реакции: Adder

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
263
573
При компиляции плагина получаю следующую строку:
1>e:\samp\sampfuncs sdk\sf plugin template\sfplugin\sfapi\SFRender.h(5): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or
Где взять d3dx9.h?
 

Cake_

Потрачен
Проверенный
263
314
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
  • Нравится
Реакции: BASS_DEVSOFTWARE

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
263
573
Решение:
36695
 

Stiopko

Известный
Проверенный
307
218
есть ли что похожее ImGui::BeginPopupModal но без залежности к окну имгуи?
 

Cake_

Потрачен
Проверенный
263
314
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как реализована эта функция?
C++:
bool SFSAMP::registerChatCommand(std::string command, CommandProc callback)
 

CatKnight

Известный
148
55
Кто-нибудь сталкивался с подобным? В какой-то момент перестал полностью выгружаться плагин. Не важно, как я его заполню, он всё равно полностью не выгружается. DLL_PROCESS_DETACH не вызывается при выгрузке (но вызывается, когда полностью из игры выходишь :unsure:), при этом все команды освобождаются, но сам плагин как бы подключён, но SF его уже не видит, и когда снова пытаешься выгрузить плагин, в консоли пишет, что такой плагин не найден. Есть решение?
Вот обычный пример:
main.cpp:
#include <Windows.h>
#include "main.h"
SAMPFUNCS *SF = new SAMPFUNCS();

void __stdcall mainloop()
{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            initialized = true;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(104, 255, 192), "@@@");
        }
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    if (dwReasonForCall == DLL_PROCESS_ATTACH)
    {
        SF->initPlugin(mainloop, hModule);
        // ...
   
    }
       
    if (dwReasonForCall == DLL_PROCESS_DETACH)
    {
        // ...
    }
    return TRUE;
}
 

Cake_

Потрачен
Проверенный
263
314
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кто-нибудь сталкивался с подобным? В какой-то момент перестал полностью выгружаться плагин. Не важно, как я его заполню, он всё равно полностью не выгружается. DLL_PROCESS_DETACH не вызывается при выгрузке (но вызывается, когда полностью из игры выходишь :unsure:), при этом все команды освобождаются, но сам плагин как бы подключён, но SF его уже не видит, и когда снова пытаешься выгрузить плагин, в консоли пишет, что такой плагин не найден. Есть решение?
Вот обычный пример:
main.cpp:
#include <Windows.h>
#include "main.h"
SAMPFUNCS *SF = new SAMPFUNCS();

void __stdcall mainloop()
{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            initialized = true;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(104, 255, 192), "@@@");
        }
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    if (dwReasonForCall == DLL_PROCESS_ATTACH)
    {
        SF->initPlugin(mainloop, hModule);
        // ...
  
    }
      
    if (dwReasonForCall == DLL_PROCESS_DETACH)
    {
        // ...
    }
    return TRUE;
}
Привет, сталкивался с похожей проблемой и мне помогало лишь полная замена проекта на стандартный сфовский от urshadow
 
  • Грустно
Реакции: CatKnight

CatKnight

Известный
148
55
Привет, сталкивался с похожей проблемой и мне помогало лишь полная замена проекта на стандартный сфовский от urshadow
Это звучит смешно, но просто переименовав плагин с "SFPlugin" на любое другое название, он стал нормально выгружается/загружается :unsure::unsure::unsure::unsure::unsure::unsure:. Пробовал как проект из 5.3.3, так и 5.4.1, и везде не выгружался полностью с дефолтным названием. Ладно, спасибо.
 
  • Нравится
Реакции: Cake_ и Stiopko

damag

Женюсь на официантке в моем любимом баре
Проверенный
1,150
1,207
Как получить данную иконку и использовать ее?

36827