MPQ Editor [Для открытия патчей] DBC Editor [Для открытия и эдитинга ДБЦ] DBC-CSV [Для конвертации ДБЦ в ЦСВ] И хороший блокнотик [Я юзаю Akelpad
Рассмотрим на примере Гоблинов.
Для начала создадим папку с именем DBC (например), и положим в неё все выше перечисленные DBC. Скачаем DBC-CSV конвертер. Переконвертируем все DBC в CSV, и удалим ранее скопированные DBC. (DBC-CSV почему-то не захотел конвертировать файл ChrRaces.dbc, поэтому я сначала открыл его в DBCEditor и ч/з него переконвертировал в CSV)
ChrRaces.csv
Находим строчку:
Code
9,1,1,0x0,6894,6895,"Go",7,7,15007,0x448,"Goblin",0,0x2,,,"Goblin",,,,,,,,,,,,,,0xFF01FE,,, "Goblin",,,,,,,,,,,,,,0xFF01CC,,,"G o b l i n " ,,,,,,,,,,,,,,0xFF01CC,"NORMAL","NONE","NORMAL",0
Структура файла:
Code
Колонка | Поле | Примечание 1 | ID Рассы | 2 | Флаги | Для играбельности рассы необходимо поставить 12 3 | Фракция | ID фракции можно узнать в Faction.dbc 4 | Разведка | 5 | Муж.модель | Используется только для создания персонажей на экране выбора персонажа 6 | Жен.модель | Используется только для создания персонажей на экране выбора персонажа 7 | Аббревиатура | Две любые буквы, с помощью их подмены можно править отображение шлема* 8 | Сторона | 1-Орда, 7-Альянс 9 | Тип | 7-Гуманоид 10 | Неизвестно | Всегда 15007 11 | Неизвестно | 1090-Дварфы, 1096-Все остальные
Дальше нам не нужно. (*Если у вас например на гоблине не отображается шлем, или криво отображается, то вы можете просто заменить на людей к примеру, но размер будет такой же как и у человека)
Faction.csv
Создаём новую фракцию "ИГРОК: гоблин" :
Code
Крутим в конец и вставляем следующее: 1161,-1,0,0,0x0,0x0,0,0,0x0,0x0,0,0,0,0,0x0,0,0x0,0x0,0,1.0,1.0,5,5,,,,,,,,,"ИГРОК: гоблин",,,,,,,,0xFF01FE,,,,,,,,,"",,,,,,,,0xFF01DC,
CharBaseInfo.csv
Вы можете узнать ID рассы посмотрев в предыдущем файле. Вот ID классов:
Рассмотрим как же добавить поддержку спелла новой рассе. На примере главных языков.
Спелл для Альянса:
Code
590,98,668,1101,0,,,1,0,0x2,0,0,,,
Спелл для орды:
Code
592,109,669,690,0,,,1,0,0x2,0,0,,,
2-номер спелла 3-ID спелла 4-использование спелла
Мы видим 4-ое значение, которое нам нужно перевести в двоичный код.(Вот сайт для перевода) После чего выстраивается такая таблица: 11|10|9|8|7|6|5|4|3|2|1 1| 0 |0|0|1|0|0|1|1|0|1 (двоичный код)
Где 1 строка - ID рассы, 2 строка - разрешение на использование спелла (1-можно, 0-нельзя). Так как сейчас редактируется спелл для альянса, следовательно вы его даёте только тем рассам которые будут за альянс, то есть расса 2(орк) под ним стоит "0", а под 1(человек) стоит 1, следовательно в языке для орды всё будет наоборот. Стоит отметить, что если у вас получилась, к примеру, такая таблица: 14|13|12|11|10|9|8|7|6|5|4|3|2|1 0 | 1 | 0 | 1 | 0 |0|0|1|0|0|1|1|0|1 то есть начинается с "0", то чтобы переделать в DEC(десятеричный) код, можно убрать первое значение.
После того как всё расставили, переводим назад в десятеричный код. И сохраняем полученное число вместо предыдущего.
SkillRaceClassInfo.csv:
Ищем:
Code
40,98,1101,1535,0x80,0x0,0,0x0,
Видите 3-ее значение 1101? Заменяем его на получившееся в предыдущем файле. (Для орды ищем по номеру спелла,ID спелла).
Faction.csv
Сново, только по другому поводу. Сейчас будем настраивать что бы новая расса получала репутацию у других фракций.
Настраивается ч/з двоичную систему. У фракций 1100-альянс, 1791-орда, просто настройте и переведите обратно в десятеричный, а после с помощью функции "замены" в блокноте, или чем вы пользуетесь замените все значения на новые.
CharStartOutfit.csv
Начальная одежда персонажа.
Структура:
Code
Column Field Type Notes 1 ID Integer 2.1 Race iRefID (byte) 2.2 Class iRefID (byte) 2 .3 G e nder by te m ale , female 2.4 Pad byte Alignment to 4-bytes 3 Items[24] Integer[] These reference item IDs (see wowhead or the itemcache). -1 or 0 if none. Actually ignored by the client. 28 DisplayInfo[24] Integer[] Both only set if Item[x] is set too. 53 InventoryType[24] Integer[] Values from -1 to 26.
Мы хотим открыть Гоблинов, значит удаляем перед ней //RACE_GOBLIN = 9, два слэшика(//), и получится RACE_GOBLIN = 9.
(Сразу предупрежу если у вас например после RACE_DRAENEI=11 стоит "." (Это в том случае если вы хотите добавить Наг, например, и вам нужно их открыть) замените её на "," что бы при компиляции не выдовало ошибок)
Ищем:
Code
#define MAX_RACES 12
(Расчитывается так, ID последней рассы без слешей + 1) (То есть если у вас последняя расса RACE_SKELETON=15, то #define MAX_RACES 12 = #define MAX_RACES 16)
Настройки отображения в клиенте персонажа. (Можете покапатся я ещё в нём не разобрался)
Здесь в основном будет написано про копирование спеллов со "старых" расс. Это сделано для быстрой настройки сервера, но если вы захотите настроить по особенному, то придется все делать самому.
Копия спеллов с человека война на гоблина война:
Code
SET @NEW_RACE = 9; -- ID of adding race. SET @NEW_CLASS = 1; -- ID of class of the new race. SET @COPY_RACE = 1; -- ID of the race where we copy datas.
DELETE FROM `playercreateinfo_spell` WHERE race = @NEW_RACE AND class = @NEW_CLASS ; INSERT INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`) SELECT @NEW_RACE, @NEW_CLASS, `Spell`, `Note` FROM `playercreateinfo_spell` WHERE race = @COPY_RACE AND class = @NEW_CLASS;
Копия кнопок действия с человека война:
Code
SET @NEW_RACE = 9; -- ID of adding race. SET @NEW_CLASS = 1; -- ID of class of the new race. SET @COPY_RACE = 1; -- ID of the race where we copy datas.
DELETE FROM `playercreateinfo_action` WHERE race = @NEW_RACE AND class = @NEW_CLASS ; INSERT INTO `playercreateinfo_action` (`race`, `class`, `button`, `action`, `type`) SELECT @NEW_RACE, @NEW_CLASS, `button`, `action`, `type` FROM `playercreateinfo_action` WHERE race = @COPY_RACE AND class = @NEW_CLASS;
SET @NEW_RACE = 9; -- ID of adding race. SET @NEW_CLASS = 1; -- ID of class of the new race. SET @COPY_RACE = 1; -- ID of the race where we copy datas.
DELETE FROM `player_levelstats` WHERE race = @NEW_RACE AND class = @NEW_CLASS ;
INSERT INTO `player_levelstats` (`race`, `class`, `level`, `str`, `agi`, `sta`, `inte`, `spi`) SELECT @NEW_RACE, @NEW_CLASS, `level`, `str`, `agi`, `sta`, `inte`, `spi` FROM `player_levelstats` WHERE race = @COPY_RACE AND class = @NEW_CLASS;
P.S. Весь материал был взят, дополнен и переведён с сайта Modcraft. P.P.S Я всё это делал на исходниках аспирина. С помощью руководства и патча от scourge.su и гоблины у меня работают. P.P.P.S Я платно ничего не делаю, но для начала если хотите сделать новые расы научитесь компилить ядро и юзать поиск, а потом уже помогаю через асю и тим вивер.