Добро пожаловать!

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

Зарегистрироваться!
Пользователь
Регистрация
19 Июл 2025
Сообщения
34
Доброго времени суток.
Не могли бы вы поделиться различными уроками по работе с битстримами?
Приветствуются абсолютно любые уроки, как в текстовом, так и в видео формате, как для чайников, так и для прошаренных.
Пример битстримов
pawn:
IPacket:220(playerid, BitStream:bs)
{
    new custom, value[3], text[1000], bool:toggle;
    BS_ReadValue(bs, PR_IGNORE_BITS, 8, PR_UINT8, custom);

    switch custom do
    {
        case 0:
        {
            BS_ReadValue(bs, PR_UINT8, value[0], PR_IGNORE_BITS, 32);

            if(PI[playerid][pHotKeyInfo][4] == value[0]) callcmd::lock(playerid);
            else if(PI[playerid][pHotKeyInfo][5] == value[0]) callcmd::anims(playerid, "");
            else if(PI[playerid][pHotKeyInfo][6] == value[0]) callcmd::radialmenu(playerid);
            else if(PI[playerid][pHotKeyInfo][7] == value[0]) callcmd::phone(playerid);
            else if(PI[playerid][pHotKeyInfo][8] == value[0]) callcmd::wboook(playerid);
            else if(value[0] == 73) callcmd::invent(playerid);
            else if(value[0] == 2 && IsPlayerInAnyVehicle(playerid)) SendVehiclePacketData(GetPlayerVehicleID(playerid), 180, bool:pTemp[playerid][pBlinkLight] = !pTemp[playerid][pBlinkLight]);
        }

        case 1:
        {
            BS_ReadBool(bs, toggle);
            setPlayerCustomIcon(playerid, 0, toggle);
        }

        case 18, 63:
        {
            new clickedType[4];
            new value_text;

            if(GetPlayerLauncher(playerid) == 2)
                BS_ReadValue(bs, PR_UINT8, clickedType[0], PR_UINT32, clickedType[1], PR_UINT32, clickedType[2]);

            BS_ReadValue(bs, PR_UINT16, value_text, PR_STRING, text, value_text);

            if(GetString(text, "onSvelteAppInit") && GetPlayerLauncher(playerid) == 1)
                executeEvent(playerid, 0, "window.executeEvent('event.donationshop.updateDonateJsonUrl', `[\"https://pc.az-ins.com/resource/frontend/donate/may24_donation_v5.json\"]`);");

            ShowCefPublic(playerid, text, Int_PackMassive(0, clickedType));
        }

        case 20:
        {
            BS_ReadValue(bs,
                PR_UINT32, pTemp[playerid][cefResolution][0],
                PR_UINT32, pTemp[playerid][cefResolution][1]);
                
            createBrowser(playerid, 0, "file:///frontend/svelte_js/index.html", "or7lq8Q8heur");
        }

        case 50:
        {
            UploadClientSideMapping(playerid, "streamer_exteriors.bin");
            UploadClientSideMapping(playerid, "streamer_interiors.bin");
            UploadClientSideMapping(playerid, "remove_building.dat");
        }

        case 22:
        {
            BS_ReadValue(bs, PR_UINT32, value[0]);
            
            if(value[0] == 1 && IsPlayerInDynamicArea(playerid, ScreenAreaId[0]))
                PI[playerid][pScreenBrowserInit] = true;
        }

        case 24:
        {
            BS_ReadValue(bs,
                PR_UINT32, value[0],
                PR_BOOL, toggle);

            pTemp[playerid][cefFocus] = toggle;

            if(!pTemp[playerid][cefFocus])
                hidePlayerCefInterface(playerid, true);
        }

        /*case 41:
        {
            BS_ReadValue(bs,
                PR_UINT8, value[0]);

            if(GetRadioZone(GetPlayerVehicleID(playerid)) != -1)
            {
                if(!value[0])
                    destroyZoneAZVoice(GetRadioZone(GetPlayerVehicleID(playerid)), false, INVALID_PLAYER_ID);

                else
                    playZoneAZVoice(GetRadioZone(GetPlayerVehicleID(playerid)), "http://arizona.gtasounds.com/launchstart.mp3", 0, INVALID_PLAYER_ID);
            }
        } */

        /*case 140:
        {
            BS_ReadString32(bs, text);
            if(TextFind(text, "-auth_cef_enable")) pTemp[playerid][cefAuth] = true;
            else pTemp[playerid][cefAuth] = false;
        }*/

        case 167:
        {
            BS_ReadValue(bs,
                PR_UINT8, value[0]);

            GameTextForPlayer(playerid, value[0] == 1 ? "~g~‹XOƒ" : "~r~‹‘XOƒ", 2000, 4);
        }

        case 168:
        {
            BS_ReadValue(bs,
                PR_UINT8, value[0],
                PR_UINT16, value[1]);

            if(GetPVarInt(playerid, !"teleportPortalGun") < Global_Time)
            {
                UpdatePlayerPos(playerid, portalGun[value[1]][value[0] == 2 ? 0 : 1][0], portalGun[value[1]][value[0] == 2 ? 0 : 1][1], portalGun[value[1]][value[0] == 2 ? 0 : 1][2]);
                SetPlayerFacingAngle(playerid, portalGun[playerid][value[0] == 2 ? 0 : 1][3]);
            //    playZoneAZVoice(GetRadioZone(playerid, 2), "https://arizona.azsounds.cloud/gate_system/classic_close.mp3", 0, playerid);
                SetPVarInt(playerid, !"teleportPortalGun", Global_Time + 15);
            }
        }

        case 169:
        {
            new Float:position[5];

            BS_ReadValue(bs,
                PR_UINT8, value[0],
                PR_FLOAT, position[0],
                PR_FLOAT, position[1],
                PR_FLOAT, position[2],
                PR_FLOAT, position[3],
                PR_UINT32, value[1],
                PR_FLOAT, position[4]);

            if(portalGun[playerid][value[0] - 1][0] != 0.0 && portalGun[playerid][value[0] - 1][1] != 0.0 && portalGun[playerid][value[0] - 1][2] != 0.0)
                DestroyPlayerPortal(playerid, value[0]);

            CreatePlayerPortal(playerid, value[0], value[1], portalGun[playerid][value[0] - 1][0] = position[0], portalGun[playerid][value[0] - 1][1] = position[1], portalGun[playerid][value[0] - 1][2] = position[2], portalGun[playerid][value[0] - 1][3] = position[3], portalGun[playerid][value[0] - 1][4] = position[4]);
        }
    }

    return true;
}
 
Сверху