Перейти к содержанию

Mod Builder — сборщик модов для SMF

В продолжение темы Шаблон для создания модификации, а также как обзор программы Mod Builder — сборщика модификаций для SMF.

Что это?⚓︎

Программа, разработанная Rick “Yoshi2889” Kerkhof для облегчения создания модов для Simple Machines Forum.

Где взять?⚓︎

См. кнопку-ссылку внизу статьи.

Учебный пример⚓︎

Создадим модификацию Funny Converter, выполняющую замену файлов collapse.gif и expand.gif аналогичными картинками в PNG формате. Запускаем Mod Builder, заходим в Tools => Options, устанавливаем имя пользователя (ник), которое будет использоваться в проектах в качестве имени автора модификаций. Затем на вкладке Debugging указываем путь к файлам SMF (нужно указать ту версию, для которой создаем модификацию), и на вкладке PHP Code Checking — путь к файлу php.exe (необязательно, но пригодится для тестирования). Затем сохраняем настройки и возвращаемся на главное окошко программы. Выбираем «Create a new project».

На вкладке Mod Details указываем основные параметры мода: название, версию, тип, линейку версий SMF, для которой разрабатываем модификацию. После этого выбираем в меню File => Save Project, указываем или создаем директорию для файлов мода и переходим к следующему шагу.

Mod Builder - детали

На вкладке Readme можно создать небольшое описание модификации, указать лицензию и пр. ББ-теги поддерживаются.

Mod Builder - readme

Вкладку Source Edits пропускаем, так как там прописываются изменения напрямую в файлах движка, а у нас мод целиком на хуках. Поэтому ставим внизу галочку «Skip this step on build». Теперь открываем папку с проектом, находим там папку Source и создаем в ней подпапки Sources и Themes/default/images. Создаем файл /Sources/Subs-Funny.php со следующим содержимым:

<?php

if (! defined('SMF'))
    die('No direct access...');

function funny_buffer($buffer)
{
    $replacements = [];

    $collapse                = 'collapse.gif';
    $new_collapse            = 'collapse.png';
    $replacements[$collapse] = $new_collapse;

    $expand                  = 'expand.gif';
    $new_expand              = 'expand.png';
    $replacements[$expand]   = $new_expand;

    if (isset($_REQUEST['xml']))
        return $buffer;

    return str_replace(array_keys($replacements), array_values($replacements), $buffer);
}

Функция funny_buffer, вызываемая хуком integrate_buffer, на лету заменяет все вхождения collapse.gif и expand.gif в коде страницы на collapse.png и expand.gif.

В директорию Themes/default/images складываем подходящие вам картинки collapse.png и expand.png. После этого на вкладке Files to extract/delete в правом блоке (Extracting files to the forum) в раскрывающемся списке выбираем директорию Sources и указываем путь распаковки (Destination) $boarddir (корень форума). Затем нажимаем «Create a new instruction», чтобы подтвердить наш выбор. Повторяем процесс, выбрав в списке директорию Themes и путь распаковки $boarddir. См. скриншот для сравнения:

Mod Builder - пути и распаковка

На вкладке Installation code в раскрывающихся списках внизу выбираем предустановленный шаблон Hooks и оформляем его, как на скрине ниже. При установке мода будет добавляться хук funny_buffer из файла Subs-Funny.php, а при удалении мода — соответственно, будет удаляться и хук.

Mod Builder - хуки

Компиляция и проверка⚓︎

Другие вкладки пропускаем (на вкладке Database altering code можно прописать код добавления необходимых таблиц в базу данных), они нам пока не нужны. Выбираем в меню Project — Compile, указываем имя файла архива и получаем готовый для загрузки мод. Тестируем:

Mod Builder - установка мода

Mod Builder - аж глазу приятно

На этом всё, пользуйтесь на здоровье :)

Mod Builder Файлы проекта