Контроллер окончания сетевой миссии
Материал из F2 RU
Содержание |
Описание
По некоторым причинам не всегда просто заставить миссию завершиться корректно для всех клиентов и для сервера - не все игроки видят правильный дебрифинг (из файла briefing.html). Контроллер окончания сетевой миссии позволит выполнять окончание миссии на сервере только после того, как она завершится у всех клиентов - это значит, что все игроки увидят корректный дебрифинг.
Требуемые файлы
- init.sqf
- f\common\f_mpEndSetup.sqf
- f\common\f_mpEndReceiver.sqf
- f\server\f_mpEndBroadcast.sqf
Как использовать
Редактирование вашей миссии
В вашей миссии там, где вы хотите завершить миссию (например, триггер или скрипт), используйте следующий код (myEnd – можете переименовать как хотите, n - номер сценария, который вы хотите вызвать для окончания; возможные значения: 1,2,3,4,5,6):
myEnd = [n] execVM "f\server\f_mpEndBroadcast.sqf";
Учтите, что этот код можно вызвать на любом компьютере, но он будет работать только в том случае (вызывая окончание миссии), если он также запущен на сервере.
Вы можете поместить код выше в поле Активация обычного триггера или в свой скрипт (.sqf файл). Если вы используете триггеры, то вы должны использовать тип Переключить, а не типы Конец #1 / Конец #2 и тд. (потому, что сетевой контроллер окончания автоматически создаёт и использует триггер Конец).
Компонент сначала автоматически проверит, произошло ли окончание на клиентах, а потом на сервере. Ваша миссия завершится корректно на всех компьютерах, показывая правильный дебрифинг для всех игроков (убедитесь, что файл briefing.html содержит текст для всех окончаний, которые вы собираетесь использовать – смотрите раздел шаблон файла брифинга для дальнейшей информации).
Выполнение собственного кода в конце миссии
Если вы хотите использовать этот компонент для выполнения дополнительных задач, например, установки выполненных/проваленных заданий или показа скриптовых заставок, откройте файл f\common\f_mpEndReceiver.sqf и найдите фрагмент кода:
// CLEAN-UP OBJECTIVES & TRIGGER CUT-SCENES ETC.
Если вы просмотрите эту секцию, то увидите отмеченные пропуски:
// Ending #1
case 1:
{
// Place any custom code for ending #1 after this line:
};
Пропущенное место будет для каждого возможного окончания (от 1 до 6). Просто вставьте ваш код в указанное место.
Советы
- Окончание миссии - это отличное место для выполнения собственного кода изменения статусов заданий.
Как отключить
Откройте файл init.sqf и найдите фрагмент кода:
// F2 - Multiplayer Ending Controller
Отредактируйте строку ниже, добавив символы // в начало:
f_endSelected = -1; [] execVM "f\common\f_mpEndSetUp.sqf";
Авторы
- Headspace
- Rom
- Fer
