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

hokageud
Завсегдатый
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 пользователей онлайн

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

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

    • whccompany
      От whccompany
      World Hosting Corporations 
                                                                GTA Game Host 
                                               CRMP PC& Mobile Project 
                                           Rostov Role Play | Rostov RP 
      Друзья, нашему проекту срочно требуется маппер для масштабного маппинга, нам требуется сделать:
      1) Городской маппинг (удалить города и создать новые города, сначало необходимо создать город Ростов-на-Дону ; посёлок Коксовый и село Ряженое, создать используя стоковые фотографии из Яндекса и Гугла)
      2) Фракционный маппинг ( Текстуры + Экстерьер + Интерьер )
      3) Маппинг работ ( Текстуры + Экстерьеры + Интерьеры )
      Бюджет до 60 000 рублей
      Возможно заключение трудового контракта 
      Пишите: ВКонтакте

    • gooding
      От gooding


      Скачать файл PAR RP | Уникальный мод без багов
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
       
       

      Добавил gooding Добавлено 20.11.2024 Категория Моды Автор GOODING (Я)  
    • gooding
      От gooding
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
       
       

    • Kalinin
      От Kalinin
      1. Набираю команду для создания CRMP сервера.
      2. Вакансии  которые свободны. Связь через TG @kalinin_sql
      Нам нужны;
      1.Кодеры
      2.Маперы
      3.СММ
      Так-же дружная работа. По поводу зарплаты будем обговаривать все лично в беседе ТГ