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

iAmerican

Известный
Друг
615
257
Как преобразовать вектор скорости машины в одно число? Чтоб было тоже самое что 02E3 возвращает
Посмотри сурс тут - https://www.blast.hk/threads/13382/
хз правда что там твой 02e3 возвращает , но думаю тоже самое.
 
  • Нравится
Реакции: Woofing Giraffe

Nintendo

Новичок
9
1
Вот весь код
PHP:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();
bool lol;
bool bGiveOrTake;
short int iPlayerID;
float fAmmount;
int iWeaponID, iBodyPart;
DWORD rTimer;
stFontInfo *pFont;
char buf[128];

bool CALLBACK outcomingRPC( stRakNetHookParams *params )
{
    if( params->packetId == RPCEnumeration::RPC_GiveTakeDamage)
    if(lol == true)
    {
   params->bitStream->Read(bGiveOrTake);
   params->bitStream->Read(iPlayerID);
   params->bitStream->Read(fAmmount);
   params->bitStream->Read(iWeaponID);
   params->bitStream->Read(iBodyPart);
 

    if(!bGiveOrTake)
    {
       
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(245, 184, 0), "{006400}Попал по: %d | Нанес: %.f | Оружие: %d | Часть тела: %d ",iPlayerID, fAmmount, iWeaponID, iBodyPart);
 

        sprintf(buf, "{006400}/ - %.2f / ", fAmmount );
        rTimer = GetTickCount() + 2000;
    }
    else
    {
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(245, 184, 0), "{8b0000}Урон от: %d | Нанес по мне: %.f | Оружие: %d | Часть тела: %d ",iPlayerID, fAmmount, iWeaponID, iBodyPart);
     
    }
};

    return true;
};


bool CALLBACK Present ( CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
                                 CONST RGNDATA *pDirtyRegion )
{
    if( SUCCEEDED( SF->getRender()->BeginRender() && lol == true))
     if (rTimer >= GetTickCount())
      {
        float sx, sy;
            SF->getGame()->convert3DCoordsToScreen(SF->getSAMP()->getPlayers()->GetOnFootData(iPlayerID)->fPosition[0],SF->getSAMP()->getPlayers()->GetOnFootData(iPlayerID)->fPosition[1],SF->getSAMP()->getPlayers()->GetOnFootData(iPlayerID)->fPosition[2]+1,&sx,&sy);     
        pFont->Print(buf, sx, sy, false );
 
      SF->getRender()->EndRender();  
     
    };

    return true;
};


void CALLBACK testt( std::string param )
{

    lol ^= true;

 
 
    if(lol)
        SF->Log("{006400}ON");
    else
        SF->Log("{8b0000}OFF");

}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
    
        SF->getRakNet()->registerRakNetCallback( RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_RPC, outcomingRPC );
        pFont = SF->getRender()->CreateNewFont("Tahoma", 5, FCR_BORDER );
        SF->getRender()->registerD3DCallback( eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present );
        SF->getSAMP()->registerChatCommand( "dinf", testt );

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
 
  • Нравится
Реакции: [w0te]

Dark_Knight

Me, me and me.
Друг
4,064
2,078
Я или идиот, или так не правильно же будет?
if( SUCCEEDED( SF->getRender()->BeginRender()&& lol ==true))
замени на
if( SUCCEEDED( SF->getRender()->BeginRender()) && lol )
 

Dark_Knight

Me, me and me.
Друг
4,064
2,078
Уже на верном пути тогда. Проверяй что актер существует, а потом только уже получай координаты.
 

DarkExorcist

Новичок
77
3
Код:
BitStream bsClass;
bsClass.Write((DWORD)playerid);
bsClass.Write((DWORD)0xFF0000FF);
bsClass.Write((float)100.0);
bsClass.Write((DWORD)10000);
bsClass.Write("1111",5);
SF->getRakNet()->emulateRecvRPC(59, &bsClass);

При перехвате все работает, а вот при эмуляции - нет. Что не так в коде?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,459
unsigned short - playerid
integer - color
float - draw distance
integer - expire time
byte - string lenght
char - string
 

2Shae

Известный
149
8
Когда-то была темка на форуме, как использовать AntTweakBar в одном плагине, без дополнительного "0 LiteAntTweakBar.sf". Может кто сейчас подсказать как это реализовать? :D
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,962
А какая разница? Без этого .SF тебе все равно придется использовать .DLL.
 

2Shae

Известный
149
8
Что не так? Какую-то фигню выдаёт вместо нужного текста.
Код:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrCreate3DTextLabel)
    {
        WORD ID;
        char text[256];
        DWORD color;
        float pos[3];
        BYTE testLOS;

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(ID);
        params->bitStream->Read(text);
        params->bitStream->Read(color);
        params->bitStream->Read(pos);
        params->bitStream->Read(testLOS);

        SF->getSAMP()->getChat()->AddChatMessage(-1, "ID: %d | Text: %s", ID, text);

    }
Если эт не то, то как считaть 3д текст?
 
Последнее редактирование:

san0

Известный
Друг
411
267
Что не так? Какую-то фигню выдаёт вместо нужного текста.
Код:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrCreate3DTextLabel)
    {
        WORD ID;
        char text[256];
        DWORD color;
        float pos[3];
        BYTE testLOS;

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(ID);
        params->bitStream->Read(text);
        params->bitStream->Read(color);
        params->bitStream->Read(pos);
        params->bitStream->Read(testLOS);

        SF->getSAMP()->getChat()->AddChatMessage(-1, "ID: %d | Text: %s", ID, text);

    }
Если эт не то, то как считaть 3д текст?
Код:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrCreate3DTextLabel)
{
    WORD ID;
    char text[256];

    params->bitStream->ResetReadPointer();
    params->bitStream->Read(ID);
    params->bitStream->SetReadOffset(0xD8);
    SF->getRakNet()->DecodeString(text, 256, params->bitStream);

    SF->getSAMP()->getChat()->AddChatMessage(-1, "ID: %d | Text: %s", ID, text);
}
Полная структура
id - word, color - dword, pos - float[3], DrawDist - float, testLOS - byte, unk - dword(всегда 0xFFFFFF), text - encoded
 
  • Нравится
Реакции: 2Shae