• Страница 1 из 1
  • 1
Модератор форума: staford11  
Ремонт Скила (Создание нового Скила)
Taktick
Рыцарь
Всем привет!
Сегодня выложу как создать СВОЙ СКИЛ! СОВСЕМ БЫСТРО И ЛЕГКО.
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
World of Warcraft - как много эмоций связанно с этой игрой в которой ключевую роль играют спеллы (умения) игроков !

И почти каждый кто играл у себя на LAN в WOW - сталкивался с проблемой некорректной работы spellов-т.е ты набрал опыта, накопил очков и прокачал особое умение - включаешь его против крутого соперника - бац ..... и не работает умение ... Со временем конечно сервера апдейтят (обновляют) скриптовую часть и фиксят\исправляют различные баги ....

Но что делать если у вас нет доступа к пофиксенным скриптам ?

Есть вариант решения этой проблемы:

Скачайте в инете более менее приемлемый файл с исправленными spell (от WAD, BAD) для ручного редактирования и исправления бага !

Hу скачал ... ну поставил себе на сервер .. а что делать дальше как редактировать так чтобы заработала нормально вся магия ?

Для этого прежде всего стоит усвоить что:

Разумеется, чтобы заниматься правкой спеллов WOW,
нам понадобятся какие-то программы, ролики wow приколы и обучающие материалы.
Обычно используют для этого две:

DbcEditor и DbcPatcher.

Первая - программа для просмотра текущих значений Spell.dbc.
Не самая удобная прога -нет поиска и т.д.

Скачать её можно здесь -
http://1wow.ru/download/wowemu/DbcEditor.zip

Вторая - программа для изменения. Чем она удобна: составляется текстовый файл со списком изменений. Затем программа добавляет указанные в файле изменения (и только их) в Spell.dbc.

Если например апдейт вышел неудачный (а представьте что до этого апдейтов было уже около сотни), то достаточно достать предварительно сохранённый в другом месте Spell.dbc, убрать из текстового файла неудачный апдейт, и снова запустить программу.

Экономится довольно много времени.
Скачать - http://1wow.ru/download/wowemu/dbcpatcher.rar

Есть и другие полезные программы типа Dbc<->Csv но их мы здесь не описываем ...

Итак проги вы скачали... нашли у себя на сервере файл spell.dbc

Но не спешите открывать файл со спеллами через dbcpatcher или dbceditor ...
прежде чем взглянуть в самую глубь близзардовского произведения исскуства ... следует понять немного структуру этого самого файла spell.dbc

" Spell.dbc- Он является базой данных. В каждой строке (спелле) хранятся в определённых столбцах значения, характеризующие все свойства спеллов, в частности, название, описание, эффект, время каста, кулдаун и т.д. Он подгружается на сервер при загрузке. Здесь начинается одна из главных ошибок новичков - они часто спрашивают "Почему в spell.dbc изначально стоят неправильные значения?". Правильный ответ - так стоят правильные значения. Дело в том, что в этом файле хранятся лишь номера эффектов, аур и т.д. А вот как они обрабатываются на сервере - это уже совершенно другой вопрос. Примерно половина функций не работает (в этом можно убедиться, если посмотреть файл defines.scp сервера). Примерно в середине будет список эффектов и аур, там же должна быть отметка // done напротив работающего эффекта. Только к сожалению информация там верна только на 95%, так, некоторые эффекты на самом деле работают, а отметки нет). Зачем же тогда править Spell.dbc, если там всё итак верно, спросите вы. И будете правы, это извращение. Но этим извращением можно исправить довольно много спеллов ) В частности, прописать им не совсем верные свойства, но близкие к реальности. Например, для неработающих станов прописать свойство корней, тогда они хоть как-то будут работать и т.д. По этой же причине в Spell.dbc нельзя "исправить" все спеллы. " это все комментарии от zebooka который собаку съел на редактирвоание spell.dbc

Итак структура файла понятна, теория немного тоже понятна .... проги есть, что делать дальше ?
Открываем файл spell.dbc в DBCeditor и начинаем править - т.е заставляем работать неработающие спеллы ... и что мы видим ??? Куча столбцов .. куча непонятных цифр ... что же делать ? Как все это понять?

Берем в помощь гугл и находим теорию столбцов :

Пожалуй, основными являются столбцы 58, 59 и 60 - столбцы эффекта спелла. Как видно - их всего три. Т.е. сделать больше трёх различных эффектов с помощью одного спелла не получится (но можно задействовать другой спелл триггером или через tcl например). Эффекты совершенно не зависят друг от друга. Т.е. можно заставить спелл и атаковать цель, и лечить её ) Значения для эффектов можно найти всё в том же defines.scp в разделе #define SPELL_EFFECT. Например, для лечения (#define SPELL_EFFECT_HEAL 10 //done) это значение 10 (здесь же мы видим, что данная функция поддерживается эмулятором). Значит, число 10 нужно поставить в любой из трёх столбцов для эффектов. Совершенно не важно в какой, однако нужно запомнить его номер, т.к. дальнейшие свойства для этого нужно прописывать в других столбцах в чёткой последовательности. Если мы хотим, чтобы эффектом было наложение ауры (#define SPELL_EFFECT_APPLY_AURA 6 //done) нужно поставить это значение, например, в столбец 58.
Подробнее об эффектах я расскажу в примерах.

--> Плавно (или не очень) перешли к следующим столбцам 88, 89 и 90 - столбцам аур. Здесь похожая ситуация - значения и названия аур берём всё в том же defines.scp. Может быть наложено до трёх различных аур (если все значения 58, 59 и 60 столбцов равны шести). Но здесь уже важное указание - номер ауры должен быть в "правильном" столбце. Что это значит √ например, столбец 58 был занят других эффектом, а уже 59м мы решили сделать ауру. Так вот, прописывать номер ауры нужно теперь будет в столбце 89 (а не 88 или 90). Почему? Потому что как я уже указывал выше, идёт чёткое распределение по трём эффектам. Если например пронумеровать эффект столбца 58 цифрой 1, 59 - 2, 60 - 3, то логично что ауру нужно указывать для соответствующего номера (т.е. в нашем случае мы используем эффект номер 2, а это столбец номер 89). Может быть довольно запутанно объяснил, но лучше не могу )) Подробнее ещё рассмотрим. Пока же отмечу, что такое же чёткое распределение на три эффекта будет действовать для многих других полей, как например поля значения, поля цели и т.д.

--> Предположим мы задали в эффекте нанести урон по цели. Какой же именно урон будет нанесён? За это отвечают столбцы значения - 73, 74 и 75. Видим, что и тут их три. И тут нужно соблюдать распределение по трём эффектам (т.е. эффекту 60 будет соответствовать значение столбца 75). Предположим, что мы хотим сделать значения урона (хила, уменьшение скорости и т.д. не суть важно) равным 50. Что надо для этого сделать? Поставить, например, в поле 73 значение 50 скажете вы. И будете правы, но не совсем. Дело в том, что отсчёт значений начинается с нуля, поэтому значение нужно ставить на единицу меньше, чем нужно. То есть, для нашего примера, 49. Это же сохраняется и для отрицательных значений, например вместо -50 точнее будет поставить -51.

В общем-то, самые основные столбцы мы разобрали. Без них не обойдётся ни один спелл. Но часто может потребовать менять следующие столбцы (в порядке увеличения порядка):

--> 6 и 7 - атрибуты спелла. Честно, я в них не разбираюсь. Беру всегда по аналогии с похожим спеллом.
--> 16 - индекс времени каста спелла. Заметьте, именно индекс, а не конкретное время. Список индексов для разных значений времени можно найти в файле SpellCastTimes.dbc.
--> 18 - значение кулдауна спелла в миллисекундах. К сожалению, простое его изменение не повлияет на работу спелла. Пока слабо разработан процесс изменения кулдауна, но его можно найти в примере о Power Word:Shield.
--> 19 - флаги для прерывания спелла. Поставьте значение 0, и инстант-спелл не будет прерываться никогда (даже при беге).
--> 20 - флаги для прерывания ауры.
--> 22 - флаги для выполнения триггерного спелла или урона. Опять же нужно смотреть похожие спеллы, чтобы понять какое значение ставить. Например, флаг для срабатывания триггера при ударе по игроку - 1049602.
--> 23 - шанс срабатывания спелла (в процентах). Полезно для печатей паладина и т.д.
--> 24 - количество зарядов у спелла (например, у шаманвского Lightning Shield 24=3).
--> 28 - индекс времени действия спелла. Посмотреть значения времени для каждого индекса можно в файле SpellDuration.dbc
--> 29 - тип "маны", который будет требоваться для спелла. Берётся из defines.scp. Для маны - 0, для ярости - 1, для энергии - 3.
--> 30 - значение требуемой "маны". Заметьте, что если тип - ярость, то значение нужно увеличить в 10 раз, т.е. чтобы спелл требовал 10 ярости, надо ставить 30=100.
--> 34 - индекс радиуса, в котором должна находиться цель. Конкретные значения можно найти ниже в примечаниях.
--> 61, 62, 63 - три столбца для разницы между минимальных и максимальным значением эффекта (т.е. в столбце, например, 73 стоит минимальное значение урона, тогда максимальное равно сумме значений в столбцах 61 и 73).
--> 79, 80, 81 - три столбца для выбора нужных целей при спелле (для каждого эффекта можно ставить своё значение). Играет важную роль при AoE-спеллах. Например чтобы эффект из столбца 58 работал только на врагов, ставим 79=6.
--> 91, 92, 93 - допольнительная информация об эффектах. Например ,в милисекундах ставиться значения перерыва между действиями перидоческих хилов, урона и т.д.
--> 103, 104, 105 - опять дополнительная информация об эффектах. Здесь может стоять информация о типе Shapeshift, о виде брони которую мы меняем спеллом (просто это броня или резисты магии) и т.д. Полезно разбирать похожие спеллы, чтобы разобраться, что и как.
--> 153 - процентное требование "маны" (действует и на ярость, и на энергию, и т.п.).

======================================== ============================

Примеры некоторых спеллов

1) Заставим Sinister Strike у рога наносить 100% урона оружием плюс дополнительный урон.
Перво-наперво ищем ID спелла - можно в spell150.txt, можно на тоттботе. Нашли для первого ранга - 1752.
Сначала сделаем дополнительный урон. В defines.scp #define SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL 17. Ставим 58=17. Конкретное значение урона - 3, значит нужно поставить 73=2 (не забываем про отсчёт с нуля).
Теперь урон оружием. Открываем defines.scp и видим #define SPELL_EFFECT_WEAPON_PERCENT_DAMAGE 31. Пусть вам не смущает возможное отсутствие надписи // done. Про это уже писалось. Да и функция на 100% не реализована верно на самом деле Wink Но обратно к спеллу. Столбец 58 мы уже заняли, столбец 59 занят добавлением комбо очка (полезно перед апдейтом спелла всегда проверять его эффекты заранее). Но столбце 60 свободен от "полезных" эффектов. Значит, ставим 60=31. Теперь конкретное значение - мы хотим 100%. Ставим 75=99.
Итого получили готовое решение: 1752:58=17,73=2,60=31,75=99.

2) Заставим Kidney Shot станить врага. Сам по себе стан не работает, но можно сделать небольшую имитацию. Можно поставить эффект от корней (обездвиживание игроков, полный стан для мобов). Плюс недавно появилась возможность не давать игрокам юзать скиллы.

ID спелла - 408.
Эффект ауры корней - ищем в defines.scp нужный номер (#define SPELL_AURA_MOD_ROOT 26). Не забываем поставить эффект ауры. Итого получим 59=6,89=26 (на первый эффект 58 пока оставим место).
Теперь запретим юзать игроку скиллы - делается это посредством невидимой трансформации игрока в форму для путешествий (Travel Form) у друида. Естественно, скорость не будем увеличивать Wink Итак, реализуем. В столбце 58 уже стоит эффект ауры, так что менять не надо. Ставим нужный номер ауры (#define SPELL_AURA_MOD_SHAPESHIFT 36). 88=36. В строке значения от эффекта должно стоять нулевое значение. То есть ставим 73=-1 (надеюсь, поняли почему). Чтобы указать какой именно ShapeShift должен произойти, используем дополнительные свойства - столбец 103. Прописываем ему значение 3: 103=3. Почему? Можно увидеть в том же defines.scp - #define SHAPESHIFT_FORM_TRAVEL 3.
Если теперь потестировать, то увидим, что спелл действует очень долго, намного дольше, чем следует. Поэтому воспользуемся столбцом 28 (время действия) для корректировки. Поставим там значение одной секунды (в зависимости от комбо-очков оно будет самостоятельно увеличиваться, больше ничего исправлять не надо). Ищем значение индекса в файле SpellDuration.dbc. Находим - 28=285.
Итого: 408:59=6,73=-1,88=36,103=3,89=26,28=285

3) Заставим Берсерк Станс давать +3% крита, а заодно уменьшать броню на 1000 (не совсем верно, но всё же).
ID спелла - 2458.
Рассматриваем спелл √ видим, что использован только один эффект - 58, на собственно само превращение. Значит, два других свободны, как раз то, что нам нужно.
Эффект накладывания аур: 59=6,60=6.
Сначала крит. Ищем номер - #define SPELL_AURA_MOD_CRIT_PERCENT 52 => 89=52. Сколько добавить: 74=3. Вы можете удивиться - отсчёт же идёт с нуля. Почему тогда не 2? Да, я тоже удивился )) Но почему-то нужно ставить именно 3 в этом случае.
Теперь броня. #define SPELL_AURA_MOD_RESISTANCE 22 => 90=22. Сколько добавить: 75=-1001. Думаю, вы заметили, что в названии эффекта ауры есть слово resistance. В соотв. столбце дополнительной информации об эффекте (диапазон 103-105) ставится номер резиста. Для брони на всякий случай поставим 105=0. Если бы например меняли Holy резист, то поставили бы 105=1. Соотв. значения для резистов можно опять же найти в defines.scp
Итого: 2458:59=6,60=6,89=52,74=3,90=22,75=-1001,105=0.

4 ) Заставим Adrenaline Rush регенить 20 энергии каждую секунду.
ID спелла - 13750.
Рассматриваем спелл. Используется один эффект (#define SPELL_AURA_MOD_POWER_REGEN 85). Хотя и отмечено, что он работает, это не так ) Соотвественно можно смело убирать этот эффект, и вместо него поставить свой.
Т.к. аура итак накладывается, 58й столбец можно не менять. Зато изменим 88, дав ему нужное нам значение (#define SPELL_AURA_PERIODIC_ENERGIZE 24). 88=24. Ну и пропишем, сколько энергии регенить - 74=19.
Теперь пропишем, что период спелла равен одной секунде (т.е. разрыв между периодическими действиями составляет секунду). За это отвечает столбец 91 (или 92, или 93 для соответствующих эффектов). Ставим 91=1000 (в милисекундах)
Итого: 13750:88=24,74=19,91=1000.
Сообщение # 1 отредактировано staford11 - Суббота, 14.06.2014, 19:05
GreenFreen
Скаут
Спасибо Помогло лови + за старание thumb
Сообщение # 2 написано 14.06.2014 в 20:20
  • Страница 1 из 1
  • 1
Поиск: