|
Баг-репорты Описываем проблемы и ошибки работы ядра |
|
Опции темы | Поиск в этой теме | Опции просмотра |
24.02.2011, 22:25 | #1 |
Администратор
|
[spell=58887]Ритуал душ
У чернокнижника есть спелл Ритуал душ, который суммонит го 193168, если по нему кликнули 2 игрока.
У го есть спелл 58888, которого нет в дбц. Также нет спелла 34145. Т.е. нет спеллов для обоих рангов спелла. Каким образом можно починить спеллы Ритуал душ, если спеллов нет в дбц? |
24.02.2011, 22:36 | #2 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
отснифать процесс и восстановить искомые эффект-значения. больше никак.
я вообще уверен, что в дбц много чего нет. в частности в spell.dbc. |
24.02.2011, 22:45 | #3 |
Администратор
|
Отсниффать уже не получится, т.к. на офе уже 406, данных спеллов может не быть.
Говорят, что камни душ отменили, а спелл требует 1 камень. Если судить по подобным спеллам, то просто суммонится го, который потом можно использовать. В данном случае спелл 58888 должен суммонить го 193169, у которого уже прописан спелл, который создает нужный итем. Есть еще го 193170 и 193171, у них свои спеллы для создания своих итемов. Для спелла 34145 есть го 181621, 183510 и 183511. Спеллы у го на создание итемов прописаны. В итоге имеем на 2 спелла по 3 го, каждый из которых создает свой итем. Как я понимаю, это связано с наличием таланта Улучшенный камень здоровья. В итоге получаем: 1. Ранг 1 = спелл 34145. Талант Улучшенный камень здоровья: 1.1. Не прокачан: 181621 1.2. Прокачан 1/2: 183510 1.3. Прокачан 2/2: 183511 2. Ранг 2 = спелл 58888: Талант Улучшенный камень здоровья: 2.1. Не прокачан: 193169 2.2. Прокачан 1/2: 193170 2.3. Прокачан 2/2: 193171 Все вспомогательные го, итемы и спеллы уже есть. Вся загвоздка пока в том, что спеллов нет в дбц, т.е. нет шансов на починку. Может, сделать инструмент реализации спеллов, отсутствующих в дбц, как для думми эффектов, чтобы все описывалось скриптом? Или дать возможность реализации СД2, если в ядре это неприемлемо? |
25.02.2011, 07:18 | #4 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
инструмент на это есть давным-давно, называется "таблица spell_dbc". реализация скриптом а-ля триневская спеллскриптовка будет конечно гибче, но явно хуже с точки зрения стабильности и сложности изготовления.
|
25.02.2011, 08:48 | #5 |
Администратор
|
В `spell_dbc`, как я понимаю, указаны все поля для спелла, которые должны быть в дбц, но от версии к версии количество полей меняется, надо будет каждый раз переписывать таблицу, если формат дбц поменялся.
В случае отдельной реализации надо будет описать работу спелла, что не будет привязано к количеству полей в дбц. В случае данного спелла будет проверка на наличие таланта и его ранга, далее каст спеллов или суммон го. |
25.02.2011, 17:27 | #6 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
нет, не все, а только используемые мангосом. от рождения у нее около 2/3 полей от клиентского, зачем надо будет переписывать таблицу - лично мне непонятно - поля именованные, крайний раз она не менялась (вот если мангос будет использовать больше полей - тогда да, но менять код а не таблицу).
|
25.02.2011, 19:17 | #7 |
Администратор
|
Вариант с таблицей уже давно проходит мимо, т.к. не принимают его в ядро.
Может быть, есть другие варианты, один из которых примут. |
26.02.2011, 08:05 | #8 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
Спрошу тут
SpellEffects.cpp - void Spell::EffectTriggerSpell(SpellEffectIndex effIndex) Есть кусочек с комментарием // special cases Можно услышать какие-нибудь комментарии по этому поводу? Откуда берутся эти особые спеллы? Если их не в дбц, и на вх нет. В снифах ? |
26.02.2011, 15:32 | #9 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
он проходит мимо не в принципе (нечто подобное все равно придется принять когда-нибудь) а потому что довольно плохо и нерационально написан. а переписать некому...
|
26.02.2011, 15:41 | #10 | |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
Цитата:
вместо 34146 скорее 34149, я много косяков встречал когда тригерится в одном спелл такой которого нет в дбц, но он на одну циферку больше Последний раз редактировалось MaxXx2021; 26.02.2011 в 15:44. |
|
26.02.2011, 15:50 | #11 |
Администратор
|
Есть 2 спелла на суммон го при непрокачанном таланте.
У спелла должен быть эффект каста спелла или суммона одного из двух го в зависимости от прокачки талана. И это дла обоих рангов, так что просто замена кода не прокатит. Тут думми или скрипт-эффект. Вся проблема в месте, где должна быть реализация. |
26.02.2011, 15:52 | #12 | |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
Цитата:
|
|
26.02.2011, 16:05 | #13 |
Администратор
|
Если не ошибаюсь, то есть спеллы для суммона 2 из 4 го.
Через таблицу придется добавлять 4 спелла на суммон го и 2 с думми или скрипт-эффектами. |
26.02.2011, 16:12 | #14 |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
к примеру Таблица с колонками Entry, TriggeredSpell В ентри указываем первый спелл, а в тригеред нужный второй спелл который должен кастонутся при использовании первого спелла, и при загрузке сервера заменяем в SpellStore на нужные данные!
|
26.02.2011, 19:56 | #15 |
Администратор
|
Все равно 4 го надо как-то суммонить, спеллов на них нет.
Теоретически можно сделать обработчик для отсутствующих спеллов, т.е. при попытке кастануть такой спелл направлять в обработчик, где будут описаны все необходимые действия. |
27.02.2011, 10:16 | #16 |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
можно для рангов сделать такой
Последний раз редактировалось MaxXx2021; 27.02.2011 в 10:20. |
27.02.2011, 10:49 | #17 |
Администратор
|
Т.е. в итоге добавить минимум 4 спелла только для суммона го.
Это не единичный случай, когда нет спеллов для суммона, а создавать для каждого спелл, как мне кажется, не совсем правильно. Один спелл отсутствует, перенаправить в специальный обработчик и там реализовать все действия. |
27.02.2011, 12:46 | #19 |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
|
27.02.2011, 12:58 | #20 |
Администратор
|
Как я понимаю, нет.
Спеллы берутся из дбц + дополнительно из базы, в итоге получаем набор спеллов, которые обрабатываются одинаково. |
27.02.2011, 13:02 | #21 |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
Там с баженными разобрались спеллами если нету тригереда. А если зависящие от ранга то нужно уже при касте в ядре менять значения, которые также можно внести в эту же таблицу!
|
27.02.2011, 13:17 | #22 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
"не видел но осуждаю". круто. принцип патча на спелл-оверрайд (таблица spell_dbc) в том что после загрузки в память spell.dbc поверх уже загруженных данных грузятся данные из таблицы. которые либо дополняют либо заменяют имеющиеся данные о спеллах. никаких спецобработчиков к этому не прилагается.
|
27.02.2011, 13:27 | #23 | |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
Цитата:
|
|
27.02.2011, 13:54 | #24 |
Администратор
|
Никак.
Если только добавлять спеллы в базу, что лично мне не кажется правильным. |
27.02.2011, 14:11 | #25 |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
|
косяков в дбц очень много, и каждое заталкивать в ядро мне кажется не правильным.
|
27.02.2011, 14:35 | #27 |
Администратор
|
В первом случае ауры нет вообще, т.к. талант не прокачан.
Это получается конструктор Лего, пишем эффекты, какие захотим. Если бы это было допустимо, то для разных думми и скрипт-эффектов такой подход уже использовался бы. |
07.03.2011, 20:08 | #28 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
только для информации - после добавления в spell_dbc
Код:
(34145, 0, 0, 0, 0, 0, 67108864, 0, 0, 0, 0, 0, 1, 0, 0, 101, 0, 0, 80, 80, 0, 1, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 'Ritual of Souls Rank 1 - Trigger Create Soulwell (29886)'), (58888, 0, 0, 0, 0, 0, 67108864, 0, 0, 0, 0, 0, 1, 0, 0, 101, 0, 0, 68, 68, 0, 1, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 'Ritual of Souls Rank 2 - Trigger Create Soulwell (58889)'), |
07.03.2011, 20:19 | #29 |
Администратор
|
Это понятно, работать будет, но без учета таланта, т.к. код не правился.
Хочется реализации, которую примут в ядро. |
07.03.2011, 20:57 | #30 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Принятие в ядро реализации любых отсутствующих в ДБЦ спеллов требует (каждый!) хака, на мой взгляд ничуть не меньшего, чем имплемент spell_dbc. Насколько мне известно, пока ни один такой хак в ядро не принят, даже очевидные, вроде Rune strike и Demonic circle.
|
Пользователь сказал cпасибо: | PSZ (08.03.2011) |
07.03.2011, 21:34 | #31 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
соглашусь с rsa.
все мы знаем, что в dbc не все данные. и я тоже откровенно не понимаю, почему нельзя исправлять эти данные для достижения работоспособности той или иной фичи. это с одной стороны не нарушает общую механику реализаций в коде, с другой не плодит лишнего кода в виде затычек и хаков (только ради того, что бы "не трогать родные dbc"). |
Пользователь сказал cпасибо: | PSZ (08.03.2011) |
07.03.2011, 21:41 | #32 |
Администратор
|
"Родные" дбц никто и не трогает, только дополняет.
В ядре до сих пор есть хаки с произнесением фраз, забитых в коде, т.е. локализацию уже не прикрутить. |
08.03.2011, 09:12 | #33 |
Ученый
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
|
+1 rsa, RomanRom. Давно пора иметь свою базу спеллов. Не используют же Близзы на серверах клиентские dbc.
|
08.03.2011, 12:02 | #34 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
свою может и не надо пока, нам бы нормально сэмулировать имеющуюся. а вот запрет на модификацию "родных" файлов, пожалуй снять стоит.
в своем проекте я сделал так: во первых я не использую dbc напрямую. все данные я перегоняю в sql. таким образом получаю так сказать "чистые" дампы. затем, если это необходимо я делаю patch на ту или иную таблицу, модифицируя или дополняя ее. таким образом "инсталлер" сервера содержит исходник и патч. у вас что то подобное уже сделано, используйте это смелее |
08.03.2011, 15:46 | #35 |
Ученый
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
|
|