Изменение экрана создания персонажа
Значение 2 колонки должно быть изменено на 12, чтобы сделать расу играбельной.
Значение 4 колонки зависит от фракции расы, подробности смотрите в Faction.dbc
Значение 8 колонки — 1 для Орды и 7 для Альянса
9,12,1,4140,6894,6895,»Go»,1,7,15007,0×448,»Goblin»,0,0×2. «Gobelin»,. 0xFF01FE. «Gobeline». 0xFF01CC. «Gobelin», . ,,0xFF01CC,»NORMAL»,»NONE»,»NORMAL»,0,
12,12,1,4141,16981,16980,»Fo»,7,7,15007,0×448,»FelOrc»,0,0×2. «Gangr’orc. 0xFF01FE. «Gangr’orque». 0xFF01CC. «Gangr’orc»,,. 0xFF01CC,»NORMAL»,»NORMAL»,»NORMAL»,0,
Теперь откройте CharBaseInfo.dbc, этот файл определяет сочетания раса/класс.
Пока что добавьте только две линии в файл:
9 и 12 это IDsобоих рас и 1 — это ID воина. Только воины могут быть созданы, до тех пор пока вы не добавите другие сочетания.
Как создать персонажа в World of Warcraft?
Для работы патча на расу необходимо заменить wow.exe на пропатченный.
Когда сделаете, откройте эти файлы :
» В GlueStrings.lua :
RACE_CHANGE_IN_PROGRESS = «Mise jour de la race. «;
RACE_INFO_GOBLIN = «Informations sur les Gobelins.»;
RACE_INFO_GOBLIN_FEMALE = «Informations sur les Gobelines.»;
RACE_INFO_FELORC = «Informations sur les Gangr’orcs.»;
RACE_INFO_FELORC_FEMALE = «Informations sur les Gangr’orques.»;
ABILITY_INFO_BLOODELF1 = «- Comptence Enchantement amliore.»;
Перед этим добавьте :
ABILITY_INFO_GOBLIN1 = «- Comptence Gobelins, ligne 1»;
ABILITY_INFO_GOBLIN2 = «- Comptence Gobelins, ligne 2»;
ABILITY_INFO_GOBLIN3 = «- Comptence Gobelins, ligne 3»;
ABILITY_INFO_GOBLIN4 = «- Comptence Gobelins, ligne 4»;
ABILITY_INFO_FELORC1 = «- Comptence Gangr’Orcs, ligne 1»;
ABILITY_INFO_FELORC2 = «- Comptence Gangr’Orcs, ligne 2»;
ABILITY_INFO_FELORC3 = «- Comptence Gangr’Orcs, ligne 3»;
ABILITY_INFO_FELORC4 = «- Comptence Gangr’Orcs, ligne 4»;
Изменяйте эти строки как вам угодно, это информация, которая появляется при создании персонажа.
» В CharacterCreate.lua :
[«DRAENEI_FEMALE»] = <0.5, 0.625, 0.5, 0.75>,
[«GOBLIN_FEMALE»] = <0.5, 0.625, 0, 0.25>,
[«FELORC_MALE»] = <0.5, 0.625, 0, 0.25>,
[«FELORC_FEMALE»] = <0.5, 0.625, 0, 0.25>,
» В CharacterCreate.xml :
Замените на (вы можете редактировать этот код):
После этого шага вы должны иметь две расы на экране создания персонажа.
Изменения в ядре [MaNGOS]
» Откройте mangossrcgameSharedDefines.h :
RACE_HUMAN = 1,
RACE_ORC = 2,
Актеры, вернувшиеся к озвучке своих персонажей в «Warcraft 3: Reforged»
RACE_DWARF = 3,
RACE_NIGHTELF = 4,
RACE_UNDEAD_PLAYER = 5,
RACE_TAUREN = 6,
RACE_GNOME = 7,
RACE_TROLL = 8,
RACE_GOBLIN = 9,
RACE_BLOODELF = 10,
RACE_DRAENEI = 11,
RACE_FEL_ORC = 12,
RACE_NAGA = 13,
RACE_BROKEN = 14,
RACE_SKELETON = 15,
RACE_VRYKUL = 16,
RACE_TUSKARR = 17,
RACE_FOREST_TROLL = 18,
RACE_TAUNKA = 19,
RACE_NORTHREND_SKELETON = 20,
RACE_ICE_TROLL = 21
RACE_HUMAN = 1,
RACE_ORC = 2,
RACE_DWARF = 3,
RACE_NIGHTELF = 4,
RACE_UNDEAD_PLAYER = 5,
RACE_TAUREN = 6,
RACE_GNOME = 7,
RACE_TROLL = 8,
RACE_GOBLIN = 9,
RACE_BLOODELF = 10,
RACE_DRAENEI = 11,
RACE_FEL_ORC = 12,
RACE_NAGA = 13,
RACE_BROKEN = 14,
RACE_SKELETON = 15,
RACE_VRYKUL = 16,
RACE_TUSKARR = 17,
RACE_FOREST_TROLL = 18,
RACE_TAUNKA = 19,
RACE_NORTHREND_SKELETON = 20,
RACE_ICE_TROLL = 21
Это позволит создать персонажей за новые расы.
#define MAX_RACES 12
#define MAX_RACES 13
Это количества максимума рас + 1, 12 (felorc) + 1 = 13 в нашем случае. Если вы сделаете только гоблинов, менять не нужно.
Изменения в базе данных [MaNGOS]
» Добавляем спеллы к Goblin Warrior (скопировано у Human Warrior) :
INSERT INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`)
» Добавляем спеллы Fel Ors Warrior (скопировано из Orc Warrior) :
INSERT INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`)
» Активируем кнопки для Goblin Warrior (скопировано из Human Warrior) :
INSERT INTO `playercreateinfo_action` (`race`, `class`, `button`, `action`, `type`)
» Активируем кнопки Fel Orc Warrior (скопировано из Orc Warrior) :
INSERT INTO `playercreateinfo_action` (`race`, `class`, `button`, `action`, `type`)
» Стартовая локация Goblin Warrior (= Humans) :
INSERT INTO `playercreateinfo` (`race`, `class`, `map`, `zone`, `position_x`, `position_y`, `position_z`) VALUES (‘9′,’1′,’0′,’12’,’-8949.95′,’-132.493′,’83.5312′);
» Стартовая локация Fel Orc Warrior (= Orcs)
INSERT INTO `playercreateinfo` (`race`, `class`, `map`, `zone`, `position_x`, `position_y`, `position_z`) VALUES (’12’,’1′,’1′,’14’,’-618.518′,’-4251.67′,’38.718′);
» Уровни для Goblin Warrior скопировано от Human Warrior)
INSERT INTO `player_levelstats` (`race`, `class`, `level`, `str`, `agi`, `sta`, `inte`, `spi`)
» Уровни для Fel Orc Warrior (скопировано из Orc Warrior)
INSERT INTO `player_levelstats` (`race`, `class`, `level`, `str`, `agi`, `sta`, `inte`, `spi`)
Создание стартовой экипировки
Откройте CharStartOutfit.dbc :
Например, в конце файла :
1st column : уникальный ID.
2nd column : ID расы.
3th column : ID класса.
4th column : Пол персонажа.
Больше информации здесь: : CharStartOutfit.dbc
Настройка отображения шлемов
В 7 колонке у вас есть аббревиатуры рас, например Go для GOBLIN. Эти аббревиатуры используются только для отображения шлемов, Поставьте Hu для гоблина (Шлем как у людей).
Проблема: Шлемы могут быть расположены криво по отношению к голове.. . Чтобы пофиксить это подвигайте Attachment Point No. 11 (Эта точка отвечает за расположение шлема) на M2 моделях (GoblinMale.m2 и GoblinFemale.m2, например,Вы можете использовать Mod-It для этого.
Источник: all-infowow.ru
Моддинг World of Warcraft. Создание собственного класса. Часть 1.
Всем привет! Я решил временно не дописывать 3 часть по созданию кастомного логин скрина, а решил написать что-то интересное. В данной статье мы научимся создавать собственный класс и добавлять его в клиент и на сервер. Ну что же, приступим!
Шаг 1. Редактирование ChrClasses.dbc
Первый файл, который необходимо изменить, является ChrClasses.dbc. В нём хранится информация о всех существующих классах, которые доступны персонажу. Если на данном этапе Вы уже не понимаете откуда его взять, то вам необходимо ознакомиться с данными 2-мя статьями: статья 1 и статья 2. Данный dbc файл извлекаем из patch-ruRU-3.MPQ. (где ruRU — это код локали, языка который вы используете).
Открываем MyDBCEditor или WDBX Editor и добавляем в него patch-ruRU-3.MPQ
0 | ID | Integer | |
1 | Unknown | Integer | Охотник, Шаман и Разбойник получили 1, Рыцарь Смерти 9; другие 0 |
2 | PowerType | Integer | 0 = Мана, 1 = Ярость, 2 = Фокус, 3 = Энергия, 4 = Счастье, 6 = Руны |
3 | m_petNameToken | String | Тип питомца. Чернокнижник — 101 (ДЕМОН), а все остальные классы — 1 (ПЭТ). |
4-20 | Name | Loc | |
21-37 | Name_female | Loc | |
38-54 | Name_male | Loc | |
55 | fileName | String | КАПС, английский |
56 | spellClassSet | Integer | See below. |
57 | Flags | Integer | See below. |
58 | Camera | iRefID | Используется для вступительного ролика. Только у рыцаря смерти 165, у остальных 0 |
59 | required_expansion | Integer | 0=WoW, 1=TBC, 2=Wotlk |
Дополнительная информация доступна здесь: DB/ChrClasses — wowdev
Теперь же давайте добавим строку со своим классом. Я назову свой класс «Бард». Я решил, что у него будет энергия как у разбойников и друидов в форме кошки. Так же добавил склонение, у женских персонажей отныне будет «Бардка»
Спойлер: Скриншоты
Обратите внимание, что Filename обязательно через CAPSLOCK! В верхней таблице об этом упомянуто.
Шаг 2. Редактирование CharBaseInfo.dbc
Данный файл определяет доступность классов для разных рас. Данный файл извлекаем из locale-ruRU.MPQ.
Я хочу сделать, чтобы за новый класс могли играть только люди. Чтобы это сделать необходимо указать RaceID = 1, ClassID = 12 (равняется номеру строки из первого шага).
Вы сразу задаёте вопрос, а как узнать ID? К счастью, WinWoolF опубликовал для вас на данном форуме информацию об этом.
Список ID всех классов в World of Warcraft (информация по поводу классов относится к более новым аддонам, мы делаем на базе WoTLK, и тут нет само собой Охотника на демонов)
Список ID всех рас в World of Warcraft
Дополнительная информация доступна здесь: DB/CharBaseInfo — wowdev
Шаг 3. Добавление изменённых DBC на сервер
Мы внесли изменения в DBC, нам нужно сообщить об этих изменениях не только клиенту, но и серверу! Так что копируем наши изменённые CharBaseInfo.dbc и ChrClasses.dbc и с заменой закидываем в dbc нашего сервера TrinityCore.
Загружаем именно в ruRU или другой язык, который вы редактировали.
Далее запускаем локальный сервер, заходим в игру и пробуем создать персонажа
На данном этапе вы можете столкнуться со следующей ошибкой «To many classes! Update MAX_CLASSES_PER_RACE»
Исправим эту ошибку в шаге ниже, чтобы всё было более структурированно.
Шаг 4. Добавление иконки с новым классом в меню создания персонажа
Чтобы решить эту проблему, нам нужно добавить новую кнопку для нового класса в InterfaceGlueXMLCharacterCreate.xml . Нам также нужно изменить файл CharacterCreate.lua в том же каталоге, чтобы добавить texcoord смещение для «BARD» и увеличить переменную MAX_CLASSES_PER_RACE . Также добавьте все строки, необходимые барду, в GlueStrings.lua , также в каталоге GlueXML . Вы можете найти «WARRIOR» и скопировать все эти строки, переименовав их.
Также необходимо изменить InterfaceGLUESCHARACTERCREATEUI-CHARACTERCREATE-CLASSES.blp , чтобы добавить новый значок. Это то, на что направлено смещение texcoord.
Извлекаем Interface из patch-ruRU-2.MPQ + patch-ruRU-3.MPQ и начинаем редактировать вышеупомянутые файлы
Особых знаний Lua или ещё чего-либо здесь не нужно, достаточно базового английского и повторения за мной. Открываем первым делом InterfaceGlueXMLCharacterCreate.lua и видим здесь следующую картину:
CLASS_ICON_TCOORDS = < [«WARRIOR»] = , [«MAGE»] = , [«ROGUE»] = , [«DRUID»] = , [«HUNTER»] = , [«SHAMAN»] = , [«PRIEST»] = , [«WARLOCK»] = , [«PALADIN»] = , [«DEATHKNIGHT»] = , >;
И добавим сюда [«BARD»] = , , чтобы получилось вот так:
Так же нам необходимо увеличить значение константы
MAX_CLASSES_PER_RACE, по умолчанию значение равняется 10. Меняем на 11 на 3-й строке
Теперь нам необходимо добавить саму иконку с нашим новым классом в меню. Открываем InterfaceGlueXMLCharacterCreate.xml . В данном файле находим на 587 строке следующую строчку:
И сразу перед этой строкой добавим следующий код:
Если вы всё сделали правильно, то у вас получится вот так:
Далее нам необходимо добавить информацию о новом классе в файл InterfaceGlueXMLGlueStrings.lua . В данном файле на 311 строке находим
CLASS_INFO_WARRIOR4 = «- Пользуется яростью как ресурсом.»;
Сразу после данной строки добавляем следующий код:
CLASS_INFO_BARD0 = «- Роль: Бард»; CLASS_INFO_BARD1 = «- Легкая броня (ткань)»; CLASS_INFO_BARD2 = «- Наносит магический уровень с помощью посоха.»; CLASS_INFO_BARD3 = «- Акцент на проклятиях, вытягивании сил и эффектах, наносящих периодический урон.»; CLASS_INFO_BARD4 = «- Использует энергию в качестве ресурса.»; CLASS_BARD = «Барды — описание класса»; CLASS_BARD_FEMALE = «Барды — описание класса»;
То есть я по сути скопировал весь код связанный с варами и изменил под себя. Выглядит это следующим образом:
Это ещё не всё. Необходимо так же выводить ошибку, в случае если та или иная раса не может играть за Барда.
Снова выполняем поиск по файлу и находим строку WARRIOR_DISABLED на 861-й строке файла. Сразу после добавим следующий код:
BARD_DISABLED = «БардnЭтот класс доступен другим расам.»;
Ну и для наглядности как обычно прикреплю скриншот:
Я предоставлю ссылки на файлы в самом конце статьи, но по сути здесь всё сводится к добавлению информации о новом классе.
Теперь мы можем видеть наш класс на экране создания персонажа.
Шаг 5. Стартовая локация нового класса и базовые характеристики.
Теперь необходимо добавить основные данные базы данных на стороне сервера. Сделаем это мы с помощью простого SQL-запроса, который содержит в себе базовые характеристики класса и координаты в данном случае Элвиннского леса.
INSERT INTO playercreateinfo (race, class, map, zone, position_x, position_y, position_z, orientation) VALUES (1, 12, 0, 12, -8949.95, -132.493, 83.5312, 0); INSERT INTO player_levelstats (race, class, LEVEL, str, agi, sta, inte, spi) VALUES (1, 12, 1, 17, 20, 21, 23, 25); INSERT INTO player_classlevelstats (class, LEVEL, basehp, basemana) VALUES (12, 1, 20, 0);
После выполнения этих 3 простейших SQL-запросов наш персонаж с классом Бард появится в Элвиннском лесу.
НО! Даже если сейчас попробовать создать персонажа с нашим новым классом мы получим ошибку «Account tried to create a character named » with an invalid race/classes pair»
Шаг 6. Добавление нового класса в ядро TrinityCore.
Дело в том, что наш TrinityCore не знает о таком классе и нам нужно добавить код для обработки нового класса. К счастью, это довольно просто. Для начала нужно открыть файл SharedDefines.h, который лежит в директории src/server/shared. Добавим сразу на 140 строке запятую и после неё добавим следующую строчку: CLASS_BARD = 12, // TITLE Bard , чтобы получилось вот так:
Так же на 145-й строке нужно изменить значение константы MAX_CLASSES с 11 до 12.
Далее чуть ниже необходимо заменить код:
#define CLASSMASK_ALL_PLAYABLE ((1<<(CLASS_WARRIOR-1))|(1<<(CLASS_PALADIN-1))|(1<<(CLASS_HUNTER-1))| (1<<(CLASS_ROGUE-1)) |(1<<(CLASS_PRIEST-1)) |(1<<(CLASS_SHAMAN-1))| (1<<(CLASS_MAGE-1)) |(1<<(CLASS_WARLOCK-1))|(1<<(CLASS_DRUID-1)) | (1<<(CLASS_DEATH_KNIGHT-1)))
На следующий код:
#define CLASSMASK_ALL_PLAYABLE ((1<<(CLASS_WARRIOR-1))|(1<<(CLASS_PALADIN-1))|(1<<(CLASS_HUNTER-1))| (1<<(CLASS_ROGUE-1)) |(1<<(CLASS_PRIEST-1)) |(1<<(CLASS_SHAMAN-1))| (1<<(CLASS_MAGE-1)) |(1<<(CLASS_WARLOCK-1))|(1<<(CLASS_DRUID-1)) | (1<<(CLASS_DEATH_KNIGHT-1))|(1<<(CLASS_BARD-1)))
Должно получиться вот так:
Не забудьте перекомпилировать ядро TrinityCore, чтобы изменения вступили в силу!
Теперь мы можем войти в игру новым классом, но когда вы откроете ветку талантов или окно персонажа, то у вас крашнется (вылетит) клиент. Это потому, что нам не хватает данных gt DBC для нового класса.
Шаг 7. Автоматические добавление данных о новом классе в DBC сервера.
Stoneharry написал небольшую программу для автоматического добавления этих данных в файлы DBC. Выполнение этого вручную было бы медленной утомительной задачей и большой шанс допустить ошибку. Сама программа будет прикреплена в архиве в самом низу.
Открываем PlayerClassStatDBCUtil, а в ней открываем файл Program.cs через Microsoft Visual Studio, в моём случае Microsoft Visual Studio 2019 и видим следующую картину:
Необходимо заменить D:/WoW Resources/2019_TrinityCore/DBC Temp/ на наш путь. В моём случае это C:WoWModServerCorebinReleaseDatadbc . Только обратите внимание, что здесь нужно использовать обычные слэши в пути, а не обратные. То есть должно быть так: C:/WoWMod/Server/Core/bin/Release/Data/dbc . В правой части находится путь до экспорта. Я буду использовать C:/WoWMod/Server/Core/bin/Release/Data/dbc/Export
Так же не забудьте в переменной указать свой путь и путь для экспорта:
Теперь нам необходимо запустить программу следующим образом:
Если у вас не запускается программа с ошибкой, которая связана с версией .NET Framework, откройте файл PlayerClassStatDBCUtil.csproj и Microsoft Visual Studio предложит вам скачать необходимую версию.
SkillLineAbilityDBCUtil по сути всё тоже самое.
После того как мы перекомпилировали ядро нашего сервера, можем заходить в игру и убедиться в том, что теперь клиент не вылетает и всё хорошо.
Скачать иконку для меню создания персонажа и софт от stoneharry: Яндекс
На такой прекрасной ноте мы закончим, продолжение следует.
Источник: 1n-game.ru
Создать своего персонажа в WoW Classic можно будет уже – 12 / 13 августа
Blizzard выслушал наши опасения и откроет создание персонажей для WoW Classic за две полные недели до выхода игры. В этом окне вы сможете создавать и настраивать трех персонажей в любой из доступных областей. Для создания вашего персонажа потребуется подписка (активная) WoW.
Поскольку у Classic будет глобальный запуск, как и у Battle for Azeroth, это окно будет запущено одновременно для всех игроков, независимо от того, где вы живете.
Ниже вы можете увидеть местное время, с которого вы сможете создавать своего персонажа в зависимости от вашего местоположения, 12 августа или 13 августа, вместо 26-27 августа соответственно.
Источник: wow-classic.ru