PDA

Просмотр полной версии : Руководство по созданию компонентов



Snake_B
16.02.2014, 20:38
Пример будет писаться на основе этих предложений:

Пожелание: что-бы всем металическим кораблям нужен был метал и топливо по эпохам, потому как металлы в игре для кораблей бобще почему-то не нужны, а после кораблей на угле все корабли сразу становятся на уране, нефть вобще выпадает и остаётся обезательной только для танков и авиации, я считаю это не правильно.

Ранний транспорт - coal + iron
Транспорт - oil + iron
Улучшенный транспорт - ( oil или uranium ) + aluminium

Броненосный крейсер и Эскадренный броненосец - coal + iron
Эсминец, Линкор, Тяжёлый крейсер - oil + iron
БПК, Ракетный крейсер - ( oil или uranium ) + iron
БПК будущего, Ракетный крейсер будущего, Эсминец стелс - ( oil или uranium ) + aluminium

Рейдерская ПЛ, Авианесущая ПЛ, Дизельная ПЛ - oil + iron
Ударная субмарина, Ракетная ПЛ - ( oil или uranium ) + iron
Ударная субмарина будущего - ( oil или uranium ) + aluminium

Ранний авианосец - oil + iron
Ус. авианосец, Авианосец ПЛО - ( oil или uranium ) + iron
Авианосец будущего - ( oil или uranium ) + aluminium

Snake_B
16.02.2014, 20:38
1. Редактор Компонентов (ВДК) для мода RedForce.SB (http://www.civfanatics.ru/threads/10931-%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80-%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-(%D0%92%D0%94%D0%9A)-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%BE%D0%B4%D0%B0-RedForce-SB) - скачать и установить. "Руководство по установке" в теме по ссылке.


2. Дальше смотрим "Руководство по работе с редактором компонентов" в той же теме.

http://mods.civfanatics.ru/mods/preview_exact_editor_1.JPG (http://mods.civfanatics.ru/mods/exact_editor_1.JPG)
1. Вкладка приветствия

Текст "Программа должна находиться в папке программы генератора" будет неактивным (серого цвета) если программа находится в правильной папке, если текст активен, значит программа находится не по адресу.


2. Вкладка выбора компонента (только если нажата "Выбрать компонент для редактирования").


http://mods.civfanatics.ru/mods/preview_exact_editor_2.JPG (http://mods.civfanatics.ru/mods/exact_editor_2.JPG)
3. Вкладка редактирования данных компонента

Все поля заполнять по подписям над ними, если поля будут заполнены не правильно, то программа выделит их красным


4. ВАЖНО: При нажатии "Дальше" на предыдущей вкладке будет показано диалоговое окно "Создать новый внешний компонент?"
Если нажать "Да", будет создан новый, если "Нет", то изменения будут внесены в выбранный компонент.


[ИСПРАВЛЕНО] Как показал опыт ИФТ, для этой вкладки описания достаточно и в "Руководстве по работе с редактором компонентов".



3.Вкладка "Редактор элементов"

5. Вкладка "Редактор элементов"

Слева-вверху дерево выбора элемента
Слева-внизу кнопки действий с элементом (активны только те действия, которые можно выполнить для выбранного элемента)
Справа-вверху предварительный просмотр компонента

Сохранение на этой вкладке происходит после нажатия "дальше", тогда же создаются и удаляются папки для элементов


[ИСПРАВЛЕНО] Как показал опыт ИФТ, для этой вкладки описания достаточно и в "Руководстве по работе с редактором компонентов".

to ИФТ

Я склонялся к одной-двум галочкам, но в принципе, выбор лишним не будет.
Единственное, стоит немного изменить тексты, например:
"Ранний транспорт требует уголь и железо" - уголь он и так требует, по тексту игрок должен понимать, что добавится только требование железа.



4. Вкладка "Работа с папками элементов"

6. Вкладка "Работа с папками элементов" (в данный момент только разрабатывается)
Интерфейс такой же как на предыдущей вкладке, плюс кнопки открытия папок для выбранного элемента. И краткое описание работы с папками.
Файлы с текстами:
1. Русский язык в текстовых файлах надо писать специальным кодом, вот тут (http://sbgames.narod.ru/ruspages/civutil.html) можно скачать программу для конвертации в код и обратно.
2. И в русских и в английских текстовых файлах обязательно должны быть 6 тегов
В русском варинате обязательно заполнять 1 и 6 теги, но можно заполнить и остальные, хуже точно не будет
В английском варианте надо заполнять новым текстом все 6 (!) тегов, можно так:

<English>[TAB]Fighting elephants not</English>
<English>[TAB]Fighting elephants not</English>
<English>[TAB]Fighting elephants not</English>
<English>[TAB]Fighting elephants not</English>
<English>[TAB]Fighting elephants not</English>
<English>[TAB]Fighting elephants not</English>
! - игре без разницы как называются теги
Почему? Чтобы игроки могли включить свой язык (французский какой-нибудь), тогда у них будут оригинальные тексты на их языке, а добавленное в моде на английском.
!!! И ещё, если хотя бы у одного тега в текстовом xml будет 1 язык, то при выборе любого языка кроме первого все надиписи в игре будут пустыми!


В данном примере она не понадобиться, новые файлы добавлять нам не нужно.



5. Вкладка "Внесение изменений в XML-файлы"

Собственно самый сложный этап...



Общая информация по XML:


Полная документация по XML файлам Civilization IV >>> (http://modiki.civfanatics.ru/index.php/XML_в_Civilization_4)

Общий обзор XML в Civilization 4 >>> (http://modiki.civfanatics.ru/index.php/XML_обзор)

По представленным ссылкам на модиках находится практически вся информация, необходимая для моддинга XML в Civilization IV.

Вот прямые ссылки на наиболее интересные для моддинга описания файлов:
Цивилизации (http://modiki.civfanatics.ru/index.php/CIV4CivilizationInfos) | Лидеры (http://modiki.civfanatics.ru/index.php/CIV4LeaderHeadInfos) | Трейты (http://modiki.civfanatics.ru/index.php/CIV4TraitInfos) | Юниты (http://modiki.civfanatics.ru/index.php/CIV4UnitInfos) | Прокачки (http://modiki.civfanatics.ru/index.php/CIV4PromotionInfos) | Здания (http://modiki.civfanatics.ru/index.php/CIV4BuildingInfos) | Технологии (http://modiki.civfanatics.ru/index.php/CIV4TechInfos) | Институты власти (http://modiki.civfanatics.ru/index.php/CIV4CivicInfos) | Ландшафт (http://modiki.civfanatics.ru/index.php/CIV4TerrainInfos) | Улучшения (http://modiki.civfanatics.ru/index.php/CIV4ImprovementInfos) | Ресурсы (http://modiki.civfanatics.ru/index.php/CIV4BonusInfos) | Общие переменные (http://modiki.civfanatics.ru/index.php/GlobalDefines)

В нашем случае, при внесении изменений определенным юнитам, будет использоваться только "папка общих XML", т.е. только первая (самая левая) кнопка в этой вкладке. Остальные кнопки-папки используются, если изменения должны вноситься только при установке определенного DLL (SDK) компонента.


Разберем какие файлы надо в этой папке создавать:
7.1 Внесение изменений в XML-файлы

Папка "XML" - должна содержать под папки как в оригинальной игре и файлы с изменениями которые будут внесены в xml файлы
(т.е. если вам нужно внести изменение в файл "XML\Units\CIV4UnitInfos.xml", то в папке "\ID_"+ID+"\XML\Units" создается файл изменений).

Наименование файлов:

"Оригинальное название файла" + "_" + "Режим чтения файлов" + ".ini"
"CIV4UnitInfos_0.ini" - изменения для файла "CIV4UnitInfos.xml".

Режимы чтения файлов (по какому тегу следует производить поиск):
0 - class
1 - type
2 - buildingclass
3 - scriptid
4 - Tag
5 - definename
6 - ModelFile


И у меня нету папки Units, её вручную сделать?
Да, папка создается вручную. В ней создаем текстовый файл, обзываем его "CIV4UnitInfos_0.ini" (изменения будут вноситься в файл "CIV4UnitInfos.xml" - данные юнитов, режим поиска "class", т.е. для всех юнитов одного класса, класс одинаковый у однотипных. Например - все мечники, и обычные, и уникальные для цив, имеют один класс). Если нужно внести изменения для конкретного юнита (только для римских преторианцев, а не для всех мечников), то используется "type".
При режиме чтения "0", программа будет искать - <Class>UNITCLASS_LION</Class>
При режиме чтения "1", программа будет искать - <Type>UNIT_LION</Type>
Те же правила используются для других файлов, с данным цив например.
Переходим к заполнению файла:
Заполнение файла:

Пример (название файла: "\XML\Units\CIV4UnitInfos_0.ini"):

<Class>UNITCLASS_BATTLESHIP</Class>
<iCombat>
{
<iCombat>50</iCombat>
}
Изменит силу линкора на 50.

Разбор значений:

<Class>UNITCLASS_BATTLESHIP</Class>

Разный в зависимости от выбранного режима чтения
Если надо внести изменения для всех подобных юнитов (например рыцарей - "UNITCLASS_KNIGHT", изменения будут внесены для рыцарей, арабских верблюжьих лучников, византийских катафрактов), то лучше использовать "class", если для какого-то конкретного, то "type". Зависит от файла в который планируется внесение изменений.


<iCombat>

Перед требуемым тегом удалите все пробелы и сдвиги строки!


// так НЕЛЬЗЯ:
<iCombat>
// так МОЖНО:
<iCombat>


Если требуется изменить конкретное значение, то можно писать тег полностью:

<iCombat>50</iCombat>
Изменит силу только если она равна 50.

Также имеются расширенные условия поиска:
1) [MULTIMODE] - несколько строк для замены, заменяем все строки

[MULTIMODE]
<UnitCombat>
<UnitCombatType>UNITCOMBAT_ARMOR</UnitCombatType>
<bUnitCombat>
</UnitCombat>

2) Условие из нескольких строк - несколько строк для поиска, но заменяем только последнюю строку.

<UnitCombatType>UNITCOMBAT_MARINE</UnitCombatType>
<bUnitCombat>


"{" и "}" - начало и конец новых строк, обязательно с новой строки, в начале строки.


Где брать названия юнитов и где брать теги?
Название юнитов лучше всего брать непосредственно из файла "CIV4UnitInfos.xml" в папке сгенерированного мода.
Теги смотреть выше (Общая информация по XML).
Для нашего примера будут использоваться эти теги юнитов:

UNITCLASS_TRANSPORT - Транспорт
UNITCLASS_ADVTRANSPORT - Улучшенный транспорт
UNITCLASS_IRONCRUISER - Броненосный крейсер
UNITCLASS_Dreadnought - Эскадренный броненосец
UNITCLASS_DESTROYER - Эсминец
UNITCLASS_BATTLESHIP - Линкор
UNITCLASS_HEAVYCRUISER - Тяжёлый крейсер
UNITCLASS_BPK - БПК
UNITCLASS_MISSILE_CRUISER - Ракетный крейсер
UNITCLASS_STEALTH_DESTROYER - Эсминец стелс
UNITCLASS_R_SHIP - БПК будущего
UNITCLASS_X_SHIP - Ракетный крейсер будущего
UNITCLASS_PRIVATEER_SUBMARINE - Рейдерская ПЛ
UNITCLASS_Carrier_SUBMARINE - Авианесущая ПЛ
UNITCLASS_ADV_SUBMARINE - Дизельная ПЛ
UNITCLASS_ATTACK_SUBMARINE - Ударная субмарина
UNITCLASS_SUBMARINE - Ракетная ПЛ
UNITCLASS_FUSION_SUB - Ударная субмарина будущего
UNITCLASS_CARRIER - Ранний авианосец
UNITCLASS_anti_sub_carrier - Авианосец ПЛО
UNITCLASS_Modern_CARRIER - Ус. авианосец
UNITCLASS_FUSION_CARRIER - Авианосец будущего

Теги ресурсов (ты прав)):

<BonusType>BONUS_COAL</BonusType>
<BonusType>BONUS_OIL</BonusType>
<BonusType>BONUS_URANIUM</BonusType>
<BonusType>BONUS_IRON</BonusType>
<BonusType>BONUS_ALUMINIUM</BonusType>
и ещё нам понадобиться пустой тег
<BonusType>NONE</BonusType>


но и то на один, а если нефть или уран, тут непонятка.
В этом примере мы задаем требование iron + (oil или uranium):

<BonusType>BONUS_IRON</BonusType>
<PrereqBonuses>
<BonusType>BONUS_OIL</BonusType>
<BonusType>BONUS_URANIUM</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>
т.е. первая строка - ресурс один, требуется всегда,
список строк <PrereqBonuses> - несколько ресурсов, требуется наличие одного из них.
В игре можно задать ДВА требуемых ресурса, больше не получится, ресурс на выбор (нефть или уран) только второй, первый или есть или нет.

Пример заполнения файла для раннего транспорта:
Оригинальные данные:

<BonusType>BONUS_COAL</BonusType>
<PrereqBonuses>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>
Заполнение файла "CIV4UnitInfos_0.ini":

<Class>UNITCLASS_EARTRANSPORT</Class>
<BonusType>NONE</BonusType>
{
<BonusType>BONUS_IRON</BonusType>
}
Так как мы не знаем точно, как будет выглядеть строка, которую нужно изменить (может быть кто-то позже напишет ещё один похожий компонент), то задаем для поиска пустую строку - без записанных требований (программа ищет строку только один раз, т.е. все четыре строки она не заменит).
После генерации мода, в xml файлах будет записано это:

<BonusType>BONUS_COAL</BonusType>
<PrereqBonuses>
<BonusType>BONUS_IRON</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>


Пример посложнее, для обычного транспорта:
Оригинальные данные:

<BonusType>NONE</BonusType>
<PrereqBonuses>
<BonusType>BONUS_OIL</BonusType>
<BonusType>BONUS_URANIUM</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>
Заполнение файла "CIV4UnitInfos_0.ini":

<Class>UNITCLASS_TRANSPORT</Class>
<BonusType>
{
<BonusType>BONUS_IRON</BonusType>
}
<Class>UNITCLASS_TRANSPORT</Class>
<BonusType>BONUS_URANIUM</BonusType>
{
<BonusType>NONE</BonusType>
}

Мы прописываем внесение двух изменений:
первое - найти первую строку с <BonusType> и заменить её на строку с требованием ресурса
второе - найти строку с ураном и заменить её на строку без требований.
После генерации мода, в xml файлах будет записано это:

<BonusType>BONUS_IRON</BonusType>
<PrereqBonuses>
<BonusType>BONUS_OIL</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>

Для каждого юнита надо смотреть, что прописано в оригинальном файле "CIV4UnitInfos.xml" и вносить соответствующие изменения.
Файл "CIV4UnitInfos.xml" находится в папке сгенерированного мода (\Civilization 4\Beyond the Sword\Mods\RedForce.SB\Assets\XML\Units).

Для нашего примера этой информации хватит, возможно позже я допишу сюда:

как писать условие поиска из нескольких строк, но заменять только последнюю строку
искать и заменять сразу несколько строк
изменять значение в строке в зависимости от выбора в программе (редактор значений, например сила от 40 до 50)
Добавление нового блока (например юнита)
Возможность удалять блоками "от class до class" (например юнита целиком)

А пока эту информацию можно посмотреть здесь: Редактор Компонентов (ВДК) для мода RedForce.SB >>> (http://www.civfanatics.ru/threads/10931-%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80-%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-(%D0%92%D0%94%D0%9A)-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%BE%D0%B4%D0%B0-RedForce-SB)
Программе нужны для работы оригинальные XML файлы цивы (но для нашего примера это не нужно):
В папку "\DATA\EXACT\Common XML source" необходимо положить оригинальный xml файл из папки цивилизации (не из папок других модов!), в первую очередь из папки "игра\Beyond the Sword", если там нет нужного файла, то из "игра\Warlords", ну, а если и там нет, то тогда из папки "игра\assets".
Если он там уже есть, значит ничего менять/добавлять не надо.
Для изменения ниже перечисленных файлов ложить оригинальный xml файл не нужно:


CIV4ArtDefines_Civilization.xml; CIV4ArtDefines_Unit.xml; CIV4UnitCombatInfos.xml; CIV4BuildingInfos.xml; CIV4SpecialBuildingInfos.xml; CIV4CivilizationInfos.xml; CIV4LeaderHeadInfos.xml; CIV4CivicInfos.xml; CIV4GameSpeedInfo.xml; CIV4HandicapInfo.xml; CIV4ProjectInfo.xml; CIV4ReligionInfo.xml; CIV4VictoryInfo.xml; CIV4RouteInfos.xml; CIV4TechInfos.xml; CIV4FeatureInfos.xml; CIV4ImprovementInfos.xml; CIV4BuildInfos.xml; CIV4UnitClassInfos.xml; CIV4UnitInfos.xml; CIV4BonusInfos.xml; CIV4ProcessInfo.xml; CIV4MainMenus.xml; CIV4SpecialUnitInfos.xml




6. Работа с файлом "Check.ini"
В этом файле должны быть прописаны необходимые компоненту файлы.
Пример:
"\EXACT\1_3_SBGames_Change of battleship force\ID_2\XML\Units\CIV4UnitInfos_0.ini"
или
"\EXACT\4_2_Vovan66_External_changes\ID_1\Files for copy\Beyond the Sword\Assets\Art\Terrain\water\water.dds"
Если в файле не будет прописан ни один путь, компонент будет отключен.
Эта функция - задел на будущее, когда редактор компонентов научится сам создавать файлы "Check.ini", в нашем примере достаточно будет прописать один какой-нибудь файл (иначе - "Если в файле не будет прописан ни один путь, компонент будет отключен."), например так:

\EXACT\1_3_EFT_Change_sea_units\ID_2\XML\Units\CIV4UnitInfos_0.ini
7. Примечания:

Что будет если прописаны изменения для нового юнита, а новый юнит не был выбран для установки?
Программа не найдет необходимого ей тега "UNITCLASS_"+Новый юнит+"" и не внесет изменений. Ошибок не будет.
Тоже самое со зданиями, и т.д и т.п.
В программе встроена система защиты от ошибок в файлах компонентов, если в компоненте есть ошибки он будет отключен при запуске программы и будет выведено окно в каком файле ошибки. Но защиты от ошибок в файлах изменений xml файлов нет, поэтому проверяйте компоненты генерацией и загрузкой мода.

8. Тесты ВДК
0. Если у вас русификация от 1С, то обязательно установите русификацию наш-фанатиков >>> (http://www.civfanatics.ru/threads/7252) (чтобы проверять полное заполнение текстовых файлов)
1. Отключите в программе все новые возможности (Файл - Загрузить конфигурацию - Config[Standart_BtS 3.19].rfm)
2. Включите все элементы тестируемого компонента, в программе генерации выберите русский язык, произведите генерацию, запустите мод.
3. Включите все новые возможности, в т.ч. все другие компоненты, включите элементы тестируемого компонента, в программе генерации выберите английский язык, произведите генерацию, запустите мод.

ИФТ
18.02.2014, 02:12
Пример посложнее, для обычного транспорта:
Там точно всё правильно написано? Было нефть(уран) вышло железо+нефть, а надо бы железо+нефть(уран) или я опять ничего не понял?


Для каждого юнита надо смотреть, что прописано в оригинальном файле "CIV4UnitInfos.xml" и вносить соответствующие изменения.
Толи лыжи не едут, толи я чего не понимаю, где этот чёртов оригинальный "CIV4UnitInfos.xml" найти?? У меня такого добра в поиске находит немеряно, кто из них он?

Snake_B
18.02.2014, 02:30
Там точно всё правильно написано? Было нефть(уран) вышло железо+нефть, а надо бы железо+нефть(уран) или я опять ничего не понял?

дык...
ты предлагал так:

Транспорт - нужно нефть и железо

если надо оставить уран, то просто вместо того, что написано в примере:


<Class>UNITCLASS_TRANSPORT</Class>
<BonusType>
{
<BonusType>BONUS_IRON</BonusType>
}
<Class>UNITCLASS_TRANSPORT</Class>
<BonusType>BONUS_URANIUM</BonusType>
{
<BonusType>NONE</BonusType>
}


надо написать так:


<Class>UNITCLASS_TRANSPORT</Class>
<BonusType>
{
<BonusType>BONUS_IRON</BonusType>
}



Толи лыжи не едут, толи я чего не понимаю, где этот чёртов оригинальный "CIV4UnitInfos.xml" найти?? У меня такого добра в поиске находит немеряно, кто из них он?

или бери его из папки сгенерированного мода (\Civilization 4\Beyond the Sword\Mods\RedForce.SB\Assets\XML\Units)
или оригинальный файл BTS (\Civilization 4\Beyond the Sword\Assets\XML\Units) - но в нем нет новых юнитов добавляемых в моде.

ИФТ
18.02.2014, 02:57
дык... ты предлагал так:
ай-ай-ай! амнезия + невнимательность, смотрю на один, думаю про другой, прошу прощения, я обязательно исправлюсь...


или бери его из папки сгенерированного мода (\Civilization 4\Beyond the Sword\Mods\RedForce.SB\Assets\XML\Units)
ай-ай-ай! опять невнимательность, я этот какраз и смотрел но ничего в нём не понял и подумал что это не оно. Спасибо.

ИФТ
19.02.2014, 00:24
Всё готово и даже работает!, одна проблема, у Ударной субмарины и у Ударной субмарины будущего всего по одной строчке для ресурсов, в них стоит уран. Если прописать как обычно то либо уран меняет на метал, либо остается как есть один уран. Как добавить ещё строчек для металлов?

Snake_B
19.02.2014, 00:47
Всё готово и даже работает!, одна проблема, у Ударной субмарины и у Ударной субмарины будущего всего по одной строчке для ресурсов, в них стоит уран. Если прописать как обычно то либо уран меняет на метал, либо остается как есть один уран. Как добавить ещё строчек для металлов?


<BonusType>BONUS_URANIUM</BonusType>
<PrereqBonuses/>

вот эта конструкция пишется, если внутри неё что-то будет:
<PrereqBonuses>
</PrereqBonuses/>

а вот эта, вместо неё, когда ничего не нужно:
<PrereqBonuses/>


<Class>UNITCLASS_ATTACK_SUBMARINE</Class>
<PrereqBonuses/>
{
<PrereqBonuses>
<BonusType>BONUS_IRON</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
<BonusType>NONE</BonusType>
</PrereqBonuses>
}


п.с. ну и как доделаешь... создавай тему для своего компонента и выкладывай архив...)

ИФТ
19.02.2014, 03:40
Нужно написать в руководстве к редактору, желательно большими красными буквами, что при смене названия уже существующего компонента на вопрос "Создать новый или нет" нажать нет то изменения будут фатальны для компонента, так как он частично обнолится, а откат не предусмотрен.

Snake_B
19.02.2014, 03:57
ммм... ну теперь уже знаешь...)