• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » Установка / Настройка TrinityCore » [Мануал] Создаём спеллы :) (Думаю такого не было на сайте)
[Мануал] Создаём спеллы :)
exersist
-[Marsascala]-
WARNING!!! Для работоспособности Spell`ов необходим будет патч в клиент. Если вы его не планируете, можете выйти)


В данном мануале опишу основы создание простых спеллов.
И так, нам понадобится:

  • Spell.dbc (дальше я буду называть его просто дбк)
  • Редактор дбк файлов, я советую иметь под рукой MyDbcEditor и Taliis
  • Любой mpq архиватор.

Начнём!
Откроем spell.dbc (дбк) и сразу смотрим на на самый верх. У вас могут столбцы быть с именами, или просто помечены цифрами (если вы уже редактировали его).
Сразу уточню, что порядок номеров может начинаться либо с 0, либо с 1. В мануале я буду рассказывать так, как будто начало идёт с 0.
Т.е. ID у нас это 0-ой столбец, а последний будет 233. Все 233 столбца я вам рассказывать не буду.
Я не вижу смысла показывать написание спеллов с нуля, поэтому для своего спелла мы будет брать шаблоны.
В конце гайды, я напишу краткий список полезных "шаблонов" для спеллов.
Для начала, возьмём простой спелл с айди "11660" - это у нас "Стрела тьмы", некоторого ранга и имеет следующие полезные данные:
Quote
Стрела Тьмы
Shadow Bolt Ранг 8
30 ярдов
Чтение: 3 сек.
Поражение противника теневой стрелой, наносящей 360 - 402 ед. урона от темной магии.

Я специально взял не 1 ранг, что бы показать пример повышения рангов способностей.
И так приступим к редактированию. Откроем MyDbcEditor`ом файл spell.dbc и выберем "Edit -> Go to ID". Сюда впишем наш айди и найдём спелл. Далее по найденому спеллу нажмём ПКМ и выберем "Copy Line to..." В полученном окне введём айди нового спелла. Советую брать айди в интервале от 90000 до 96000.
И так мы скопировали шаблон.
Вопрос который интересует большинство людей - это конечно же дамаг smile
И так изменим дамаг. По описанию спелл дамажит от 360 до 402 ед. урона.
Смотрим в колонку "80" и видем "359". Многие параметры спеллов пишутся +-1. Дамаг в том числе. Но не от того что так хочется. Если хотите что бы спелл бил 10000 - в эту колонку пишите 9999. В общем изменяйте как желаете.
Теперь остановимся на колонке "80".
В спеллах колонка 80 - это почти самый важный параметр. Этот параметр устанавливает дамаг/хил/какой-то шанс/увеличение и понижение чего-то в кол-ве или % и так далее. Например в спелле дк "Костяной щит" понижение урона указывается в колонке 80.
Если у спелла несколько параметров данного типа в некоторых случиях используются колонки 80-82. Если в вашем шаблоне стоит 0 - не трогайте.
Думаю с колонкой 80 вы поняли, поэтому дальше.
Важной частью дамага или хила это "зависимости" от силы атаки и силы заклинаний. Это колонка "229". Зависимость указывается в ввиде дроби, например "0,111000001430511". Этим я особо не интересовался, но примерно это выглядит так - 1 это 100% спелл павера, 0,5 - это где-то 50% от спелл павера или силы атаки. Точно описать зависимость не смогу, но вы можете пробывать разные параметры.
И так наша стрела кастуется 3 секунды. Изменим это значение. Время произношения заклинания находится в колонке "28".
У нас там указан параметр 14. В данной строке используются "импорты". Т.е. данные берут из другого dbc файла. Этот файл spellcasttime.dbc. Его содержимое:

2 столбик (в spellcasttimes) это время каста (1сек=1000), а 1 столбик это ид который мы укажем в 28 столбик в spell.dbc
Думаю тоже ясно.
Если речь пошла о времени, то опишу изменение КД (перезарядка). Здесь всё проще просто указываем 1к1000 (1сек=1000)
А столбец отвечающий за это "30".
Следующий параметр время действия - колонка "40". Данные берутся из SpellDuration.dbc. Ниже его содержимое.

Вот несколько примеров, что б вам не трудится переводить. В кавычках значение, в скобках ид который ложим в spell.dbc "-1" безконечно (параметр 21); "600000" (6) - 10минут; "300к" (5) - 5мин; "10000" (1) - 10сек.; "60000" (3) - минута.
Думаю тоже ясно.
Последний параметр со временем - это ГКД. По стандарту спеллы вешают 1.5 секунды кд на все спеллы.
Столбик 205 - отвечает за категорию на которую вешает спелл ГКД, а "206" - это само ГКД (1500-1.5сек). Можно поставить 0 и кастуем без ГКД smile
Со временными параметрами разобрались.
Теперь расскажу об "оформлении" спелла.
Столбик "144" - Назание, "161" - его уровень, "178" - описание (в описании используют переменные для "времени действия" и "параметра из 80 столбика", например
Quote
Восстанавливает $s1 ед. здоровья союзнику. - это значит, где "$s1" это параметр "80"
значение времени действия обозначаются "$d". Так что когда пишете описание, желательно не стирать эти параметры, так как иногда они немного другие).
Далее "133" - это иконка. Если уж использовать патч, то можно запихнуть туда и нестандартную иконку smile Это моё мнение. Расскажу как это сделать ниже.
Столбик "131" - визуальная "основа". Особо углубляться в изменение вида не буду, но опишу основы. Под "основой" я понимаю нечто следующее:
Если мы используем спелл "Стрела тьмы" то "основа" у неё летящий череп. А если берём костяной щит, то его основа это крутящиеся кости. Так вот основа, это как раз место этих эффектов. Если мы значение в "131" столбце у стрелы тьмы поменяем на значение костяного щита, это не значит что в цель полетят кости smile Думаю вы поняли о чём я.
Так вот лучше всего подбирать похожие эффекты. Например в костяном щите менять 131 столбец на значение эффекта тёмной скорби (кстати это 15312), а стрелу тьмы менять на огненный шар или какой-либо другой "снаряд".
Есть такой параметр, как значение маны. С этим я особо не замарачивался и не очень разбирался, но... Если верить базам данных спеллы тратят какой-то % маны. Этот % указан в столбике "204"


Есть такие спеллы как морфы или призывы. Значение модели морфа или айди моба которго призываем указываются в столбике "110".
Ну основные параметры таковы smile
Ну укажу ещё парочку, таких как:
ID | Что это
1 - Категория
2 - рассеивание
3 - механика спелла
16- цели
17 - типы целей
35 - шанс прока (Прок - это шанс что спелл "выполнит" свою задачу. Его указываем так, если нужно 50% то ставим 51, если нужно 100%шанс пишем 101. Подробнее. Ставим мы скажем 51, и в игре кастуя Стрелу Тьмы у нас 50% шанс что сама стрела вылетит)
38/39 - уровень спелла. (Ставим точное значение)


Ну вот думаю все важные параметры я указал.
Терерь я как и обещал опишу как к спеллу присоединить свою собственную иконку.
Открываем файл SpellIcon.dbc
Копируем любую строку в последнюю, и указываем любой айди. Совету брать 4500-90000. Во второй столбик вписываем туда путь к иконке. Обычно пути в иконках пишутся так
Code
INTERFACE\ICONS\t_roboticon

Папки Иконки и Интерфейс можно опустить. "t_roboticon" - Это имя иконки, без расширения. Тем не менее сам файл иконки должен быть формата blp(в программах blp2) и разрешение 64х64. BLP1 используются в варкрафте3 и подобных играх. BLP2 используют в вов. Хороший конвертер из png в blp2 я прикреплю к теме ниже.
Так вот например вы создали иконку в png формате(64х64). Сохранили, берём её и перетаскиваем на программу. Она "блымкнет" и всё. Создаст вам блп2 файл рядом со старой, назовём её "bitch.bpl". Эту иконку кидаете в патч. Если кинуть в корень патча, то путь к ней будет иметь следующий вид :
Code
bitch

Без сторонних папок и расширения. Потом заходим в наш spell.dbc и в колонку "133" вписываем айди который указали в spellicon.dbc, вот и всё)


Теперь как обещал выложу несколько полезных шаблонов. Вот иды спеллов.
71354 - спелл повышающий получаемый опыт (в 80 столбике % повышения опыта (на 1 меньше))
68012 - примитивный хил (чтение 2 секунды)
14106 - примитивный дамаг (чтение тоже 2 сек)
59737 - увелич. скор. передвижения (100% 10сек.)
52635 - увелич. скор. боя и чтения спеллов (10%, сумируется 20раз)
1094 - дамаг + дот (дамаг в 80, дот в 81)
8936 - хил + дот хил (так же)
871 - снижение получаем. урона на 60% (на время)
63364 - всем известная аура на блок 99% урона (Можно изменить значание времени действия, понижать\повышать блок урона и получатся разные спеллы)
Ну вот набрасал пару шаблончиков.


В общем комментируем, исправляем ошибки и недочёты. Пишите вопросы, чем смогу помогу.

За некоторую информаци скажу спасибо махито-айс

Добавлено (21.09.2012, 16:21)
---------------------------------------------

Коментарии в студию! :)
---||| Продаю акк в CrossFire тык |||---
---||| 3 капсульные оружия, 4 скина! Всего 1000руб.!!! |||---

Сообщение # 1 отредактировано exersist - Среда, 19.09.2012, 21:57
Tehnokrat011
Капрал
Колонки 80-82 не для нескольких параметров
Code

int32     EffectBasePoints[MAX_SPELL_EFFECTS];          // 80-82    m_effectBasePoints


Колонка 80 - для первого эффекта, колонка 81 - для второго эффекта, 82 - для третьего эффекта. Не всегда это урон, иногда это значение хранит ИД триггерных спеллов, для процентных аур понижения урона и т.д - проценты.

Далее, колонки 71-73 - сами эффекты
Code

uint32    Effect[MAX_SPELL_EFFECTS];                    // 71-73    m_effect


Например Death Touch (ID - 5) поменять эффект инстакилла(1) на хил(10) и он будет хилить

Забыл про SpellRange - дальность

Code

uint32    rangeIndex;                    // 46       m_rangeIndex


SpellRadius для АоЕ - отдельно для каждого эффекта

Code

uint32    EffectRadiusIndex[MAX_SPELL_EFFECTS];         // 92-94    m_effectRadiusIndex - spellradius.dbc


35 колонка - m_procChance будет работать лишь тогда - когда Effect[0] = 6 (apply_aura), а EffectApplyAuraName[0] = 42 (proc_trigger)

Вобщем, если хочешь серьезный мануал написать, например с частями, для совсем начинающих, продвинутых и т.д, стукни в ЛС, поделюсь знаниями по этому вопросу. В свое время мне удавалось создавать новые ауры и новые эффекты, не говоря уж об обычных спеллах. Чисто ради забавы полностью перестроил Spell.dbc и выкинул лишний мусор, типа кучи таргетов бесполезных

Да, кстати, не написано, как патч в клиент делать для Spell.dbc, если SpellVisual и всякие текстовые строки изменены, на сервере этого недостаточно, надо делать патч. А если только урон и прочее - не надо, но эти изменения не будут отражатся в тултипах и описаниях
Disassembling, Intercepting/Hooking, Sniffing, Cryptography, Cracking - D.I.S.C.C )
IDA - is the best disassembler, SoftICE - is good debugger :) ©
Programming, Hacking, Reverse Engineering - is everything!
Да иди ты в ...регистр eax )
The world is not enough....
Сообщение # 2 написано 24.09.2012 в 09:05
exersist
-[Marsascala]-
Tehnokrat011,
Quote (exersist)
не для нескольких

Quote (exersist)
80 - для первого эффекта, колонка 81 - для второго эффекта, 82 - для третьего эффекта

Пфф... dry

Quote (Tehnokrat011)
Да, кстати, не написано, как патч в клиент делать

Если человек дошёл до сей темы, он должен знать как делать патч...

Добавлено (26.09.2012, 13:18)
---------------------------------------------
PS. Уважаемый Tehnokrat011 обратите внимание на 1 строчку... Если вы ослепли я процетирую и специально для вас увеличу в 2-е:

Quote (exersist)
WARNING!!! Для работоспособности Spell`ов необходим будет патч в клиент. Если вы его не планируете, можете выйти)
---||| Продаю акк в CrossFire тык |||---
---||| 3 капсульные оружия, 4 скина! Всего 1000руб.!!! |||---

Сообщение # 3 написано 26.09.2012 в 13:18
No_MaTTeR
Старший Маршал
exersist, не стоит так бурно реагировать на замечания от Tehnokrat011, он прав. Мануал действительно интересный и правки, указанные им, можно внести. Особенно о добавлении в мануал описания: "Как создать патч?". На то это и мануал, чтобы объяснить пользователю все от начала до конца. Тем более, что на это нужно всего 3-4 предложения и, желательно, 1 скриншот.
Сообщение # 4 отредактировано No_MaTTeR - Суббота, 08.02.2014, 04:06
SLA
Капрал
О чем, вы? Я даже не могу найти где фаил Spell.dbc , и напишите плиз где он!
Сообщение # 5 написано 22.07.2014 в 09:29
1max11max1
Капрал
Цитата SLA ()
О чем, вы? Я даже не могу найти где фаил Spell.dbc , и напишите плиз где он!

Когда делал экстракт карт, то создалась папка dbc, в ней и есть этот файл :DD
Сообщение # 6 написано 27.07.2014 в 15:32
p620
Маршал
Как в мануале, так и в комментариях, огромное количество ошибок, теперь он едва ли актуален.
Например:
Цитата exersist ()
Вопрос который интересует большинство людей - это конечно же дамаг И так изменим дамаг. По описанию спелл дамажит от 360 до 402 ед. урона. Смотрим в колонку "80" и видем "359". Многие параметры спеллов пишутся +-1. Дамаг в том числе. Но не от того что так хочется. Если хотите что бы спелл бил 10000 - в эту колонку пишите 9999. В общем изменяйте как желаете.

Пишется так действительно не от того, что хочется.
К каждой колонке EffectBasePoints прикладывается колонка EffectDieSides, если у спелла фиксированное значение наносимого урона/исцеления/модификатора той или иной статы - значение в EffectDieSides устанавливается на *1*, а в EffectBasePoints - на *желаемое_значение - 1*. Ежели требуется, чтобы спелл наносил урон как в примере, на величину из диапазона, то в EffectBasePoints мы пишем *минимальное_желаемое_значение-1*, а в EffectDieSides устанавливаем такое значение X, чтобы при сложении его со значением из EffectBasePoints мы получали желаемый потолок урона, который может нанести спелл.

Цитата exersist ()
Важной частью дамага или хила это "зависимости" от силы атаки и силы заклинаний. Это колонка "229". Зависимость указывается в ввиде дроби, например "0,111000001430511". Этим я особо не интересовался, но примерно это выглядит так - 1 это 100% спелл павера, 0,5 - это где-то 50% от спелл павера или силы атаки. Точно описать зависимость не смогу, но вы можете пробывать разные параметры.

Вот тут возникает вопрос, откуда вообще такая идея в голову пришла, во всех официальных источниках этот столбец - unknown.

Цитата exersist ()
Если речь пошла о времени, то опишу изменение КД (перезарядка). Здесь всё проще просто указываем 1к1000 (1сек=1000) А столбец отвечающий за это "30".

Типов перезарядок всего 3 штуки. Эта отвечает за конкретный спелл, следующая - за всю категорию, а в стобцах 205 и 206 настраивается гкд.

Цитата exersist ()
Столбик "144" - Назание, "161" - его уровень, "178" - описание (в описании используют переменные для "времени действия" и "параметра из 80 столбика", например

Почему-то ничего не сказано о следующем столбце, который отвечает за описание тултипов аур.

Цитата exersist ()
Если мы используем спелл "Стрела тьмы" то "основа" у неё летящий череп. А если берём костяной щит, то его основа это крутящиеся кости. Так вот основа, это как раз место этих эффектов. Если мы значение в "131" столбце у стрелы тьмы поменяем на значение костяного щита, это не значит что в цель полетят кости Думаю вы поняли о чём я.

Но это можно сделать. SpellVisual.dbc, SpellVisualKit.dbc, SpellVisualEffectName.dbc, SpellMissile.dbc, SpellMissileMotion.dbc, SpellVisualKitModelAttach.dbc.

Цитата exersist ()
Есть такой параметр, как значение маны. С этим я особо не замарачивался и не очень разбирался, но... Если верить базам данных спеллы тратят какой-то % маны. Этот % указан в столбике "204"

Либо берут конкретное значение ресурса и его тип, которые указываются в столбиках 41-44 (оба включительно).

Цитата exersist ()
Есть такие спеллы как морфы или призывы. Значение модели морфа или айди моба которго призываем указываются в столбике "110".

Этот столбец (их там 6 штук, по два на каждый эффект) отвечает за уйму других вещей в зависимости от типа эффекта/ауры (о которых, кстати, вообще ничего не было сказано, а их там 150/300+ штук), например, за битмаску школ, к которым аура даёт иммунитет.
Стоит также отметить, что при морфах, что интересно, используется EntryID моба, а не его дисплейник. Соответственно, моба предварительно нужно создать, а уж затем в него морфаться.

Цитата exersist ()
Ну укажу ещё парочку, таких как: ID | Что это 1 - Категория 2 - рассеивание 3 - механика спелла 16- цели 17 - типы целей 35 - шанс прока (Прок - это шанс что спелл "выполнит" свою задачу. Его указываем так, если нужно 50% то ставим 51, если нужно 100%шанс пишем 101. Подробнее. Ставим мы скажем 51, и в игре кастуя Стрелу Тьмы у нас 50% шанс что сама стрела вылетит) 38/39 - уровень спелла. (Ставим точное значение)

Ни разъяснений, ничего...
1 - Категория, отвечающая за индексацию спелла в спеллбуке/у тренера,
2 - *Материал* ауры, например, магия, проклятие, яд, болезнь и т.д.
3 - Достаточно важный параметр, отвечает за *объявление* типов эффектов, которые накладывает спелл. Например, если спелл станит, то этот стан снять пвп-тринкой не получится, потому что он не объявлен здесь. Также, существа, например боссы, хоть и будут имунны к станам, но в этом всё-равно постоят, всё по той же причине. Добавлю, что этот параметр можно настраивать для каждого эффекта в отдельности, чтобы спелл мог выполнять хотя бы частично свою роль. Например, если наш стан ещё и наносит урон, то мы не пишем сюда ничего, а устанавливаем этот параметр для нужного эффекта. Тогда босса спелл станить не будет, но урон всё-таки нанесёт.
16 - Мутный параметр, не копал его ещё особо, но пример привести смогу. Если нужно, чтобы спелл применялся к выбранной области (Снежная буря, например), то, помимо корректных целей самих эффектов (о которых, кстати, тоже ничего, хотя их порядка сотни, плюс возможны комбинации), здесь нужно установить значение *64*. Скорее всего он отвечает за список элементов окружения, к которым будет применим тап этим спеллом (кричер, игрок, ИО, область и т.д.) (параметр является битмаской).
17 - Здесь задаётся тип существ, к которым спелл может применяться. Например, паловский масс-стан попадает по нежити и демонам, это прописывается здесь.
Помимо прок-шанса, есть ещё прок-флаги и прок-чарджи.
Просчёт того, будут ли эффекты применены или нет, начинается не от шанса, он начинается от флагов, которые регулируют ивент, при котором этот просчёт будет вестись (массово используется в тринкетах, но, к сожалению, не все события можно через них настроить, нередко применяется ядро), уж затем идёт обращение к шансу (кстати, если прок-флаги установлены, единицу прибавлять не требуется, используется точное значение), а потом - к зарядам. Это значение отвечает за количество раз, которое спелл может *прокнуть* при однократном своём применении.

Цитата exersist ()
Папки Иконки и Интерфейс можно опустить.

А когда надоест отсутствие иконки в игре - можно и назад вернуть.

Цитата exersist ()
Не всегда это урон, иногда это значение хранит ИД триггерных спеллов

Если быть точным - никогда, для этого есть 3 отдельные колонки, под каждый эффект.

Вывод всё тот же. Либо поправить/предупредить, либо спрятать.
Сообщение # 7 отредактировано p620 - Четверг, 11.09.2014, 15:17
Deimos2110
Чемпион
Приветсвую! Подскажите что сделал не так. У меня нет таймера кд на иконке спелла.


подлец, но что поделать...
читы спасут мир
Сообщение # 8 написано 23.11.2014 в 16:15
p620
Маршал
Цитата Deimos2110 ()
Приветсвую! Подскажите что сделал не так. У меня нет таймера кд на иконке спелла.

Читать мой комментарий к третьему фрагменту цитаты.
Сообщение # 9 написано 23.11.2014 в 16:44
riomcboo
Скаут
Нужна небольшая помощь. Я вот просто взял и продублировал спелл в spell.dbc , однако при изучении спела, он не ложится в нужную закладку книги заклинаний, как исходное заклинание. Поэтому у меня появилась мысля что в каком-то месте прописан ID спела и в какую закладку он ложится, потому как дубль имеет все те же флаги, spellname , category. Не в курсе в каком именно месте это упоминается. Потому что в инете я подобной проблемы не нашел и ее описания.
Сообщение # 10 написано 30.12.2014 в 14:45
M1sTerY
Database Developer
подскажите где и как указать RangeSpell (ярды) какой столбец отвечает за это ? (3.3.5) столбца 46 просто нету в Spell.dbc

и так же как добавить % От силы атаки+ренж силы атаки ? какой столбец за это отвечает

Добавлено (30.03.2016, 21:18)
---------------------------------------------
ап

Сообщение # 11 написано 30.03.2016 в 21:18
killonosec123
Скаут
Ребят, хочу изменить доту, изменить общую длительность доты и изменить время между тиками этой же доты, подскажите, как это сделать? (пользуюсь DBCEditor'ом)
Спасибо
Сообщение # 12 написано 01.07.2016 в 15:44
p620
Маршал
killonosec123, не понял, что подразумевается под изменением самой "доты".
Время действия настраивается в колонке 41 (нумерация с единицы), там указывается RefID в `SpellDuration.dbc`. Открываете ее, в колонке 2 ищете подходящее Вам значение (оно там в миллисекундах) или создаете новую запись, если удовлетворяющее Вас время не описано в базе. Берете ID этой записи и вставляете обратно в запись исходной способности в `Spell.dbc`.
С амплитудой (временем между срабатываниями) все немного иначе. Во-первых она закрепляется за эффектом, а не за всей аурой. Эффектов может быть всего 3, соответственно Вы можете заменить значения в 99 - 101 колонках (в одной или в нескольких), в зависимости от того, амплитуду каких эффектов требуется поменять. Значения указываются, опять же, в миллисекундах, но на этот раз без каких-либо ссылок на другие .dbc-файлы.
Сообщение # 13 отредактировано p620 - Воскресенье, 17.07.2016, 22:36
cheathelpme
Скаут
Гайс какой параметр отвечает за парирование / додж. Буду очень благодарен (патч 3.3.5а)

Добавлено (17.07.2018, 12:22)
---------------------------------------------
Гайс какой параметр отвечает за парирование / додж. Буду очень благодарен (патч 3.3.5а)

Сообщение # 14 написано 17.07.2018 в 12:22
Maxi_Max
Скаут
Норм гайдец.Буду братишку учить им)
Сообщение # 15 написано 11.03.2019 в 16:39
chickengod
Скаут
Ошибка 131 При редактировании в spell.dbc даже в одной строке и последующим сохранением изменений в MyDbcEditor1.2.2.42 - wow.exe выдает ошибку. Редактированный dbc файл я перезаписывал в последний родной патч. Если же я извлекаю из патча spell.dbc и не редактируя его перезаписываю обратно в патч, то wow.exe запускается штатно. Ошибку выдает так же если я создаю отдельный (старший) патч с измененным файлом spell.dbc, если же вставляю в новый патч не редактированный файл, то wow запускается. Все это делается на 2.4.3 версии, видимо необходимо wow.exe пропатчить измененным архивом MPQ, как это сделать на данной версии? Для патчей используется Ladik's MPQEditor. Система win10 64
P.S. Странно, но wow 3.3.5 подобной ошибки при запуске с редактированным spell.dbc не выдает. Какие то не подходящие параметры при сохранении dbc для 2.4.3?
Сообщение # 16 отредактировано chickengod - Воскресенье, 26.04.2020, 17:53
Deimossoo
Скаут
Отличный гайд, спасибо.
Сообщение # 17 написано 18.05.2020 в 19:32
Форум » TrinityCore » Установка / Настройка TrinityCore » [Мануал] Создаём спеллы :) (Думаю такого не было на сайте)
  • Страница 1 из 1
  • 1
Поиск: