В теме 1 сообщение

Завсегдатый
enum AIRDROP_INFO
{
    AirDropStatus,
    AirDropContent[7],
    AirDropObject[2],
    AirDropTimer,
    Text3D:AirDropText,
    Float:AirDropBoxPos[6],
    Float:AirDropParachutePos[6]
};

new AirDropInfo[][AIRDROP_INFO] = {
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-1286.600342694.2558650.517200.000000.000000.00000}, {-1286.624762694.3742750.929900.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-221.156692603.2656363.159400.000000.000000.00000}, {-221.183402603.2824763.586400.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {382.619602539.4711916.997800.000000.000000.00000}, {382.588012539.5319817.407500.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {587.976381669.636237.440900.000000.000000.00000}, {587.970281669.661877.847200.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {340.20050875.7172220.853300.000000.000000.00000}, {340.18100875.7415221.259700.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-236.644261216.3377720.191200.000000.000000.00000}, {-236.665501216.3150620.598900.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {53.728941167.4448219.112800.000000.000000.00000}, {53.710301167.4323719.521900.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-1206.219481824.3504642.174300.000000.000000.00000}, {-1206.222051824.4086942.582900.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-1929.696662383.6884849.946800.000000.000000.00000}, {-1929.714842383.7468350.356100.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-523.890202593.0205153.843800.000000.000000.00000}, {-523.907592593.1184154.251000.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-923.226012021.7266861.367100.000000.000000.00000}, {-923.214602021.7976161.774500.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {-754.601011639.8321527.619900.000000.000000.00000}, {-754.633421639.9160228.028800.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {681.550421836.428715.688200.000000.000000.00000}, {681.495121836.470836.097100.000000.000000.00000}},
    {0, {0000000}, {INVALID_OBJECT_ID, INVALID_OBJECT_ID}, 0, Text3D:INVALID_3DTEXT_ID,  {6.547121526.4023413.193100.000000.000000.00000}, {6.534601526.4210213.601000.000000.000000.00000}}
};

new
    AirDropIDx = -1,
    AirDropZone = -1,
    STRING_GLOBAL[256];

#define RandomFIX(%1,%2)        (random(%2-%1)+%1)

GetFreeAirDropID()
{
    new airdrop_checked = -1;
    for(new i = sizeof(AirDropInfo)-1; i != -1; i--)
    {
        airdrop_checked = random(sizeof(AirDropInfo)-1);
        if(AirDropInfo[airdrop_checked][AirDropStatus] == 0return airdrop_checked;
    }
    return airdrop_checked;
}

CreateAirDrop()
{
    if(AirDropIDx != -1return 1;
    new idx = GetFreeAirDropID();

    STRING_GLOBAL[0] = EOS;
    foreach(new i: Player)
    {
        if(!IsAGang(i) && !IsAMafia(i)) continue;
        if(idx == -1) SendClientMessage(i, 0x33CC66FF"[F] [AirDrop Info]: Приземление AirDrop занимает две с половиной минуты.");
        else
        {
            format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "[F] [AirDrop Info]: AirDrop номер %d отправляется на землю.", idx);
            SendClientMessage(i, 0x33CC66FF, STRING_GLOBAL);
            SendClientMessage(i, 0x33CC66FF"[F] [AirDrop Info]: Приземление AirDrop занимает две с половиной минуты.");
            SendClientMessage(i, 0x33CC66FF"[F] [AirDrop Info]: Примерное местоположение AirDrop отмечено на карте.");
        }
    }


    if(idx == -1return 1;

    AirDropInfo[idx][AirDropStatus] = 0;

    AirDropInfo[idx][AirDropContent][0] = RandomFIX(5002500);
    AirDropInfo[idx][AirDropContent][1] = RandomFIX(5002500);
    AirDropInfo[idx][AirDropContent][2] = RandomFIX(2502500);
    AirDropInfo[idx][AirDropContent][3] = RandomFIX(510);
    AirDropInfo[idx][AirDropContent][4] = RandomFIX(510);
    AirDropInfo[idx][AirDropContent][5] = RandomFIX(510);
    AirDropInfo[idx][AirDropContent][6] = RandomFIX(510);

    if(AirDropInfo[idx][AirDropObject][0] != INVALID_OBJECT_ID) DestroyDynamicObject(AirDropInfo[idx][AirDropObject][0]);
    AirDropInfo[idx][AirDropObject][0] = CreateDynamicObject(2935, AirDropInfo[idx][AirDropBoxPos][0], AirDropInfo[idx][AirDropBoxPos][1], AirDropInfo[idx][AirDropBoxPos][2]+250.000000, AirDropInfo[idx][AirDropBoxPos][3], AirDropInfo[idx][AirDropBoxPos][4], AirDropInfo[idx][AirDropBoxPos][5], -1, -1, -1120.0120.0);

    if(AirDropInfo[idx][AirDropObject][1] != INVALID_OBJECT_ID) DestroyDynamicObject(AirDropInfo[idx][AirDropObject][1]);
    AirDropInfo[idx][AirDropObject][1] = CreateDynamicObject(19335, AirDropInfo[idx][AirDropParachutePos][0], AirDropInfo[idx][AirDropParachutePos][1], AirDropInfo[idx][AirDropParachutePos][2]+250.000000, AirDropInfo[idx][AirDropParachutePos][3], AirDropInfo[idx][AirDropParachutePos][4], AirDropInfo[idx][AirDropParachutePos][5], -1, -1, -1120.0120.0);

    AirDropInfo[idx][AirDropTimer] = 1049;

    AirDropIDx = idx;
    AirDropZone = GangZoneCreate(AirDropInfo[idx][AirDropBoxPos][0]-95, AirDropInfo[idx][AirDropBoxPos][1]-80, AirDropInfo[idx][AirDropBoxPos][0]+70, AirDropInfo[idx][AirDropBoxPos][1]+85);

    foreach(new i: Player)
    {
        if(!IsAGang(i) && !IsAMafia(i)) continue;
        GangZoneShowForPlayer(i, AirDropZone, 0xFFFFFF65);
        GangZoneFlashForPlayer(i, AirDropZone, COLOR_RED);
    }

    new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;

    GetDynamicObjectPos(AirDropInfo[idx][AirDropObject][0], x, y, z);
    GetDynamicObjectRot(AirDropInfo[idx][AirDropObject][0], rx, ry, rz);
    MoveDynamicObject(AirDropInfo[idx][AirDropObject][0], x, y, z-2501.69, rx, ry, rz);

    GetDynamicObjectPos(AirDropInfo[idx][AirDropObject][1], x, y, z);
    GetDynamicObjectRot(AirDropInfo[idx][AirDropObject][1], rx, ry, rz);
    MoveDynamicObject(AirDropInfo[idx][AirDropObject][1], x, y, z-2501.69, rx, ry, rz);
    return 1;
}

CheckAirDrop()
{
    if(AirDropIDx == -1return 1;

    new idx = AirDropIDx;

    AirDropInfo[idx][AirDropTimer]--;

    if(AirDropInfo[idx][AirDropTimer] == 900)
    {
        foreach(new i: Player)
        {
            if(!IsAGang(i) && !IsAMafia(i)) continue;
            STRING_GLOBAL[0] = EOS;
            format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "[F] [AirDrop Info]: AirDrop номер %d приземлился на землю.", idx);
            SendClientMessage(i, 0x33CC66FF, STRING_GLOBAL);
            SendClientMessage(i, 0x33CC66FF"[F] [AirDrop Info]: Примерное местоположение AirDrop отмечено на карте.");
        }
        
        if(AirDropInfo[idx][AirDropObject][1] != INVALID_OBJECT_ID)
        {
            DestroyDynamicObject(AirDropInfo[idx][AirDropObject][1]);
            AirDropInfo[idx][AirDropObject][1] = INVALID_OBJECT_ID;
        }
        STRING_GLOBAL[0] = EOS;
        format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "[ AirDrop ]\n\nОставшееся время: {FFFFFF}%s", ConvertTime(AirDropInfo[idx][AirDropTimer]));
        AirDropInfo[idx][AirDropText] = CreateDynamic3DTextLabel(STRING_GLOBAL, COLOR_MAIN, AirDropInfo[idx][AirDropBoxPos][0], AirDropInfo[idx][AirDropBoxPos][1], AirDropInfo[idx][AirDropBoxPos][2], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, streamer_TESTLOL);
    }
    else if(AirDropInfo[idx][AirDropTimer] == 0)
    {
        STRING_GLOBAL[0] = EOS;
        foreach(new i: Player)
        {
            if(!IsAGang(i) && !IsAMafia(i)) continue;
            format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "[F] [AirDrop Info]: AirDrop номер %d ликвидирован.", idx);
            SendClientMessage(i, 0x33CC66FF, STRING_GLOBAL);
        }

        AirDropInfo[idx][AirDropStatus] = 0;
        for(new i = 0; i < 7; i++) AirDropInfo[idx][AirDropContent][i] = 0;
        if(AirDropInfo[idx][AirDropObject][0] != INVALID_OBJECT_ID)
        {
            DestroyDynamicObject(AirDropInfo[idx][AirDropObject][0]);
            AirDropInfo[idx][AirDropObject][0] = INVALID_OBJECT_ID;
        }
        if(AirDropInfo[idx][AirDropObject][1] != INVALID_OBJECT_ID)
        {
            DestroyDynamicObject(AirDropInfo[idx][AirDropObject][1]);
            AirDropInfo[idx][AirDropObject][1] = INVALID_OBJECT_ID;
        }
        for(new i = 0; i < 2; i++) AirDropInfo[idx][AirDropObject][i] = -1;
        AirDropInfo[idx][AirDropTimer] = 0;
        if(AirDropInfo[idx][AirDropText] != INVALID_3DTEXT_ID)
        {
            DestroyDynamic3DTextLabel(AirDropInfo[idx][AirDropText]);
            AirDropInfo[idx][AirDropText] = INVALID_3DTEXT_ID;
        }
        AirDropIDx = -1;
        GangZoneStopFlashForAll(AirDropZone);
        GangZoneHideForAll(AirDropZone);
        GangZoneDestroy(AirDropZone);
        AirDropZone = -1;
        return 1;
    }
    else
    {
        STRING_GLOBAL[0] = EOS;
        format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "[ AirDrop ]\n\nОставшееся время: {FFFFFF}%s", ConvertTime(AirDropInfo[idx][AirDropTimer]));
        UpdateDynamic3DTextLabelText(AirDropInfo[idx][AirDropText], COLOR_MAIN, STRING_GLOBAL);
    }
    return 1;
}

CMD:airdrop_create(playerid) return CreateAirDrop();

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_WALK)
    {
        for(new idx; idx < sizeof(AirDropInfo); idx++)
        {
            if(IsPlayerInRangeOfPoint(playerid, 5.0, AirDropInfo[idx][AirDropBoxPos][0], AirDropInfo[idx][AirDropBoxPos][1], AirDropInfo[idx][AirDropBoxPos][2]))
            {
                if(AirDropInfo[idx][AirDropTimer] > 900 || AirDropInfo[idx][AirDropTimer] < 1return 1;
                SCM(playerid, -1"вставь свои призы");
            }
        }
    }
}    

на последок вставляем CheckAirDrop(); в секундный таймер

примечания по системе:
нужно вставить свои призы, сделать аирдроп по часам

Заметка от keyl , создано

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От dante34538
      ищу гейм мод самп рп, который не был в пабликах, по цене до 3000р, писать в вк https://vk.com/screamzmorrow
    • От DonK/Key
      Всем привет, помогите кто разбирается, так как я можно сказать начинающий сделать свой КРМП, буду благодарен. Напишите либо тут либо @evreI_sigma (Мой Telegram)