Цитата
Перечитай мой пост, я переправил его.
Перечитал. Я отвечал на него именно в текущей редакции. Ты предлагаешь избавиться от строки
Код
if ( m_Spell.m_Caster.Player && m_Spell.m_Caster.Target != originalTarget && m_Spell.Caster.Target != null )
которая проверяет ровно то, что я написал.
Цитата
Раз уж начали про магию, посмотри внимательно на эту систему.
Я не вижу там каких-то серьезных проблем. Повторюсь, все зависит от предъявляемых требований. Чем больше планов по изменению/кастомизации, тем больше вероятность, что система в каких-то местах покажется неудобной. Нельзя предусмотреть все. Чем больше кастомизируется система, тем сложнее в ней разобраться.
Я просто немного переживаю, что информации по эмулятору немного, а подобные посты от авторитетного человека могут достаточно просто оказаться на виду и сложить неправильное представление об эмуляторе в целом. За все время, что я работал с RunUO у меня каких-либо существенных, сложных или неразрешимых проблем с кодом не возникало.
Могу добавить ложку дегтя.
Недавно у меня интересовались как изменить свойство RequiredRace, которое накладывает ограничение на использование предмета только для определенной расы. Требовалось сделать, чтобы две, а не одна раса могли использовать эту вещь. Навскидку я не смог предложить вменяемого способа. Чтобы в свойстве хранилось больше одной расы потребуется много мелких правок по всему эмулятору.
Всякие AOS свойства предметов определены отдельно для разных типов одежды: у ювелирки одни свойства, у оружия другие, у брони третьи. Если потребуется добавить свойство, которое могло бы присутствовать у всех трех типов предметов, то придется продублировать один и тот же код в трех местах.
Лут система очень гибкая, но очень сложная. Каждый раз когда мне задают вопросы как генерится лут при таких и таких условиях, мне требуется долго втыкать в один и тот же код и вспоминать как же он работает.
То же самое можно сказать про крафт системы и системы добычи ресурсов.
Утомляет делать гампы. Чтобы посмотреть изменения приходится пересобирать эмулятор. Поправил надпись, перенес ее на сантиметр влево и целую минуту ждешь когда это все перекомпилируется, потом надо залогиниться, вызвать гамп, посмотреть, увидеть что надпись наехала на какое-то поле, повторить процедуру.
Отсутствует вменяемая система ведения логов. Для проекта, которым я занимался, мы подключали стороннюю библиотеку. Я думаю ее не помешало бы иметь в дистрибутиве сразу из коробки.
Не хватает разбиения эмулятора на компоненты. Изменения в отдельной маленькой системе требуют пересборки всего эмулятора. То есть это могло бы занимать секунду, а занимает минуту.
Но все это не повод говнить эмулятор и его разработчиков. Любая онлайн игра - это очень сложная система. В ней очень много логики. И при всей ее сложности разработчики RunUO смогли реализовать ее более-менее понятным способом. Это достойно уважения и это стоит ценить. Свое мнение, надеюсь, я донес. Поэтому из дискуссии откланяюсь. Всем добра (IMG:
style_emoticons/default/smile.gif)