Автор: ~ArmageddoN~ 16.11.2014, 0:03
Информация:
- Позволяет вводить команды прямо в консоли(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 килобайт )
Кол-во скачиваний: 419
Автор: Soteric 16.11.2014, 1:11
Хорошая идея. Но вызывать код в 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 изменится, то это приведет к ошибке и падению сервера.
Правильнее было бы организовать очередь сообщений и таймер. При вводе в консоли команда просто добавляется в очередь. Таймер, выполняемый в основном потоке, читает команды из очереди и выполняет их. Работа с очередью должна быть организована потокобезопасно: на локах, либо с помощью какого-то безопасного списка.
Автор: StaticZ 16.11.2014, 13:21
Цитата(Soteric @ 16.11.2014, 1:11)
Правильнее было бы организовать очередь сообщений и таймер. При вводе в консоли команда просто добавляется в очередь. Таймер, выполняемый в основном потоке, читает команды из очереди и выполняет их. Работа с очередью должна быть организована потокобезопасно: на локах, либо с помощью какого-то безопасного списка.
Да можно в принципе обойтись и семафорами\мьютиксами или любым другим способом синхронизации потоков... Хотя конечно ради такого смысла большого плодить потоки нет....