Другое SAMPFUNCS | API C++

Cake_

Известный
Проверенный
263
313
How to hook the outcomimg RPC_ServerCommamd?
C++:
bool CALLBACK outcomingRPC(stRakNetHookParams* params)
{
    if (params->packetId == RPCEnumeration::RPC_ServerCommand)
    {
        DWORD commandlength; char commandtext[228];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(commandlength);
        params->bitStream->Read(commandtext, commandlength);
        params->bitStream->ResetReadPointer();
        commandtext[commandlength] = 0;

        if (!strcmp(commandtext, "text"))
        {
                //action
        }
    };
    return true;
}

//to !init in mainloop
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_RPC, OutRPC);
 

Vesca

Новичок
20
0
[QUOTE = "cakebou, post: 348810, member: 128690"] DWORD commandlength; char commandtext [228]; params-> bitStream-> ResetReadPointer (); params-> bitStream-> Read (commandlength); params-> bitStream-> Read (commandtext, commandlength); params-> bitStream-> ResetReadPointer (); commandtext [commandlength] = 0; [/QUOTE]
Where do you take this variables from?
 
Последнее редактирование модератором:

astap_

Известный
Всефорумный модератор
626
597

2Shae

Известный
149
8
Появилась проблема: после выгрузки плагина (pfree), загрузить его обратно (pload) невозможно, так же как и перекомпилировать, мол "файл уже открыт где-то".
В самом плагине лишь 3 дополнительных потока и ImGui, всё это закрывается/выгружается в SF->getGame()->registerGameDestructorCallback.
 

CleanLegend

Известный
Всефорумный модератор
476
928
Появилась проблема: после выгрузки плагина (pfree), загрузить его обратно (pload) невозможно, так же как и перекомпилировать, мол "файл уже открыт где-то".
В самом плагине лишь 3 дополнительных потока и ImGui, всё это закрывается/выгружается в SF->getGame()->registerGameDestructorCallback.
в таком случае файл не выгрузился или используется другой программой
 

-raymond-

Известный
110
9
крашит игру сразу после того как вылез с тачки

C++:
else if (SF->getGame()->getCurrentState() == CHEAT_STATE_VEHICLE)
    {
        sprintf(buf, " [%.2f, %.2f, %.2f]",
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 1],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 2]);

        mainFont->Print(buf, -1, 1.0f, (float)GetSystemMetrics(SM_CYSCREEN) - 20);
    }
 

ALF

Известный
Проверенный
320
537
крашит игру сразу после того как вылез с тачки

C++:
else if (SF->getGame()->getCurrentState() == CHEAT_STATE_VEHICLE)
    {
        sprintf(buf, " [%.2f, %.2f, %.2f]",
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 1],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 2]);

        mainFont->Print(buf, -1, 1.0f, (float)GetSystemMetrics(SM_CYSCREEN) - 20);
    }
ничего не понятно по твоему куску кода
 

-raymond-

Известный
110
9
когда бегаю по карте тупо то все норм, если сяду в тачку то тоже норм, а если вылезу с тачки то краш

C++:
void addHUDItem(float& x, D3DCOLOR color, char* text)
{
    mainFont->Print(text, color, 1.0f + x, (float)GetSystemMetrics(SM_CYSCREEN) - 20);

    (x) += mainFont->DrawLength(text);
}

void renderHUD()
{
    float        x = 0.0f;

    char        buf[MAX_PATH];

    D3DCOLOR    color_disabled = D3DCOLOR_ARGB(191, 255, 255, 255);
    D3DCOLOR    color_enabled = D3DCOLOR_ARGB(220, 44, 167, 212);
    D3DCOLOR    color_text = D3DCOLOR_ARGB(191, 255, 255, 255);



    if (SF->getGame()->getCurrentState() == CHEAT_STATE_ACTOR)
    {
        if (set.hud_time_status)
        {
            SYSTEMTIME lt;
            GetLocalTime(&lt);

            sprintf(buf, "[%02d:%02d:%02d]", lt.wHour, lt.wMinute, lt.wSecond);

            addHUDItem(x, color_text, buf);
        }

        addHUDItem(x, cheat_state_onfoot.inv ? color_enabled : color_disabled, " [Inv]");

        addHUDItem(x, cheat_state_onfoot.airbrk ? color_enabled : color_disabled, " [AirBrk]");

        addHUDItem(x, cheat_state_onfoot.fly ? color_enabled : color_disabled, " [Fly]");

        addHUDItem(x, cheat_state_onfoot.fly ? color_enabled : color_disabled, " [Fly]");

        //COORDS

        sprintf(buf, " [%.2f, %.2f, %.2f]",
            SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE)->base.matrix[4 * 3],
            SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE)->base.matrix[4 * 3 + 1],
            SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE)->base.matrix[4 * 3 + 2]);

        addHUDItem(x, color_text, buf);

        //FPS

        sprintf(buf, " [FPS: %0.0f]", getFPS());

        addHUDItem(x, color_text, buf);
    }

    else if (SF->getGame()->getCurrentState() == CHEAT_STATE_VEHICLE)
    {
        if (set.hud_time_status)
        {
            SYSTEMTIME lt;
            GetLocalTime(&lt);

            sprintf(buf, "[%02d:%02d:%02d]", lt.wHour, lt.wMinute, lt.wSecond);

            addHUDItem(x, color_text, buf);
        }

        addHUDItem(x, cheat_state_vehicle.inv ? color_enabled : color_disabled, " [Inv]");

        addHUDItem(x, cheat_state_vehicle.airbrk ? color_enabled : color_disabled, " [AirBrk]");

        addHUDItem(x, cheat_state_vehicle.fly ? color_enabled : color_disabled, " [Fly]");

        //COORDS

        sprintf(buf, " [%.2f, %.2f, %.2f]",
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 1],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 2]);

        addHUDItem(x, color_text, buf);

        //FPS

        sprintf(buf, " [FPS: %0.0f]", getFPS());

        addHUDItem(x, color_text, buf);
    }
}
 

ALF

Известный
Проверенный
320
537
когда бегаю по карте тупо то все норм, если сяду в тачку то тоже норм, а если вылезу с тачки то краш

C++:
void addHUDItem(float& x, D3DCOLOR color, char* text)
{
    mainFont->Print(text, color, 1.0f + x, (float)GetSystemMetrics(SM_CYSCREEN) - 20);

    (x) += mainFont->DrawLength(text);
}

void renderHUD()
{
    float        x = 0.0f;

    char        buf[MAX_PATH];

    D3DCOLOR    color_disabled = D3DCOLOR_ARGB(191, 255, 255, 255);
    D3DCOLOR    color_enabled = D3DCOLOR_ARGB(220, 44, 167, 212);
    D3DCOLOR    color_text = D3DCOLOR_ARGB(191, 255, 255, 255);



    if (SF->getGame()->getCurrentState() == CHEAT_STATE_ACTOR)
    {
        if (set.hud_time_status)
        {
            SYSTEMTIME lt;
            GetLocalTime(&lt);

            sprintf(buf, "[%02d:%02d:%02d]", lt.wHour, lt.wMinute, lt.wSecond);

            addHUDItem(x, color_text, buf);
        }

        addHUDItem(x, cheat_state_onfoot.inv ? color_enabled : color_disabled, " [Inv]");

        addHUDItem(x, cheat_state_onfoot.airbrk ? color_enabled : color_disabled, " [AirBrk]");

        addHUDItem(x, cheat_state_onfoot.fly ? color_enabled : color_disabled, " [Fly]");

        addHUDItem(x, cheat_state_onfoot.fly ? color_enabled : color_disabled, " [Fly]");

        //COORDS

        sprintf(buf, " [%.2f, %.2f, %.2f]",
            SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE)->base.matrix[4 * 3],
            SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE)->base.matrix[4 * 3 + 1],
            SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE)->base.matrix[4 * 3 + 2]);

        addHUDItem(x, color_text, buf);

        //FPS

        sprintf(buf, " [FPS: %0.0f]", getFPS());

        addHUDItem(x, color_text, buf);
    }

    else if (SF->getGame()->getCurrentState() == CHEAT_STATE_VEHICLE)
    {
        if (set.hud_time_status)
        {
            SYSTEMTIME lt;
            GetLocalTime(&lt);

            sprintf(buf, "[%02d:%02d:%02d]", lt.wHour, lt.wMinute, lt.wSecond);

            addHUDItem(x, color_text, buf);
        }

        addHUDItem(x, cheat_state_vehicle.inv ? color_enabled : color_disabled, " [Inv]");

        addHUDItem(x, cheat_state_vehicle.airbrk ? color_enabled : color_disabled, " [AirBrk]");

        addHUDItem(x, cheat_state_vehicle.fly ? color_enabled : color_disabled, " [Fly]");

        //COORDS

        sprintf(buf, " [%.2f, %.2f, %.2f]",
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 1],
            SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR)->base.matrix[4 * 3 + 2]);

        addHUDItem(x, color_text, buf);

        //FPS

        sprintf(buf, " [FPS: %0.0f]", getFPS());

        addHUDItem(x, color_text, buf);
    }
}
попробуй сделать так
C++:
struct vehicle_info *vinfo = SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_ALIVE);
if(vinfo == nullptr) return;

// vinfo->base.matrix[4 * 3];
 
  • Нравится
Реакции: -raymond-

2Shae

Известный
149
8
Как получить id / handle пассажиров в машине?
 
Последнее редактирование: