Ru-MaNGOS

Вернуться   Ru-MaNGOS > Корзина > Корзина

Важная информация

Корзина Глупые, устаревшие, неактуальные темы будут тут.

Сюда сливается весь треш форума. Если ваш пост оказался здесь, подумайте - стоит ли еще раз писать?

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.09.2010, 15:36   #1
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию spell1..spell4

В настоящий момент (10526) они используются для (1) generic_creature AI и для (2) экшн-баров контролируемых существ.
Для (2) случая 4-х слотов не достаточно.

Пример (possesed):


Случай без команды "Атаковать":


Пример (vehicle):




Уникальный случай с командой "Атаковать":


Вижу 2 выхода:
1. Отказаться от устаревшего generic_creature в пользу ACID, удалить spell1..spell4 из creature_template, завести новую таблицу для хранения экшн баров.
2. Добавить столбцы spell5..spellN, где в 99% случаев будут нули.

Если 1 вариант устраивает, могу подготовить патч.

Update: spell1 еще для тотемов используется, куда бы его пристроить...

Последний раз редактировалось zergtmn; 24.09.2010 в 23:51.
zergtmn вне форума  
Старый 24.09.2010, 15:56   #2
ghostpast
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 11
Поблагодарили 17 раз(а) в 11 сообщениях
ghostpast На верном пути
По умолчанию

С точки зрения теории нормализации БД второй вариант не подходит
ghostpast вне форума  
Старый 24.09.2010, 16:01   #3
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Я уже пробовал вариант с загрузкой спеллов из отдельной таблицы базы. В принципе работает, но сервер грузится в разы медленнее.
rsa вне форума  
Старый 24.09.2010, 16:02   #4
YuruY
YTDB Dev
 
Аватар для YuruY
 
Регистрация: 01.02.2010
Сообщений: 288
Сказал(а) спасибо: 125
Поблагодарили 97 раз(а) в 53 сообщениях
YuruY Скоро придёт к известностиYuruY Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от ghostpast Посмотреть сообщение
С точки зрения теории нормализации БД второй вариант не подходит
Зато не плодит таблиц (ну и ответ выше).
__________________
http://ytdb.ru/
http://svn2.assembla.com/svn/ytdbase/
YuruY вне форума  
Старый 24.09.2010, 16:09   #5
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Отдельная таблица, если она действительно необходима, придаст гибкости, т.к. не будет жесткого ограничения в 4 значения.
У некоторых нпц вообще не будет записей.

Если на скорости работы это не сказывается, то скоростью загрузки можно пренебречь.
virusav вне форума  
Старый 24.09.2010, 16:15   #6
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
Смех

Цитата:
Сообщение от rsa Посмотреть сообщение
Я уже пробовал вариант с загрузкой спеллов из отдельной таблицы базы. В принципе работает, но сервер грузится в разы медленнее.
Уж прям в разы О_о
Отключи вывод в консоль, быстрее будет)
zergtmn вне форума  
Старый 24.09.2010, 16:25   #7
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Если точнее то раз в 8 при использовании конката таблиц, и процентов на 20 при использовании отдельной карты std::vector-ов спеллов, но во втором случае надо сильно перекраивать существующие объекты и работу с ними.

PS у меня консоли нету совсем... на /dev/null назначена.
rsa вне форума  
Старый 24.09.2010, 16:32   #8
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Я как-то поднимал вопрос о том, чтобы в отдельную таблицу вынести цели квестов, касты, вознаграждения и т.д., на что Владимир ответил, что данные приходят по кешу в такой структуре, поэтому так и останется.

Если кеш по нпц спеллы приходят в 4 полях, то скорее всего их никто никуда не денет.

Что касается загрузки в 8 раз дольше, то, возможно, запросы составлены неверно или дальнейшая обработка.
virusav вне форума  
Старый 24.09.2010, 16:35   #9
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Ну раз Владимир сказал, то надо заводить отдельную таблицу и пользоваться ей отдельными методами...
rsa вне форума  
Старый 24.09.2010, 16:38   #10
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
Что касается загрузки в 8 раз дольше, то, возможно, запросы составлены неверно или дальнейшая обработка.
это при сохранении полной совместимости с текущим форматом. во всех "старых" ячейках были забиты поиски в новой таблице.
rsa вне форума  
Старый 24.09.2010, 16:49   #11
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Цитата:
Если кеш по нпц спеллы приходят в 4 полях, то скорее всего их никто никуда не денет.
В кеше нет данных по спелам:
Код:
    class CreatureTemplate
    {
        public int      Entry;
        public string   Name;
        public string   SubName;
        public string   IconName;
        public uint     TypeFlag;
        public uint     Type;
        public int      Family;
        public uint     Rank;
        public uint[]   KillCredit  = new uint[2];
        public uint[]   ModelId     = new uint[4];
        public float    HealthModifier;
        public float    PowerModifier;
        public sbyte    RacialLeader;
        public uint[]   QuestItem   = new uint[6];
        public uint     MovementId;
    }
__________________
Konctantin вне форума  
Старый 24.09.2010, 19:50   #12
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
это при сохранении полной совместимости с текущим форматом. во всех "старых" ячейках были забиты поиски в новой таблице.
Не знаю, каким образом выбирались спеллы из другой таблицы.

Я бы на парсере сделал так:
1. Выбираем одним запросом всех нпц и все спеллы по ним. В итоге получаем на каждого нпц одну строку, в которой в отдельном поле были бы коды спеллов через запятую.
2. Из поля с кодами спеллов брал бы значение и получал бы все спеллы нпц.

Насчет сишника не могу сказать, как лучше будет сделать.
virusav вне форума  
Старый 04.06.2011, 14:21   #13
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Судя по всему ждать решения проблемы от тима не приходится, предлагаю свое -
https://github.com/mangosR2/mangos/c...c4e12378cfa6c6
работает нормально. поля из creature_template пока не удалял, потом прибью.
rsa вне форума  
Старый 04.06.2011, 14:39   #14
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
поля из creature_template пока не удалял, потом прибью.
Они для тотемов нужны и для generic_creature
zergtmn вне форума  
Старый 04.06.2011, 14:41   #15
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
Они для тотемов нужны и для generic_creature
в моей реализации они больше ни для чего не нужны. информация из них просто не используется. в том числе и тотемами и скриптдевом.
rsa вне форума  
Старый 04.06.2011, 15:00   #16
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

У меня была мысль сделать таблицу:
Код:
entry actionbar_index spell1 spell2 spell3 spell4 spell5 spell6
для поддержки вехиклов с несколькими наборами спеллов на экшн баре, например http://www.wowhead.com/npc=30275. В ядре нужно делать античитерскую проверку при касте на вехикле, что спелл показывается в текущий момент на экшн баре.

Последний раз редактировалось zergtmn; 04.06.2011 в 15:08.
zergtmn вне форума  
Старый 04.06.2011, 15:23   #17
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
У меня была мысль сделать таблицу:
в этой реализации оно может быть сделано гораздо проще - поле activeState оставлено именно для подобных замен. по умолчанию оно 0 и все идет из основного набора. можно дать наборам 1, 2, 3 соотв. state и подменять их прямо на лету... фантазия не ограничена.
rsa вне форума  
Старый 04.06.2011, 16:18   #18
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
в этой реализации оно может быть сделано гораздо проще - поле activeState оставлено именно для подобных замен. по умолчанию оно 0 и все идет из основного набора. можно дать наборам 1, 2, 3 соотв. state и подменять их прямо на лету... фантазия не ограничена.
Не то. В вашей реализации activeState меняется для всех кричеров с одним entry.
zergtmn вне форума  
Старый 04.06.2011, 16:45   #19
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
Не то. В вашей реализации activeState меняется для всех кричеров с одним entry.
он вообще не меняется, поскольку const.
однако у темплейта могут быть сколько угодно наборов спеллов с разными activeState. а спелл ищется уже в экземпляре Creature, в котором мы можем динамически подставлять нужный шаблон activeState для поиска. у меня эта часть пока просто не вылита в бранч, текущая часть работает только для activeState = 0.
более того, я сначала сделал даже спец. хранилище spellOverride для ручного переназначения конкретной криче, но по моему через activeState красивее.
rsa вне форума  
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 23:39. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot