Русское сообщество по скриптингу

Covid mode

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только работоспособных плагинов для AMX Mod X. Новые плагины нужно выкладывать в разделе "Новые плагины".

Covid mode

Сообщение WellasGooD » 09 май 2020, 22:17

covid.png


Автор: wellasgood
Версия: 1.2.4
Требования: ReAPI - для основной версии.
Совместимость: Amx Mod X 1.8.2, Amx Mod X 1.9.0, Amx Mod X 1.10.0 dev
Краткое описание: Коронавирус режим для сервера.

Обновления: Вы должны зарегистрироваться, чтобы видеть ссылки.
Рецензии: Вы должны зарегистрироваться, чтобы видеть ссылки.

Предложения, помощь в проработке идеи: Nebo, Pokemoshka, present, ssx
Перевод на разные языки: rian18, tarsisd2, Yek'-ta, sensej1021
Другая помощь: fantom, Izmayl7
Коронавирус (COVID) режим, добавляет атмосферу масок на сервере.

Плагин может работать в двух режимах:

1. Маски ставятся всем игрокам при спавне автоматически.
2. Маски не ставятся автоматически.

Функционал:

1. Маски можно надевать и снимать через удобное меню.
2. После смерти, смены команды, спавна (нового раунда), маска остается на игроке.
3. Доступ к меню масок по флагу.
4. Есть возможность отнимать жизни (если маска не надета)
5. Каждый игрок может выбрать цвет для маски. (а также, есть возможность рандомного цвета при спавне)
6. Есть возможность сохранять цвет маски, если игрок выходит и повторно заходит на сервер, а также при смене карты.

Внимание! На разных сборках Cs1.6 модели выглядят по разному, по этому маска может куда-то съезжать.

Команды:

say /covid - открытие меню масок.
say /cv - открытие меню масок (mini)

Скомпилируйте плагин.
Скопируйте скомпилированный файл .amxx в директорию: amxmodx/plugins/
Пропишите .amxx в файле amxmodx/configs/plugins.ini
Поместите файл .txt по иерархии в архиве.
Поместите файл .mdl по иерархии в архиве.
Поместите папку и файл .cfg по иерархии в архиве (пункт только для версии под amxx 1.8.2)
Смените карту или перезапустите сервер.
[Основной плагин]

В .sma:
Настройка: ACCESS_FLAG_MENU (ADMIN_BAN|ADMIN_USER)

Определяет с какими флагами можно заходить в меню масок.

Т.е если Вы не поставите через | флаг который есть у випов на Вашем сервере, то они не смогут зайти в это меню.

Через | можно ставить несколько флагов или более (смотря для каких категорий у Вас на сервере нужно будет доступ к меню).

Например, что бы был доступ у админов, випов и обычных игроков, нужно сделать так:

#define ACCESS_FLAG_MENU (ADMIN_BAN|ADMIN_LEVEL_H|ADMIN_USER)

Код: Выделить всё

#define AUTO_CREATE_CONFIG //Авто-создание конфига. (включать только если включен режим MASK_ALL_MODE)

#define ACCESS_FLAG_MENU (ADMIN_BAN|ADMIN_USER) //Мульти флаг, доступ к меню включения/выключения масок и для режима MASK_ACCESS

#define MASK_ALL_MODE //Если включено, то маски всем выставляются при заходе.

//#define MASK_ACCESS //Работает с режимом MASK_ALL_MODE (Если включено, то выдает при спавне маски только игрокам с флагом ACCESS_FLAG_MENU, иначе всем)

#define SAVE_MASK_MODE //Сохранение цвета маски при выходе и повторном заходе игрока, а также при смене карты.

В .cfg (для режима MASK_ALL_MODE):
Код: Выделить всё

// Отнимание жизней при спавне если маска снята. (вкл|выкл - 1|0)
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
cv_mask_health_en "1"

// Количество отнимаемых жизней.
// -
// Default: "5"
cv_mask_health_num "5"

// Сообщение при смене маски (напоминание что будет наказание) и непосредственно при спавне. (вкл|выкл - 1|0)
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
cv_mask_health_msg "1"

[Версия для AMXX 1.8.2]

В .sma:
Код: Выделить всё

#define ACCESS_FLAG_MENU (ADMIN_BAN|ADMIN_USER) //Мульти флаг, доступ к меню включения/выключения масок и для режима MASK_ACCESS

#define MASK_ALL_MODE //Если включено, то маски всем выставляются при заходе.

//#define MASK_ACCESS //Работает с режимом MASK_ALL_MODE (Если включено, то выдает при спавне маски только игрокам с флагом ACCESS_FLAG_MENU, иначе всем)

#define SAVE_MASK_MODE //Сохранение цвета маски при выходе и повторном заходе игрока, а также при смене карты.

В .cfg (для режима MASK_ALL_MODE):
Код: Выделить всё

//Настройки плагина: 'COVID mode'

cv_mask_health_en "1" //Отнимание жизней при спавне если маска снята. (вкл|выкл - 1|0)
cv_mask_health_num "5" //Количество отнимаемых жизней.
cv_mask_health_msg "1"//Сообщение при смене маски (напоминание что будет наказание) и непосредственно при спавне. (вкл|выкл - 1|0)

echo "[COVID mode]: Everything is fine! The configuration file is loaded!"

Код: Выделить всё

/*
* - ----------

 Плагин - "COVID mode"

* - ----------

 Описание:

 Корона вирус (COVID) режим, добавляет атмосферу масок на сервере.

 Плагин может работать в двух режимах:

 1. Маски ставятся всем игрокам при спавне автоматически.
 2. Маски не ставятся автоматически.

* - ----------

 Благодарности:

 Предложения, помощь в проработке идеи: Nebo, Pokemoshka, present, ssx
 Перевод на разные языки: rian18, tarsisd2, Yek'-ta, sensej1021
 Другая помощь: f@ntom

* - ----------

 Поддержка плагина:

 Dev-Cs: @wellasgood
 vk: Вы должны зарегистрироваться, чтобы видеть ссылки.
 Telegram: @WellAsGood

* - ----------

 Ход разработки:

 ver 1.0.0:

 1. Изменены команды для открытия меню, спасибо: Pokemoshka.
 2. Переработано меню. (добавлен признак: ВКЛ ВЫКЛ, спасибо: present)
 3. Правки в части удаления ентити.
 4. Добавлен режим, при котором маски устанавливаются в положение ВКЛ по стандарту (при спавне игрока), далее игрок может сам ее отключить или включить через меню.)
 5. Учет дополнительных моментов, если нужно. (доп. режим, выдача масок только игрокам с флагом доступа к меню вкл/выкл)

* - ----------
*/

/*
 Журнал изменений:

 ver 1.0.1:

 1. Подправлен LANG файл.
 2. Убрана лишняя кнопка в меню.

 ver 1.0.2:

 1. Изменена проверка на открытие меню по флагу.
 2. Добавлен немецкий перевод в LANG файл.

 ver 1.0.3:

 1. Добавлен португальский перевод в LANG файл.
 2. Добавлена возможность установить чуть меньше здоровья тем кто без маски. (настройка #define)
 3. В режим MASK_ALL_MODE добавлен (под режим), забирать жизни при спавне (если снята маска). Для этого дела добавлены квары и другое. Вся настройка кварами. Работает только если включен режим MASK_ALL_MODE. (Если режим MASK_ALL_MODE отключен, то никакие квары и ничего другое задействоваться не будет). Об отнимании жизней. Есть 3 квара: вкл/выкл, количество отнимаемых жизней, выводить ли сообщение при смене маски и непосредственно спавне. Настройте как Вам удобно.
 4. В LANG файл добавлены описание к кварам.
 5. Добавлено много изменений по коду с учетом новых обновлений.

 ver 1.0.4:

 1. Исправлено отображение модели на стандартных моделях игроков.
 2. Изменено наименование модели, что-бы игроки скачивали новую модель заного.

 ver 1.0.5:

 1. В LANG файл было добавлен новый турецкий перевод. (спасибо: Yek'-ta)
 2. В LANG файле был обновлен португальский и немецкий перевод на корректный.

 ver 1.0.6:

 1. Добавлен польский перевод в LANG файл. (спасибо: sensej1021)

 ver 1.0.7:

 1. Удален перевод COVID_ERROR_MSG в LANG файле и исходнике, оставлен по стандарту en.

 ver 1.0.8:

 1. Обнаружена ошибка во всех переводах LANG файла: было COVID_HEALTH_MSN_PRE, стало COVID_HEALTH_MSG_PRE

 ver 1.0.9:

 1. Добавлена проверка на значение квара cv_mask_health_msg ('HealthMsg(PlayerID, 1);' - отсылалось даже если в кваре значение выкл)

 ver 1.1.0:

 1. Дополнена модель маски (добавлены новые текстуры разных цветов)
 2. Добавлен выбор цвета в плагине для каждого игрока отдельно (в меню).
 3. Изменения по коду с учетом новых обновлений.
 4. Дополнен LANG файл.
 5. Изменено наименование модели.

 ver 1.1.1:

 1. В меню масок, при выборе цвета, добавлен пункт: "Рандом". Если игрок активирует это, то при спавне у него будет случайный цвет маски. (только для режима MASK_ALL_MODE)
 2. Изменения по коду с учетом новых обновлений.
 3. Дополнен LANG файл.

 ver 1.1.2:

 1. Поправлена версия плагина AMXX 1.8.2 в исходнике на более понятную.

 ver 1.1.3:

 1. Теперь есть возможность сохранить цвет маски который был выбран в игре. (если игрок выходит с сервера и заходит, а также после смены карты)
 2. Для сохранения задействован #include <nvault>
 3. Включить/отключить сохранение: откомментируйте или закомментируйте 'define SAVE_MASK_MODE'
 4. Правка кода с учетом новых обновлений.

 ver 1.1.4:

 1. Добавлена проверка #if defined SAVE_MASK_MODE в части кода функции plugin_init. (если режим сохранения был выкл, то эта часть бы работала)
*/

#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define AUTO_CREATE_CONFIG //Авто-создание конфига. (включать только если включен режим MASK_ALL_MODE)

#define MULTI_LANGUAGE(%0) fmt("%L", LANG_SERVER, %0)

#define ACCESS_FLAG_MENU (ADMIN_BAN|ADMIN_USER) //Мульти флаг, доступ к меню включения/выключения масок и для режима MASK_ACCESS

#define MASK_ALL_MODE //Если включено, то маски всем выставляются при заходе.

//#define MASK_ACCESS //Работает с режимом MASK_ALL_MODE (Если включено, то выдает при спавне маски только игрокам с флагом ACCESS_FLAG_MENU, иначе всем)

#if defined MASK_ALL_MODE
 #define SAVE_MASK_MODE //Сохранение цвета маски при выходе и повторном заходе игрока, а также при смене карты.

 #if defined SAVE_MASK_MODE
 #include <nvault>
 new Vault;
 #endif

 #define MAX_COLOR_NUM 13 //Количество поддерживаемых цветов в модели и + 1 рандом.
#else
 #define MAX_COLOR_NUM 12 //Количество поддерживаемых цветов в модели.
#endif

new const PLUGIN[] = "COVID mode";
new const VERSION[] = "1.1.4";
new const AUTHOR[] = "wellasgood";

new const MEDICAL_MODEL[] = "models/medical-mask/med-mask_colors.mdl";

new Model, Entity[MAX_PLAYERS+1], MaskColor[MAX_PLAYERS+1];

#if defined MASK_ALL_MODE
new bool:Check[MAX_PLAYERS+1];

enum _:CVAR_DATA
{
    MASK_HEALTH_EN,
    MASK_HEALTH_NUM,
    MASK_HEALTH_MSG
};

new eCvarData[CVAR_DATA], bool:CheckHealth[MAX_PLAYERS+1];
#endif

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_dictionary("covid.txt");

    register_clcmd("say /covid", "cmdOpenMenu");
    register_clcmd("say /cv", "cmdOpenMenu");

    register_menu("CovidMenu", 1023, "Handle_CovidMenu", 0);

    #if defined MASK_ALL_MODE
    RegisterHookChain(RG_CBasePlayer_Spawn, "EventSpawn", true);

    RegCvars();

    #if defined AUTO_CREATE_CONFIG
    AutoExecConfig(true, "COVID mode");
    #endif
    #endif

    #if defined SAVE_MASK_MODE
    Vault = nvault_open("Covid_save");

    if(Vault == INVALID_HANDLE){
        set_fail_state("Error opening nVault file!");
    }
    #endif
}

#if defined MASK_ALL_MODE
RegCvars()
{
    bind_pcvar_num(create_cvar(
        .name = "cv_mask_health_en",
        .string = "1",
        .description = MULTI_LANGUAGE("DESCRIPTION_CVAR_HEALTH_EN"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = true,
        .max_val = 1.0),
        eCvarData[MASK_HEALTH_EN]
    );

    bind_pcvar_num(create_cvar(
        .name = "cv_mask_health_num",
        .string = "5",
        .description = MULTI_LANGUAGE("DESCRIPTION_CVAR_HEALTH_NUM"),
        .has_min = false,
        .min_val = 0.0,
        .has_max = false,
        .max_val = 0.0),
        eCvarData[MASK_HEALTH_NUM]
    );

    bind_pcvar_num(create_cvar(
        .name = "cv_mask_health_msg",
        .string = "1",
        .description = MULTI_LANGUAGE("DESCRIPTION_CVAR_HEALTH_MSG"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = true,
        .max_val = 1.0),
        eCvarData[MASK_HEALTH_MSG]
    );
}
#endif

public plugin_precache()
{
    if(!file_exists(fmt("\%s", MEDICAL_MODEL)))
    {
        set_fail_state("Error! Model not found");
    }
    else
    {
        Model = precache_model(MEDICAL_MODEL);
    }
}

#if defined MASK_ALL_MODE
public client_putinserver(PlayerID)
{
    if(is_user_bot(PlayerID) || is_user_hltv(PlayerID))
    {
        return;
    }

    Check[PlayerID] = false;

    if(eCvarData[MASK_HEALTH_EN])
    {
        CheckHealth[PlayerID] = false;
    }

    #if defined MASK_ACCESS
    if(get_user_flags(PlayerID) & ACCESS_FLAG_MENU)
    {
        CreateEnt(PlayerID);
    }
    #else
    CreateEnt(PlayerID);
    #endif

    #if defined SAVE_MASK_MODE
    new AuthID[MAX_AUTHID_LENGTH], Data[3];
    get_user_authid(PlayerID, AuthID, charsmax(AuthID));

    new timestamp, AccessResult = nvault_lookup(Vault, AuthID, Data, charsmax(Data), timestamp);

    if(AccessResult)
    {
        MaskColor[PlayerID] = str_to_num(Data);
    }
    #endif
}

public EventSpawn(PlayerID)
{
    if(!is_user_alive(PlayerID))
    {
        return;
    }

    if(eCvarData[MASK_HEALTH_EN])
    {
        if(CheckHealth[PlayerID])
        {
            new Float:HP = get_entvar(PlayerID, var_health);
            set_entvar(PlayerID, var_health, HP - eCvarData[MASK_HEALTH_NUM]);

            if(eCvarData[MASK_HEALTH_MSG])
            {
                HealthMsg(PlayerID, 2);
            }
        }
    }

    if(Entity[PlayerID] && is_entity(Entity[PlayerID]))
    {
        if(!Check[PlayerID])
        {
            SetMask(PlayerID);
        }

        if(MaskColor[PlayerID] == 12)
        {
            new RandomNum = random_num(0, MAX_COLOR_NUM - 2);
            set_entvar(Entity[PlayerID], var_skin, RandomNum);
        }

        #if defined SAVE_MASK_MODE
        if(MaskColor[PlayerID] != 12)
        {
            set_entvar(Entity[PlayerID], var_skin, MaskColor[PlayerID]);
        }
        #endif
    }
}
#endif

public client_disconnected(PlayerID)
{
    RemoveMask(PlayerID);
    MaskColor[PlayerID] = 0;
}

public cmdOpenMenu(PlayerID)
{
    if(get_user_flags(PlayerID) & ACCESS_FLAG_MENU)
    {
        CovidMenu(PlayerID);
    }

    return PLUGIN_HANDLED;
}

CovidMenu(PlayerID)
{
    new Menu[MAX_MENU_LENGTH], Keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_0;
    new Len = formatex(Menu, charsmax(Menu), "%L^n^n", PlayerID, "COVID_MENU_TITLE");

    Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[1] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_INFO", PlayerID, Entity[PlayerID] == 0 ? "COVID_MENU_ITEM_OFF" : "COVID_MENU_ITEM_ON");

    if(Entity[PlayerID] == 0)
    {
        Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\r%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, "COVID_MENU_ITEM_COLOR_OFF");
    }
    else
    {
        Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\r%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, fmt("COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID]));
    }

    formatex(Menu[Len], charsmax(Menu) - Len, "\r[0] \y# \w%L", PlayerID, "COVID_MENU_EXIT");
    return show_menu(PlayerID, Keys, Menu, -1, "CovidMenu");
}

public Handle_CovidMenu(PlayerID, Keys)
{
    switch(Keys)
    {
        case 0:
            {
                if(Entity[PlayerID] && is_entity(Entity[PlayerID]))
                {
                    RemoveMask(PlayerID);

                    MaskColor[PlayerID] = 0;

                    #if defined MASK_ALL_MODE
                    Check[PlayerID] = false;

                    if(eCvarData[MASK_HEALTH_EN])
                    {
                        CheckHealth[PlayerID] = true;

                        if(eCvarData[MASK_HEALTH_MSG])
                        {
                            HealthMsg(PlayerID, 1);
                        }
                    }
                    #endif
                }
                else
                {
                    CreateEnt(PlayerID);
                    SetMask(PlayerID);

                    #if defined MASK_ALL_MODE
                    Check[PlayerID] = true;

                    if(eCvarData[MASK_HEALTH_EN])
                    {
                        CheckHealth[PlayerID] = false;

                        if(eCvarData[MASK_HEALTH_MSG])
                        {
                            HealthMsg(PlayerID, 1);
                        }
                    }
                    #endif
                }
            }
        case 1:
            {
                if(Entity[PlayerID] != 0)
                {
                    MaskColor[PlayerID] = (MaskColor[PlayerID] + 1) % MAX_COLOR_NUM;

                    if(MaskColor[PlayerID] != 12)
                    {
                        set_entvar(Entity[PlayerID], var_skin, MaskColor[PlayerID]);

                        #if defined SAVE_MASK_MODE
                        new AuthID[MAX_AUTHID_LENGTH];
                        get_user_authid(PlayerID, AuthID, charsmax(AuthID));

                        nvault_set(Vault, AuthID, MaskColor[PlayerID]);
                        #endif
                    }
                }
            }
        case 9:
            {
                return PLUGIN_HANDLED;
            }
    }

    CovidMenu(PlayerID);
    return PLUGIN_HANDLED;
}

SetMask(PlayerID)
{
    set_entvar(Entity[PlayerID], var_body, 0);
}

RemoveMask(PlayerID)
{
    if(Entity[PlayerID] && is_entity(Entity[PlayerID]))
    {
        set_entvar(Entity[PlayerID], var_flags, FL_KILLME);
        set_entvar(Entity[PlayerID], var_nextthink, get_gametime());
        Entity[PlayerID] = 0;
    }
}

CreateEnt(PlayerID)
{
    if((Entity[PlayerID] = rg_create_entity("info_target")))
    {
        set_entvar(Entity[PlayerID], var_classname, "_covid_medical_mask");
        set_entvar(Entity[PlayerID], var_model, MEDICAL_MODEL);
        set_entvar(Entity[PlayerID], var_modelindex, Model);
        set_entvar(Entity[PlayerID], var_movetype, MOVETYPE_FOLLOW);
        set_entvar(Entity[PlayerID], var_aiment, PlayerID);
    }
}

#if defined MASK_ALL_MODE
HealthMsg(PlayerID, num)
{
    client_print_color(PlayerID, print_team_default, "%l", num == 1 ? "COVID_HEALTH_MSG_PRE" : "COVID_HEALTH_MSG_POST", eCvarData[MASK_HEALTH_NUM]);
}
#endif

Код: Выделить всё

/*
* - ----------

 Плагин - "COVID mode" [SPECIAL AMXX 1.8.2 VERSION]

 Сделано для поддержки тех пользователей, которые еще на старом AMXX 1.8.2)

 Функционал этого плагина дублирует основной плагин.

* - ----------

 Поддержка плагина:

 Dev-Cs: @wellasgood
 vk: Вы должны зарегистрироваться, чтобы видеть ссылки.
 Telegram: @WellAsGood

* - ----------
*/

/*
 Журнал изменений:

 ver 1.0.1:

 1. Подправлен LANG файл.
 2. Убрана лишняя кнопка в меню.

 ver 1.0.2:

 1. Изменена проверка на открытие меню по флагу.
 2. Добавлен немецкий перевод в LANG файл.

 ver 1.0.3:

 1. Добавлен португальский перевод в LANG файл.
 2. Добавлена возможность установить чуть меньше здоровья тем кто без маски. (настройка #define)
 3. В режим MASK_ALL_MODE добавлен (под режим), забирать жизни при спавне (если снята маска).
 4. В LANG файл добавлены описание к кварам.
 5. Добавлено много изменений по коду с учетом новых обновлений.

 ver 1.0.4:

 1. Исправлено отображение модели на стандартных моделях игроков.
 2. Изменено наименование модели, что-бы игроки скачивали новую модель заного.

 ver 1.0.5:

 1. В LANG файл было добавлен новый турецкий перевод. (спасибо: Yek'-ta)
 2. В LANG файле был обновлен португальский и немецкий перевод на корректный.

 ver 1.0.6:

 1. Добавлен польский перевод в LANG файл. (спасибо: sensej1021)

 ver 1.0.7:

 1. Удален перевод COVID_ERROR_MSG в LANG файле и исходнике, оставлен по стандарту en.

 ver 1.0.8:

 1. Обнаружена ошибка во всех переводах LANG файла: было COVID_HEALTH_MSN_PRE, стало COVID_HEALTH_MSG_PRE

 ver 1.0.9:

 1. Добавлена проверка на значение квара cv_mask_health_msg ('HealthMsg(PlayerID, 1);' - отсылалось даже если в кваре значение выкл)

 ver 1.1.0:

 1. Дополнена модель маски (добавлены новые текстуры разных цветов)
 2. Добавлен выбор цвета в плагине для каждого игрока отдельно (в меню).
 3. Изменения по коду с учетом новых обновлений.
 4. Дополнен LANG файл.
 5. Изменено наименование модели.

 ver 1.1.1:

 1. В меню масок, при выборе цвета, добавлен пункт: "Рандом". Если игрок активирует это, то при спавне у него будет случайный цвет маски. (только для режима MASK_ALL_MODE)
 2. Изменения по коду с учетом новых обновлений.
 3. Дополнен LANG файл.

 ver 1.1.2:

 1. Поправлена версия плагина AMXX 1.8.2 в исходнике на более понятную.

 ver 1.1.3:

 1. Теперь есть возможность сохранить цвет маски который был выбран в игре. (если игрок выходит с сервера и заходит, а также после смены карты)
 2. Для сохранения задействован #include <nvault>
 3. Включить/отключить сохранение: откомментируйте или закомментируйте 'define SAVE_MASK_MODE'
 4. Правка кода с учетом новых обновлений.

 ver 1.1.4:

 1. Добавлена проверка #if defined SAVE_MASK_MODE в части кода функции plugin_init. (если режим сохранения был выкл, то эта часть бы работала)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>

#define MAX_RESOURCE_PATH_LENGTH 64
#define MAX_PLAYERS 32
#define MAX_MENU_LENGTH 512
#define MAX_AUTHID_LENGTH 64

#define ACCESS_FLAG_MENU (ADMIN_BAN|ADMIN_USER) //Мульти флаг, доступ к меню включения/выключения масок и для режима MASK_ACCESS

#define MASK_ALL_MODE //Если включено, то маски всем выставляются при заходе.

#if defined MASK_ALL_MODE
 #include <hamsandwich>
#endif

//#define MASK_ACCESS //Работает с режимом MASK_ALL_MODE (Если включено, то выдает при спавне маски только игрокам с флагом ACCESS_FLAG_MENU, иначе всем)

#if defined MASK_ALL_MODE
 #define SAVE_MASK_MODE //Сохранение цвета маски при выходе и повторном заходе игрока, а также при смене карты.

 #if defined SAVE_MASK_MODE
 #include <nvault>
 new Vault;
 #endif

 #define MAX_COLOR_NUM 13 //Количество поддерживаемых цветов в модели и + 1 рандом.
#else
 #define MAX_COLOR_NUM 12 //Количество поддерживаемых цветов в модели.
#endif

new const PLUGIN[] = "COVID mode";
new const VERSION[] = "[182] 1.1.4";
new const AUTHOR[] = "wellasgood";

new const MEDICAL_MODEL[] = "models/medical-mask/med-mask_colors.mdl";

new const COVID_DIR[] = "COVID_mode" //папка плагина
new const COVID_CFG[] = "covid" //файл конфигурации

new Entity[MAX_PLAYERS+1], MaskColor[MAX_PLAYERS+1];

#if defined MASK_ALL_MODE
new bool:Check[MAX_PLAYERS+1];

new MASK_HEALTH_EN, MASK_HEALTH_NUM, MASK_HEALTH_MSG;

new bool:CheckHealth[MAX_PLAYERS+1];
#endif

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_dictionary("covid.txt");

    register_clcmd("say /covid", "cmdOpenMenu");
    register_clcmd("say /cv", "cmdOpenMenu");

    register_menu("CovidMenu", 1023, "Handle_CovidMenu", 0);

    #if defined MASK_ALL_MODE
    RegisterHam(Ham_Spawn, "player", "EventSpawn", true);

    MASK_HEALTH_EN = register_cvar("cv_mask_health_en", "1");
    MASK_HEALTH_NUM = register_cvar("cv_mask_health_num", "5");
    MASK_HEALTH_MSG = register_cvar("cv_mask_health_msg", "1");
    #endif

    #if defined SAVE_MASK_MODE
    Vault = nvault_open("Covid_save");

    if(Vault == INVALID_HANDLE){
        set_fail_state("Error opening nVault file!");
    }
    #endif
}

public plugin_precache()
{
    new Path[MAX_RESOURCE_PATH_LENGTH];
    formatex(Path, charsmax(Path), "\%s", MEDICAL_MODEL);

    if(!file_exists(Path))
    {
        set_fail_state("Error! Model not found");
    }
    else
    {
        precache_model(MEDICAL_MODEL);
    }
}

public plugin_cfg()
{
    new Dir[MAX_RESOURCE_PATH_LENGTH];
    get_localinfo("amxx_configsdir", Dir, charsmax(Dir));

    new Path[MAX_RESOURCE_PATH_LENGTH * 2];
    formatex(Path, charsmax(Path), "%s/%s/%s.cfg", Dir, COVID_DIR, COVID_CFG);

    if(!file_exists(Path)){
        return;
    }

    server_cmd("exec %s", Path);
}

#if defined MASK_ALL_MODE
public client_putinserver(PlayerID)
{
    if(is_user_bot(PlayerID) || is_user_hltv(PlayerID))
    {
        return;
    }

    Check[PlayerID] = false;

    if(get_pcvar_num(MASK_HEALTH_EN) == 1)
    {
        CheckHealth[PlayerID] = false;
    }

    #if defined MASK_ACCESS
    if(get_user_flags(PlayerID) & ACCESS_FLAG_MENU)
    {
        CreateEnt(PlayerID);
    }
    #else
    CreateEnt(PlayerID);
    #endif

    #if defined SAVE_MASK_MODE
    new AuthID[MAX_AUTHID_LENGTH], Data[3];
    get_user_authid(PlayerID, AuthID, charsmax(AuthID));

    new timestamp, AccessResult = nvault_lookup(Vault, AuthID, Data, charsmax(Data), timestamp);

    if(AccessResult)
    {
        MaskColor[PlayerID] = str_to_num(Data);
    }
    #endif
}

public EventSpawn(PlayerID)
{
    if(!is_user_alive(PlayerID))
    {
        return;
    }

    if(get_pcvar_num(MASK_HEALTH_EN) == 1)
    {
        if(CheckHealth[PlayerID])
        {
            new HP = pev(PlayerID, pev_health);
            set_pev(PlayerID, pev_health, float(HP) - get_pcvar_num(MASK_HEALTH_NUM));

            if(get_pcvar_num(MASK_HEALTH_MSG) == 1)
            {
                HealthMsg(PlayerID, 2);
            }
        }
    }

    if(Entity[PlayerID] && is_valid_ent(Entity[PlayerID]))
    {
        if(!Check[PlayerID])
        {
            SetMask(PlayerID);
        }

        if(MaskColor[PlayerID] == 12)
        {
            new RandomNum = random_num(0, MAX_COLOR_NUM - 2);
            set_pev(Entity[PlayerID], pev_skin, RandomNum);
        }

        #if defined SAVE_MASK_MODE
        if(MaskColor[PlayerID] != 12)
        {
            set_pev(Entity[PlayerID], pev_skin, MaskColor[PlayerID]);
        }
        #endif
    }
}
#endif

public client_disconnect(PlayerID)
{
    RemoveMask(PlayerID);
    MaskColor[PlayerID] = 0;
}

public cmdOpenMenu(PlayerID)
{
    if(get_user_flags(PlayerID) & ACCESS_FLAG_MENU)
    {
        CovidMenu(PlayerID);
    }

    return PLUGIN_HANDLED;
}

CovidMenu(PlayerID)
{
    new Menu[MAX_MENU_LENGTH], Keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_0;
    new Len = formatex(Menu, charsmax(Menu), "%L^n^n", PlayerID, "COVID_MENU_TITLE");

    Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[1] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_INFO", PlayerID, Entity[PlayerID] == 0 ? "COVID_MENU_ITEM_OFF" : "COVID_MENU_ITEM_ON");

    if(Entity[PlayerID] == 0)
    {
        Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\r%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, "COVID_MENU_ITEM_COLOR_OFF");
    }
    else
    {
        new FormatLang[64];
        formatex(FormatLang, charsmax(FormatLang), "COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID]);

        Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\r%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, FormatLang);
    }

    formatex(Menu[Len], charsmax(Menu) - Len, "\r[0] \y# \w%L", PlayerID, "COVID_MENU_EXIT");
    return show_menu(PlayerID, Keys, Menu, -1, "CovidMenu");
}

public Handle_CovidMenu(PlayerID, Keys)
{
    switch(Keys)
    {
        case 0:
            {
                if(Entity[PlayerID] && is_valid_ent(Entity[PlayerID]))
                {
                    RemoveMask(PlayerID);

                    MaskColor[PlayerID] = 0;

                    #if defined MASK_ALL_MODE
                    Check[PlayerID] = false;

                    if(get_pcvar_num(MASK_HEALTH_EN) == 1)
                    {
                        CheckHealth[PlayerID] = true;
                        HealthMsg(PlayerID, 1);
                    }
                    #endif
                }
                else
                {
                    CreateEnt(PlayerID);
                    SetMask(PlayerID);

                    #if defined MASK_ALL_MODE
                    Check[PlayerID] = true;

                    if(get_pcvar_num(MASK_HEALTH_EN) == 1)
                    {
                        CheckHealth[PlayerID] = false;
                        HealthMsg(PlayerID, 1);
                    }
                    #endif
                }
            }
        case 1:
            {
                if(Entity[PlayerID] != 0)
                {
                    MaskColor[PlayerID] = (MaskColor[PlayerID] + 1) % MAX_COLOR_NUM;

                    if(MaskColor[PlayerID] != 12)
                    {
                        set_pev(Entity[PlayerID], pev_skin, MaskColor[PlayerID]);

                        #if defined SAVE_MASK_MODE
                        new AuthID[MAX_AUTHID_LENGTH], Data[3];

                        get_user_authid(PlayerID, AuthID, charsmax(AuthID));
                        formatex(Data, charsmax(Data), "%d", MaskColor[PlayerID]);

                        nvault_set(Vault, AuthID, Data);
                        #endif
                    }
                }
            }
        case 9:
            {
                return PLUGIN_HANDLED;
            }
    }

    CovidMenu(PlayerID);
    return PLUGIN_HANDLED;
}

SetMask(PlayerID)
{
    entity_set_int(Entity[PlayerID], EV_INT_body, 0);
}

RemoveMask(PlayerID)
{
    if(Entity[PlayerID] && is_valid_ent(Entity[PlayerID]))
    {
        entity_set_int(Entity[PlayerID], EV_INT_flags, FL_KILLME);
        entity_set_float(Entity[PlayerID], EV_FL_nextthink, get_gametime());
        Entity[PlayerID] = 0;
    }
}

CreateEnt(PlayerID)
{
    if((Entity[PlayerID] = create_entity("info_target")))
    {
        entity_set_string(Entity[PlayerID], EV_SZ_classname, "_covid_medical_mask");
        entity_set_model(Entity[PlayerID], MEDICAL_MODEL);
        entity_set_int(Entity[PlayerID], EV_INT_movetype, MOVETYPE_FOLLOW);
        entity_set_edict(Entity[PlayerID], EV_ENT_aiment, PlayerID);
    }
}

#if defined MASK_ALL_MODE
HealthMsg(PlayerID, num)
{
    client_print(PlayerID, print_chat, "%L", PlayerID, num == 1 ? "COVID_HEALTH_MSG_PRE" : "COVID_HEALTH_MSG_POST", get_pcvar_num(MASK_HEALTH_NUM));
}
#endif

[en]
COVID_MENU_TITLE = \r[COVID mode] \wSettings submenu
COVID_MENU_ITEM_INFO = Mask
COVID_MENU_ITEM_ON = ON
COVID_MENU_ITEM_OFF = OFF
COVID_MENU_EXIT = Exit
COVID_HEALTH_MSG_PRE = ^3[^4COVID supervision^3] ^1Dr.Player! If you ^3remove ^1the mask, the spawn will be ^4-%d ^1lives.
COVID_HEALTH_MSG_POST = ^3[^4COVID supervision^3] ^1Dr.Player! You ^3removed ^1the mask, you have ^4-%d ^1lives.
DESCRIPTION_CVAR_HEALTH_EN = Taking lives during spawn if the mask is removed. (on|off-1/0)
DESCRIPTION_CVAR_HEALTH_NUM = Number of lives taken.
DESCRIPTION_CVAR_HEALTH_MSG = Message when changing the mask (a reminder that there will be a penalty) and directly during spawn. (on|off-1/0)
COVID_MENU_ITEM_COLOR_INFO = Mask color
COVID_MENU_ITEM_COLOR_OFF = enable the mask
COVID_MENU_ITEM_COLOR_0 = Light blue
COVID_MENU_ITEM_COLOR_1 = White
COVID_MENU_ITEM_COLOR_2 = Black
COVID_MENU_ITEM_COLOR_3 = Green
COVID_MENU_ITEM_COLOR_4 = Yellow
COVID_MENU_ITEM_COLOR_5 = Blue
COVID_MENU_ITEM_COLOR_6 = Red
COVID_MENU_ITEM_COLOR_7 = Brown
COVID_MENU_ITEM_COLOR_8 = Pink
COVID_MENU_ITEM_COLOR_9 = Grey
COVID_MENU_ITEM_COLOR_10 = Lilac
COVID_MENU_ITEM_COLOR_11 = Orange
COVID_MENU_ITEM_COLOR_12 = Random

[ru]
COVID_MENU_TITLE = \r[COVID режим] \wМеню настроек
COVID_MENU_ITEM_INFO = Маска
COVID_MENU_ITEM_ON = ВКЛ
COVID_MENU_ITEM_OFF = ВЫКЛ
COVID_MENU_EXIT = Выход
COVID_HEALTH_MSG_PRE = ^3[^4COVID надзор^3] ^1Ув.Игрок! Если Вы ^3снимите ^1маску, то при спавне будет ^4-%d ^1жизней.
COVID_HEALTH_MSG_POST = ^3[^4COVID надзор^3] ^1Ув.Игрок! Вы ^3сняли ^1маску, у Вас ^4-%d ^1жизней.
DESCRIPTION_CVAR_HEALTH_EN = Отнимание жизней при спавне если маска снята. (вкл|выкл - 1|0)
DESCRIPTION_CVAR_HEALTH_NUM = Количество отнимаемых жизней.
DESCRIPTION_CVAR_HEALTH_MSG = Сообщение при смене маски (напоминание что будет наказание) и непосредственно при спавне. (вкл|выкл - 1|0)
COVID_MENU_ITEM_COLOR_INFO = Цвет маски
COVID_MENU_ITEM_COLOR_OFF = включите маску
COVID_MENU_ITEM_COLOR_0 = Голубой
COVID_MENU_ITEM_COLOR_1 = Белый
COVID_MENU_ITEM_COLOR_2 = Черный
COVID_MENU_ITEM_COLOR_3 = Зеленый
COVID_MENU_ITEM_COLOR_4 = Желтый
COVID_MENU_ITEM_COLOR_5 = Синий
COVID_MENU_ITEM_COLOR_6 = Красный
COVID_MENU_ITEM_COLOR_7 = Коричневый
COVID_MENU_ITEM_COLOR_8 = Розовый
COVID_MENU_ITEM_COLOR_9 = Серый
COVID_MENU_ITEM_COLOR_10 = Сиреневый
COVID_MENU_ITEM_COLOR_11 = Оранжевый
COVID_MENU_ITEM_COLOR_12 = Рандом

[de]
COVID_MENU_TITLE = \r[COVID Modus] \wEinstellungen
COVID_MENU_ITEM_INFO = Maske
COVID_MENU_ITEM_ON = Eingeschaltet
COVID_MENU_ITEM_OFF = Ausgeschaltet
COVID_MENU_EXIT = Verlassen
COVID_HEALTH_MSG_PRE = ^3[^4COVID-Aufsicht^3] ^1Wenn Sie die ^3Maske ^1abnehmen, werden Sie ^4-%d ^1Lebenspunkte weniger haben.
COVID_HEALTH_MSG_POST = ^3[^4COVID-Aufsicht^3] ^Sie haben die ^3Maske ^1entfernt und verlieren ^4-%d ^1Lebenspunkte.
DESCRIPTION_CVAR_HEALTH_EN = Verlust von Lebenspunkten beim Spawn, wenn die Maske entfernt wurde. (ein|aus - 1/0)
DESCRIPTION_CVAR_HEALTH_NUM = Anzahl der abgezogenen Lebenspunkte.
DESCRIPTION_CVAR_HEALTH_MSG = Nachricht beim Absetzen der Maske direkt beim Spawn (erinnert an negativen Auswirkung). (ein|aus - 1/0)
COVID_MENU_ITEM_COLOR_INFO = Maskenfarbe
COVID_MENU_ITEM_COLOR_OFF = Maske aktivieren
COVID_MENU_ITEM_COLOR_0 = Hell blau
COVID_MENU_ITEM_COLOR_1 = Weiß
COVID_MENU_ITEM_COLOR_2 = Schwarz
COVID_MENU_ITEM_COLOR_3 = Grün
COVID_MENU_ITEM_COLOR_4 = Gelb
COVID_MENU_ITEM_COLOR_5 = Blau
COVID_MENU_ITEM_COLOR_6 = Rot
COVID_MENU_ITEM_COLOR_7 = Braun
COVID_MENU_ITEM_COLOR_8 = Rosa
COVID_MENU_ITEM_COLOR_9 = Grau
COVID_MENU_ITEM_COLOR_10 = Flieder
COVID_MENU_ITEM_COLOR_11 = Orange
COVID_MENU_ITEM_COLOR_12 = Random

[bp]
COVID_MENU_TITLE = \r[Modo COVID] \wSubmenu Configurações
COVID_MENU_ITEM_INFO = Máscara
COVID_MENU_ITEM_ON = Ativar
COVID_MENU_ITEM_OFF = Desativar
COVID_MENU_EXIT = Sair
COVID_HEALTH_MSG_PRE = ^3[^4COVID supervisão^3] ^1Atenção jogador! Se você ^3retirar ^1a máscara,perderá ^4-%d ^1de vida ao renascer .
COVID_HEALTH_MSG_POST = ^3[^4COVID supervisão^3] ^1Atenção jogador! Você ^3tirou ^1a máscara, agora tem ^4-%d ^1 de vida.
DESCRIPTION_CVAR_HEALTH_EN = Remover vida no renascer se a máscara for removida. (on|off - 1/0)
DESCRIPTION_CVAR_HEALTH_NUM = Número de vida a tirar .
DESCRIPTION_CVAR_HEALTH_MSG = Mensagem ao mudar de máscara (lembrete que será o castigo) e diretamente ao renascer. (on|off - 1/0)
COVID_MENU_ITEM_COLOR_INFO = Cor da máscara
COVID_MENU_ITEM_COLOR_OFF = ative a máscara
COVID_MENU_ITEM_COLOR_0 = Azul claro
COVID_MENU_ITEM_COLOR_1 = Branco
COVID_MENU_ITEM_COLOR_2 = Preto
COVID_MENU_ITEM_COLOR_3 = Verde
COVID_MENU_ITEM_COLOR_4 = Amarelo
COVID_MENU_ITEM_COLOR_5 = Azul
COVID_MENU_ITEM_COLOR_6 = Vermelho
COVID_MENU_ITEM_COLOR_7 = Marrom
COVID_MENU_ITEM_COLOR_8 = Rosa
COVID_MENU_ITEM_COLOR_9 = Cinza
COVID_MENU_ITEM_COLOR_10 = Lilás
COVID_MENU_ITEM_COLOR_11 = Laranja
COVID_MENU_ITEM_COLOR_12 = Margem

[tr]
COVID_MENU_TITLE = \r[COVID mode] \wAyarlar altmenu
COVID_MENU_ITEM_INFO = Maske
COVID_MENU_ITEM_ON = Acik
COVID_MENU_ITEM_OFF = Kapali
COVID_MENU_EXIT = Cikis
COVID_HEALTH_MSG_PRE = ^3[^4COVID supervision^3] ^1Dr.Oyuncu! Eger maskeyi ^3cikartirsan^1, yasam hakkin ^4-%d ^1olacak.
COVID_HEALTH_MSG_POST = ^3[^4COVID supervision^3] ^1Dr.Oyuncu! maskeyi ^3cikarttin^1, artik yasam hakkin ^4-%d.
DESCRIPTION_CVAR_HEALTH_EN = Maske cikartilir ise dogmalarda can alinir.. (acik|kapali-1/0)
DESCRIPTION_CVAR_HEALTH_NUM = Alacagi can sayisi.
DESCRIPTION_CVAR_HEALTH_MSG = Maskeyi cikarttigi vakit alacagi uyari mesaji ve normal mesajlar. (on|off-1/0)
COVID_MENU_ITEM_COLOR_INFO = Maske rengi
COVID_MENU_ITEM_COLOR_OFF = maskeyi etkinleştir
COVID_MENU_ITEM_COLOR_0 = Açık mavi
COVID_MENU_ITEM_COLOR_1 = beyaz
COVID_MENU_ITEM_COLOR_2 = siyah
COVID_MENU_ITEM_COLOR_3 = Yeşil
COVID_MENU_ITEM_COLOR_4 = Sarı
COVID_MENU_ITEM_COLOR_5 = Mavi
COVID_MENU_ITEM_COLOR_6 = Kırmızı
COVID_MENU_ITEM_COLOR_7 = kahverengi
COVID_MENU_ITEM_COLOR_8 = pembe
COVID_MENU_ITEM_COLOR_9 = gri
COVID_MENU_ITEM_COLOR_10 = Leylak
COVID_MENU_ITEM_COLOR_11 = turuncu
COVID_MENU_ITEM_COLOR_12 = Random

[pl]
COVID_MENU_TITLE = \r[COVID Menu] \wUstawienia submenu
COVID_MENU_ITEM_INFO = Maska
COVID_MENU_ITEM_ON = Wlacz
COVID_MENU_ITEM_OFF = Wylacz
COVID_MENU_EXIT = Wyjscie
COVID_HEALTH_MSG_PRE = ^3[^4Nadzor COVID^3] ^1Dr.Misiu! Jesli ^3zdejmiesz ^1maske, po spawnie bedziesz mial ^4-%d ^1zyc.
COVID_HEALTH_MSG_POST = ^3[^4Nadzor COVID^3] ^1Dr.Misiu! ^3Usunales ^1maske, masz ^4-%d ^1zyc.
DESCRIPTION_CVAR_HEALTH_EN = Odebranie zycia podczas odrodzenia, jesli maska zostanie zdjeta. (on | off-1/0)
DESCRIPTION_CVAR_HEALTH_NUM = Liczba odebranych zyc.
DESCRIPTION_CVAR_HEALTH_MSG = Wiadomosc przy zmianie maski (przypomnienie, ze bedzie kara) i bezposrednio podczas odradzania. (on | off-1/0)
COVID_MENU_ITEM_COLOR_INFO = Kolor maski
COVID_MENU_ITEM_COLOR_OFF = włącz maskę
COVID_MENU_ITEM_COLOR_0 = Jasnoniebieski
COVID_MENU_ITEM_COLOR_1 = Biały
COVID_MENU_ITEM_COLOR_2 = Czarny
COVID_MENU_ITEM_COLOR_3 = Zielony
COVID_MENU_ITEM_COLOR_4 = Żółty
COVID_MENU_ITEM_COLOR_5 = Niebieski
COVID_MENU_ITEM_COLOR_6 = Czerwony
COVID_MENU_ITEM_COLOR_7 = brązowy
COVID_MENU_ITEM_COLOR_8 = Różowy
COVID_MENU_ITEM_COLOR_9 = Szary
COVID_MENU_ITEM_COLOR_10 = Liliowy
COVID_MENU_ITEM_COLOR_11 = pomarańczowy
COVID_MENU_ITEM_COLOR_12 = Random
[en]
COVID_MENU_TITLE = \r[COVID mode] \wSettings submenu
COVID_MENU_ITEM_INFO = Mask
COVID_MENU_ITEM_ON = ON
COVID_MENU_ITEM_OFF = OFF
COVID_MENU_EXIT = Exit
COVID_HEALTH_MSG_PRE = [COVID supervision] Dr.Player! If you remove the mask, the spawn will be -%d lives.
COVID_HEALTH_MSG_POST = [COVID supervision] Dr.Player! You removed the mask, you have -%d lives.
COVID_MENU_ITEM_COLOR_INFO = Mask color
COVID_MENU_ITEM_COLOR_OFF = enable the mask
COVID_MENU_ITEM_COLOR_0 = Light blue
COVID_MENU_ITEM_COLOR_1 = White
COVID_MENU_ITEM_COLOR_2 = Black
COVID_MENU_ITEM_COLOR_3 = Green
COVID_MENU_ITEM_COLOR_4 = Yellow
COVID_MENU_ITEM_COLOR_5 = Blue
COVID_MENU_ITEM_COLOR_6 = Red
COVID_MENU_ITEM_COLOR_7 = Brown
COVID_MENU_ITEM_COLOR_8 = Pink
COVID_MENU_ITEM_COLOR_9 = Grey
COVID_MENU_ITEM_COLOR_10 = Lilac
COVID_MENU_ITEM_COLOR_11 = Orange
COVID_MENU_ITEM_COLOR_12 = Random

[ru]
COVID_MENU_TITLE = \r[COVID режим] \wМеню настроек
COVID_MENU_ITEM_INFO = Маска
COVID_MENU_ITEM_ON = ВКЛ
COVID_MENU_ITEM_OFF = ВЫКЛ
COVID_MENU_EXIT = Выход
COVID_HEALTH_MSG_PRE = [COVID надзор] Ув.Игрок! Если Вы снимите маску, то при спавне будет -%d жизней.
COVID_HEALTH_MSG_POST = [COVID надзор] Ув.Игрок! Вы сняли маску, у Вас -%d жизней.
COVID_MENU_ITEM_COLOR_INFO = Цвет маски
COVID_MENU_ITEM_COLOR_OFF = включите маску
COVID_MENU_ITEM_COLOR_0 = Голубой
COVID_MENU_ITEM_COLOR_1 = Белый
COVID_MENU_ITEM_COLOR_2 = Черный
COVID_MENU_ITEM_COLOR_3 = Зеленый
COVID_MENU_ITEM_COLOR_4 = Желтый
COVID_MENU_ITEM_COLOR_5 = Синий
COVID_MENU_ITEM_COLOR_6 = Красный
COVID_MENU_ITEM_COLOR_7 = Коричневый
COVID_MENU_ITEM_COLOR_8 = Розовый
COVID_MENU_ITEM_COLOR_9 = Серый
COVID_MENU_ITEM_COLOR_10 = Сиреневый
COVID_MENU_ITEM_COLOR_11 = Оранжевый
COVID_MENU_ITEM_COLOR_12 = Рандом

[de]
COVID_MENU_TITLE = \r[COVID Modus] \wEinstellungen
COVID_MENU_ITEM_INFO = Maske
COVID_MENU_ITEM_ON = Eingeschaltet
COVID_MENU_ITEM_OFF = Ausgeschaltet
COVID_MENU_EXIT = Verlassen
COVID_HEALTH_MSG_PRE = [COVID-Aufsicht] Wenn Sie die Maske abnehmen, werden Sie -%d Lebenspunkte weniger haben.
COVID_HEALTH_MSG_POST = [COVID-Aufsicht] Sie haben die Maske entfernt und verlieren -%d Lebenspunkte.
COVID_MENU_ITEM_COLOR_INFO = Maskenfarbe
COVID_MENU_ITEM_COLOR_OFF = Maske aktivieren
COVID_MENU_ITEM_COLOR_0 = Hell blau
COVID_MENU_ITEM_COLOR_1 = Weiß
COVID_MENU_ITEM_COLOR_2 = Schwarz
COVID_MENU_ITEM_COLOR_3 = Grün
COVID_MENU_ITEM_COLOR_4 = Gelb
COVID_MENU_ITEM_COLOR_5 = Blau
COVID_MENU_ITEM_COLOR_6 = Rot
COVID_MENU_ITEM_COLOR_7 = Braun
COVID_MENU_ITEM_COLOR_8 = Rosa
COVID_MENU_ITEM_COLOR_9 = Grau
COVID_MENU_ITEM_COLOR_10 = Flieder
COVID_MENU_ITEM_COLOR_11 = Orange
COVID_MENU_ITEM_COLOR_12 = Random

[bp]
COVID_MENU_TITLE = \r[Modo COVID] \wSubmenu Configurações
COVID_MENU_ITEM_INFO = Máscara
COVID_MENU_ITEM_ON = Ativar
COVID_MENU_ITEM_OFF = Desativar
COVID_MENU_EXIT = Sair
COVID_HEALTH_MSG_PRE = [COVID supervisão] Atenção jogador! Se você retirar a máscara,perderá -%d de vida ao renascer.
COVID_HEALTH_MSG_POST = [COVID supervisão] Atenção jogador! Você tirou a máscara, agora tem -%d de vida.
COVID_MENU_ITEM_COLOR_INFO = Cor da máscara
COVID_MENU_ITEM_COLOR_OFF = ative a máscara
COVID_MENU_ITEM_COLOR_0 = Azul claro
COVID_MENU_ITEM_COLOR_1 = Branco
COVID_MENU_ITEM_COLOR_2 = Preto
COVID_MENU_ITEM_COLOR_3 = Verde
COVID_MENU_ITEM_COLOR_4 = Amarelo
COVID_MENU_ITEM_COLOR_5 = Azul
COVID_MENU_ITEM_COLOR_6 = Vermelho
COVID_MENU_ITEM_COLOR_7 = Marrom
COVID_MENU_ITEM_COLOR_8 = Rosa
COVID_MENU_ITEM_COLOR_9 = Cinza
COVID_MENU_ITEM_COLOR_10 = Lilás
COVID_MENU_ITEM_COLOR_11 = Laranja
COVID_MENU_ITEM_COLOR_12 = Margem

[tr]
COVID_MENU_TITLE = \r[COVID mode] \wAyarlar altmenu
COVID_MENU_ITEM_INFO = Maske
COVID_MENU_ITEM_ON = Acik
COVID_MENU_ITEM_OFF = Kapali
COVID_MENU_EXIT = Cikis
COVID_HEALTH_MSG_PRE = [COVID supervision] Dr.Oyuncu! Eger maskeyi cikartirsan, yasam hakkin -%d olacak.
COVID_HEALTH_MSG_POST = [COVID supervision] Dr.Oyuncu! maskeyi cikarttin, artik yasam hakkin -%d.
COVID_MENU_ITEM_COLOR_INFO = Maske rengi
COVID_MENU_ITEM_COLOR_OFF = maskeyi etkinleştir
COVID_MENU_ITEM_COLOR_0 = Açık mavi
COVID_MENU_ITEM_COLOR_1 = beyaz
COVID_MENU_ITEM_COLOR_2 = siyah
COVID_MENU_ITEM_COLOR_3 = Yeşil
COVID_MENU_ITEM_COLOR_4 = Sarı
COVID_MENU_ITEM_COLOR_5 = Mavi
COVID_MENU_ITEM_COLOR_6 = Kırmızı
COVID_MENU_ITEM_COLOR_7 = kahverengi
COVID_MENU_ITEM_COLOR_8 = pembe
COVID_MENU_ITEM_COLOR_9 = gri
COVID_MENU_ITEM_COLOR_10 = Leylak
COVID_MENU_ITEM_COLOR_11 = turuncu
COVID_MENU_ITEM_COLOR_12 = Random

[pl]
COVID_MENU_TITLE = \r[COVID Menu] \wUstawienia submenu
COVID_MENU_ITEM_INFO = Maska
COVID_MENU_ITEM_ON = Wlacz
COVID_MENU_ITEM_OFF = Wylacz
COVID_MENU_EXIT = Wyjscie
COVID_HEALTH_MSG_PRE = [Nadzor COVID] Dr.Misiu! Jesli zdejmiesz maske, po spawnie bedziesz mial -%d zyc.
COVID_HEALTH_MSG_POST = [Nadzor COVID] Dr.Misiu! Usunales maske, masz -%d zyc.
COVID_MENU_ITEM_COLOR_INFO = Kolor maski
COVID_MENU_ITEM_COLOR_OFF = włącz maskę
COVID_MENU_ITEM_COLOR_0 = Jasnoniebieski
COVID_MENU_ITEM_COLOR_1 = Biały
COVID_MENU_ITEM_COLOR_2 = Czarny
COVID_MENU_ITEM_COLOR_3 = Zielony
COVID_MENU_ITEM_COLOR_4 = Żółty
COVID_MENU_ITEM_COLOR_5 = Niebieski
COVID_MENU_ITEM_COLOR_6 = Czerwony
COVID_MENU_ITEM_COLOR_7 = brązowy
COVID_MENU_ITEM_COLOR_8 = Różowy
COVID_MENU_ITEM_COLOR_9 = Szary
COVID_MENU_ITEM_COLOR_10 = Liliowy
COVID_MENU_ITEM_COLOR_11 = pomarańczowy
COVID_MENU_ITEM_COLOR_12 = Random

1588717365516.png
1588717298611.png
1588754101898.png
1588754079969.png
1588754061363.png
1588757416405.png
35hp_20034.png
1589231211028.png



Covid mode.zip


Утверждено. //Leonidddd
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось WellasGooD 22 май 2020, 13:17, всего редактировалось 11 раз(а).
Telegram: @WellAsGood
Аватара пользователя
WellasGooD
Скриптер
 
Сообщения: 26
Зарегистрирован: 11 ноя 2016, 12:12
Откуда: Russia
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.
Опыт программирования: Больше трех лет
Языки программирования: Amxx Pawn
Visual Basic Application (VBA Excel, Outlook VBA)

Re: Covid mode

Сообщение WellasGooD » 13 май 2020, 12:47

UP.

Произошли обновления до версии 1.1.4:

1. Каждый игрок может выбрать цвет для маски. (а также, есть возможность рандомного цвета при спавне)
2. Есть возможность сохранять цвет маски, если игрок выходит и повторно заходит на сервер, а также при смене карты.

Архив в первом посту был обновлен.
Подробная инфа: Вы должны зарегистрироваться, чтобы видеть ссылки.
Telegram: @WellAsGood
Аватара пользователя
WellasGooD
Скриптер
 
Сообщения: 26
Зарегистрирован: 11 ноя 2016, 12:12
Откуда: Russia
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.
Опыт программирования: Больше трех лет
Языки программирования: Amxx Pawn
Visual Basic Application (VBA Excel, Outlook VBA)

Re: Covid mode

Сообщение WellasGooD » 13 май 2020, 17:50

UP.

Была обнаружена ошибка, в части сохранения цвета. FIX

Обновление до версии 1.1.5

Архив в перовом посту был обновлен.
Telegram: @WellAsGood
Аватара пользователя
WellasGooD
Скриптер
 
Сообщения: 26
Зарегистрирован: 11 ноя 2016, 12:12
Откуда: Russia
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.
Опыт программирования: Больше трех лет
Языки программирования: Amxx Pawn
Visual Basic Application (VBA Excel, Outlook VBA)

Re: Covid mode

Сообщение Leonidddd » 13 май 2020, 22:19

WellasGooD, дабы не плодить 100500 постов об обновлении, можно редактировать первое сообщение и туда записывать changelog-историю - что, когда и как изменилось.
Аватара пользователя
Leonidddd
Модератор
 
Сообщения: 2557
Зарегистрирован: 08 апр 2012, 18:13
Откуда: г. Запорожье
Благодарил (а): 192 раз.
Поблагодарили: 718 раз.

Re: Covid mode

Сообщение MayroN » 13 май 2020, 22:44

А если он будет редачить первый пост,то как пользователь узнает,что-была обнова?

На почту ниче не прейдет при редакт.и если не будет свежего поста...

Или не то я сказал)(
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: Covid mode

Сообщение Vaqtincha » 13 май 2020, 23:47

MayroN,
как пользователь узнает

Ты устаешь узнать. Уж поверь мне. :D Когда будет финальная версия я сам тебя сообщу по почте.
админгандонсоси
Аватара пользователя
Vaqtincha
 
Сообщения: 277
Зарегистрирован: 28 мар 2018, 15:05
Забанен
Благодарил (а): 8 раз.
Поблагодарили: 53 раз.

Re: Covid mode

Сообщение MayroN » 14 май 2020, 01:32

Vaqtincha,
В самом деле?)))
Извещай меня после каждого обновления,а автор его делает по 3 раза в день)

И нащет BotFeatures не забудь,а то пауза слегка подзатянулась)

P.S.В твоем коде по ботах,ты мне помог устроить для их рандомный чат у себя в одном плагине.
Очень пригодилось
Здесь спасибку и оставлю
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: Covid mode

Сообщение Fedcomp » 16 май 2020, 14:44

Leonidddd писал(а):WellasGooD, дабы не плодить 100500 постов об обновлении, можно редактировать первое сообщение и туда записывать changelog-историю - что, когда и как изменилось.

кстати не согласен. Постить отдельным постом апдейт + добавлять changelog в первый пост это нормальная практика.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Covid mode

Сообщение WellasGooD » 22 май 2020, 13:17

Произошли большие обновления! Расписывать тут не буду, проще посмотреть на официальной странице обновлений: Вы должны зарегистрироваться, чтобы видеть ссылки.

Версия 1.2.4 актуальная теперь.

Архив в первом посту был обновлен.
Telegram: @WellAsGood
Аватара пользователя
WellasGooD
Скриптер
 
Сообщения: 26
Зарегистрирован: 11 ноя 2016, 12:12
Откуда: Russia
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.
Опыт программирования: Больше трех лет
Языки программирования: Amxx Pawn
Visual Basic Application (VBA Excel, Outlook VBA)

Re: Covid mode

Сообщение Vaqtincha » 22 май 2020, 17:02

Следом десятки тысяч обновлений...
админгандонсоси
Аватара пользователя
Vaqtincha
 
Сообщения: 277
Зарегистрирован: 28 мар 2018, 15:05
Забанен
Благодарил (а): 8 раз.
Поблагодарили: 53 раз.

След.

Вернуться в Утвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12