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

Ya Zaregalsya

Известный
387
135
C++:
pVehicle->pGTAVehicle = GAME->GetPools()->AddVehicle(static_cast<eVehicleTypes>(pVehicle->modelId), NULL, NULL);
Крашит на некоторых моделях машин. Если 560 или 400, то всё ок, если 578, то краш. В чём может быть проблема?
 

Ya Zaregalsya

Известный
387
135
Как получить возвращаемое значение SF->getCLEO()->callOpcode() если это не буль?

C++:
pVehicle->pGTAVehicle = GAME->GetPools()->AddVehicle(static_cast<eVehicleTypes>(pVehicle->modelId), NULL, NULL);
Крашит на некоторых моделях машин. Если 560 или 400, то всё ок, если 578, то краш. В чём может быть проблема?
Забыл подгрузить модельку, теперь всё ок. Некоторые модели предзагружаются на старте игры, поэтому глюк может всплыть коварным образом:
C++:
SF->getSAMP()->registerChatCommand("spawnveh", [](std::string param)->void
            {
                int modelId = std::stoi(param);
                CVector spawnPos = DevKit::getActorPos(PLAYER_PED);
                if (!GAME->GetStreaming()->HasModelLoaded(modelId))
                {
                    GAME->GetStreaming()->RequestModel(modelId, 0);
                    GAME->GetStreaming()->LoadAllRequestedModels();
                }
                CVehicle* pVehicle = GAME->GetPools()->AddVehicle(static_cast<eVehicleTypes>(modelId), NULL, NULL);
                pVehicle->SetPosition(&spawnPos);
                GAME->GetWorld()->Add(pVehicle, CObject_Constructor);

            });
 
Последнее редактирование:

Ya Zaregalsya

Известный
387
135
Есть исходники как читать рпс InitGame?

Upd:
C++:
void InitGame(RPCParameters *rpcParams)
{
    PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
    int iBitLength = rpcParams->numberOfBitsOfData;

    RakNet::BitStream bsInitGame((unsigned char *)Data,(iBitLength/8)+1,false);

    PLAYERID MyPlayerID;
    bool bLanMode, bStuntBonus;
    BYTE byteVehicleModels[212];

    bool m_bZoneNames, m_bUseCJWalk, m_bAllowWeapons, m_bLimitGlobalChatRadius;
    float m_fGlobalChatRadius, m_fNameTagDrawDistance;
    bool m_bDisableEnterExits, m_bNameTagLOS, m_bManualVehicleEngineAndLight;
    bool m_bShowPlayerTags;
    int m_iShowPlayerMarkers;
    BYTE m_byteWorldTime, m_byteWeather;
    float m_fGravity;
    int m_iDeathDropMoney;
    bool m_bInstagib;

    bsInitGame.ReadCompressed(m_bZoneNames);
    bsInitGame.ReadCompressed(m_bUseCJWalk);
    bsInitGame.ReadCompressed(m_bAllowWeapons);
    bsInitGame.ReadCompressed(m_bLimitGlobalChatRadius);
    bsInitGame.Read(m_fGlobalChatRadius);
    bsInitGame.ReadCompressed(bStuntBonus);
    bsInitGame.Read(m_fNameTagDrawDistance);
    bsInitGame.ReadCompressed(m_bDisableEnterExits);
    bsInitGame.ReadCompressed(m_bNameTagLOS);
    bsInitGame.ReadCompressed(m_bManualVehicleEngineAndLight); //
    bsInitGame.Read(iSpawnsAvailable);
    bsInitGame.Read(MyPlayerID);
    bsInitGame.ReadCompressed(m_bShowPlayerTags);
    bsInitGame.Read(m_iShowPlayerMarkers);
    bsInitGame.Read(m_byteWorldTime);
    bsInitGame.Read(m_byteWeather);
    bsInitGame.Read(m_fGravity);
    bsInitGame.ReadCompressed(bLanMode);
    bsInitGame.Read(m_iDeathDropMoney);
    bsInitGame.ReadCompressed(m_bInstagib);

    // Server's send rate restrictions
    if(!settings.uiForceCustomSendRates)
    {
        bsInitGame.Read(iNetModeNormalOnfootSendRate);
        bsInitGame.Read(iNetModeNormalIncarSendRate);
        bsInitGame.Read(iNetModeFiringSendRate);
        bsInitGame.Read(iNetModeSendMultiplier);
    }
    else
        bsInitGame.SetReadOffset(bsInitGame.GetReadOffset() + 4*32);

    bsInitGame.Read(m_bLagCompensation);

    BYTE unk;
    bsInitGame.Read(unk);
    bsInitGame.Read(unk);
    bsInitGame.Read(unk);

    BYTE byteStrLen;
    bsInitGame.Read(byteStrLen);
    if(byteStrLen)
    {
        memset(g_szHostName,0,sizeof(g_szHostName));
        bsInitGame.Read(g_szHostName, byteStrLen);
    }
    g_szHostName[byteStrLen] = '\0';

    bsInitGame.Read((char *)&byteVehicleModels[0],212);

    g_myPlayerID = MyPlayerID;

    char szTitle[64];
    if(settings.iConsole)
    {
        sprintf(szTitle, "%s (%d) - %.16s - RakSAMP %s", g_szNickName, g_myPlayerID, g_szHostName, RAKSAMP_VERSION);
        SetConsoleTitle(szTitle);
        Log("Connected to %.64s\n", g_szHostName);
    }
    else
    {
        sprintf(szTitle, "%s (%d) - RakSAMP %s", g_szNickName, g_myPlayerID, RAKSAMP_VERSION);
        SetWindowText(hwnd, szTitle);
        Log("Connected to %.64s", g_szHostName);
    }

    iGameInited = 1;
}
 
Последнее редактирование:

walkerdev

Новичок
7
0
Как установить усталость игроку?
Т.е., установить stamina (выносливость) для игрока, у которого запущен данных SF скрипт.
И вопрос, при установке его скорость бега будет видна только ему, или всем игрокам? (быстро бежит/уставший)