Патч: Серверные скрипты
Этот патч позволяет писать программные скрипты на С#, взаимодействующие с 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)
Вызывается при уничтожении крафта игрока.