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

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
545
Хорошо, а как через линукс компилить если поставлю на виртуалку, не скажешь?
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
545
Есть мобильный клиент самп. Базируется на 0.3.7, в самом клиенте не реализовано оружие, ходьба, приседания и урон с оружия, так же тюнинг. Как реализовать?
как я знаю, сервер там 0.3.7, а получается, что достаточно научить клиент принимать и отправлять нужные пакеты.
не думаю, что если ты задаёшь такой вопрос, то ты сможешь это реализовать.
ты можешь посмотреть как уже реализовано там что то и делать по аналогии с этим.
 

ALF

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

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
545
это всё не то.

объясняю понятней, вот функция которая создаёт объект, ротация там меняется по трём переменным(вектор, 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
507
Подскажите, если кто-нибудь знает, как работает это? Какие адреса чистит, где их можно узнать итд.
 

Roger571

Известный
58
31

Не особо понимаю с похмелья что тебе требуется в итоге, но попробуй

Вычисляешь угол между объектами с помощью atan2 и переводишь в кватернион.

C++:
void QuaternionFromAngle(float *fQuaternion, float fAngle)
{
    fAngle = DEGTORAD(fAngle);
    float fMatrix[3][3], c = cos(fAngle), s = sin(fAngle);

    // QuaternionRotateZ
    fMatrix[0][0] = c;
    fMatrix[0][1] = s;
    fMatrix[0][2] = 0.0;

    fMatrix[1][0] = -s;
    fMatrix[1][1] = c;
    fMatrix[1][2] = 0.0;

    fMatrix[2][0] = 0.0;
    fMatrix[2][1] = 0.0;
    fMatrix[2][2] = 1.0;

    // GetQuaternionFromMatrix
    fQuaternion[0] = sqrt(Max((float)0, 1.0f + fMatrix[0][0] + fMatrix[1][1] + fMatrix[2][2])) * 0.5f;
    fQuaternion[1] = sqrt(Max((float)0, 1.0f + fMatrix[0][0] - fMatrix[1][1] - fMatrix[2][2])) * 0.5f;
    fQuaternion[2] = sqrt(Max((float)0, 1.0f - fMatrix[0][0] + fMatrix[1][1] - fMatrix[2][2])) * 0.5f;
    fQuaternion[3] = sqrt(Max((float)0, 1.0f - fMatrix[0][0] - fMatrix[1][1] + fMatrix[2][2])) * 0.5f;

    fQuaternion[1] = static_cast < float > (_copysign(fQuaternion[1], fMatrix[2][1] - fMatrix[1][2]));
    fQuaternion[2] = static_cast < float > (_copysign(fQuaternion[2], fMatrix[0][2] - fMatrix[2][0]));
    fQuaternion[3] = static_cast < float > (_copysign(fQuaternion[3], fMatrix[1][0] - fMatrix[0][1]));
}

Пробуй, вроде должно работать
 

ishi

Известный
493
110
Есть функция для поиска последовательности строчных символов:
C++:
int findstring(void* where_, char* what, int whereSize)
{
    void* temp = malloc(strlen(what) + 1);
    int iterator = 0;
    char* yo = new char[strlen(what) + 1];
    yo = (char*)temp;
    char* tempptr = static_cast<char*>(where_);
    while (iterator <= whereSize)
    {
        memcpy(temp, tempptr + iterator, strlen(what));
        yo[strlen(what) + 1] = 0;
        if (strcmp((char*)temp, what) == 0)
        {
            free(temp);
            //delete yo;
            return iterator;
        }
            iterator++;
    }
    return -1;
}
Она копирует из области поиска по n байт длиною равной длине искомого, добавляет на конец 0 и сравнивает. И так, пока не кончится буфер.
Однако, я её раз 10 наверное прогнал по циклу вызвов с одинаковыми параметрами, и примерно 33-39 из 100 вызовов она возвращает ошибку(-1). Лично я тут не вижу ошибки в логике, но результат говорит об обратном.
Помогите понять, где косяк, плиз.