Патч: Серверные скрипты

Этот патч позволяет писать программные скрипты на С#, взаимодействующие с MachineCraft.

После включения, в меню HOST появится новое текстовое поле. Здесь можно вписать названия исполняемых скриптов, разделённые точкой с запятой (;). Запуск сервера (без подключения через JOIN) запускает эти серверные скрипты.

//#requires

Если у вашего скрипта есть зависимости от других, их нужно описать в его начале.

Например, если скрипту для работы требуются файлы commandLib.cs и nameLib.cs, начало скрипта будет выглядеть следующим образом:

//#requires commandLib.cs
//#requires nameLib.cs

Запрашиваемые файлы ищутся в папке _scripts, поэтому если скрипт находится в её подпапке, не забудьте добавить её в выражение, например:

//#requires libs\commandLib.cs

Такой запрос будет искать скрипт UserData\_scripts\libs\commandLib.cs.

Базовый серверный скрипт

Все серверные скрипты наследуются от класса HostScript. Они должны переопределять свойства pluginName и pluginCreator. Простейший шаблон выглядит следующим образом:

class templateScript : HostScript {
    public override string pluginName => "template";
    public override string pluginCreator => "Dylan";



}

Объект MCNPlayer

Объект MCNPlayer обозначает собой подключённого к серверу игрока.

Свойства

playerName

Имя игрока.

machineName

Название крафта игрока.

plrID

Идентификатор игрока, зависящий от порядка подключения. У первого игрока он будет 0, у второго - 1 и т.д.

Методы

sendMessage(string)

Отправляет сообщение в чат игроку.

Класс MCNServer

Статический класс MCNServer содержит различные методы для взаимодействия с игровым сервером.

Свойства

players

Массив объектов MCNPlayer, состоящий из подключённых в данный момент к серверу игроков.

Методы

broadcastMessage(string)

Отправляет широковещательное сообщение всем подключённым игрокам.

setSnow(int)

Работает как команда >snow=? со значением параметра от 0 до 9.

setRain(int)

Работает как команда >rain=? со значением параметра от 0 до 9.

setCloud(int)

Работает как команда >cloud=? со значением параметра от 0 до 9.

setCycle(int)

Работает как команда >cycle=?.

setTime(int)

Работает как команда >time=? со значением параметра от 0 до 9.

playMovie(string)

Работает как команда >movie=?, где параметром является ссылка на воспроизводимое видео.

stopMovie()

Останавливает текущее видео.

pauseMovie()

Ставит текущее видео на паузу.

resumeMovie()

Возобновляет воспроизведение текущего видео.

Класс HostScript

Это основной класс, который используется для создания собственных скриптов. Содержит переопределяемые методы, вызываемые при каком-либо событии.

Переопределяемые методы

onInit()

Вызывается сразу после компиляции и запуска программы. Аналогичен методу Start() в Unity.

onDestroy()

Вызывается при уничтожении скрипта. Используется для освобождения ресурсов, занятых скриптом.

onPlayerJoin(MCNPlayer)

Вызывается при подключении игрока к серверу.

onPlayerSwitchedMachine(MCNPlayer)

Вызывается при смене игроком крафта (посредством патча для смены крафтов).

onPlayerLeave(MCNPlayer)

Вызывается при отключении игрока от сервера.

onChatMessage(MCNPlayer, string)

Вызывается при отправке игроком сообщения.

onDeath(MCNPlayer)

Вызывается при уничтожении крафта игрока.