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

ШPEK

Известный
1,476
524
можно как то не дать серверу воспроизводить звук? например, 1169 id звука
C++:
#include <Windows.h>
#include "main.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrPlaySound) {
        DWORD soundId;
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(soundId);
        if (soundId == 1169) return false; // id звука = 1169
    }
        return true;
};

void __stdcall mainloop()
{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            initialized = true;
            SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
        }
    }
}

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

vania3450

Новичок
6
1
у меня есть исходник который создает plugin для сервера, но создает его в dll формате, как можно закомпилить его в so для Linux сервера?
 

Roger571

Известный
58
31
у меня есть исходник который создает plugin для сервера, но создает его в dll формате, как можно закомпилить его в so для Linux сервера?
Для меня самым простым и быстрым решением оказалось просто установить виртуалку и компилировать уже в ней.
Но если интересно, то можешь почитать, вот и еще
 

vania3450

Новичок
6
1
Для меня самым простым и быстрым решением оказалось просто установить виртуалку и компилировать уже в ней.
Но если интересно, то можешь почитать, вот и еще
Хорошо, а как через линукс компилить если поставлю на виртуалку, не скажешь?
 

Stiopko

Известный
Проверенный
307
218
дарова, подскажите почему я не отослать пост запрос, ответ от сайта есть а данные пост почему-то не отправляются

C++:
const char* MyNet::SendPost(const char* file, char* data)
{
    char szReq[1024] = "", szBuffer[1025];
    DWORD dwByteRead = 0;
    BOOL bRead;

    if (mainBuf != nullptr) mainBuf[0] = '\0';

    hHttpRequest = HttpOpenRequest(hHttpSession, "POST", file, 0, 0, 0, INTERNET_FLAG_RELOAD, 0);
    if (hHttpRequest != NULL)
    {
        LPCSTR header;
        header = "Accept: */*";
        HttpAddRequestHeaders(hHttpRequest, header, strlen(header), HTTP_ADDREQ_FLAG_ADD);
        header = "Content-Type: application/json";
        HttpAddRequestHeaders(hHttpRequest, header, strlen(header), HTTP_ADDREQ_FLAG_ADD);
        HttpSendRequest(hHttpRequest, NULL, 0, data, strlen(data));
       
        while (true)
        {
            bRead = InternetReadFile(    hHttpRequest,
                                        szBuffer,
                                        sizeof(szBuffer) - 1,
                                        &dwByteRead);
            if (bRead == FALSE || dwByteRead == 0)
                break;
            szBuffer[dwByteRead] = '\0';
            AddToString(&mainBuf, szBuffer);
        }

        MessageBox(GetForegroundWindow(), mainBuf, "Rab", MB_OK);
    }
    return mainBuf;
}


 

ALF

Известный
Проверенный
320
537
Хорошо, а как через линукс компилить если поставлю на виртуалку, не скажешь?
sudo apt install build-essential - установит всё что надо
g++ -o test test.cpp - компиляция. test - имя выходного файла, test.cpp - имя компилируемого файла
 

_Vine_

Активный
154
57
дарова, подскажите почему я не отослать пост запрос, ответ от сайта есть а данные пост почему-то не отправляются

C++:
const char* MyNet::SendPost(const char* file, char* data)
{
    char szReq[1024] = "", szBuffer[1025];
    DWORD dwByteRead = 0;
    BOOL bRead;

    if (mainBuf != nullptr) mainBuf[0] = '\0';

    hHttpRequest = HttpOpenRequest(hHttpSession, "POST", file, 0, 0, 0, INTERNET_FLAG_RELOAD, 0);
    if (hHttpRequest != NULL)
    {
        LPCSTR header;
        header = "Accept: */*";
        HttpAddRequestHeaders(hHttpRequest, header, strlen(header), HTTP_ADDREQ_FLAG_ADD);
        header = "Content-Type: application/json";
        HttpAddRequestHeaders(hHttpRequest, header, strlen(header), HTTP_ADDREQ_FLAG_ADD);
        HttpSendRequest(hHttpRequest, NULL, 0, data, strlen(data));
    
        while (true)
        {
            bRead = InternetReadFile(    hHttpRequest,
                                        szBuffer,
                                        sizeof(szBuffer) - 1,
                                        &dwByteRead);
            if (bRead == FALSE || dwByteRead == 0)
                break;
            szBuffer[dwByteRead] = '\0';
            AddToString(&mainBuf, szBuffer);
        }

        MessageBox(GetForegroundWindow(), mainBuf, "Rab", MB_OK);
    }
    return mainBuf;
}
Код:
Content-Type: application/json
замени на
Код:
Content-Type: application/x-www-form-urlencoded
 
Последнее редактирование:
  • Нравится
Реакции: Stiopko