Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Готовые скрипты RunUO _ ServerConsoleCommands[1.0]

Автор: ~ArmageddoN~ 16.11.2014, 0:03

Информация:

Список командВнимание, данный скрипт работает только с версией 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) *
Правильнее было бы организовать очередь сообщений и таймер. При вводе в консоли команда просто добавляется в очередь. Таймер, выполняемый в основном потоке, читает команды из очереди и выполняет их. Работа с очередью должна быть организована потокобезопасно: на локах, либо с помощью какого-то безопасного списка.
Да можно в принципе обойтись и семафорами\мьютиксами или любым другим способом синхронизации потоков... Хотя конечно ради такого смысла большого плодить потоки нет....

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)