Приветствуем, геймер! Ты можешь или
16+
Avatar

Геймер basileus 1

3

Руководство по установке и написанию скриптов

Сервер и Скрипты

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

Итак, что вам в этом нелегком деле может помочь:

  • Начальные понятия о программировании (достаточно даже знаний на уровне школьной программы), желательно в Pascal (поскольку скриптовый язык, используемый в Soldat, это на 99% стандартный Pascal);
  • Базовые знания английского языка, для самостоятельного чтения инструкций, описаний, примеров, руководств (как обычно, вся техническая документация доступна преимущественно на английском языке);
  • Терпение, выдержка, готовность долгие часы разбираться с неработающим кодом.

Часть I: Как добавить скрипт на Ваш сервер.

Подготовка сервера

1) Убедитесь в том, что у Вас есть последняя версия выделенного сервера. На текущий момент это 2.6.5.

2) Извлеките содержимое архива (пример: «С:\Soldat\SoldatServer\»).

3) Откройте файл server.ini и убедитесь в том, что скриптинг разрешен (Scripting=1).

Установка скрипта

В текущей версии движка ScriptCore v2 максимальное количество запущенных скриптов равно 255. Но не стоит этим злоупотреблять, так как большое количество скриптов увеличивает нагрузку на процессор и память серверной машины.

Ниже перечислены шаги по установке новых скриптов на Ваш выделенный сервер (версия 2.6.2 или выше):

1) Скачайте скрипт, который хотите установить.

2) Откройте директорию выделенного сервера и перейдите в папку «Scripts». (пример: «С:\Soldat\SoldatServer\Scripts\»).

Если Вы скачали архив со скриптом в котором находятся только *.pas-файлы и Includes.txt, извлеките содержимое архива в НОВУЮ папку в директорию «Scripts». Дайте ей имя, связанное со скриптом который в ней будет (пример: «..\Scripts\NewScript»).

Если же Вы скачали архив, в котором уже есть подпапка, то просто извлеките его содержимое в директорию «Scripts».

3) Запустите Ваш сервер (soldatserver.exe). В консоли должна будет появится строчка, показывающая, что добавленный скрипт успешно скомпилировался: "Compiling NewScript -> Core.pas..."

4) Вот и всё! Если файла «Includes.txt» нет в подпапке со скриптом, то этот скрипт не будет запускаться севером. Подсказка: чтобы выключить какой-либо скрипт, достаточно переименовать файл «Includes.txt» из подпапки нужного скрипта, например в «_Includes.txt». Для включения скрипта – переименуйте его обратно в «Includes.txt»

Остановить работу сервера в Windows, можно нажав комбинацию клавиш [Ctrl + C] в окне консоли.

О том как скрыть консоль сервера в Windows, немного сказано здесь.

Часть II: It's alive, alive!

Ознакомление со скриптингом стоит начать с изучения доступных событий, функций, переменных, констант. Всё это можно найти на сайте у EnEsCe (разработчик выделенного сервера и скриптового ядра Soldat): Soldat Server Scripting Manual

Потом можно посмотреть на примеры готовых скриптов на SoldatForums: Scripting Releases

Если и после этого желание что-то написать не пропало – смело пробуйте сотворить свой 1й скрипт для Soldat.

Наиболее удобный и почти классический вариант – работа с вводом/выводом текста.

События ввода текстовых сообщений и команд от игроков связаны с вызовом процедур OnPlayerSpeak и OnPlayerCommand/i] соответственно.

Как видно из справки EnEsCe, параметрами передающимися в эти процедуры при их вызове являются:

[i]ID – идентификатор игрока, написавшего текст/команду

Text – само текстовое сообщение или команда

Значит для отслеживания ввода определенного сообщения, Вам нужно проверять содержимое переменной Text в процедуре OnPlayerSpeak.

Вывод текста в консоль игры осуществляется с помощью функции WriteConsole.

Поэтому простейший пример скрипта может выглядеть так:

function OnPlayerSpeak(ID: Byte; Text: string): boolean;
begin
if Text = 'hi' then
WriteConsole(0, 'Hello there!', $EE81FAA1);
end;
После того, как любой игрок напишет слово ”hi”, в ответ

появится сообщение от сервера ”Hello there!”

$EE81FAA1 - цвет в формате AA RR GG BB (Alpha, Red, Green, Blue)

С этим всё понятно. Можно добавить больше интерактива. В качестве следующего примера рассмотрим такой скрипт:

«Как сделать так, чтобы игроки могли добавлять ботов на сервер сами? Например, зашел игрок, а там пусто. Он пишет +bot и появляется бот, еще +bot - добавляется ещё один бот и т.д. Зашел какой-нить игрок, он пишет команду -bot и бот убирается»

Немножко изменив условие, напишем скрипт, позволяющий любому игроку добавить/удалить бота командами /bot+ и /bot- соответственно.

function OnPlayerCommand(ID: byte; Text: string): boolean;

var i: byte;

begin

if (Text = '/bot+') and (NumBots < 4) then begin

Command('/addbot ' + RandomBot);

WriteConsole(0, 'Bot has been added.', $EE81FAA1);

end

else if Text = '/bot-' then begin

for i:= 1 to 32 do

if GetPlayerStat(i, 'Human') = False then begin

KickPlayer(i);

WriteConsole(0, 'Bot has been deleted.', $EE81FAA1);

break;

end;

end;

Result := false;

end;

Сделано ограничение на максимум добавляемых ботов – 4.

Примечания:

NumBots - внутренняя переменная, содержащая количество ботов на сервере

Command - функция, для отправки команды серверу

RandomBot - функция, возвращающая произвольное имя бота (из доступных на сервере)

32 - максимально допустимое количество игроков на сервере

GetPlayerStat - функция, возвращающая разные характеристики заданного игрока. В нашем случае, узнаем является ли проверяемый игрок человеком (если нет, то это бот и его можно удалять)

Не путайте команды с сообщениями в чате. Для ввода команды, нужно нажимать кнопку «/».

Можно сказать, что с написанием скриптов немного ознакомились. А теперь давайте взглянем на содержимое папки «Scripts», но со стороны разработчика. В ней должна быть подпапка «Default», содержимое которой изменять не нужно! Файлы с расширением *.pas – это файлы скрипта. «Includes.txt» - определяет список файлов, которые будут компилироваться. Откройте «Includes.txt» и обратите внимание, что здесь записано имя каждого из *.pas-файлов. Так же заметьте, что перед «SocketCore.pas» стоят «//» (символы комментария). Это означает, что «SocketCore.pas» не будет включен в список компилируемых файлов.

Что ж, давайте установим скрипт для добавления/удаления ботов. Для начала, создайте новую папку для скрипта в директории «Scripts». Пусть это будет «..\Scripts\Bots». После этого, создайте в ней файлы «Includes.txt» и, собственно, сам файл с кодом «Bots.pas». В него и вставьте приведенный выше код. А в «Includes.txt» впишите строку: Bots.pas. После этого можно запускать сервер и радоваться, что всё работает.

FAQ:

Q: Какой текстовый редактор лучше использовать?

A: Любой, каким вам удобнее пользоваться. Можно и в блокноте писать, можно и в спец. редакторе для кодеров (с поддержкой синтаксиса Pascal, ясное дело), например Notepad++

Q: Где можно почитать о скриптах и посмотреть на готовые примеры?

A: Вот некоторые ссылки

Soldat Server Scripting Manual

Scripting Support

ScriptCore v2

Scripting Releases

Q: Почему нужно запускать сначала сервер, а потом клиент?

A: Если Вы используете настройки по-умолчанию (у клиента и у сервера порт 23073) и запустите сначала клиент, а потом сервер, то клиент займет сокет первым и сервер не сможет получить соединение из-за того, что сокет занят. Если Вы используете измененные настройки или запускаете сначала клиент, а потом сервер, то такой проблемы не должно быть.

Источник

3
Еще в блоге
Интересное на Gamer.ru

Нет комментариев к «Руководство по установке и написанию скриптов»

    Загружается
Чат