8. Дальнейшие изменения (пока) можно внести вручную:
[SPOILER]
8.1 Внесение изменений в XML-файлы
Папка "XML" - должна содержать под папки как в оригинальной игре и файлы с изменениями которые будут внесены в xml файлы
(т.е. если вам нужно внести изменение в файл "XML\Units\CIV4UnitInfos.xml", то в папке "\ID_"+ID+"\XML\Units" создается файл изменений).
Наименование файлов:
"Оригинальное название файла" + "_" + "Режим чтения файлов" + ".ini"
"CIV4UnitInfos_0.ini" - изменения для файла "CIV4UnitInfos.xml".
Описание значений в XML файлах:
Режимы чтения файлов:
0 - class
1 - type
2 - buildingclass
3 - scriptid
4 - Tag
Заполнение файла:
UNITCLASS_BATTLESHIP - тег в котором будут производиться изменения.<Class>UNITCLASS_BATTLESHIP</Class>
<iCombat>
{
<iCombat>50</iCombat>
}
Разные в зависимости от выбранного режима чтения.
Если надо внести изменения для всех подобных юнитов (например рыцарей - "UNITCLASS_KNIGHT", изменения будут внесены для рыцарей, арабских верблюжьих лучников, византийских катафрактов), то лучше использовать "class", если для какого-то конкретного, то "type". Зависит от файла в который планируется внесение изменений.
"iCombat" - элемент который должен быть в строке, если он есть, значит строка будет заменена.
"50" - строка которая будет вставлена вместо старой строки (можно добавлять несколько строк).
"[VALUE]" - новая строка для элемента управления редактор значений, вместо "[VALUE]" программа подставит значение выбранное в редакторе.<iCombat>[VALUE]</iCombat>
"{" и "}" - начало и конец нового текста, обязательно с новой строки, в начале строки.
Если нужно добавить новый блок, например новый юнит, то в классе писать блок после которого нужно вставить, а в строке для замены, последнюю строку того блока после которого вставляется. При этом следует учитывать, что строку для замены программа, как это не странно, меняет, поэтому нужно делать как в примере:
Обработка расширенных условий для файлов изменения XML<Type>UNIT_MAYA_HOLKAN</Type>
</UnitInfo>
{
</UnitInfo>
ДАННЫЕ НОВОГО ЮНИТА
}
1. [MULTIMODE] - несколько строк для замены, заменяем все строки
2. Условие из нескольких строк - несколько строк для замены, но заменяем только последнюю строку.<Type>PROMOTION_CITY_RAIDER1</Type>
[MULTIMODE]
<UnitCombat>
<UnitCombatType>UNITCOMBAT_ARMOR</UnitCombatType>
<bUnitCombat>
</UnitCombat>
{
}
<Type>PROMOTION_CITY_GARRISON2</Type>
<UnitCombatType>UNITCOMBAT_MARINE</UnitCombatType>
<bUnitCombat>
{
<bUnitCombat>0</bUnitCombat>
}
В ту же папку, в которой находится файл изменений, необходимо положить оригинальный xml файл из папки цивилизации (в первую очередь из папки "игра\Beyond the Sword", если там нет нужного файла, то из "игра\Warlords", ну, а если и там нет, то тогда из папки "игра\assets").
Для изменения этих файлов ложить оригинальный xml файл не нужно:
8.2 Работа с файлом "Check.ini"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
В этом файле должны быть прописаны необходимые компоненту файлы.
Пример: "\EXACT\1_3_SBGames_Change of battleship force\ID_2\XML\Units\CIV4UnitInfos_0.ini".
Если в файле не будет прописан ни один путь, компонент будет отключен.
Примечания:
- Что будет если прописаны изменения для нового юнита, а новый юнит не был выбран для установки?
Программа не найдет необходимого ей тега "UNITCLASS_"+Новый юнит+"" и не внесет изменений. Ошибок не будет.
Тоже самое со зданиями, и т.д и т.п.- Если Вы решили попробовать сделать свой компонент, пишите здесь, что он из себя будет представлять и что будет изменять, чтобы другие пользователи не делали тоже самое.
- В программе встроена система защиты от ошибок в файлах компонентов, если в компоненте есть ошибки он будет отключен при запуске программы и будет выведено окно в каком файле ошибки. Но защиты от ошибок в файлах изменений xml файлов нет, поэтому проверяйте компоненты генерацией и загрузкой мода.
в ней папки:
"Beyond the Sword\Assets"
В эти папки помещаются файлы, которые надо скопировать в папку мода без изменений
(например, если надо добавить новый ресурс, то в папку "Beyond the Sword\Assets\Art\terrain\Resources" добавляется папка с моделью ресурса,
пример можно посмотреть по "\DATA\Components\Additional resources", но папки от туда - "Without dll" в EXACT работать не будут)
а содержимое этих папок копируется в мод в зависимости от выбранного в программе языка:
"Eng\Assets"
"Rus\Assets"
Пример тут:
"\DATA\Components\Additional resources\Eng\Assets\XML\Text"
п.с. все будет копироваться по адресу "\Civilization 4\Beyond the Sword\Mods\RedForce.SB\Assets" + "по пути в компоненте"
п.п.с. если ни чего копировать в мод не надо, то папку можно оставить пустой...
Непонятки с файлом изменений - *.ini.
Какой режим чтения выбрать, если надо удалить несколько строк и изменить значения в оставшихся?
Рядом надо положить оригинальный xml файл, а где его брать, если в оригинальной игре и в моде они разные (речь о CIV4CultureLevelInfo.XML)?
Если знаки "{" и "}" поставить в начале и в конце файла, он заменится целиком?
в CIV4CultureLevelInfo.XML "<Type>CULTURELEVEL_NONE</Type>"... значит режим = 1Режимы чтения файлов:
0 - class
1 - type
2 - buildingclass
3 - scriptid
4 - Tag
Бери в оригинальной игре... если в моде будет уже файл, то он и будет использоваться...
внимательнее прочитай... то что в {} это на что заменится...
Сделал первый компонент. Всё получилось. Но есть проблемка с редактором элементов. Решил изменить название элемента (галочка) - меняет, но не сохраняет. Попробовал более радикальный способ - удалил элемент и сделал новый, но при этом папка XML очистилась, т. е. пришлось писать ini-файл сначала. Кстати, забыл положить рядом с ini-файлом оригинальный xml-файл, но всё равно сработало, может он не очень нужен или просто компонент такой простой. Называется "Ограничение скорости вертолётов", т. е. дороги не увеличивают их скорость движения.
не... ну давай по нормальному сделаем...
в этом разделе создай тему для каждого компонента...
и дай ссылки на скачивание... отдельные...
а я их перезалью на другой сервер... и исправлю ссылки...
Как заменять значения в одной строке понятно. А если надо заменить несколько строк на одну, что писать в ini файле? Например:
<FreeTechs>
<FreeTech>
<TechType>TECH_FISHING</TechType>
<bFreeTech>1</bFreeTech>
</FreeTech>
<FreeTech>
<TechType>TECH_AGRICULTURE</TechType>
<bFreeTech>1</bFreeTech>
</FreeTech>
</FreeTechs>
заменить на
<FreeTechs/>
Обработка расширенных условий для файлов изменения XML
1. [MULTIMODE] - несколько строк для замены, заменяем все строки
2. Условие из нескольких строк - несколько строк для замены, но заменяем только последнюю строку.<Type>PROMOTION_CITY_RAIDER1</Type>
[MULTIMODE]
<UnitCombat>
<UnitCombatType>UNITCOMBAT_ARMOR</UnitCombatType>
<bUnitCombat>
</UnitCombat>
{
}
<Type>PROMOTION_CITY_GARRISON2</Type>
<UnitCombatType>UNITCOMBAT_MARINE</UnitCombatType>
<bUnitCombat>
{
<bUnitCombat>0</bUnitCombat>
}
Так понятно?
Режим чтения 1, текст:
<Type>CIVILIZATION_AMERICA</Type>
[MULTIMODE]
<FreeTechs>
<FreeTech>
<TechType>TECH_FISHING</TechType>
<bFreeTech>1</bFreeTech>
</FreeTech>
<FreeTech>
<TechType>TECH_AGRICULTURE</TechType>
<bFreeTech>1</bFreeTech>
</FreeTech>
</FreeTechs>
{
<FreeTechs/>
}
Ничего не заменяет. Что не так?