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

> WeaponAttributes для армора и прочего
Sergius Grey
сообщение 28.2.2015, 9:05
Сообщение #1


****

Apprentice
Сообщений: 149
Регистрация: 20.6.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.734
Возраст: 23



Снова стал возиться с сервером, хочу реализовать задумка, например, кольцо с хит лайтнингом или перчатки с мана личем.

Собственно вопрос - каким способом можно прописать артефакту WeaponAttributes, ссылаясь на бейс веапон или что то вроде того?
В АОС.кс я добавлял из WeaponAttributes в просто АОСатрибутс свойства, они появлялись в пропсе, отображались на вещи, но не давали эффекта. И я понимаю почему. Просто хочется все это сделать с наименьшим количеством кода, это главная задача. А прописывать кучу строк в бейсАрмор и БейсДжевел не хочется, во избежании возможных конфликтов и косяков, которые могут всплыть со временем, так как я не уверен что смогу верно все расписать там. Проще говоря не хочется все это делать "брейнфаковским способом".

Может можно это сделать при помощи методов void OnAdded и void OnRemoved соответственно?
Но в идеале хотелось бы, чтоб кольца например просто могли принимать WeaponAttributes при создании новых скриптов артефактов.

В общем если кто может подсказать, как сделать все аккуратненько, напишите пожалуйста способ.

Ранка 2.0
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Sergius Grey
сообщение 1.3.2015, 3:47
Сообщение #2


****

Apprentice
Сообщений: 149
Регистрация: 20.6.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.734
Возраст: 23



Тестю во всех возможных вариантах!

Juzzver, а куда конкретно прописать, что то у меня башка уже кругом...
int laChance = (int)(AosWeaponAttributes.GetValue(attacker, AosWeaponAttribute.HitLowerAttack) * propertyBonus);
int ldChance = (int)(AosWeaponAttributes.GetValue(attacker, AosWeaponAttribute.HitLowerDefend) * propertyBonus);
у меня таких строк там вообще нет. Ранка 2.0 финал если что.

На счет отображения не нужно, я если что сделаю. Главное эффект, и чтоб можно было скриптам с артами просто прописывать строчки, а не в ста местах для каждого арта такого затычки делать.

https://drive.google.com/file/d/0B1QGeQJizp...iew?usp=sharing
если кому интересно вот файл АОС, чтоб сюда его не выкладывать кодом а то огромный очень.


Я изначально как сделал - просто скопировал в АОС.кс нужные свойства из AosWeaponAttribute в разделы AosAttribute, и например хитлайтнинг можно было пропсом вписать любой шмотке у которой был раздел AosAttribute. Оно и отображалось, и в пропсе было, и в скрипте оно добавлялось и проходило. Но оно не работало, как собственно и сейчас =(
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 1.3.2015, 4:09
Сообщение #3


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 5688
Пользователь №: 15.607



Цитата(Sergius Grey @ 1.3.2015, 1:47) *

Тестю во всех возможных вариантах!

Juzzver, а куда конкретно прописать, что то у меня башка уже кругом...
int laChance = (int)(AosWeaponAttributes.GetValue(attacker, AosWeaponAttribute.HitLowerAttack) * propertyBonus);
int ldChance = (int)(AosWeaponAttributes.GetValue(attacker, AosWeaponAttribute.HitLowerDefend) * propertyBonus);
у меня таких строк там вообще нет. Ранка 2.0 финал если что.

На счет отображения не нужно, я если что сделаю. Главное эффект, и чтоб можно было скриптам с артами просто прописывать строчки, а не в ста местах для каждого арта такого затычки делать.

https://drive.google.com/file/d/0B1QGeQJizp...iew?usp=sharing
если кому интересно вот файл АОС, чтоб сюда его не выкладывать кодом а то огромный очень.
Я изначально как сделал - просто скопировал в АОС.кс нужные свойства из AosWeaponAttribute в разделы AosAttribute, и например хитлайтнинг можно было пропсом вписать любой шмотке у которой был раздел AosAttribute. Оно и отображалось, и в пропсе было, и в скрипте оно добавлялось и проходило. Но оно не работало, как собственно и сейчас =(


Конечно не работало, потому что шанс на удар лайтнингом высчитывается только в методе OnHit, который находится в BaseWeapon.
Высчитывается он только через AosWeaponAttribute.
Если ты сделал всё что я сказал - должно работать.
У меня есть вариант, что если ты тестишь с кольцом но без оружия, то OnHit не срабатывает, потому что у тебя нету оружия в руках.
Только внятного кода где видно как определяется оружие в руках, если у тебя в руках ничего нету, я не нашёл кроме:
Код
[CommandProperty( AccessLevel.GameMaster )]
        public virtual IWeapon Weapon
        {
            get
            {
                Item item = m_Weapon as Item;

                if( item != null && !item.Deleted && item.Parent == this && CanSee( item ) )
                    return m_Weapon;

                m_Weapon = null;

                item = FindItemOnLayer( Layer.OneHanded );

                if( item == null )
                    item = FindItemOnLayer( Layer.TwoHanded );

                if( item is IWeapon )
                    return (m_Weapon = (IWeapon)item);
                else
                    return GetDefaultWeapon();
            }
        }

        public virtual IWeapon GetDefaultWeapon()
        {
            return m_DefaultWeapon;
        }


И это:
Код
        private static IWeapon m_DefaultWeapon;

        public static IWeapon DefaultWeapon
        {
            get
            {
                return m_DefaultWeapon;
            }
            set
            {
                m_DefaultWeapon = value;
            }
        }


Это из Mobile.cs

Поэтому, если у тебя прописано призначение в конструкторах BaseItem & BaseJewel, если в методе GetValue в AosWeaponAttribute есть соответствующие иф блоки
и если прописаны свойства в сами артефакты - всё должно работать при наличии BaseWeapon на чаре, потому что именно он делает все вычисления и вызывает всякие личи и лайтнинги с ударов.

Цитата(Juzzver @ 1.3.2015, 1:43) *

В моем случае это работает с другими вещами (IMG:style_emoticons/default/smile.gif), соответственно должно сработать и для браслета.
Твой вариант без set тоже работает (IMG:style_emoticons/default/smile.gif)



Да, но это ведь бред, явным образом прописывать класс артефакта в том месте и делать для него отдельную проверку, если для этого уже есть метод проверки в GetValue.

Если через GetValue не работает, то и по твоему не будет и значит причина в чем-то совсем другом.
Например в неимении BaseWeapon на чаре, тоесть не запускается сам OnHit и т.д.

А без set почему работает, я уже обьяснил.
Свойство - обьект. Мы меняем не сам обьект на другой обьект, а свойство в этом обьекте.
Вот если попробовать сам обьект AosWeaponAttributes заменить, а не одно из его свойств - тогда компилятор будет ругаться.
И это не в моем случае, а в случае дефолтного ранУО кода)) Я и сам не знал что так будет работать, пока ты на это не обратил внимание.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Sergius Grey   WeaponAttributes для армора и прочего   28.2.2015, 9:05
Aimed   Снова стал возиться с сервером, хочу реализовать ...   28.2.2015, 14:24
Sergius Grey   Большое спасибо! Только проснулся, щас буду пр...   28.2.2015, 21:34
Sergius Grey   На счет первого способа. Компиляция проходит, но п...   28.2.2015, 22:46
Aimed   Cтоп. Что ты конкретно сделал. Лучше б со скринами...   1.3.2015, 0:32
Sergius Grey   Отрывок из БейсДжевел: { None, StarSapphire, ...   1.3.2015, 1:02
Aimed   А конктрукторы BaseItem & BaseJewel ? public...   1.3.2015, 2:15
Juzzver   get указан, а set отсутствует - по этому в пропсе...   1.3.2015, 2:20
Aimed   get указан, а set отсутствует - по этому в пропсе...   1.3.2015, 2:26
Aimed   get указан, а set отсутствует - по этому в пропсе...   1.3.2015, 3:19
Sergius Grey   Aimed, черт да, я тупанул я думал у меня там пропи...   1.3.2015, 2:32
Aimed   Прям мистика какая-то с этим сеттером, я сам из ги...   1.3.2015, 2:41
Sergius Grey   У меня точно АОС, точнее СЕ, МЛ я вырубил только. ...   1.3.2015, 2:59
Juzzver   попробуй добавить в тот блок с Core.AOS: ...   1.3.2015, 3:10
Aimed   А как ты тестишь? С мечом и без кольца и с кольцом...   1.3.2015, 3:31
Juzzver   В моем случае это работает с другими вещами :), с...   1.3.2015, 3:43
Juzzver   эти блоки с чанасами я копировал из цитату сверху...   1.3.2015, 4:11
Aimed   Код, который запостил Juzzver из метода OnHit в Ba...   1.3.2015, 4:23
Sergius Grey   Aimed Оружие в руках есть, простой даггер, одет пр...   1.3.2015, 4:29
Aimed   можно поподробнее про это? Это я все понял с про...   1.3.2015, 4:45
Sergius Grey   Juzzver, работает то что ты сказал. Я прописал это...   1.3.2015, 4:51
Aimed   Хмм... А помнишь в AosWeaponAttribute.GetValue из...   1.3.2015, 4:59
Sergius Grey   У меня нету очков в моей версии ранки. В общем сп...   1.3.2015, 5:02
Aimed   В любом случаи всем спасибо что помогаете разобр...   1.3.2015, 5:17
Juzzver   Работает без оружия в руке по тому, что Fists(кул...   1.3.2015, 15:23
Sergius Grey   Создал скрипт очков, скопировал этот что ты мне ки...   1.3.2015, 18:09
Aimed   Я ведь правильно понимаю, что скрипт на очки долж...   1.3.2015, 18:50
Sergius Grey   Черт точно, я ж забыл их прописать в аос. Момент. ...   1.3.2015, 19:02
Aimed   Сделай себе строку с дебагом в этом методе. А в иф...   1.3.2015, 19:08


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

 

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