1. Отключить сервер (установить --> SourceMod <--, если он еще не установлен) + socket 2. Скачать и распаковать на сервер --> ЭТОТ <-- архив 3. --> Скачать .smx <-- и поместить в addons/sourcemod/plugins 4. Установка завершена, можно включать сервер
Плагин предназначен для Mini Game серверов, а если точнее, то для карт, которые "на прохождение" (например, и для bhop сервера подойдет, т.к. там тоже уровни). Т.е. игрок постепенно проходит уровни один за другим (на каждом уровне свои препятствия) и так до самого финиша. Стандартный режим игры на таких картах не всегда удобен. Например, если вы умерли, то придётся начинать проходить карту с самого начала. Или, например, сам уровень довольно большой и вы не можете пройти конкретное место и вас снова и снова кидает назад - тут обычно нервы сдают, игрок не хочет проходить то же самое и просто выходит.
MG Levels особенности:
Код
- Создание/отслеживание уровней. Игрок знает на каком он уровне, сколько их всего, какие еще не прошел. - Возможность телепортироваться на уже пройденный и следующий за ним уровень (даже если игрок переподключался) - Возможность сохранять позицию и телепортироваться на нее - Для любого уровня можно создать описание/подсказку и тд (url открывается в MOTD окне) - Игрок может просматривать информацию о других игроках (на каком они уровне и сколько уже прошли) - Возможность удалять с карты ненужные объекты (например, те, которые убивают на респе, или которые плохо работают) - Функции и события для скриптеров (mg_levels.inc) - Админ (Z флаг) может телепортировать игроков на любые уровни и финиш - Возможность помечать уровни проблемными, чтобы игроки всегда могли телепортироваться с них на следующие
Первый уровень создать нельзя, т.к. игрок на нём сразу же после своего рождения. Создавать нужно начиная со 2-го (лимит уровней: 250). Последний созданный вами уровень - это финиш, и он не считается уровнем. Обязательно создавайте уровни строго по порядку, чтобы не было такого, что игрок, например, переходит с 3-го на 5-й. Чтобы созданные уровни активировались, нужно сменить карту. Ниже на скриншотах показано, что и как делать. Для удобства можете установить плагин MG Levels Help.
sm_mgl - меню для всех игроков (не работает, если нет созданных уровней) sm_mgladmin - админ меню (требуется Z флаг) sm_mglurl "номер уровня от 2 до 250" "ссылка на страницу с описанием уровня (url)"
Есть такие уровни, где тяжело понять что именно там делать надо и как его пройти. Для таких случаев и существует функция в sm_mgl меню: Как пройти этот уровень. Я вот для примера сделал на карте mg_100traps_v3:
Теперь, когда игрок будет на 17 уровне и нажмет Как пройти этот уровень - ему откроется указанная вами страница, где вы пишите что угодно, как пройти уровень и тд, видео прикрепить можно, скриншоты. Если для уровня не было сделано sm_mglurl, то игрок просто увидит сообщение Информация отсутствует.
Код
// Сообщение вида '[ MG Levels ] Ваш уровень: 5 из 20 (!mgl)' // 0 = откл; // 1 = всегда; // 2 = только если у игрока выключен авто-показ sm_mgl меню // 3 = только если включен // - // Default: "1" // Minimum: "0.000000" // Maximum: "3.000000" mg_levels_chatmsg "1"
// Если игрок умер: // 1 = воскресить; 2 = воскресить на прошлом уровне; 0 = откл // - // Default: "2" // Minimum: "0.000000" // Maximum: "2.000000" mg_levels_respawn_type "2"
cfg/mg_levels/maps/ - тут хранятся созданные уровни каждой карты mg_levels.cfg - некоторые настройки cfg/mg_levels/entity_remover/ - вручную прописываются имена/индексы объектов для удаления
mg_100traps_v3 (эта карта вроде не работает на v34) mg_ig_bob mg_bob2_fixed mg_fred_v4 mg_jump_obstacles_finally mg_foolscourse_v3 mg_yeayuhhh_obstacles
Постепенно буду добавлять уровни и на другие карты, но вы и сами можете это делать.
Дата: Понедельник, 26.08.2013, 06:32:08 | Сообщение # 2
Код
/** * Игрок ПРОШЁЛ уровень * * client - индекс игрока * level - уровень, который игрок прошел * sec - за сколько секунд игрок прошел уровень * FirstTime - если false, то игрок уже проходил этот уровень в течение текущей карты **/ forward MG_OnClientFinishedLevel(client, level, sec, bool:FirstTime);
/** * Игрок вот-вот будет ТЕЛЕПОРТИРОВАН на другой уровень * * client - индекс игрока * level - на какой уровень будет телепортирован (если > MG_GetLevelsCount(), то финиш) * self - если true, то телепортируется сам (иначе админом) * * return Plugin_Continue; - разрешить телепорт; return Plugin_Stop; - запретить **/ forward Action:MG_OnClientTeleport(client, level, bool:self);
/** * Игрок каким-то образом оказался на новом уровне, не пройдя прошлый. * Например, он мог быть телепортирован посторонними функциями, или на ноклипе залетел и тд. * Это просто уведомление. Ни к чему плохому не приведёт. * * client - индекс игрока * old_level - уровень, на котором игрок был * new_level - уровень, на котором игрок находится сейчас (если > MG_GetLevelsCount(), то финиш) **/ forward MG_OnClientLevelError(client, old_level, new_level);
/** * Игрок нажал на опцию "Как пройти этот уровень" и вот-вот увидит сайт в MOTD окне. * return Plugin_Continue; - разрешить; return Plugin_Stop; - запретить. **/ forward Action:MG_OnClientOpenLevelUrl(client);
/////////
/** * Возвращает общее кол-во уровней на текущей карте (финиш в них не входит). * * Уровни начинаются с 1 (игрок на 1-м уровне сразу же после рождения). * Если вернёт < 1, то уровней на текущей карте нет и все функции игнорируются. * Если уровень игрока > MG_GetLevelsCount, то он на финише. **/ native MG_GetLevelsCount();
/** * Текущий уровень игрока. Если он > MG_GetLevelsCount, то игрок на финише. **/ native MG_GetClientLevel(client);
/** * Позволяет узнать, какие уровни игрок ПРОШЁЛ (история очищается после смены карты). * * Как определяется прохождение уровня игроком: * Допустим, игрок оказался на уровне 5. * Если он не был телепортирован на него и прошлый уровень игрока был 4, то 4-й уровень считается пройденным. * Важно, чтобы номера уровней были по порядку. * Например, если игрок перешел с 3-го уровня на 5-й, то прохождение 3-го не засчитается, т.к. на 5-й нужно переходить с 4-го. * После прохождения уровня, игрок сможет телепортироваться на пройденный уровень и на следующий. * * // Узнаем, прошел ли игрок 1-й и 2-й уровень (размер делайте MG_GetLevelsCount() + 1) * decl bool:Finished[MG_GetLevelsCount() + 1]; * if (MG_GetClientFinishedLevels(client, Finished) && Finished[1] && Finished[2]) * PrintToChat(client, "1-й и 2-й уровни были пройдены"); **/ native bool:MG_GetClientFinishedLevels(client, Finished[]);
/** * Позволяет изменять статус уровней на пройден/не пройден (для конкретного игрока). * * Например, если хотите сделать пройденным только 1-й уровень: * new bool:Finished[MG_GetLevelsCount() + 1]; * Finished[1] = true; * MG_SetClientFinishedLevels(client, Finished); **/ native MG_SetClientFinishedLevels(client, Finished[]);
/** * Сколько секунд игрок находится на текущем уровне. **/ native MG_GetClientLevelSec(client);
/** * Переместить игрока на новый уровень (никакие MG_On события вызваны не будут). * Можно перемещать и на финиш (level = MG_GetLevelsCount() + 1). **/ native bool:MG_SetClientLevel(client, level);
/** * Если игрок на каком-то уровне (или на финише), то это не значит, что он именно внутри созданной вами коробки (размер уровня). * Функция вернет true, только если игрок действительно находится внутри коробки. * Если игрок на 1-м уровне, то функция вернёт false, т.к. вы можете создавать уровни, начиная со 2-го (последний вами созданный - это финиш). **/ native bool:MG_ClientInLevelBox(client);
/** * Вернет true, если уровень проблемный (если не знаете что это, читайте документацию). **/ native bool:MG_ProblemLevel(level);
/** * Изменить статус уровня на проблемный (true) / обычный (false). **/ native bool:MG_SetProblemLevel(level, bool:problem);
Исправил несколько недочетов:
- Была неверная кодировка в одном файле и слово "Финиш" в меню админа не отображалось.
- Конец раунда должен блокироваться, только если mg_levels_respawn_type > 0 (режим DeathMatch), и только если на карте есть созданные уровни. А блокировался он всегда, даже если уровней на карте нет.
Когда админ создаёт уровни, всего есть 4 шага (скрины перезалил). И если он нажмет 0 (отмена), то перекидывало на самый назад в главное меню. Теперь это кнопка Назад - будет возвращать на шаг назад, что намного удобнее. И даже если меню закроется и вы снова нажмете "Добавить/изменить уровень" - вас перекинет именно на тот шаг, на котором вы остановились.
Дата: Вторник, 27.08.2013, 18:07:02 | Сообщение # 3
- Новая опция в !mgl меню Вкл/Откл авто-показ меню - Новая настройка в mg_levels.cfg
Код
// Сообщение вида '[ MG Levels ] Ваш уровень: 5 из 20 (!mgl)' // 0 = откл; // 1 = всегда; // 2 = только если у игрока выключен авто-показ sm_mgl меню // 3 = только если включен // - // Default: "1" // Minimum: "0.000000" // Maximum: "3.000000" mg_levels_chatmsg "1"
- В админку добавлена функция Проблемные уровни
Код
Проблемным является тот уровень, который очень тяжело пройти (возможно из-за багов самой карты). Если вы сделаете уровень проблемным, то игрок всегда сможет телепортироваться с него на следующий уровень через !mgl меню.