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('Hacking attempt...');

function funny_buffer($buffer)
{
    $replacements = array();

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

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

    return (isset($_REQUEST['xml']) ? $buffer : 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 Файлы проекта