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
Заполнение файла:
Пример (название файла: "\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>50</iCombat>
Изменит силу только если она равна 50.
Также имеются расширенные условия поиска:
1) [MULTIMODE] - несколько строк для замены, заменяем все строки
Код:
[MULTIMODE]
<UnitCombat>
<UnitCombatType>UNITCOMBAT_ARMOR</UnitCombatType>
<bUnitCombat>
</UnitCombat>
2) Условие из нескольких строк - несколько строк для поиска, но заменяем только последнюю строку.
Код:
<UnitCombatType>UNITCOMBAT_MARINE</UnitCombatType>
<bUnitCombat>
"{" и "}" - начало и конец новых строк, обязательно с новой строки, в начале строки.
Код:
<iCombat>50</iCombat>
Новая строка (или несколько строк)
Строка которая будет вставлена вместо старой строки (можно добавлять несколько строк).
Новым строкам не надо убирать отступы в начале строки.
Если какие-то строки должны быть добавлены только при включении определенного юнита из мода или ВДК, то нужно использовать условия:
Код:
[if exists]<Type>UNIT_EARTANK</Type>
<UnitClassDefenseMod>
<UnitClassType>UNITCLASS_EARTANK</UnitClassType>
<iUnitClassMod>50</iUnitClassMod>
</UnitClassDefenseMod>
[else]
[end]
- Вместо такого "<UnitClassDefenseMods/>" закрытия тегов можно писать так (а с условиями даже не можно, а нужно):
Код:
<UnitClassDefenseMods>
</UnitClassDefenseMods>
- [if exists]<Type>UNIT_EARTANK</Type>
- эта конструкция должна быть в одной строке, БЕЗ ПЕРЕНОСОВ
- условие задается в зависимости от режима чтения файла (если _1.ini, то Type, если _0, то Class и т.д.)
- проверка производится по уже добавленным при генерации юнитам, т.е. если юнит добаляется в ВДК который расположен ниже, программа его не найдет!
- Проверка производится по тому файлу, в который вносятся изменения + по файлу CIV4UnitInfos.xml (с версии 1.5.5)
- Защиты от "дурака" у функции нет, один пробел после условия - условие не сработает (сработает [else])
Также при добавлении строк можно проверять включение галочек (checkbox) в программе генераторе мода (не в ВДК),
например, проверяем включение галочки "добавить дополнительные ресурсы" и если она включена, прописываем юниту требование ресурса "верблюды", а если отключена, то "лошади" :
Код:
[if checked]<|CheckBox55|>
<BonusType>BONUS_CAMEL</BonusType>
[else]
<BonusType>BONUS_HORSE</BonusType>
[end]
- Список галочек программы в файле "Список галочек программы.txt" (в установочном пакете EXACT Editor'а)
- Защиты от "дурака" у функции нет, один пробел после условия - условие не сработает (сработает [else])
Описание значений в XML файлах:
XML в Civilization 4
Добавление нового блока (например юнита)
Если нужно добавить новый блок, то в классе писать блок после которого нужно вставить, а в строке для замены, последнюю строку того блока после которого вставляется. При этом следует учитывать, что строку для замены программа, как это не странно, меняет, поэтому нужно делать как в примере:
Код:
<Type>UNIT_MAYA_HOLKAN</Type>
</UnitInfo>
{
</UnitInfo>
ДАННЫЕ НОВОГО ЮНИТА
}
ДОБАВЛЕНИЕ НОВЫХ ЮНИТОВ НАДО ПРОПИСЫВАТЬ ТОЛЬКО ПОСЛЕ ЮНИТОВ ИЗ ОРИГИНАЛЬНОЙ ИГРЫ, только если не предусмотрено, что юнит нельзя добавить без юнита добавляемого модом.
Юнитам пехотинцам, для срабатывания настройки "Пешие войска могут создавать форты (в 2 раза медленнее рабочих)" надо прописывать вместо:
такую команду:
В папку "\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
8 Работа с файлом "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"
Если в файле не будет прописан ни один путь, компонент будет отключен.
9. Примечания:- Что будет если прописаны изменения для нового юнита, а новый юнит не был выбран для установки?
Программа не найдет необходимого ей тега "UNITCLASS_"+Новый юнит+"" и не внесет изменений. Ошибок не будет.
Тоже самое со зданиями, и т.д и т.п. - В программе встроена система защиты от ошибок в файлах компонентов, если в компоненте есть ошибки он будет отключен при запуске программы и будет выведено окно в каком файле ошибки. Но защиты от ошибок в файлах изменений xml файлов нет, поэтому проверяйте компоненты генерацией и загрузкой мода.
10. Тесты ВДК
0. Если у вас русификация от 1С, то обязательно установите
русификацию наш-фанатиков >>> (чтобы проверять полное заполнение текстовых файлов)
1. Отключите в программе все новые возможности (Файл - Загрузить конфигурацию - Config[Standart_BtS 3.19].rfm)
2. Включите все элементы тестируемого компонента, в программе генерации выберите русский язык, произведите генерацию, запустите мод.
3. Включите все новые возможности, в т.ч. все другие компоненты, включите элементы тестируемого компонента, в программе генерации выберите английский язык, произведите генерацию, запустите мод.