- Автор
-
wellasgood
ТРЕБОВАНИЯ:
Для основной версии:
1. ReAPI, Rechecker
2. Квар mp_consistency на сервере должен быть со значением 1.
3. Стандартные модели игроков на сервере (для определения с каких моделей играет клиент):
Совместимость: Amx Mod X 1.8.2, Amx Mod X 1.9.0, Amx Mod X 1.10.0 dev
Мультиязычность: RU, EN, DE, TR, PL, BP
Коронавирус (COVID) режим, добавляет атмосферу масок на сервере. Игроки будут в масках, а это лишний раз напомнит о важности их носить и в реальной жизни.
Плагин может работать в двух режимах:
1. Маски ставятся всем игрокам при спавне автоматически.
2. Маски не ставятся автоматически.
Функционал:
1. Маски можно надевать и снимать через удобное меню.
2. После смерти, смены команды, спавна (нового раунда), маска остается на игроке.
3. Доступ к меню масок по флагу.
4. Есть возможность отнимать жизни (если маска не надета)
5. Каждый игрок может выбрать цвет для маски из предложенных, иначе ввести свой цвет в формате R G B. (а также, есть возможность рандомного цвета при спавне)
6. Есть возможность сохранять цвет маски, если игрок выходит и повторно заходит на сервер, а также при смене карты. (а также, есть сохранение если отключить маску или режима рандом)
7. Есть возможность запустить рекламу о командах открытия меню в чате, через заданный интервал времени.
8. В основной версии плагина, модель маски устанавливается разная в зависимости от того, стоит ли галочка HD модели у клиента или нет. (без галочки, старые модели (без детализации), с галочкой новые)
* - Остальное в разделе 'Установка и настройка'
Внимание! На разных сборках Cs1.6 модели выглядят по разному, по этому маска может куда-то съезжать.
Видео-обзор:
Скриншоты с GS-client (DevMs):
Для основной версии:
1. ReAPI, Rechecker
2. Квар mp_consistency на сервере должен быть со значением 1.
3. Стандартные модели игроков на сервере (для определения с каких моделей играет клиент):
a) "models/player/militia/militia.mdl"
b) "models/player/spetsnaz/spetsnaz.mdl"
Совместимость: Amx Mod X 1.8.2, Amx Mod X 1.9.0, Amx Mod X 1.10.0 dev
Мультиязычность: RU, EN, DE, TR, PL, BP
Коронавирус (COVID) режим, добавляет атмосферу масок на сервере. Игроки будут в масках, а это лишний раз напомнит о важности их носить и в реальной жизни.
Плагин может работать в двух режимах:
1. Маски ставятся всем игрокам при спавне автоматически.
2. Маски не ставятся автоматически.
Функционал:
1. Маски можно надевать и снимать через удобное меню.
2. После смерти, смены команды, спавна (нового раунда), маска остается на игроке.
3. Доступ к меню масок по флагу.
4. Есть возможность отнимать жизни (если маска не надета)
5. Каждый игрок может выбрать цвет для маски из предложенных, иначе ввести свой цвет в формате R G B. (а также, есть возможность рандомного цвета при спавне)
6. Есть возможность сохранять цвет маски, если игрок выходит и повторно заходит на сервер, а также при смене карты. (а также, есть сохранение если отключить маску или режима рандом)
7. Есть возможность запустить рекламу о командах открытия меню в чате, через заданный интервал времени.
8. В основной версии плагина, модель маски устанавливается разная в зависимости от того, стоит ли галочка HD модели у клиента или нет. (без галочки, старые модели (без детализации), с галочкой новые)
* - Остальное в разделе 'Установка и настройка'
Внимание! На разных сборках Cs1.6 модели выглядят по разному, по этому маска может куда-то съезжать.
Видео-обзор:
Скриншоты с GS-client (DevMs):
- Команды
-
say /covid - открытие меню масок.
say /cv - открытие меню масок (mini)
- Дополнительная информация
-
C++:
/* * - ---------- Плагин - "COVID mode" * - ---------- Описание: Корона вирус (COVID) режим, добавляет атмосферу масок на сервере. Плагин может работать в двух режимах: 1. Маски ставятся всем игрокам при спавне автоматически. 2. Маски не ставятся автоматически. * - ---------- Благодарности: Предложения, помощь в проработке идеи: Nebo, Pokemoshka, present, ssx Перевод на разные языки: rian18, tarsisd2, Yek'-ta, sensej1021, asd Помощь по коду: Garey Другая помощь: f@ntom, urpok * - ---------- Поддержка плагина: Dev-Cs: @wellasgood vk: https://vk.com/d1mkin 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. (если режим сохранения был выкл, то эта часть бы работала) ver 1.1.5: 1. Поправлен способ сохранения цвета маски в основной версии плагина. ver 1.1.6: 1. Добавлена цветная модель, сделанная по другому (без применения многих текстур). Использование с помощью topcolor (colormap) 2. Для основного плагина, сделан fix маски, для старых (без детализации) моделей. (если снять галочку HD в игре) 3. Большие правки по коду, с учетом добавленного. 4. Переработано меню, а также в него добавлены цвета для маски что-бы выбрать из предложенных, иначе ввести свой цвет в формате RGB (255 255 0), через пробел. 5. Цвет маски теперь сохраняется в двух случаях, если игрок выбрал цвет из предложенных, а также если игрок выбрал свой цвет (RGB) ver 1.1.7: 1. Вновь были неполадки с сохранением цвета после выхода и повторного захода игрока на сервере. Исправлено. ver 1.1.8: 1. В версии плагина AMXX 1.8.2 добавлена функция закрытия файла nvault (plugin_end) ver 1.1.9: 1. В версии плагина AMXX 1.8.2 добавлена проверка #if defined SAVE_MASK_MODE для функции plugin_end, так как, она выполнялась бы в любом случае. ver 1.2.0: 1. Выявлен баг, что если закомментировать режим #define MASK_ALL_MODE, то плагин не компилировался. (поправлено, теперь работа плагина в режиме без #define MASK_ALL_MODE доступна), спасибо: urpok 2. Добавлены доп. проверки по коду с учетом новых обновлений. 3. В версии плагина AMXX 1.8.2 добавлена проверка на вызов функции (сообщение в чат), иначе оно отправлялось бы вне зависимости от положения квара. 4. Дополнен LANG файл. ver 1.2.1: 1. Добавлена возможность рекламировать в чат сообщения о командах открытия меню (вкл/выкл настройка #define CHAT_ADVERTISING, а также можно настроить временной интервал #define TIME). 2. Добавлена возможность указать цвет который будет выставляться по умолчанию (настройка new const DEFAULT_COLOR[], работает только с режимом #define MASK_ALL_MODE) 3. Добавлена функция обработчик, преобразующая строку c RGB данными в float массив, дабы не повторять лишний раз одно и тоже. 4. Теперь если игрок сохранит маску (т.е просто выберет в меню настроек), после перезахода на сервер и повторного захода в меню, уже будет пункт цвета (сохраненный), это означает, что даже после выключения маски или обратного включения (листания цветов других), можно вернуться к сохраненному цвету. (дабы заного его не вводить, например если это был свой RGB цвет) 5. Учтены и протестированы моменты, когда юзаются разные вариации режимов. 6. Большие правки/добавления по коду, с учетом новых обновлений. 7. В версию плагина AMXX 1.8.2 добавлен цветной чат (include colorchat.inc), теперь сообщения в чате цветные, как и в основной версии плагина. ver 1.2.2: 1. В версии плагина AMXX 1.8.2 изменен ключ с %l на %L в client_print_color, так как, ключ %l не поддерживается. ver 1.2.3: 1. Добавлено сохранение положения пункта РАНДОМ [ВКЛ/ВЫКЛ], после выхода и повторного захода на сервер, выбранное положение (вкл/выкл) сохранится. 2. Добавлено сохранение положения пункта МАСКА [ВКЛ/ВЫКЛ], после выхода и повторного захода на сервер, выбранное положение (вкл/выкл) сохранится. 3. Правка кода. ver 1.2.4: 1. Поправлено наименование создаваемого конфига в основной версии плагина, так как, пробелы в наименование не читаются. */ #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 //Сохранение цвета маски при выходе и повторном заходе игрока, а также при смене карты. new DefColor; #if defined SAVE_MASK_MODE #include <nvault> new Vault, SaveMaskColor[MAX_PLAYERS+1], DoubleSaveColor[MAX_PLAYERS+1]; new bool:DefCheck[MAX_PLAYERS+1]; #endif new const DEFAULT_COLOR[] = "135 206 250" //указать цвет который будет выставляться по умолчанию (RGB формат) #endif #define CHAT_ADVERTISING //возможность рекламировать в чат сообщения о командах открытия меню (вкл/выкл откоммент/коммент). #if defined CHAT_ADVERTISING #define TIME 120.0 //время для показа рекламы в чате (интервал) #endif new const PLUGIN[] = "COVID_mode"; new const VERSION[] = "1.2.4"; new const AUTHOR[] = "wellasgood"; new const MEDICAL_MODEL[] = "models/medical-mask/med-mask_clr.mdl"; new const MEDICAL_MODEL_FIX[] = "models/medical-mask/med-mask_clr_fix.mdl"; new Entity[MAX_PLAYERS+1], MaskColor[MAX_PLAYERS+1]; new bool:HDModels[MAX_PLAYERS+1], Model[2]; #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], bool:CheckRandom[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_concmd("its_color", "func_its_color"); 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 new Float:Color[3]; func_handler_row(DEFAULT_COLOR, Color); DefColor = RGBtoHUE(Color); #endif #if defined SAVE_MASK_MODE Vault = nvault_open("Covid_save"); if(Vault == INVALID_HANDLE) { set_fail_state("Error opening nVault file!"); } #endif RegisterQueryFile("models/player/militia/militia.mdl", "handler_QueryFile", RES_TYPE_HASH_ANY, -1); RegisterQueryFile("models/player/spetsnaz/spetsnaz.mdl", "handler_QueryFile", RES_TYPE_HASH_ANY, -1); #if defined CHAT_ADVERTISING set_task_ex(TIME, "Chat_Advertising", .flags = SetTask_Repeat); #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() { CheckModels(MEDICAL_MODEL, 0); CheckModels(MEDICAL_MODEL_FIX, 1); } CheckModels(const model[], num) { if(!file_exists(fmt("\%s", model))) { set_fail_state("Error! Model '%s' not found", model); } else { Model[num] = precache_model(model); } } public handler_QueryFile(const PlayerID, const hash, const uniqueId) { HDModels[PlayerID] = true; } #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 SAVE_MASK_MODE new AuthID[MAX_AUTHID_LENGTH], Data[12]; get_user_authid(PlayerID, AuthID, charsmax(AuthID)); new timestamp, AccessResult = nvault_lookup(Vault, AuthID, Data, charsmax(Data), timestamp); if(AccessResult) { SaveMaskColor[PlayerID] = str_to_num(Data); if(SaveMaskColor[PlayerID] > 255) { switch(SaveMaskColor[PlayerID]) { case 666: { CheckRandom[PlayerID] = true; } case 777: { CheckRandom[PlayerID] = false; } case 888: { if(eCvarData[MASK_HEALTH_EN]) { CheckHealth[PlayerID] = true; } } } } else { DoubleSaveColor[PlayerID] = SaveMaskColor[PlayerID]; DefCheck[PlayerID] = true; } } #endif #if defined MASK_ACCESS if(get_user_flags(PlayerID) & ACCESS_FLAG_MENU) { #if defined SAVE_MASK_MODE if(SaveMaskColor[PlayerID] != 888) { CreateEnt(PlayerID); } #else CreateEnt(PlayerID); #endif } #else #if defined SAVE_MASK_MODE if(SaveMaskColor[PlayerID] != 888) { CreateEnt(PlayerID); } #else CreateEnt(PlayerID); #endif #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 defined SAVE_MASK_MODE if(!CheckRandom[PlayerID]) { if(DefCheck[PlayerID]) { set_entvar(Entity[PlayerID], var_colormap, SaveMaskColor[PlayerID]); } else { set_entvar(Entity[PlayerID], var_colormap, DefColor); } } #else set_entvar(Entity[PlayerID], var_colormap, DefColor); #endif } if(CheckRandom[PlayerID]) { new RandomNum = random_num(0, 255); set_entvar(Entity[PlayerID], var_colormap, RandomNum); } } } #endif public client_disconnected(PlayerID) { RemoveMask(PlayerID); MaskColor[PlayerID] = 0; #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = 0; DefCheck[PlayerID] = false; #endif HDModels[PlayerID] = false; } 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_3|MENU_KEY_4|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^n", PlayerID, "COVID_MENU_ITEM_INFO", PlayerID, Entity[PlayerID] == 0 ? "COVID_MENU_ITEM_OFF" : "COVID_MENU_ITEM_ON"); #if defined MASK_ALL_MODE if(Entity[PlayerID] == 0) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\d%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_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", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_INFO", PlayerID, !CheckRandom[PlayerID] ? "COVID_MENU_ITEM_OFF" : "COVID_MENU_ITEM_ON"); } #else Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_INFO", PlayerID, "COVID_MENU_ITEM_DISABLED"); #endif if(Entity[PlayerID] == 0) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\d%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, "COVID_MENU_ITEM_COLOR_OFF"); } #if defined MASK_ALL_MODE else if(CheckRandom[PlayerID]) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\d%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE"); } #endif else { #if defined SAVE_MASK_MODE if(MaskColor[PlayerID] == 0) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, fmt(!DefCheck[PlayerID] ? "COVID_MENU_ITEM_COLOR_%d" : "COVID_MENU_ITEM_AUTOSAVE_%d", MaskColor[PlayerID])); } else { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, fmt("COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID])); } #else #if !defined MASK_ALL_MODE Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, fmt("COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID] + 50)); #else Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, fmt("COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID])); #endif #endif } if(Entity[PlayerID] == 0) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[4] \y# \w%L \y[\d%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_ITS_COLOR", PlayerID, "COVID_MENU_ITEM_COLOR_OFF"); } else { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[4] \y# \w%L \y[\d%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_ITS_COLOR", PlayerID, "COVID_MENU_ITEM_ITS_COLOR_RGB"); } 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); } } #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = 888; SaveMask(PlayerID); #endif #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); } } #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = DefColor; SaveMask(PlayerID); #endif #endif } } case 1: { #if defined MASK_ALL_MODE if(Entity[PlayerID] != 0) { CheckRandom[PlayerID] = !CheckRandom[PlayerID]; #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = CheckRandom[PlayerID] ? 666 : 777; SaveMask(PlayerID); #endif } #endif } case 2: { if(Entity[PlayerID] != 0) { #if defined MASK_ALL_MODE if(!CheckRandom[PlayerID]) { MaskColor[PlayerID] = (MaskColor[PlayerID] + 50) % 300; if(MaskColor[PlayerID] < 50) { #if defined SAVE_MASK_MODE set_entvar(Entity[PlayerID], var_colormap, !DefCheck[PlayerID] ? DefColor : DoubleSaveColor[PlayerID]); #else set_entvar(Entity[PlayerID], var_colormap, DefColor); #endif } else { set_entvar(Entity[PlayerID], var_colormap, MaskColor[PlayerID] - 50); } } #else MaskColor[PlayerID] = (MaskColor[PlayerID] + 50) % 250; set_entvar(Entity[PlayerID], var_colormap, MaskColor[PlayerID]); #endif #if defined SAVE_MASK_MODE if(MaskColor[PlayerID] < 50) { SaveMaskColor[PlayerID] = !DefCheck[PlayerID] ? MaskColor[PlayerID] - 50 : DoubleSaveColor[PlayerID]; } else { SaveMaskColor[PlayerID] = MaskColor[PlayerID] - 50; } SaveMask(PlayerID); #endif } } case 3: { if(Entity[PlayerID] != 0) { client_cmd(PlayerID, "messagemode ^"its_color^""); } } case 9: { return PLUGIN_HANDLED; } } CovidMenu(PlayerID); return PLUGIN_HANDLED; } public func_its_color(PlayerID) { new String[13]; read_argv(1, String, charsmax(String)); new Float:Color[3]; func_handler_row(String, Color); new TopColorNum = RGBtoHUE(Color); set_entvar(Entity[PlayerID], var_colormap, TopColorNum); #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = TopColorNum; SaveMask(PlayerID); #endif return PLUGIN_HANDLED; } func_handler_row(const String[], Float:Color[3]) { new R[4], G[4], B[4]; parse(String, R, charsmax(R), G, charsmax(G), B, charsmax(B)); Color[0] = str_to_float(R); Color[1] = str_to_float(G); Color[2] = str_to_float(B); } #if defined CHAT_ADVERTISING public Chat_Advertising() { client_print_color(0, print_team_default, "%l", "COVID_CHAT_INFO"); } #endif SetMask(PlayerID) { set_entvar(Entity[PlayerID], var_body, 0); #if defined MASK_ALL_MODE #if defined SAVE_MASK_MODE set_entvar(Entity[PlayerID], var_colormap, !DefCheck[PlayerID] ? DefColor : DoubleSaveColor[PlayerID]); #else set_entvar(Entity[PlayerID], var_colormap, DefColor); #endif #endif } 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, HDModels[PlayerID] ? MEDICAL_MODEL : MEDICAL_MODEL_FIX); set_entvar(Entity[PlayerID], var_modelindex, HDModels[PlayerID] ? Model[0] : Model[1]); 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 #if defined SAVE_MASK_MODE SaveMask(PlayerID) { new AuthID[MAX_AUTHID_LENGTH], Data[12]; get_user_authid(PlayerID, AuthID, charsmax(AuthID)); formatex(Data, charsmax(Data), "%d", SaveMaskColor[PlayerID]); nvault_set(Vault, AuthID, Data); } #endif //Thanks Garey stock RGBtoHUE(Float:rgb[3]) { new Float:r = rgb[0] / 255.0; new Float:g = rgb[1] / 255.0; new Float:b = rgb[2] / 255.0; new Float:cmax = floatmax(r, floatmax(g, b)); new Float:cmin = floatmin(r, floatmin(g, b)); new Float:delta = cmax - cmin; new Float:H = 1.0; if (!delta) { // undefined color seams like white or black which dont exists return 0; } if (r == cmax) { H = (g - b) / delta; } else if (g == cmax) { H = 2.0 + (b - r) / delta; } else { H = 4.0 + (r - g) / delta; } H /= 6.0; if (H < 0.0) { H += 1; } return floatround(H * 255); }
C++:/* * - ---------- Плагин - "COVID mode" [SPECIAL AMXX 1.8.2 VERSION] Сделано для поддержки тех пользователей, которые еще на старом AMXX 1.8.2) Функционал этого плагина дублирует основной плагин. * - ---------- Благодарности: Предложения, помощь в проработке идеи: Nebo, Pokemoshka, present, ssx Перевод на разные языки: rian18, tarsisd2, Yek'-ta, sensej1021, asd Помощь по коду: Garey Другая помощь: f@ntom, urpok * - ---------- Поддержка плагина: Dev-Cs: @wellasgood vk: https://vk.com/d1mkin 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. (если режим сохранения был выкл, то эта часть бы работала) ver 1.1.5: 1. Поправлен способ сохранения цвета маски в основной версии плагина. ver 1.1.6: 1. Добавлена цветная модель, сделанная по другому (без применения многих текстур). Использование с помощью topcolor (colormap) 2. Для версии AMXX 1.8.2, fix маски для старых моделей игрока (без детализации) осуществлен не был, по техническим проблемам. (вот вам и минус старых версий amxx) 3. Большие правки по коду, с учетом добавленного. 4. Переработано меню, а также в него добавлены цвета для маски что-бы выбрать из предложенных, иначе ввести свой цвет в формате RGB (255 255 0), через пробел. 5. Цвет маски теперь сохраняется в двух случаях, если игрок выбрал цвет из предложенных, а также если игрок выбрал свой цвет (RGB) ver 1.1.7: 1. Вновь были неполадки с сохранением цвета после выхода и повторного захода игрока на сервере. Исправлено. ver 1.1.8: 1. В версии плагина AMXX 1.8.2 добавлена функция закрытия файла nvault (plugin_end) ver 1.1.9: 1. Добавлена проверка #if defined SAVE_MASK_MODE для функции plugin_end, так как, она выполнялась бы в любом случае. ver 1.2.0: 1. Выявлен баг, что если закомментировать режим #define MASK_ALL_MODE, то плагин не компилировался. (поправлено, теперь работа плагина в режиме без #define MASK_ALL_MODE доступна), спасибо: urpok 2. Добавлены доп. проверки по коду с учетом новых обновлений. 3. В версии плагина AMXX 1.8.2 добавлена проверка на вызов функции (сообщение в чат), иначе оно отправлялось бы вне зависимости от положения квара. 4. Дополнен LANG файл. ver 1.2.1: 1. Добавлена возможность рекламировать в чат сообщения о командах открытия меню (вкл/выкл настройка #define CHAT_ADVERTISING, а также можно настроить временной интервал #define TIME). 2. Добавлена возможность указать цвет который будет выставляться по умолчанию (настройка new const DEFAULT_COLOR[], работает только с режимом #define MASK_ALL_MODE) 3. Добавлена функция обработчик, преобразующая строку c RGB данными в float массив, дабы не повторять лишний раз одно и тоже. 4. Теперь если игрок сохранит маску (т.е просто выберет в меню настроек), после перезахода на сервер и повторного захода в меню, уже будет пункт цвета (сохраненный). 4.1. Это означает, что даже после выключения маски или обратного включения (листания цветов других), можно вернуться к сохраненному цвету. (дабы заного его не вводить, например если это был свой RGB цвет) 5. Учтены и протестированы моменты, когда юзаются разные вариации режимов. 6. Большие правки/добавления по коду, с учетом новых обновлений. 7. В версию плагина AMXX 1.8.2 добавлен цветной чат (include colorchat.inc), теперь сообщения в чате цветные, как и в основной версии плагина. ver 1.2.2: 1. В версии плагина AMXX 1.8.2 изменен ключ с %l на %L в client_print_color, так как, ключ %l не поддерживается. ver 1.2.3: 1. Добавлено сохранение положения пункта РАНДОМ [ВКЛ/ВЫКЛ], после выхода и повторного захода на сервер, выбранное положение (вкл/выкл) сохранится. 2. Добавлено сохранение положения пункта МАСКА [ВКЛ/ВЫКЛ], после выхода и повторного захода на сервер, выбранное положение (вкл/выкл) сохранится. 3. Правка кода. ver 1.2.4: 1. Поправлено наименование создаваемого конфига в основной версии плагина, так как, пробелы в наменование не читаются. */ #include <amxmodx> #include <amxmisc> #include <engine> #include <fakemeta> #include <colorchat> #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> #define SAVE_MASK_MODE //Сохранение цвета маски при выходе и повторном заходе игрока, а также при смене карты. new DefColor; #if defined SAVE_MASK_MODE #include <nvault> new Vault, SaveMaskColor[MAX_PLAYERS+1], DoubleSaveColor[MAX_PLAYERS+1]; new bool:DefCheck[MAX_PLAYERS+1]; #endif new const DEFAULT_COLOR[] = "135 206 250" //указать цвет который будет выставляться по умолчанию (RGB формат) #endif //#define MASK_ACCESS //Работает с режимом MASK_ALL_MODE (Если включено, то выдает при спавне маски только игрокам с флагом ACCESS_FLAG_MENU, иначе всем) #define CHAT_ADVERTISING //возможность рекламировать в чат сообщения о командах открытия меню (вкл/выкл откоммент/коммент). #if defined CHAT_ADVERTISING #define TIME 120.0 //время для показа рекламы в чате (интервал) #endif new const PLUGIN[] = "COVID mode"; new const VERSION[] = "[182] 1.2.4"; new const AUTHOR[] = "wellasgood"; new const MEDICAL_MODEL[] = "models/medical-mask/med-mask_clr.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], bool:CheckRandom[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_concmd("its_color", "func_its_color"); 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"); new Float:Color[3]; func_handler_row(DEFAULT_COLOR, Color); DefColor = RGBtoHUE(Color); #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 CHAT_ADVERTISING set_task(TIME, "Chat_Advertising", .flags = "b"); #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 SAVE_MASK_MODE public plugin_end() { nvault_close(Vault); } #endif #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 SAVE_MASK_MODE new AuthID[MAX_AUTHID_LENGTH], Data[12]; get_user_authid(PlayerID, AuthID, charsmax(AuthID)); new timestamp, AccessResult = nvault_lookup(Vault, AuthID, Data, charsmax(Data), timestamp); if(AccessResult) { SaveMaskColor[PlayerID] = str_to_num(Data); if(SaveMaskColor[PlayerID] > 255) { switch(SaveMaskColor[PlayerID]) { case 666: { CheckRandom[PlayerID] = true; } case 777: { CheckRandom[PlayerID] = false; } case 888: { if(get_pcvar_num(MASK_HEALTH_EN) == 1) { CheckHealth[PlayerID] = true; } } } } else { DoubleSaveColor[PlayerID] = SaveMaskColor[PlayerID]; DefCheck[PlayerID] = true; } } #endif #if defined MASK_ACCESS if(get_user_flags(PlayerID) & ACCESS_FLAG_MENU) { #if defined SAVE_MASK_MODE if(SaveMaskColor[PlayerID] != 888) { CreateEnt(PlayerID); } #else CreateEnt(PlayerID); #endif } #else #if defined SAVE_MASK_MODE if(SaveMaskColor[PlayerID] != 888) { CreateEnt(PlayerID); } #else CreateEnt(PlayerID); #endif #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 defined SAVE_MASK_MODE if(!CheckRandom[PlayerID]) { if(DefCheck[PlayerID]) { set_pev(Entity[PlayerID], pev_colormap, SaveMaskColor[PlayerID]); } else { set_pev(Entity[PlayerID], pev_colormap, DefColor); } } #else set_pev(Entity[PlayerID], pev_colormap, DefColor); #endif } if(CheckRandom[PlayerID]) { new RandomNum = random_num(0, 255); set_pev(Entity[PlayerID], pev_colormap, RandomNum); } } } #endif public client_disconnect(PlayerID) { RemoveMask(PlayerID); MaskColor[PlayerID] = 0; #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = 0; DefCheck[PlayerID] = false; #endif } 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_3|MENU_KEY_4|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^n", PlayerID, "COVID_MENU_ITEM_INFO", PlayerID, Entity[PlayerID] == 0 ? "COVID_MENU_ITEM_OFF" : "COVID_MENU_ITEM_ON"); #if defined MASK_ALL_MODE if(Entity[PlayerID] == 0) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\d%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_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", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_INFO", PlayerID, !CheckRandom[PlayerID] ? "COVID_MENU_ITEM_OFF" : "COVID_MENU_ITEM_ON"); } #else Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[2] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_INFO", PlayerID, "COVID_MENU_ITEM_DISABLED"); #endif if(Entity[PlayerID] == 0) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\d%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, "COVID_MENU_ITEM_COLOR_OFF"); } #if defined MASK_ALL_MODE else if(CheckRandom[PlayerID]) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\d%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, "COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE"); } #endif else { new FormatLang[64]; #if defined SAVE_MASK_MODE if(MaskColor[PlayerID] == 0) { formatex(FormatLang, charsmax(FormatLang), !DefCheck[PlayerID] ? "COVID_MENU_ITEM_COLOR_%d" : "COVID_MENU_ITEM_AUTOSAVE_%d", MaskColor[PlayerID]); Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, FormatLang); } else { formatex(FormatLang, charsmax(FormatLang), "COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID]); Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, FormatLang); } #else #if !defined MASK_ALL_MODE formatex(FormatLang, charsmax(FormatLang), "COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID] + 50); Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, FormatLang); #else formatex(FormatLang, charsmax(FormatLang), "COVID_MENU_ITEM_COLOR_%d", MaskColor[PlayerID]); Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[3] \y# \w%L \y[\r%L\y]^n", PlayerID, "COVID_MENU_ITEM_COLOR_INFO", PlayerID, FormatLang); #endif #endif } if(Entity[PlayerID] == 0) { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[4] \y# \w%L \y[\d%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_ITS_COLOR", PlayerID, "COVID_MENU_ITEM_COLOR_OFF"); } else { Len += formatex(Menu[Len], charsmax(Menu) - Len, "\r[4] \y# \w%L \y[\d%L\y]^n^n", PlayerID, "COVID_MENU_ITEM_ITS_COLOR", PlayerID, "COVID_MENU_ITEM_ITS_COLOR_RGB"); } 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; if(get_pcvar_num(MASK_HEALTH_MSG) == 1) { HealthMsg(PlayerID, 1); } } #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = 888; SaveMask(PlayerID); #endif #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; if(get_pcvar_num(MASK_HEALTH_MSG) == 1) { HealthMsg(PlayerID, 1); } } #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = DefColor; SaveMask(PlayerID); #endif #endif } } case 1: { #if defined MASK_ALL_MODE if(Entity[PlayerID] != 0) { CheckRandom[PlayerID] = !CheckRandom[PlayerID]; #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = CheckRandom[PlayerID] ? 666 : 777; SaveMask(PlayerID); #endif } #endif } case 2: { if(Entity[PlayerID] != 0) { #if defined MASK_ALL_MODE if(!CheckRandom[PlayerID]) { MaskColor[PlayerID] = (MaskColor[PlayerID] + 50) % 300; if(MaskColor[PlayerID] < 50) { #if defined SAVE_MASK_MODE set_pev(Entity[PlayerID], pev_colormap, !DefCheck[PlayerID] ? DefColor : DoubleSaveColor[PlayerID]); #else set_pev(Entity[PlayerID], pev_colormap, DefColor); #endif } else { set_pev(Entity[PlayerID], pev_colormap, MaskColor[PlayerID] - 50); } } #else MaskColor[PlayerID] = (MaskColor[PlayerID] + 50) % 250; set_pev(Entity[PlayerID], pev_colormap, MaskColor[PlayerID]); #endif #if defined SAVE_MASK_MODE if(MaskColor[PlayerID] < 50) { SaveMaskColor[PlayerID] = !DefCheck[PlayerID] ? MaskColor[PlayerID] - 50 : DoubleSaveColor[PlayerID]; } else { SaveMaskColor[PlayerID] = MaskColor[PlayerID] - 50; } SaveMask(PlayerID); #endif } } case 3: { if(Entity[PlayerID] != 0) { client_cmd(PlayerID, "messagemode ^"its_color^""); } } case 9: { return PLUGIN_HANDLED; } } CovidMenu(PlayerID); return PLUGIN_HANDLED; } public func_its_color(PlayerID) { new String[13]; read_argv(1, String, charsmax(String)); new Float:Color[3]; func_handler_row(String, Color); new TopColorNum = RGBtoHUE(Color); set_pev(Entity[PlayerID], pev_colormap, TopColorNum); #if defined SAVE_MASK_MODE SaveMaskColor[PlayerID] = TopColorNum; SaveMask(PlayerID); #endif return PLUGIN_HANDLED; } func_handler_row(const String[], Float:Color[3]) { new R[4], G[4], B[4]; parse(String, R, charsmax(R), G, charsmax(G), B, charsmax(B)); Color[0] = str_to_float(R); Color[1] = str_to_float(G); Color[2] = str_to_float(B); } #if defined CHAT_ADVERTISING public Chat_Advertising() { client_print_color(0, print_team_default, "%L", LANG_PLAYER, "COVID_CHAT_INFO"); } #endif SetMask(PlayerID) { entity_set_int(Entity[PlayerID], EV_INT_body, 0); #if defined MASK_ALL_MODE #if defined SAVE_MASK_MODE set_pev(Entity[PlayerID], pev_colormap, !DefCheck[PlayerID] ? DefColor : DoubleSaveColor[PlayerID]); #else set_pev(Entity[PlayerID], pev_colormap, DefColor); #endif #endif } 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_color(PlayerID, print_team_default, "%L", PlayerID, num == 1 ? "COVID_HEALTH_MSG_PRE" : "COVID_HEALTH_MSG_POST", get_pcvar_num(MASK_HEALTH_NUM)); } #endif #if defined SAVE_MASK_MODE SaveMask(PlayerID) { new AuthID[MAX_AUTHID_LENGTH], Data[12]; get_user_authid(PlayerID, AuthID, charsmax(AuthID)); formatex(Data, charsmax(Data), "%d", SaveMaskColor[PlayerID]); nvault_set(Vault, AuthID, Data); } #endif //Thanks Garey stock RGBtoHUE(Float:rgb[3]) { new Float:r = rgb[0] / 255.0; new Float:g = rgb[1] / 255.0; new Float:b = rgb[2] / 255.0; new Float:cmax = floatmax(r, floatmax(g, b)); new Float:cmin = floatmin(r, floatmin(g, b)); new Float:delta = cmax - cmin; new Float:H = 1.0; if (!delta) { // undefined color seams like white or black which dont exists return 0; } if (r == cmax) { H = (g - b) / delta; } else if (g == cmax) { H = 2.0 + (b - r) / delta; } else { H = 4.0 + (r - g) / delta; } H /= 6.0; if (H < 0.0) { H += 1; } return floatround(H * 255); }
[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 = Default
COVID_MENU_ITEM_COLOR_50 = Red
COVID_MENU_ITEM_COLOR_100 = Yellow
COVID_MENU_ITEM_COLOR_150 = Green
COVID_MENU_ITEM_COLOR_200 = Blue
COVID_MENU_ITEM_COLOR_250 = Lilac
COVID_MENU_ITEM_ITS_COLOR = Choose your color
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Random color
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = random
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB format
COVID_MENU_ITEM_DISABLED = disabled
COVID_CHAT_INFO = ^3[^4COVID supervision^3] ^1Open the ^3mask ^1settings menu: say ^4/covid ^1or ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = saved
[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_50 = Красный
COVID_MENU_ITEM_COLOR_100 = Желтый
COVID_MENU_ITEM_COLOR_150 = Зеленый
COVID_MENU_ITEM_COLOR_200 = Синий
COVID_MENU_ITEM_COLOR_250 = Сиреневый
COVID_MENU_ITEM_ITS_COLOR = Выбрать свой цвет
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Рандомный цвет
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = рандом
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB формат
COVID_MENU_ITEM_DISABLED = отключено
COVID_CHAT_INFO = ^3[^4COVID надзор^3] ^1Открыть ^3меню ^1настроек маски: say ^4/covid ^1или ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = сохраненный
[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 = Standard
COVID_MENU_ITEM_COLOR_50 = Rot
COVID_MENU_ITEM_COLOR_100 = Gelb
COVID_MENU_ITEM_COLOR_150 = Grün
COVID_MENU_ITEM_COLOR_200 = Blau
COVID_MENU_ITEM_COLOR_250 = Flieder
COVID_MENU_ITEM_ITS_COLOR = eigene Farbe Auswählen
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Zufällige Farbe
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = zufällig
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB-Format
COVID_MENU_ITEM_DISABLED = abgeschaltet
COVID_CHAT_INFO = ^3[^4COVID-Aufsicht^3] ^1Menü ^3der ^1maskeneinstellungen Öffnen: say ^4/covid ^1oder ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = gespeichert
[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 = Alterar cor da máscara
COVID_MENU_ITEM_COLOR_0 = Padrao
COVID_MENU_ITEM_COLOR_50 = Vermelho
COVID_MENU_ITEM_COLOR_100 = Amarelo
COVID_MENU_ITEM_COLOR_150 = Verde
COVID_MENU_ITEM_COLOR_200 = Azul
COVID_MENU_ITEM_COLOR_250 = Lilás
COVID_MENU_ITEM_ITS_COLOR = escolha sua cor
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Aleatório cor
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = Aleatório
COVID_MENU_ITEM_ITS_COLOR_RGB = formato RGB
COVID_MENU_ITEM_DISABLED = desativado
COVID_CHAT_INFO = ^3[^4COVID supervisão^3] ^1abre o ^3menu ^1de opções da máscara: say ^4/covid ^1ou ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = guardado
[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 = varsayılan
COVID_MENU_ITEM_COLOR_50 = Kırmızı
COVID_MENU_ITEM_COLOR_100 = Sarı
COVID_MENU_ITEM_COLOR_150 = Yeşil
COVID_MENU_ITEM_COLOR_200 = Mavi
COVID_MENU_ITEM_COLOR_250 = Leylak
COVID_MENU_ITEM_ITS_COLOR = rengini Seç
COVID_MENU_ITEM_COLOR_RANDOM_INFO = rastgele renk
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = rastgele
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB biçimi
COVID_MENU_ITEM_DISABLED = devre dışı
COVID_CHAT_INFO = ^3[^4COVID supervision^3] ^1maske ^3ayarları ^1menüsünü aç: say ^4/covıd ^1veya ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = kayıtlı
[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 = standardowy
COVID_MENU_ITEM_COLOR_50 = Czerwony
COVID_MENU_ITEM_COLOR_100 = Żółty
COVID_MENU_ITEM_COLOR_150 = Zielony
COVID_MENU_ITEM_COLOR_200 = Niebieski
COVID_MENU_ITEM_COLOR_250 = Liliowy
COVID_MENU_ITEM_COLOR_ITS_COLOR = Wybierz swój kolor
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Losowy kolor
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = przypadkowy
COVID_MENU_ITEM_ITS_COLOR_RGB = format RGB
COVID_MENU_ITEM_DISABLED = wyłączone
COVID_CHAT_INFO = ^3[^4Nadzor COVID^3] ^1Otwórz ^3menu ^1ustawień maski: say ^4/covid ^1lub ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = zapisany
[ua]
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_50 = Червоний
COVID_MENU_ITEM_COLOR_100 = Жовтий
COVID_MENU_ITEM_COLOR_150 = Зелений
COVID_MENU_ITEM_COLOR_200 = Синій
COVID_MENU_ITEM_COLOR_250 = Бузковий
COVID_MENU_ITEM_ITS_COLOR = вибрати свій колір
COVID_MENU_ITEM_COLOR_RANDOM_INFO = рандомний колір
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = рандом
COVID_MENU_ITEM_ITS_COLOR_RGB = rgb формат
COVID_MENU_ITEM_DISABLED = відключений
COVID_CHAT_INFO = ^3[^4COVID нагляд^3] ^1відкрити ^3меню ^1налаштувань маски: say ^4/covid ^1або ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = збережений[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.
COVID_MENU_ITEM_COLOR_INFO = Mask color
COVID_MENU_ITEM_COLOR_OFF = enable the mask
COVID_MENU_ITEM_COLOR_0 = Default
COVID_MENU_ITEM_COLOR_50 = Red
COVID_MENU_ITEM_COLOR_100 = Yellow
COVID_MENU_ITEM_COLOR_150 = Green
COVID_MENU_ITEM_COLOR_200 = Blue
COVID_MENU_ITEM_COLOR_250 = Lilac
COVID_MENU_ITEM_ITS_COLOR = Choose your color
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Random color
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = random
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB format
COVID_MENU_ITEM_DISABLED = disabled
COVID_CHAT_INFO = ^3[^4COVID supervision^3] ^1Open the ^3mask ^1settings menu: say ^4/covid ^1or ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = saved
[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жизней.
COVID_MENU_ITEM_COLOR_INFO = Цвет маски
COVID_MENU_ITEM_COLOR_0 = Стандарт
COVID_MENU_ITEM_COLOR_50 = Красный
COVID_MENU_ITEM_COLOR_100 = Желтый
COVID_MENU_ITEM_COLOR_150 = Зеленый
COVID_MENU_ITEM_COLOR_200 = Синий
COVID_MENU_ITEM_COLOR_250 = Сиреневый
COVID_MENU_ITEM_ITS_COLOR = Выбрать свой цвет
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Рандомный цвет
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = рандом
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB формат
COVID_MENU_ITEM_DISABLED = отключено
COVID_CHAT_INFO = ^3[^4COVID надзор^3] ^1Открыть ^3меню ^1настроек маски: say ^4/covid ^1или ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = сохраненный
[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.
COVID_MENU_ITEM_COLOR_INFO = Maskenfarbe
COVID_MENU_ITEM_COLOR_OFF = Maske aktivieren
COVID_MENU_ITEM_COLOR_0 = Standard
COVID_MENU_ITEM_COLOR_50 = Rot
COVID_MENU_ITEM_COLOR_100 = Gelb
COVID_MENU_ITEM_COLOR_150 = Grün
COVID_MENU_ITEM_COLOR_200 = Blau
COVID_MENU_ITEM_COLOR_250 = Flieder
COVID_MENU_ITEM_ITS_COLOR = eigene Farbe Auswählen
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Zufällige Farbe
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = zufällig
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB-Format
COVID_MENU_ITEM_DISABLED = abgeschaltet
COVID_CHAT_INFO = ^3[^4COVID-Aufsicht^3] ^1Menü ^3der ^1maskeneinstellungen Öffnen: say ^4/covid ^1oder ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = gespeichert
[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 = Alterar cor da máscara
COVID_MENU_ITEM_COLOR_0 = Padrao
COVID_MENU_ITEM_COLOR_50 = Vermelho
COVID_MENU_ITEM_COLOR_100 = Amarelo
COVID_MENU_ITEM_COLOR_150 = Verde
COVID_MENU_ITEM_COLOR_200 = Azul
COVID_MENU_ITEM_COLOR_250 = Lilás
COVID_MENU_ITEM_ITS_COLOR = escolha sua cor
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Aleatório cor
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = Aleatório
COVID_MENU_ITEM_ITS_COLOR_RGB = formato RGB
COVID_MENU_ITEM_DISABLED = desativado
COVID_CHAT_INFO = ^3[^4COVID supervisão^3] ^1abre o ^3menu ^1de opções da máscara: say ^4/covid ^1ou ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = guardado
[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.
COVID_MENU_ITEM_COLOR_INFO = Maske rengi
COVID_MENU_ITEM_COLOR_OFF = maskeyi etkinleştir
COVID_MENU_ITEM_COLOR_0 = varsayılan
COVID_MENU_ITEM_COLOR_50 = Kırmızı
COVID_MENU_ITEM_COLOR_100 = Sarı
COVID_MENU_ITEM_COLOR_150 = Yeşil
COVID_MENU_ITEM_COLOR_200 = Mavi
COVID_MENU_ITEM_COLOR_250 = Leylak
COVID_MENU_ITEM_ITS_COLOR = rengini Seç
COVID_MENU_ITEM_COLOR_RANDOM_INFO = rastgele renk
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = rastgele
COVID_MENU_ITEM_ITS_COLOR_RGB = RGB biçimi
COVID_MENU_ITEM_DISABLED = devre dışı
COVID_CHAT_INFO = ^3[^4COVID supervision^3] ^1maske ^3ayarları ^1menüsünü aç: say ^4/covıd ^1veya ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = kayıtlı
[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.
COVID_MENU_ITEM_COLOR_INFO = Kolor maski
COVID_MENU_ITEM_COLOR_OFF = włącz maskę
COVID_MENU_ITEM_COLOR_0 = standardowy
COVID_MENU_ITEM_COLOR_50 = Czerwony
COVID_MENU_ITEM_COLOR_100 = Żółty
COVID_MENU_ITEM_COLOR_150 = Zielony
COVID_MENU_ITEM_COLOR_200 = Niebieski
COVID_MENU_ITEM_COLOR_250 = Liliowy
COVID_MENU_ITEM_COLOR_ITS_COLOR = Wybierz swój kolor
COVID_MENU_ITEM_COLOR_RANDOM_INFO = Losowy kolor
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = przypadkowy
COVID_MENU_ITEM_ITS_COLOR_RGB = format RGB
COVID_MENU_ITEM_DISABLED = wyłączone
COVID_CHAT_INFO = ^3[^4Nadzor COVID^3] ^1Otwórz ^3menu ^1ustawień maski: say ^4/covid ^1lub ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = zapisany
[ua]
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_50 = Червоний
COVID_MENU_ITEM_COLOR_100 = Жовтий
COVID_MENU_ITEM_COLOR_150 = Зелений
COVID_MENU_ITEM_COLOR_200 = Синій
COVID_MENU_ITEM_COLOR_250 = Бузковий
COVID_MENU_ITEM_ITS_COLOR = вибрати свій колір
COVID_MENU_ITEM_COLOR_RANDOM_INFO = рандомний колір
COVID_MENU_ITEM_COLOR_RANDOM_ACTIVATE = рандом
COVID_MENU_ITEM_ITS_COLOR_RGB = rgb формат
COVID_MENU_ITEM_DISABLED = відключений
COVID_CHAT_INFO = ^3[^4COVID нагляд^3] ^1відкрити ^3меню ^1налаштувань маски: say ^4/covid ^1або ^4/cv
COVID_MENU_ITEM_AUTOSAVE_0 = збережений