Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> ServerConsoleCommands[1.0], Консольные команды.
~ArmageddoN~
сообщение 16.11.2014, 0:03
Сообщение #1


**

Neophyte
Сообщений: 22
Регистрация: 24.3.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.927



Информация:
  • Позволяет вводить команды прямо в консоли(RunUO.exe)
Список команд
  • Save -Сохраняет мир.
  • Shutdown - Сохранение параметров сервера и его закрытие.
  • Shutdown nosave - Закрывает сервер без сохранения.
  • Restart - Вещает всему серверу о перезапуске, сохраняет и перезапускает сервер.
  • Restart nosave - Перезапускает сервер без сохранения.
  • Online - Показывает онлайн сервера: счета, Имя чара, IP.
  • Broadcast - Транслировать сообщение всем игрокам на сервере.
  • Staff - Транслировать сообщение только персоналу.
  • Consolehear - Маршрутизировать все речи на консоль.
  • Help - Показывает список доступных команд.
  • Stop - Быстрое выключение с сохранением, аналог (Shutdown)
Внимание, данный скрипт работает только с версией RunUO[2.x]

P.S Валялся данный скрипт очень давно на комьюнити, я его немного переделал и перевёл, думаю многим будет полезен, со временем может быть обновлю. Если будут замечены какие-то недочёты и ошибки, то пишите - исправим.
С установкой проблем думаю не возникнет, но всё же не знающим:
Распаковать в любую папку Scripts вашего сервера. Перезапустить(если работает) сервер.


Прикрепленные файлы
Прикрепленный файл  ServerConsoleCommands_1.0___RunUO_2.3_.rar ( 2,03 килобайт ) Кол-во скачиваний: 410
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 16.11.2014, 1:11
Сообщение #2


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 3227
Пользователь №: 7.166



Хорошая идея. Но вызывать код в RunUO из другого потока небезопасно. Например
Код
        public static void BroadcastMessage(AccessLevel ac, int hue, string message)
        {
            foreach (NetState state in NetState.Instances)
            {
                Mobile m = state.Mobile;

                if (m != null && m.AccessLevel >= ac)
                    m.SendMessage(hue, message);
            }
        }

если в момент нахождения в цикле foreach произойдет отключение/подключение какого-то клиента и содержимое Instance изменится, то это приведет к ошибке и падению сервера.

Правильнее было бы организовать очередь сообщений и таймер. При вводе в консоли команда просто добавляется в очередь. Таймер, выполняемый в основном потоке, читает команды из очереди и выполняет их. Работа с очередью должна быть организована потокобезопасно: на локах, либо с помощью какого-то безопасного списка.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
StaticZ
сообщение 16.11.2014, 13:21
Сообщение #3


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Цитата(Soteric @ 16.11.2014, 1:11) *
Правильнее было бы организовать очередь сообщений и таймер. При вводе в консоли команда просто добавляется в очередь. Таймер, выполняемый в основном потоке, читает команды из очереди и выполняет их. Работа с очередью должна быть организована потокобезопасно: на локах, либо с помощью какого-то безопасного списка.
Да можно в принципе обойтись и семафорами\мьютиксами или любым другим способом синхронизации потоков... Хотя конечно ради такого смысла большого плодить потоки нет....


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 20:11
Designed by Nickostyle