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

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
539
Хорошо, а как через линукс компилить если поставлю на виртуалку, не скажешь?
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

Roger571

Известный
58
31
Хорошо, а как через линукс компилить если поставлю на виртуалку, не скажешь?
Самым простым для тебя будет установка IDE.
Установи CodeBlocks, вот инструкция по его установке, где все подробно расписано и дан пример создания проекта.
Только при создании проекта выбирай не "Console application", а "Shared library". Затем добавляешь файлы своего плагина и компилируешь.
В настройках проекта можешь указать желаемое имя выходного файла.
 

zMViToS_

Новичок
3
0
Есть мобильный клиент самп. Базируется на 0.3.7, в самом клиенте не реализовано оружие, ходьба, приседания и урон с оружия, так же тюнинг. Как реализовать?
 

ALF

Известный
Проверенный
320
539
Есть мобильный клиент самп. Базируется на 0.3.7, в самом клиенте не реализовано оружие, ходьба, приседания и урон с оружия, так же тюнинг. Как реализовать?
как я знаю, сервер там 0.3.7, а получается, что достаточно научить клиент принимать и отправлять нужные пакеты.
не думаю, что если ты задаёшь такой вопрос, то ты сможешь это реализовать.
ты можешь посмотреть как уже реализовано там что то и делать по аналогии с этим.
 

ALF

Известный
Проверенный
320
539
есть два объекта, каждый из них расположен на своей позиции, нужно повернуть объект в сторону другого объекта в трёхмерном пространстве.
я прогуливал школу, вот и туповат чуть-чуть, дайте пожалуйста формулу как можно это высчитать

object one[x y z]
object two[x y z]
как мне высчитать ротацию по всем трём координатам?
 

semenrbt

Известный
4
0
есть два объекта, каждый из них расположен на своей позиции, нужно повернуть объект в сторону другого объекта в трёхмерном пространстве.
я прогуливал школу, вот и туповат чуть-чуть, дайте пожалуйста формулу как можно это высчитать

object one[x y z]
object two[x y z]
как мне высчитать ротацию по всем трём координатам?
а как узнать куда смотрит твой обьект =)
 

Stiopko

Известный
Проверенный
307
218
есть два объекта, каждый из них расположен на своей позиции, нужно повернуть объект в сторону другого объекта в трёхмерном пространстве.
я прогуливал школу, вот и туповат чуть-чуть, дайте пожалуйста формулу как можно это высчитать

object one[x y z]
object two[x y z]
как мне высчитать ротацию по всем трём координатам?


Ну по x и y вот, но это походу не то

C++:
// pos позиция обекта к которому нужно повернутся
// posTo сам обект
float angle = atan2((pos[0] - posTo[0]), (posTo[1] - pos[1])) + M_PI;
 

ALF

Известный
Проверенный
320
539
это всё не то.

объясняю понятней, вот функция которая создаёт объект, ротация там меняется по трём переменным(вектор, x, y, z)
C++:
BOOL Create(WORD nId, int nModel, CVector position, CVector rotation, float fDrawDistance)
{
    return ((BOOL(__thiscall *)(stObjectPool *, WORD, int, CVector, CVector, float))
        (SF->getSAMP()->getSAMPAddr() + 0xF470))(SF->getSAMP()->getInfo()->pPools->pObject, nId, nModel, position, rotation, fDrawDistance);
}
у меня есть координаты моего созданного объекта и координаты того вокруг чего он должен вращаться.
вопрос, как мне из этих двух координат высчитать ротация и повернуть объект в сторону моих координат?
 
  • Нравится
Реакции: Kotof

Stiopko

Известный
Проверенный
307
218
это всё не то.

объясняю понятней, вот функция которая создаёт объект, ротация там меняется по трём переменным(вектор, x, y, z)
C++:
BOOL Create(WORD nId, int nModel, CVector position, CVector rotation, float fDrawDistance)
{
    return ((BOOL(__thiscall *)(stObjectPool *, WORD, int, CVector, CVector, float))
        (SF->getSAMP()->getSAMPAddr() + 0xF470))(SF->getSAMP()->getInfo()->pPools->pObject, nId, nModel, position, rotation, fDrawDistance);
}
у меня есть координаты моего созданного объекта и координаты того вокруг чего он должен вращаться.
вопрос, как мне из этих двух координат высчитать ротация и повернуть объект в сторону моих координат?
Смотри тебе нужно вот это Кватеринион, но я это еще в школе не проходил поэтому хз
 

Akionka

akionka.lua
Проверенный
740
501
Подскажите, если кто-нибудь знает, как работает это? Какие адреса чистит, где их можно узнать итд.