Вы установили СДК. У вас есть лицуха РА3. Вы хотите модить игру. С чего начать? Для начала создайте в папке Mods (искать в папке с установленным СДК) папку с названием вашего мода (название должно состоять только из латинских символов и не иметь пробелы). Потом в новой папке создайте другую папку, название которой - data. Вернёмся потом к папке с СДК. Находим папку SageXml, в ней содержатся код. Например, заходим в папку Allied, далее в папку Units и копируем файл AlliedAntiVehicleVehicleTech1, вставляем в папку data в папке вашего мода. Переименуйте файл. Открывайте файл в блокноте (использование других средств редактирования .xml файлов не рекомендуется), и вот какие параметры вы увидите:
базовая анимация юнита. Все юниты требуют её
‘inheritFrom=’ как будет вести себя юнит в игре (обычно пишется название файла анимации, тока без расширения) ‘id=’ идентификатор юнита в коде и билдере ‘SelectPortrait’ и ‘ButtonImage’ это изображения на портрете и кнопочке юнита соответственно ‘Side=‘ Сторона. Без комментариев ‘BuildTime=’ скока секунд вы должны ждать появления этого юнита ‘CommandSet=’ набор команд, которые мона отдать юниту (спец-способность, например) ‘KindOf=’ чем является юнит. Основные: INFANTRY - это пех, VEHICLE - машина, CAN_ATTACK - может стрелять, SELECTABLE - можно выбрать мышкой ‘VoicePriority’ используется при выборе юнитов разных видов. Точнее - это приоритет, который влияет на то, кто в этой группе крикнет "Готов!". Пример: если вы выбрали танк и пеха, то первым крикнет танк =) ‘Description’ и ‘TypeDescription’ описание юнита при наведении мыши на кнопку с его изображением при постройке (пишутся эти описания в mod.str) ‘HealthBoxHeightOffset’ на какой высоте торчит плашка со здоровьем юнита ‘UnitIntro’ звук при создании юнита ‘GameDependency’ что требуется для постройки юнита
'BuildCost Account=”=$ACCOUNT_ORE” Amount=”750″' денежка=) ‘Armor=’ tag from ‘ArmorSet’ ссылается на вид брони юнита (процент стойкости к дамагу) (смотерть в GlobalData/Armor.xml)
‘LocomotorSet’ как ездиет юнит. Мона сделать так, чтоб Апокалипс летал как самолёт=) ‘Locomotor=’ тип (смотреть в GlobalData/Locomotor.xml) ‘Speed=’ скорость
Далее идут орудия юнита (для примера взят Тесла трупер):
'WeaponSetUpdate id=”ModuleTag_WeaponSetUpdate”' 'WeaponSlotHardpoint ID=”1″' 'Weapon Ordering=”PRIMARY_WEAPON” - Первое Template=”SovietHeavyAntiVehicleInfantryTeslaGun” - Название (сами оружия хранятся в файле GlobalData/Weapon.xml) ForbiddenObjectStatus=”GENERIC_TOGGLE_STATE CHARGING_BASE_DEFENSES”' В каких случаях юнит не могёт стрелять 'Weapon Ordering=”SECONDARY_WEAPON” - Второе Template=”SovietHeavyAntiVehicleInfantryTeslaLinkGun” ForbiddenObjectStatus=”GENERIC_TOGGLE_STATE”' 'WeaponSlotHardpoint' 'WeaponSetUpdate'
Это основные характеристики любых юнитов. Но есть ещё много других модулей, которые есть тока у некоторых. Так что рекомендую изучать самим код. Когда вы увидите всё количество файлов кода, не пугайтесь, большинство вам просто не понадобятся. Хотя вы можете много чего отредить, ИИ например. Ну ладно, продолжим.
Оружие: Всё оружие прячется в GlobalData/Weapon.xml. Для примера я возьму Танк Цунами. Откройте .xml и ищите: JapanAntiVehicleVehicleTech1Cannon. Это оружие того танка Смотрим:
‘AttackRange=’ дальность атаки ‘WeaponSpeed=’ скорость полёта снаряда ‘AcceptableAimDelta=’ максимальный угол атаки оружия ‘ClipSize=’ количество "патронов в обойме" ‘AutoReloadsClip=’ авто-перезарядка. ‘AUTO’ значит автоматически, a ‘RETURN_TO_BASE’ значит что нуно вернуться на базу (аэродром) ‘Flags=’ фильтр. ”ATTACK_NEEDS_LINE_OF_SIGHT” значит что для атаки нужно видеть противника. ‘CanFireWhileMoving=’ может ли стрелять во время движения ‘RequiredAntiMask=’ фильтр - оружие может стрелять только по особым целям. Например, RequiredAntiMask=”ANTI_WATER ANTI_GROUND ANTI_STRUCTURE” - оружие может пулять по зданиям, водным и наземным юнитам. Но не может бить авиацию=) ‘FiringDuration=’ продолжительность стрельбы ‘ClipReloadTime=’ время перезарядки ‘Nuggets’ секция для ракет и боеголовок У танка боеголовка называется ‘JapanAntiVehicleVehicleTech1Warhead’. Смотрим что там мона изменить ‘DamageNugget’ там записан дамаг и то что с ним связано ‘Damage=’ что непонятного? ‘DamageType=’ тип дамага ‘DeathType=’ тип смерти юнита от этой пушки ‘SuppressionNugget’ область поражения. ‘Radius=’ радиус, ‘DurationSeconds=’ продолжительность
Опять же, это основные характеристики, есть и особые параметры ;) Если хотите добавить чинящих дронов к зданию или к юниту, то в инженерных параметрах (смотерть 'Behaviors' и ниже 'Draws') пишите следующий код:
'AssignSlavesTargetObjectSpecialPower id=”ModuleTag_SpecialPowerRepairVehicle” SpecialPowerTemplate=”SpecialPower_TargetedRepairVehicle” ' - спец-сила 'SpawnBehavior id=”ModuleTag_SpawnRepairDrones” SpawnNumberData=”3″ - количество InitialBurst=”3" - начальное количество SpawnReplaceDelayData=”10s” - время появления замены SpawnedRequireSpawner=”true” - чтобы появиться нужен хозяин KillSpawnsOnCaptured=”true” - уничтожение дронов при захвате SpawnInsideBuilding=”true” - появление внутри здания KillSpawnsOnDisabled=”true”' - уничтожение при отключении 'Die DeathTypes=”ALL” ' 'SpawnTemplate'AlliedWarFactoryRepairDrone'SpawnTemplate' - название объекта 'SpawnBehavior'
Можно сделать не тока чинящих, но и атакующих дронов ;) Вам мало цветов, которые мона выбрать в мультиплеере? Тада ловите код) Откройте GlobalData/MultiplayerColors.xml. Добавьте туды:
'MultiplayerColor id=”ColorGold”' - золотой цвет) 'RGBColor R=”255″ G=”200″ B=”1″ A=”255″ ' - цвет 'RGBNightColor R=”255″ G=”200″ B=”1″ A=”255″ ' цвет ночью 'TooltipName'Color:Gold 'AvailableInMetaGame'true'AvailableInMetaGame' разрешен или нет) 'MultiplayerColor'
Смотрите чтоб число n (а это номер слота) не совпадало с другими!!! У вас есть желание отредить экспу юнитов (то есть када они получают один шеврон и т.д.)? Смена экспы происходит в файле GlobalData/ExperienceLevels.xml. Там есть экспа для всех юнитов
At start, the generic veterancy levels (VLs) are defined. Система рангов юнитов такова: уровень 1 по умолчанию для всех юнитов, уровни 2, 3 и 4 это ранги 1, 2 и 3. ЕА назвала ранги так: ‘veteran’, ‘elite’ и ‘heroic’. Код дельфина:
'ExperienceLevelTemplate id=”AlliedAntiNavalScoutExperienceLevel_1″ - название уровня inheritFrom=”ExperienceLevel_AlliedRank1″ - не понял RequiredExperience=”1″ - необходимый уровень ExperienceAward=”750″' - награда экспой за уничтожение объекта этого уровня 'Target'AlliedAntiNavalScout'Target' - название объекта 'ExperienceLevelTemplate' 'ExperienceLevelTemplate id=”AlliedAntiNavalScoutExperienceLevel_2″ - название inheritFrom=”ExperienceLevel_AlliedRank2″ - тип Prerequisite=”AlliedAntiNavalScoutExperienceLevel_1″ - какой уровень необходим RequiredExperience=”2250″ - нужно экспы ExperienceAward=”1500″' - награда экспой за уничтожение объекта этого уровня 'Target'AlliedAntiNavalScout'Target' - объект 'ExperienceLevelTemplate' 'ExperienceLevelTemplate id=”AlliedAntiNavalScoutExperienceLevel_3″ inheritFrom=”ExperienceLevel_AlliedRank3″ Prerequisite=”AlliedAntiNavalScoutExperienceLevel_2″ RequiredExperience=”4500″ ExperienceAward=”2250″' 'Target'AlliedAntiNavalScout'Target' 'ExperienceLevelTemplate' 'ExperienceLevelTemplate id=”AlliedAntiNavalScoutExperienceLevel_4″ inheritFrom=”ExperienceLevel_AlliedRank4″ Prerequisite=”AlliedAntiNavalScoutExperienceLevel_3″ RequiredExperience=”6750″ ExperienceAward=”3000″' 'Target'AlliedAntiNavalScout'Target' 'ExperienceLevelTemplate'
Вот и всё. Теперь спец-силы: Спец-силы - это комплекс игровых фич. Они содержатся в файле GlobalData/SpecialPowerTemplates.xml. Пример (код МСЦ):
'SpecialPowerTemplate id=”SpecialPower_UnpackReplaceSelf” - название TargetType=”LOCATION_AND_ANGLE” - тип цели NameOfVoiceNameToUseAsInitiateIntendToDoVoice=”VoiceDeploy” звук при использовании силы RadiusCursorRadius=”1″ - радиус курсора PreventConditions=”BOOBY_TRAPPED IS_BEING_DRAGGED SOLD” условия, IS_BEING_DRAGGED - схвачен Апокалом (это способность такая), остальное ясно, или просто заюзайте словарь) Flags=”WATER_OK FOGGED_SHROUDED_CELLS_OK CANNOT_LEAVE_ENCLOSURE CAN_NOT_BE_SCRAMBLED” флаги. WATER_OK - может развернуться на воде, и т.д. WaypointModeTerminal=”false” ' не понял чё это 'GameDependency id=”SpecialPower_UnpackReplaceSelf_GameDependency” требование ForbiddenModelConditions=”UNPACKING”' условие запрещения (в данном случае - состояние модели) 'SpecialPowerTemplate'
Другой пример:
'SpecialPowerTemplate id=”SpecialPower_ShrinkRay” ReloadTime=”10s” - время перезарядки TargetType=”OBJECT” - тип цели NameOfVoiceNameToUseAsInitiateIntendToDoVoice=”VoiceShrinkRay” Flags=”NEEDS_OBJECT_FILTER CANNOT_LEAVE_ENCLOSURE” WaypointModeTerminal=”false” >
'ObjectFilter - фильтр объектов Rule=”ANY” - какие Include=”VEHICLE HUGE_VEHICLE TIME_BOMB” впридачу к ним Exclude=”AIRCRAFT” - низя StatusBitFlagsExclude=”SUBMERGED AIRBORNE_TARGET”' - у которых данный статус 'ObjectFilter' 'SpecialPowerTemplate'
Ещё пример:
'SpecialPowerTemplate id=”SpecialPowerChronoSwapTeleport” ReloadTime=”120s” TargetType=”OBJECT” EvaEventToPlayWhenSelectingTarget=”SelectUnit” голос, так сказать, помощника inheritFrom=”SpecialPowerChrono_Base” поведение RequiredPlayerTech=”PlayerTech_Allied_ChronoSwap”> необходима технология игрока 'ObjectFilter Rule=”ANY” Relationship=”ALLIES” Include=”INFANTRY VEHICLE TIME_BOMB” Exclude=”AIRCRAFT” StatusBitFlagsExclude=”SUBMERGED AIRBORNE_TARGET NOT_IN_WORLD”> 'IncludeThing'AlliedTimeBombLvl1'IncludeThing' более подробно, что добавляется 'IncludeThing'AlliedTimeBombLvl2'IncludeThing' 'IncludeThing'AlliedTimeBombLvl3'IncludeThing' 'ObjectFilter' 'GameDependency id=”Allied_ChronoSwapTeleport_GameDependency”' название требования 'RequiredObject'AlliedConstructionYard'RequiredObject' Необходимо 'GameDependency 'SpecialPowerTemplate
Если вам нужен mod.str, почему бы его не создать? Создаёте обычным блокнотом файл, которому присваиваете расширение .str Строки в нём должны выглядеть так:
Name:AlliedGunshipAircraft “Harbinger Gunship” END
Desc:AlliedGunshipAircraft “Kills stuff with protons” END
Type:AlliedGunshipAircraft “DON’T CROSS THE STREAMS” END
Что хотите, то и пишите)
И наконец самый важный файл, без которого не обойтись - mod.xml! Как его сделать? Да тем же блокнотом) Но в нём должно быть следующее:
'?xml version=”1.0″ encoding=”UTF-8″?' 'AssetDeclaration xmlns=”uri:ea.com:eala:asset” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“' 'Tags''/Tags' 'Includes' '!– mod.xml is the central include for mod setup data. –' '!– These includes need to be in all mod.xml files –' 'Include type=”reference” source=”DATA:static.xml” /' 'Include type=”reference” source=”DATA:global.xml” /' 'Include type=”reference” source=”DATA:audio.xml” /'