Управление выделенным сервером Crysis
Материал из CryWiki Russia
Страница «
Управление выделенным сервером Crysis
»
Перейти к:
навигация
,
поиск
{{Статья |совместимость=Любая |сложность=Средняя |тема=Другие темы о программировании }} В этом руководстве мы узнаем, как управлять выделенным сервером (''ВС'') Crysis с использованием языка [http://ru.wikipedia.org/wiki/C_Sharp C#]. Вы узнаете, как удаленно выполнять команды сервера используя HTTP-сервер встроенный в ВС. Как только вы научитесь управлять ВС, вы сможете написать свой собственный инструмент для бана, кика, чата и т. д.; все, что возможно в RCon, можно и здесь. Почитайте «[[API пакета программ для сервера Crysis]]» для получение полной справки по функциям сервера. == Понадобится == ;Visual Studio (2005/2008):Мы будем использовать компонент Visual Studio C#, который представляет собой интегрированную среду разработки (IDE), что позволит нам эффективно кодить. Бесплатную версия Visual Studio, названную [http://www.microsoft.com/express/vcsharp/ Visual C# Express Edition] можно [http://www.microsoft.com/express/download/ скачать здесь]. ;Базовые знания программирования: ;Пакет программ для выделенного сервера Crysis для C#: Вы можете скачать его [http://crymod.net/index.php?page=DatabaseItem&id=64 отсюда]. Мы будем использовать его для управления сервером. ;Правильно сконфигурированный установленный выделенный сервер:Узнать, как настроить выделенный сервер можно [http://crymod.net/index.php?page=DownloadDBData&dataID=36 здесь]. == Конфигурирование выделенного сервера == Во-первых, мы должны настроить ВС, так, чтобы он принимал входящие соединения. Откройте файл ''autoexec.cfg'' в папке вашего ВС и добавить следующие строки (пропустите этот шаг, если у вас уже есть): <code><pre> http_password (HTTP-пароль) http_startserver_port:(HTTP-порт) </pre></code> Замените ''(HTTP-пароль)'' и ''(HTTP-порт)'' на желаемые значения. Запишите куда-нибудь ''HTTP-порт'' и 'HTTP-пароль'', поскольку нам они ещё пригодятся. == Настройка Visual Studio == В окне Visual Studio, нажмите ''«File→Create Project…» (Файл→Создать проект…)'' и выберите проект ''«Console Application» (Консольное приложение)''. Дайте ему название и щелкните кнопку «OK». {{Примечание|Не волнуйтесь, если окна вашего Visual Studio не похожи; Visual Studio может значительно меняться от версии к версии.}} [[Файл:Управление сервером — новый проект.png|center|frame]] Теперь вы должны увидеть вкладку-страницу названную ''Program.cs''. В ней-то мы будем писать весь наш код. [[Файл:Управление сервером — первый взгляд.png|center|frame]] Наконец, добавьте ''CDSToolkit.cs'' файл из пакета программ для выделенного сервера Crysis в ваш проект. Щелкните правой кнопкой мыши по проекту, выберите ''Add→Existing Item… (Добавить→Существующий элемент...)'' и добавьте файл. [[Файл:Управление сервером — добавление файла.png|center|frame]] == Создание CDSSession == В основной функции, введите следующие и замените ''(ip)'' — IP-адресом вашего сервера (если сервер на вашем компьютере, используйте 127.0.0.1), ''(порт)'' — ''HTTP-портом'' ВС, и ''(пароль)'' — ''HTTP-паролем'' ВС. <source lang="csharp">CrysisServer serverSession = new CrysisServer((ip), (порт), (пароль));</source> Это создаст новый объект — «CDSession». Весь инструментарий вращается вокруг этого объекта. {{Примечание|Только одно соединение к серверу Crysis возможно в одно время. Другие попытки соединения будут возвращать исключения.}} == Выполнение произвольных команд == Чтобы выполнить команду, мы будем вызывать метод «CDSession» — «ExecuteCommand». Добавьте следующий код и замените ''(команда)'' тем, что вы хотите выполнить на сервере. <source lang="csharp">serverSession.ExecuteCommand("(команда)");</source> {{Примечание|ExecuteCommand возвратит всё, что возможно возвратить сервером. Всё совершенно без форматирования.}} == Тестирование == Чтобы проверить этот код, мы сделаем так, что сервер сменит карту на «Shore». Сначала, запустите ваш сервер. Затем, добавьте следующий текст в ваш код: <source lang="csharp">serverSession.ExecuteCommand("map shore");</source> Теперь щелкните иконку Run (''Запустить'' — зелёная стрелка) на панели инструментов. Если команда будет успешно выполнена, то на сервере должна сменится карта. === Общие проблемы === Убедитесь, что ваш IP, порт и пароль правильные. {{Примечание|Добавьте больше материала, по мере необходимости.}} == Использование API == Инструментарий также содержит ряд функций для часто используемых команд. Вы можете посмотреть их на странице «[[Пакет программ для серверного API Crysis]]». Например, чтобы получить статус сервера, просто вызовите метод «Status()»: <source lang="csharp">string status = serverSession.Status();</source> === Выполнение команд асинхронно === Вы можете также выполнять команды, используя [http://msdn2.microsoft.com/en-us/library/ms228969.aspx асинхронную (async) модель]. Эта модель ничего не блокирует, и позволит вам обновить пользовательский интерфейс во время обработки команды. Большинство функций в инструментарий имеют альтернативный асинхронный вариант. Например, функция ''status'', которую мы использовали ранее, имеет асинхронную версию названную ''StatusAsync''. Ниже представлен пример асинхронного вызова ''Status''. <source lang="csharp"> Result r = serverSession.KickAsync(player); //кикаем игроков с помощью асинхронности while (r.Status == AsyncCallStatus.Running) //подождем, пока завершится кик { Thread.Sleep(1); Application.DoEvents(); //обновляем пользовательский интерфейс } if (r.Status == AsyncCallStatus.Error) //если есть ошибки, выдаем исключение { throw r.Value as Exception; //при ошибках, значение результата станет исключением } string status = r.Value as string; //возвращаем значение результата в строку </source> == См. также == [[Категория:Мультиплеер]][[Категория:Другие темы о программировании]]
Шаблон:О статье
(
просмотреть исходный код
)
Шаблон:Примечание
(
просмотреть исходный код
)
Шаблон:Статья
(
просмотреть исходный код
)
Возврат к странице
Управление выделенным сервером Crysis
.
Просмотры
Статья
Обсуждение
Просмотр
История
Личные инструменты
Представиться / зарегистрироваться
Навигация
Заглавная страница
Официальная документация
Документация сообщества
Примеры кода
Полезные ссылки
CryENGINE 3
Помощь Free SDK
Помощь MOD SDK
Форум CryENGINE3
CryENGINE 2
Помощь Sandbox2
Форум редактора
Информация MOD SDK
Форум MOD SDK
Поддержка
CryWiki ЧАВО
Поиск CRYMOD.NET
Карта CryWiki
wiki
Свежие правки
Случайная статья
Поиск
Инструменты
Ссылки сюда
Связанные правки
Спецстраницы