Привет. Продам плагин новогодней ёлки собственного написания. За ресурсы спасибо добрым людям (авторов не знаю).
Требования: * Amx Mod X 1.8.3 или новее * Более-менее свежий ReAPI
Система позволяет расставлять на карте ёлки, подходя к которым игроки могут получать различные поощрения. Сами поощрения реализованы в виде модулей к основному плагину (API), что позволяет как угодно изменять их, а также добавлять новые и убирать ненужные. Все поощрения имеют квары, система гибко настраивается по вкусу пользователя, и хорошо подойдёт для любого сервера в период празднования Нового года.
В комплекте три разные модели ёлки (большая; маленькая с анимацией; огромная), а так же три разных звука получения подарка. При желании, при помощи кваров можно задать свои модели/звуки/спрайт над ёлкой (звуки и спрайт можно отключить).
Данный плагин можно использовать не только в кач-ве ёлки на новый год. Вы можете расставить, например, модели ящиков, и повесить над ними рекламу сайта/группы вашего сервера. Остаётся лишь подправить словарь (data/lang), и готово.
Важный момент - в ёлку нельзя войти или забросить в неё бомбу или оружие.
Система поддерживается (фикшу баги по репортам, принимаю предложения по функционалу и новым поощрениям).
На данный момент в системе имеются следующие поощрения: * Фейерверк (два типа, декоративная функция) * Пустышка (ничего не даёт) * Валюта GameCMS * Флаги доступа GameCMS (например, VIP на время) * Флаги доступа (для тех, у кого нет GameCMS) * Игровые деньги ($) * Игровые деньги ($), вариант №2 * Очки BonusMenu RBS * Опыт AES (поддержка основных вариантов, включая плагин Скальпеля) * ANEW AES (поддержка основных вариантов, включая плагин Скальпеля) * Здоровье (HP) * Броня * Оружие из Ultimate Weapons / Advanced Ultimate Weapons * Оружие из Weapon Skin System от Mistrick * Выполнение команд на сервере * Deagle + Гранаты (HE + 2 FB + Дым)
Настройки
// // XmasTree: Core (Ядро системы) -> //
// Глобальная задержка повторного получения подарка (в секундах) // Задержка хранится в файле по SteamID, т.е. смена карты не сбрасывает её. // Укажите отрицательное значение чтобы считать не секунды, а раунды (напр., -3 - через 3 раунда) // Помните о данном кваре при изменении значения квара 'xmt_core_nvault_prune_days' xmt_core_present_cooldown "300"
// Глобальный минимальный раунд раздачи подарков // Укажите отрицательное значение чтобы считать не раунды, а секунды (напр., -300 - через 300 секунд с начала карты) xmt_core_min_time "3"
// Минимальный онлайн для раздачи подарков xmt_core_min_players "4"
// В течение скольки секунд с начала раунда игроки могут получать подарки (0 - не ограничивать). // Внимание, началом раунда в данном случае считается конец фризтайма (фризтайм 0 учтён). xmt_core_round_time "0"
// Как можно получить подарок: // "a" - Коснуться ёлки // "b" - Подойти к ёлке и нажать "E" (Use) xmt_core_use_type "a"
// Модели. Вы можете одновременно загружать несколько моделей, все они будут доступны в редакторе. // Внимание! Перестановка/удаление/замена пунктов прямо повлияет на конфиги карт в 'configs/xmas_tree' // так как конфиги содержат индексы моделей. // // Первый аргумент: Путь к модели // Второй аргумент: Размеры (mins, maxs) граней касания модели для каждой из ёлок // Третий аргумент: Sequence (Поза) // Четвёртый аргумент: Framerate (скорость анимации) // Пятый аргумент: Смещение спрайта над ёлкой (квар 'xmt_core_sprite') по вертикали // // Большая ёлка xmt_core_model "models/xmt/xmas_tree1.mdl" "-64.0 -64.0 -14.0 64.0 64.0 260.0" "0" "0.0" "340.0" // Маленькая ёлка с анимацией //xmt_core_model "models/xmt/xmas_tree2.mdl" "-36.0 -36.0 0.0 36.0 36.0 160.0" "0" "1.0" "210.0" // Огромная ёлка //xmt_core_model "models/xmt/xmas_tree3.mdl" "-100.0 -100.0 -1.0 100.0 100.0 440.0" "0" "0.0" "495.0"
// Спрайт над ёлкой ("" - отключить) xmt_core_sprite "sprites/xmt/xmas.spr"
// Скорость анимации спрайта (0.0 - без анимации) xmt_core_sprite_framerate "10.0"
// Режим рендера спрайта (см. 'Rendering modes' в amxconst.inc) xmt_core_sprite_rendermode "5"
// Режим эффекта спрайта (см. 'Rendering fx' в amxconst.inc) xmt_core_sprite_renderfx "0"
// Цвет спрайта в формате RGB xmt_core_sprite_color "0 0 0"
// Музыка игроку при получении подарка ("" - отключить) // Можно использовать .mp3 и .wav xmt_core_present_music "sound/xmt/xmt_bells1.wav" //xmt_core_present_music "sound/xmt/xmt_bells2.wav" //xmt_core_present_music "sound/xmt/xmt_bells3.wav"
// Учитывать ботов при подсчёте онлайна для логики получения подарков? xmt_core_count_bots "0"
// Очистка хранилища от устаревших значений задержек (в днях; 0 - выключить очистку) // Устаревшей считается запись игрока, который не получает подарки # дней // Помните о данном кваре при изменении значения квара 'xmt_core_present_cooldown' xmt_core_nvault_prune_days "60"
// Пауза между касаниями игрока и ёлки (в секундах) xmt_core_touch_cooldown "5"
// Шанс выпадения в процентах (0-100) xmt_money_chance "100"
// Минимальный раунд для выпадения xmt_money_min_round "3"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_money_cooldown "30"
// Минимум игроков для выпадения подарка xmt_money_min_players "0"
// Сколько единиц валюты в сумме один игрок может получить за одну карту (0 - без ограничения) xmt_money_limit_player "0"
// Сколько единиц валюты в сумме могут получить все игроки за одну карту (0 - без ограничения) xmt_money_limit_total "0"
// Минимально возможное значение награды xmt_money_min_cash "2500"
// Максимально возможное значение награды xmt_money_max_cash "10000"
// Не выдавать валюту игрокам, у которых на аккаунте # или более валюты (0 - без ограничения) xmt_money_acc_limit "0"
// // XmasTree: Money 2 (Игровые деньги №2) -> //
// Шанс выпадения в процентах (0-100) xmt_money2_chance "100"
// Минимальный раунд для выпадения xmt_money2_min_round "3"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_money2_cooldown "30"
// Минимум игроков для выпадения подарка xmt_money2_min_players "0"
// Сколько единиц валюты в сумме один игрок может получить за одну карту (0 - без ограничения) xmt_money2_limit_player "0"
// Сколько единиц валюты в сумме могут получить все игроки за одну карту (0 - без ограничения) xmt_money2_limit_total "0"
// Минимально возможное значение награды xmt_money2_min_cash "2500"
// Максимально возможное значение награды xmt_money2_max_cash "10000"
// Не выдавать валюту игрокам, у которых на аккаунте # или более валюты (0 - без ограничения) xmt_money2_acc_limit "0"
// // XmasTree: Health (Здоровье) -> //
// Шанс выпадения в процентах (0-100) xmt_hp_chance "100"
// Минимальный раунд для выпадения xmt_hp_min_round "1"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_hp_cooldown "30"
// Минимум игроков для выпадения подарка xmt_hp_min_players "0"
// Сколько единиц здоровья в сумме один игрок может получить за одну карту (0 - без ограничения) xmt_hp_limit_player "0"
// Сколько единиц здоровья в сумме могут получить все игроки за одну карту (0 - без ограничения) xmt_hp_limit_total "0"
// Минимально возможное значение награды xmt_hp_min "250"
// Максимально возможное значение награды xmt_hp_max "250"
// Игроки со здоровьем # и более единиц не могут подобрать подарок (0 - без ограничения) xmt_hp_cap "0"
// Здоровье не будет пополняться выше # единиц xmt_hp_maxhp "250"
// // XmasTree: Armor (Броня) -> //
// Шанс выпадения в процентах (0-100) xmt_ap_chance "100"
// Минимальный раунд для выпадения xmt_ap_min_round "1"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_ap_cooldown "30"
// Минимум игроков для выпадения подарка xmt_ap_min_players "0"
// Сколько единиц брони в сумме один игрок может получить за одну карту (0 - без ограничения) xmt_ap_limit_player "0"
// Сколько единиц брони в сумме могут получить все игроки за одну карту (0 - без ограничения) xmt_ap_limit_total "0"
// Минимально возможное значение награды xmt_ap_min "250"
// Максимально возможное значение награды xmt_ap_max "250"
// Тип брони для выдачи (1 - бронежилет; 2 - каска и бронежилет; 3 - случайно) xmt_ap_type "2"
// Игроки со бронёй # и более единиц не могут подобрать подарок (0 - без ограничения) xmt_ap_cap "0"
// Броня не будет пополняться выше # единиц xmt_ap_maxap "250"
// // XmasTree: AES ANEW (Валюта системы) -> //
// Тип системы AES (укажите # соответствующий плагину который вы используете): // 1 - Army Ranks Ultimate // 2 - [fork] Advanced Experience System // 3 - [0.5] Advanced Experience System // 4 - [0.4] Advanced Experience System xmt_aes_anew_type "1"
// Минимальный раунд для выпадения xmt_aes_anew_min_round "1"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_aes_anew_cooldown "30"
// Минимум игроков для выпадения подарка xmt_aes_anew_min_players "6"
// Сколько единиц очков ANEW в сумме один игрок может получить за одну карту (0 - без ограничения) xmt_aes_anew_limit_player "50"
// Сколько единиц очков ANEW в сумме могут получить все игроки за одну карту (0 - без ограничения) xmt_aes_anew_limit_total "300"
// Минимально возможное значение награды xmt_aes_anew_min "5"
// Максимально возможное значение награды xmt_aes_anew_max "15"
// Не выдавать награду игрокам, у которых на аккаунте # или более очков ANEW (0 - без ограничения) xmt_aes_anew_limit "0"
// // XmasTree: AES EXP (Опыт системы) -> //
// Тип системы AES (укажите # соответствующий плагину который вы используете): // 1 - Army Ranks Ultimate // 2 - [fork] Advanced Experience System // 3 - [0.5] Advanced Experience System // 4 - [0.4] Advanced Experience System xmt_aes_exp_type "1"
// Минимальный раунд для выпадения xmt_gcms_flags_min_round "3"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_gcms_flags_cooldown "120"
// Минимум игроков для выпадения подарка xmt_gcms_flags_min_players "6"
// Установите "1", чтобы в случае когда ни один пункт не подошёл по значению шанса, // логика выбирала наивысший по шансу выпадения пункт. При значении "0", в таком случае // подарок вообще не будет выдан. xmt_gcms_flags_use_highest "0"
// Команды регистрации флагов // Формат: имя_в_чате(МЛ-ключ) шанс флаги флаги_исключения режим_исключения длительность куллдаун максимум_за_карту // Шанс - шанс выпадения флага, от 1 до 100 // Флаги - флаги для выдачи к буквенном формате ("abcde...") // Флаги исключения - при наличии указанных флагов игрок не может взять подарок // Режим исключения: // 0 - нельзя взять подарок если у игрока есть хоть 1 флаг из флагов исключения // 1 - нельзя взять подарок если у игрока есть все флаги из флагов исключения // Длительность: // -1 - на карту // 0 - навсегда // больше 0 - на # минут // Куллдаун - Задержка повторного выпадения в секундах // Максимум за карту - сколько раз подарок может выпасть за одну карту (-1 - без лимита) // xmt_gcms_flags_regcmd "XMT__GAMECMS_FLAGS__VIP_1" "100" "t" "t" "1" "-1" "300" "3" xmt_gcms_flags_regcmd "XMT__GAMECMS_FLAGS__VIP_2" "10" "t" "t" "1" "1440" "1200" "1"
// // XmasTree: Temporary Flags (Флаги доступа; Для тех, у кого нет GameCMS) -> //
// Минимальный раунд для выпадения xmt_temp_flags_min_round "3"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_temp_flags_cooldown "120"
// Минимум игроков для выпадения подарка xmt_temp_flags_min_players "6"
// Установите "1", чтобы в случае когда ни один пункт не подошёл по значению шанса, // логика выбирала наивысший по шансу выпадения пункт. При значении "0", в таком случае // подарок вообще не будет выдан. xmt_temp_flags_use_highest "0"
// Команды регистрации флагов // Формат: имя_в_чате(МЛ-ключ) шанс флаги флаги_исключения режим_исключения куллдаун максимум_за_карту // Шанс - шанс выпадения флага, от 1 до 100 // Флаги - флаги для выдачи к буквенном формате ("abcde...") // Флаги исключения - при наличии указанных флагов игрок не может взять подарок // Режим исключения: // 0 - нельзя взять подарок если у игрока есть хоть 1 флаг из флагов исключения // 1 - нельзя взять подарок если у игрока есть все флаги из флагов исключения // Длительность: // -1 - на карту // 0 - навсегда // больше 0 - на # минут // Куллдаун - Задержка повторного выпадения в секундах // Максимум за карту - сколько раз подарок может выпасть за одну карту (-1 - без лимита) // xmt_temp_flags_regcmd "XMT__TEMP_FLAGS__VIP_1" "100" "t" "t" "1" "-1" "300" "3"
// // XmasTree: SrvCmd (Выполнение команд на сервере) -> //
// Минимальный раунд для выпадения xmt_srvcmd_min_round "2"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_srvcmd_cooldown "30"
// Минимум игроков для выпадения подарка xmt_srvcmd_min_players "0"
// Установите "1", чтобы в случае когда ни один пункт не подошёл по значению шанса, // логика выбирала наивысший по шансу выпадения пункт. При значении "0", в таком случае // подарок вообще не будет выдан. xmt_srvcmd_use_highest "0"
// Минимальный раунд для выпадения xmt_uw_min_round "2"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_uw_cooldown "30"
// Минимум игроков для выпадения подарка xmt_uw_min_players "0"
// Установите "1", чтобы в случае когда ни один пункт не подошёл по значению шанса, // логика выбирала наивысший по шансу выпадения пункт. При значении "0", в таком случае // подарок вообще не будет выдан. xmt_uw_use_highest "0"
// Команды регистрации оружия // Формат: оружие минимальный_раунд шанс(1-100) // xmt_uw_regcmd "ultimate_ak47" "2" "100" xmt_uw_regcmd "ultimate_m4a1" "2" "100"
// Минимальный раунд для выпадения xmt_wss_min_round "2"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_wss_cooldown "30"
// Минимум игроков для выпадения подарка xmt_wss_min_players "0"
// Установите "1", чтобы в случае когда ни один пункт не подошёл по значению шанса, // логика выбирала наивысший по шансу выпадения пункт. При значении "0", в таком случае // подарок вообще не будет выдан. xmt_wss_use_highest "0"
// Команды регистрации оружия // Формат: скин минимальный_раунд шанс(1-100) // xmt_wss_regcmd "AK-47 Skin 1" "2" "100"
// // XmasTree: Dummy (Пустышка, ничего не даёт) -> //
// Минимальный раунд для выпадения xmt_dglgrens_min_round "3"
// Подарок не будет выпадать чаще 1 раза в # секунд (0 - без задержки) xmt_dglgrens_cooldown "30"
// Минимум игроков для выпадения подарка xmt_dglgrens_min_players "0"
Реализуется с привязкой на IP:PORT Все исходники открыты, кроме ядра (API). Т.е. можете заказать переработку компонентов поощрений у кого угодно (не обязательно у меня). Касаемо логики API - здесь при необходимости я внесу необходимые вам изменения в общий релиз, чтобы вы в итоге не остались без обновлений.
Кто ещё не сообразил, - да, эту штуку можно использовать не только как ёлку. Меняем модели, звуки, словарь, и вот у вас выдача ништяков под любое событие (или вообще на регулярной основе).
Обновление
XmasTree: Core Обновление с версии 1.0.0 до 1.1.0
Расширен функционал квара 'xmt_core_present_cooldown', добавлено доп. описание: // Задержка хранится в файле по SteamID, т.е. смена карты не сбрасывает её. // Укажите отрицательное значение чтобы считать не секунды, а раунды (напр., -3 - через 3 раунда) // Помните о данном кваре при изменении значения квара 'xmt_core_nvault_prune_days'
Квару 'xmt_core_nvault_prune_days' добавлено доп. описание: // Устаревшей считается запись игрока, который не получает подарки # дней // Помните о данном кваре при изменении значения квара 'xmt_core_present_cooldown'
Улучшена информативность при недостаточном времени/раунде для получения подарка (квар 'xmt_core_min_time)', теперь игроки видят сколько осталось ждать до глобального начала раздачи подарков:
Добавлен квар 'xmt_core_round_time' позволяющий определить, в течение скольки секунд с начала раунда игроки могут получать подарки.
Квары 'xmt_core_model_hull', 'xmt_core_model_framerate', и 'xmt_core_sprite_offset' упразднены.
Квар 'xmt_core_model' переделан на команду и теперь: 1) Позволяет загружать несколько моделей 2) Принимает размеры (которые раньше задавались в 'xmt_core_model_hull') вторым аргументом 3) Принимает позу (sequence) третим аргументом 4) Принимает скорость анимации (framerate) четвёртым аргументом (замена 'xmt_core_model_framerate') 5) Принимает смещение спрайта над ёлкой (замена 'xmt_core_sprite_offset')
В редактор добавлен пункт "Модель", позволяющий переключаться между всеми моделями из 'xmt_core_model'
Конфиги с ёлками (configs/xmas_tree) получили дополнительный аргумент. Он идёт последним, и что-либо делать для обновления не нужно. Старые конфиги будут использовать первую модель из 'xmt_core_model'.
В 'scripting/include/xmas_tree.inc' добавлены XT_BASE_TREE_CLASSNAME и XT_BASE_SPRITE_CLASSNAME
Добавлен квар 'xmt_core_use_type' позволяющий определить способ получения подарка (касание, нажатие 'E')
Редактор: Улучшен алгоритм удаления ёлок по прицелу (теперь прицелиться проще)
Добавлены плагины: xmas_tree_weapon_skin_system.sma - Оружие Weapon Skin System от Mistrick xmas_tree_dummy.sma - Пустышка (ничего не даёт) xmas_tree_money_2.sma - Игровые деньги (вариант №2) xmas_tree_dgl_grens.sma - Дигл + Гранаты (HE, 2 Флешки, Дым)
Плагин xmas_tree_temporary_flags.sma изменён. Теперь можно задавать доступ не только до конца карты. У команды 'xmt_temp_flags_regcmd' появился аргумент 'Длительность'.
Из словаря 'data/lang/xmas_tree.txt' удалён ключ XMT_CORE__DENY_TIME
Как обновиться: Заменить 'scripting/include/xmas_tree.inc' локально (в компиляторе) Далее на сервере: Остановить сервер (не обязательно, но рекомендуется)
Заменить plugins/xmas_tree_core.amxx
Заменить data/lang/xmas_tree.txt или перенести новые ключи (и убрать удалённые)
В configs/xmas_tree.cfg удалить квары: xmt_core_model_hull xmt_core_model_framerate xmt_core_sprite_offset
В configs/xmas_tree.cfg копировать блоки кваров из нового xmas_tree.cfg: xmt_core_present_cooldown xmt_core_nvault_prune_days xmt_core_model xmt_core_round_time (новый квар) xmt_core_use_type (новый квар)
Если используете xmas_tree_temporary_flags.sma, обновите данный плагин, и измените в конфиге команды 'xmt_temp_flags_regcmd' согласно новому варианту (укажите время действия).
Новые плагины: Общее для всех: Выбрать необходимые, скомпилировать, залить .amxx на сервер, прописать в plugins-xmas_tree.ini, копировать блоки кваров из нового xmas_tree.cfg