Цитата(Soteric @ 8.5.2015, 15:25)
Перечитал. Я отвечал на него именно в текущей редакции. Ты предлагаешь избавиться от строки
Код
if ( m_Spell.m_Caster.Player && m_Spell.m_Caster.Target != originalTarget && m_Spell.Caster.Target != null )
которая проверяет ровно то, что я написал.
Да и это плохой код, я написал почему он плохой и каким он должен быть.ф
Цитата(Soteric @ 8.5.2015, 15:25)
Я не вижу там каких-то серьезных проблем. Повторюсь, все зависит от предъявляемых требований. Чем больше планов по изменению/кастомизации, тем больше вероятность, что система в каких-то местах покажется неудобной. Нельзя предусмотреть все. Чем больше кастомизируется система, тем сложнее в ней разобраться.
Я просто немного переживаю, что информации по эмулятору немного, а подобные посты от авторитетного человека могут достаточно просто оказаться на виду и сложить неправильное представление об эмуляторе в целом. За все время, что я работал с RunUO у меня каких-либо существенных, сложных или неразрешимых проблем с кодом не возникало.
Это потому что у тебя мозги на месте и это С#, да тут как угодно можно выкрутиться и это серьёзных проблем не составит, а потом на выходе получим то, что мы имеем сейчас в рануо.
Система магии: ты считаешь нормальным, когда создаётся по 50+ классов копипасты для таргетов, только в системе магии?
Нормально-ли, когда для каждого спелла создаётся обьект таргета, даже если спелл никакого таргета не имеет?
Нормально-ли проверять в каждом спелле на наличие этого таргета?
Это только маленькая часть кода спелл системы, которую я начал критиковать.
В плане грамотности кода, ранУО очень низко стоит. Может для какого-то обычного юзера, который кое-как научился if else конструкции создавать и покатит. Но если ты хочешь иметь сервер, который нормально работает и имеет, как ты выразился, понятный код, - то тут надо много сносить.
Цитата(Soteric @ 8.5.2015, 15:25)
Могу добавить ложку дегтя.
Недавно у меня интересовались как изменить свойство RequiredRace, которое накладывает ограничение на использование предмета только для определенной расы. Требовалось сделать, чтобы две, а не одна раса могли использовать эту вещь. Навскидку я не смог предложить вменяемого способа. Чтобы в свойстве хранилось больше одной расы потребуется много мелких правок по всему эмулятору.
Всякие AOS свойства предметов определены отдельно для разных типов одежды: у ювелирки одни свойства, у оружия другие, у брони третьи. Если потребуется добавить свойство, которое могло бы присутствовать у всех трех типов предметов, то придется продублировать один и тот же код в трех местах.
Лут система очень гибкая, но очень сложная. Каждый раз когда мне задают вопросы как генерится лут при таких и таких условиях, мне требуется долго втыкать в один и тот же код и вспоминать как же он работает.
То же самое можно сказать про крафт системы и системы добычи ресурсов.
Утомляет делать гампы. Чтобы посмотреть изменения приходится пересобирать эмулятор. Поправил надпись, перенес ее на сантиметр влево и целую минуту ждешь когда это все перекомпилируется, потом надо залогиниться, вызвать гамп, посмотреть, увидеть что надпись наехала на какое-то поле, повторить процедуру.
Отсутствует вменяемая система ведения логов. Для проекта, которым я занимался, мы подключали стороннюю библиотеку. Я думаю ее не помешало бы иметь в дистрибутиве сразу из коробки.
Не хватает разбиения эмулятора на компоненты. Изменения в отдельной маленькой системе требуют пересборки всего эмулятора. То есть это могло бы занимать секунду, а занимает минуту.
Но все это не повод говнить эмулятор и его разработчиков. Любая онлайн игра - это очень сложная система. В ней очень много логики. И при всей ее сложности разработчики RunUO смогли реализовать ее более-менее понятным способом. Это достойно уважения и это стоит ценить. Свое мнение, надеюсь, я донес. Поэтому из дискуссии откланяюсь. Всем добра
Совсем маленькая ложка получилась.
Говнить надо, что б делали с умом и не запихивали кое-какой код в главный дистрибутив.
Тут очевидно что местамио писали люди грамотные, а местами и скриптуны какие-то.
Вот именно этот пример с таймаутом таргета и систему магии писал явно какой-то скриптун.
Таких мест полно, ты и маленькой толики не назвал, честно говоря))