В предыдущей статье мы создали первый модуль и познакомились с TSWoW поближе. В данном руководстве будет показано, как создать полнофункциональный пользовательский класс с помощью TSWoW. Пользовательские классы уже давно присутствуют в WotLK, но раньше их настройка была очень утомительной и подверженной ошибкам. Как мы увидим в этом уроке, TSWoW делает создание пользовательских классов очень простым, для сравнения можете ознакомиться с данной статьёй. В следующих уроках мы также рассмотрим создание собственных заклинаний и тренера для нашего класса. Ну что же, приступим!
Класс, который мы будем создавать это класс под названием Бард.
Определение класса
Примечание. Если вы создаете класс, а затем удаляете его (или меняете modid:entityid), вам необходимо удалить
Нашим первым шагом будет создание определения для нашего нового собственного класса. Создайте новый файл с именем
Данный код создает новый класс с именем «Bard», основанный на классе Мага. Он будет доступен следующим расам: Люди, орки и кровавые эльфы. Запустите команду
Примечание о краше WoW при создании/удалении классов.
В World of Warcraft числовые идентификаторы классов должны строго возрастать без пропусков (начиная с 10, 11, 12 и т. д.), иначе клиент вылетит при запуске игры. TSWoW автоматически генерирует числовые идентификаторы при создании классов и сохраняет результат в файле
Чтобы решить эту проблему в процессе разработки, вы можете просто удалять файл
Настройки пользовательского интерфейса
Давайте изменим цвет пользовательского интерфейса класса и добавим описание. Добавьте следующее в файл
Снова запускаем команду
Характеристики
Изменить характеристики нашего нового класса также очень просто в TSWoW. Приведенный ниже код изменяет крит заклинаний/ближнего боя нашего нового класса.
SkillLines
Классы обычно имеют некоторые типы заклинаний, связанные с ними, такие как Огонь для магов и Ликвидация для разбойников. SkillLines — это не то же самое, что ветка талантов, вместо этого они используются для классификации и классификации заклинаний. SkillLines — довольно сложная тема, но, к счастью, их использование для классовых навыков не требует ничего большего, чем просто их создание. Мы создадим два для нашего Барда, чтобы мы могли использовать их в следующем уроке о заклинаниях.
Добавьте следующее в конец файла
Мы не будем использовать их до следующего урока, так что вы можете пока оставить их такими. Обратите внимание, как мы можем продолжать изменять свойства в длинной цепочке методов, просто переходя на новую строку и продолжая с . после того, как мы установим или добавим свойство? Это может помочь сделать код намного чище, чем постоянное повторное объявление переменной, которую мы хотим изменить, и приведенный выше код эквивалентен следующему:
Результат
Класс, который мы будем создавать это класс под названием Бард.
Определение класса
Примечание. Если вы создаете класс, а затем удаляете его (или меняете modid:entityid), вам необходимо удалить
config/ids.txt
файл, так как текущий алгоритм генерации не работает с дырами в идентификаторах классов (ваш клиент выйдет из строя) .Нашим первым шагом будет создание определения для нашего нового собственного класса. Создайте новый файл с именем
Bard.ts
в datascripts
папке вашего мода. Добавьте следующий код:
Код:
import { std } from "wow/wotlk"
export const BARD_CLASS = std.Classes
.create('mymod','bard','MAGE')
.Races.add(['HUMAN','ORC','BLOODELF'])
.Name.enGB.set('Bard')
Данный код создает новый класс с именем «Bard», основанный на классе Мага. Он будет доступен следующим расам: Люди, орки и кровавые эльфы. Запустите команду
build data
и войдите в меню создания персонажа. Вы должны увидеть, что ваш новый класс добавлен.Примечание о краше WoW при создании/удалении классов.
В World of Warcraft числовые идентификаторы классов должны строго возрастать без пропусков (начиная с 10, 11, 12 и т. д.), иначе клиент вылетит при запуске игры. TSWoW автоматически генерирует числовые идентификаторы при создании классов и сохраняет результат в файле
config/ids.txt
. Это вызовет проблемы, если вы создадите класс с одной парой модификатор/идентификатор, а затем либо измените мод/идентификатор, либо удалите класс и создадите другой с другой парой идентификаторов.Чтобы решить эту проблему в процессе разработки, вы можете просто удалять файл
config/ids.txt
каждый раз, когда удаляете старый класс в своем коде перед перестройкой. Однако в продакшене вы должны сами решить, как справиться с эффектом полного удаления класса из игры, поскольку у многих игроков, скорее всего, будут персонажи этого класса. Поэтому вы можете вручную отредактировать файл ids.txt.
Настройки пользовательского интерфейса
Давайте изменим цвет пользовательского интерфейса класса и добавим описание. Добавьте следующее в файл
Bard.ts
.
Код:
// Изменяем цвет класса (тот что в списке игроков онлайн и т.д)
BARD_CLASS.UI.Color.set(0xcc0077)
// Добавить описание создания персонажа
BARD_CLASS.UI.Info.add('- Role: Damage, Heal')
BARD_CLASS.UI.Info.add('- Light Armor (Cloth)')
BARD_CLASS.UI.Info.add('- Controls multiple undead servants')
BARD_CLASS.UI.Info.add('- Uses mana as a resource')
BARD_CLASS.UI.Description.set("Bards raise and control the undead.")
Снова запускаем команду
build data
и заходим в меню создания персонажа и видим следующее:Характеристики
Изменить характеристики нашего нового класса также очень просто в TSWoW. Приведенный ниже код изменяет крит заклинаний/ближнего боя нашего нового класса.
Код:
// Критический удар заклинанием = 0.1*level
BARD_CLASS.Stats.SpellCrit.set((x,level)=>1337*level)
// Критический удар в ближнем бою = 0.1*level
BARD_CLASS.Stats.MeleeCrit.set((x,level)=>1337*level)
SkillLines
Классы обычно имеют некоторые типы заклинаний, связанные с ними, такие как Огонь для магов и Ликвидация для разбойников. SkillLines — это не то же самое, что ветка талантов, вместо этого они используются для классификации и классификации заклинаний. SkillLines — довольно сложная тема, но, к счастью, их использование для классовых навыков не требует ничего большего, чем просто их создание. Мы создадим два для нашего Барда, чтобы мы могли использовать их в следующем уроке о заклинаниях.
Добавьте следующее в конец файла
Bard.ts
, чтобы создать две линии навыков для класса Bard:
Код:
export const INSPIRATION_SKILL = std.SkillLines
.create('tswow-introduction','inspiration-skill')
.Category.CLASS.set()
.RaceClassInfos.add([BARD_CLASS.Mask])
.Name.enGB.set('Inspiration')
export const DEATH_SKILL = std.SkillLines
.create('tswow-introduction','death-skill')
.Category.CLASS.set()
.RaceClassInfos.add([BARD_CLASS.Mask])
.Name.enGB.set('Death')
Мы не будем использовать их до следующего урока, так что вы можете пока оставить их такими. Обратите внимание, как мы можем продолжать изменять свойства в длинной цепочке методов, просто переходя на новую строку и продолжая с . после того, как мы установим или добавим свойство? Это может помочь сделать код намного чище, чем постоянное повторное объявление переменной, которую мы хотим изменить, и приведенный выше код эквивалентен следующему:
Код:
export const INSPIRATION_SKILL = std.SkillLines
.create('tswow-introduction','inspiration-skill')
INSPIRATION_SKILL.Category.CLASS.set()
INSPIRATION_SKILL.RaceClassInfos.add([BARD_CLASS.Mask])
INSPIRATION_SKILL.Name.enGB.set('Inspiration')
export const DEATH_SKILL = std.SkillLines
.create('tswow-introduction','death-skill')
DEATH_SKILL.Category.CLASS.set()
DEATH_SKILL.RaceClassInfos.add([BARD_CLASS.Mask])
DEATH_SKILL.Name.enGB.set('Death')
Результат
- Создали свой собственный класс "Bard"
- Добавили его в меню создания персонажа
- Изменили характеристики нашего класса
- Созданы SkillLines, которые будут использоваться для определения того, какие заклинания принадлежат нашему классу.
Bard.ts
выглядит следующим образом:
Код:
import { std } from "wow/wotlk"
export const BARD_CLASS = std.Classes
.create('mymod','bard','MAGE')
.Races.add(['HUMAN','ORC','BLOODELF'])
.Name.enGB.set('Bard')
// Изменяем цвет дисплея
BARD_CLASS.UI.Color.set(0xcc0077)
// Добавить описание создания персонажа
BARD_CLASS.UI.Info.add('- Role: Damage, Heal')
BARD_CLASS.UI.Info.add('- Light Armor (Cloth)')
BARD_CLASS.UI.Info.add('- Controls multiple undead servants')
BARD_CLASS.UI.Info.add('- Uses mana as a resource')
BARD_CLASS.UI.Description.set("Bards raise and control the undead.")
// Критический удар заклинанием = 0.1*level
BARD_CLASS.Stats.SpellCrit.set((x,level)=>1337*level)
// Критический удар в ближнем бою = 0.1*level
BARD_CLASS.Stats.MeleeCrit.set((x,level)=>1337*level)
export const INSPIRATION_SKILL = std.SkillLines
.create('tswow-introduction','inspiration-skill')
.Category.CLASS.set()
.RaceClassInfos.add([BARD_CLASS.Mask])
.Name.enGB.set('Inspiration')
export const DEATH_SKILL = std.SkillLines
.create('tswow-introduction','death-skill')
.Category.CLASS.set()
.RaceClassInfos.add([BARD_CLASS.Mask])
.Name.enGB.set('Death')