[ARZ] Система стадии смерти

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

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

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Пользователь
Регистрация
11 Дек 2024
Сообщения
93
Хай, сливаю систему стадии смерти. Система не фулл, так как не хочу чтобы она быстро обесценилась

пуфн:
//В конец

stock pizdaigroky(playerid)
{
    f(global_str, sizeof(global_str), "Сразу отправиться в больницу\nДождаться врачей ({C8FF46}%d BTC{FFFFFF})\n", pTemp[playerid][playerDeathFree] ? 0 : 100000);
    if(playerItemCount(playerid, 1723))
        strcat(global_str, "Поставить укол с адреналина и встать на ноги");
    return SPD(playerid, 1599, DIALOG_STYLE_LIST, !"Вы на грани смерти!", global_str, !"Выбрать", !"");
}


cmd:test(playerid) return pizdaigorky(playerid);


//в OnDialogResponse



        case 1599:
        {
            if(listitem == 1 && playerItemCount(playerid, 1811) >= (!pTemp[playerid][playerDeathFree] ? 100000 : 0))
            {
                pTemp[playerid][playerDeathDoctors] = 1;
                pTemp[playerid][playerDeathTime] = Global_Time + 300;

                if(pTemp[playerid][playerDeathFree]) pTemp[playerid][playerDeathFree]--;
                else removePlayerItem(playerid, 1811, 100000);

                return true;
            }

            pTemp[playerid][playerDeath] = false;

            return BackToBolka(playerid);
        }
 
Профессионал
Активный
Регистрация
20 Мар 2025
Сообщения
393
лучший так можно и свой мод написать!
 
Профессионал
Активный
Регистрация
20 Мар 2025
Сообщения
393
2.14. Запрещено флудить, оффтопить, заниматься флеймом.
окак stock pizdaigroky(playerid)
 
Пользователь
Регистрация
17 Авг 2022
Сообщения
16
Дома буду скину фулл систему стадии
 
Пользователь
Регистрация
17 Авг 2022
Сообщения
16
В enum _temp_
_temp_:
playerDeath,
playerDeathTime,
playerDeathFree,
playerDeathDoctors,
Float:playerDeathPosition[3],

В stock ClearPlayerData
ClearPlayerData:
pTemp[playerid][playerDeath] =
pTemp[playerid][playerDeathDoctors] =
pTemp[playerid][playerDeathTime] = 0;
pTemp[playerid][playerDeathFree] = 5;

В любое место
Stock:
stock ShowPlayerDeathDialog(playerid)
{
    f(global_str, sizeof(global_str), "Сразу отправиться в больницу\nДождаться врачей ({C8FF46}%d BTC{FFFFFF})\n", pTemp[playerid][playerDeathFree] ? 0 : 100000);

    if(playerItemCount(playerid, 1723))
        strcat(global_str, "Поставить укол с адреналина и встать на ноги");

    return SPD(playerid, 1599, DIALOG_STYLE_LIST, !"Вы на грани смерти!", global_str, !"Выбрать", !"");
}

В stock UpdatePlayers()
UpdatePlayers:
if(pTemp[playerid][playerDeath])
{
    if(pTemp[playerid][playerDeathTime] > Global_Time)
        GameTextForPlayerf(playerid, 500, 3, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~%s%d SEC", pTemp[playerid][playerDeathDoctors] ? "DOCTORS WAITING: " : "", pTemp[playerid][playerDeathTime] - Global_Time);

    else ShowPlayerDeathDialog(playerid);
}

CMD для теста кому надо
CMD:
cmd:testdeath(playerid) return ShowPlayerDeathDialog(playerid);

В public OnDialogResponse
Pawn:
case 1599:
{
    if(listitem == 1 && playerItemCount(playerid, 1811) >= (!pTemp[playerid][playerDeathFree] ? 100000 : 0))
    {
        pTemp[playerid][playerDeathDoctors] = 1;
        pTemp[playerid][playerDeathTime] = Global_Time + 300;

        if(pTemp[playerid][playerDeathFree]) pTemp[playerid][playerDeathFree]--;
        else removePlayerItem(playerid, 1811, 100000);

        return true;
    }

    pTemp[playerid][playerDeath] = false;

    return BackToBolka(playerid);
}
Если нужно сравнение stock BackToBolka(playerid)
BackToBolka:
stock BackToBolka(playerid)
{
    if(!IsAArmy(playerid))
    {
        if(IsPlayerToKvadrat(playerid, -891.3302, -2950.0190, 2915.9917, 560.3257)) PI[playerid][pHospCity] = 1;
        else if(IsPlayerToKvadrat(playerid, -2929.6589, -2889.1660, -1326.9077, 1493.1770)) PI[playerid][pHospCity] = 3;
        else PI[playerid][pHospCity] = 2;
    }
    else
    {
        SetPlayerVirtualWorldEx(playerid, 1);
        SetPlayerInterior(playerid, 2);
    }
    if(PI[playerid][pHospital] > 0) PI[playerid][pHospital] --;
    PI[playerid][pHeal] = 1;
    PI[playerid][pHealTime] = 0;
    PlayerLie{playerid} = false;
    TogglePlayerControllable(playerid, true);
    PlayerSpawn(playerid);
    if(IsValidDynamic3DTextLabel(DeathText[playerid])) DestroyDynamic3DTextLabel(DeathText[playerid]);
    return true;
}
 
Пользователь
Регистрация
17 Авг 2022
Сообщения
16
слей систему /bonus:)
ID предметов поменяете сами под свои

В любое место
Stock:
stock ShowBonusMenu(playerid, type)
{
    global_str = "{FFDB8B}Награда\t{FFDB8B}Необходимо отыграть\t{FFDB8B}Статус";
    for(new i, s; i < sizeof(BonusInfo); i++)
    {
        if(BonusInfo[i][bonusType] != type) continue;
        if(type) s++;
        strcat(global_str, (str_f("\n{F6AB2F}[%d]{bfbbba} %s\t%i часов\t%s", !type ? i + 1 : s, BonusInfo[i][bonusName], BonusInfo[i][bonusTime], BonusInfo[i][bonusTime] > BonusTime[playerid][type] ? "{bfbbba}Недоступно" : BonusTake[playerid][type][i] ? "{FFDB8B}Награда уже получена" : "{A8E4A0}Награду можно получить")));
        spdList(playerid, !type ? i : s - 1, i);
    }
    return spdList(playerid, 0, type), SPD(playerid, 27136, DIALOG_STYLE_TABLIST_HEADERS, !"{F6AB2F}Бонусное меню", global_str, !"Далее", !"Отмена");
}

Куда нибудь вверх
bonusInfo:
enum bonusInfo
{
    bonusType,
    bonusName[50],
    bonusTime,
    bonusPrize_type, // 0 - item | 1 - vip | 2 - admin | 3 - rubles
    bonusPrize,
    bonusPrize_amount,
    bonusPrize_enchant
}
new BonusInfo[][bonusInfo] =
{
    {0, "25 AZ RUB", 1, 3, 25, 0, 0},
    {0, "50 AZ RUB", 2, 3, 50, 0, 0},
    {0, "75 AZ RUB", 3, 3, 75, 0, 0},
    {0, "100 AZ RUB", 6, 3, 100, 0, 0},
    {0, "100.000 BTC", 8, 0, 1811, 100000, 0},
    {0, "150.000 BTC", 10, 0, 1811, 150000, 0},
    {0, "200.000 BTC", 13, 0, 1811, 200000, 0},
    {0, "Неоновая подстветка", 15, 0, 6518, 1, 0},
    {0, "Бронежилет «Гравити Фолз»", 20, 0, 6560, 1, 0},
    {0, "Mercedes GT63", 30, 0, 1417, 1, 0},
    {0, "400 AZ RUB", 35, 0, 3, 400, 0},
    {0, "2 запечатанных сертификата на т/с", 40, 0, 4581, 2, 0},
    {0, "500 AZ RUB", 52, 3, 500, 0, 0},
    {0, "Грузовой автомобиль \"Volvo 460\"", 56, 0, 4813, 1, 0},
    {0, "Уникальный транспорт \"Mercedes Vision AVTR\"", 61, 0, 3984, 1, 0},
    {0, "10 Разрешений на номера", 65, 0, 7035, 10, 0},
    {0, "Цепь махинатора", 70, 0, 6313, 1, 0},
    {0, "RGB чемодан", 80, 0, 6269, 1, 0},
    {0, "Нимб всевластия", 90, 0, 8298, 1, 0},
    {0, "Аркана ИО", 100, 0, 8302, 1, 0},
    {1, "Ларец Водителя Автобуса [30шт.]", 3, 0, 3992, 30, 0},
    {1, "Ларец дальнобойщика [30шт.]", 5, 0, 3623, 30, 0},
    {1, "Ларец Олигарха [30шт.]", 7, 0, 2149, 30, 0},
    {1, "Ларец кастомных аксессуаров [30шт.]", 10, 0, 2187, 30, 0},
    {1, "Ларец пилота [75шт.]", 20, 0, 4792, 75, 0},
    {1, "Ларец организации [150шт.]", 25, 0, 3559, 150, 0},
    {1, "Дрон Рабочий [+10]", 30, 0, 5443, 1, 10},
    {1, "Дрон 320 [+12]", 40, 0, 5445, 1, 12},
    {1, "Дрон Диджей [+10]", 50, 0, 5444, 1, 10},
    {1, "Бронежилет [1] [+10]", 60, 0, 3518, 1, 10},
    {1, "Бронежилет [2] [+10]", 70, 0, 3519, 1, 10},
    {1, "Бронежилет [3] [+10]", 80, 0, 3520, 1, 10},
    {2, "50 AZ RUB", 5, 3, 50, 0, 0},
    {2, "100 AZ RUB", 10, 3, 100, 0, 0},
    {2, "150 AZ RUB", 15, 3, 150, 0, 0},
    {2, "200 AZ RUB", 20, 3, 200, 0, 0},
    {2, "250 AZ RUB", 25, 3, 250, 0, 0},
    {2, "300 AZ RUB", 30, 3, 300, 0, 0},
    {2, "350 AZ RUB", 35, 3, 350, 0, 0},
    {2, "400 AZ RUB", 40, 3, 400, 0, 0},
    {2, "450 AZ RUB", 45, 3, 450, 0, 0},
    {2, "500 AZ RUB", 50, 3, 500, 0, 0}
}, BonusTake[MAX_PLAYERS][3][sizeof(BonusInfo)], BonusTime[MAX_PLAYERS][3];

CMD для bonus
CMD:
cmd:bonus(playerid)
{
    static const bonusType_name[][] = {"Общедоступный", "Фракционный", "Ежедневный"};
    mysql_string[0] = EOS;
    for(new i; i < sizeof(bonusType_name); i++)
        strcat(mysql_string, (str_f("\n{F6AB2F}[%d]{ffffff} %s", i + 1, bonusType_name[i])));
    return SPD(playerid, 27135, DIALOG_STYLE_LIST, !"{F6AB2F}Выборочное бонусное меню", mysql_string, !"Выбор", !"Отмена");
}

В public OnDialogResponse
Pawn:
case 27135:
{
      if(!response) return false;
      return ShowBonusMenu(playerid, listitem);
}
 
Сверху