[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Архив - только для чтения
Lesson 1
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
How tweak game?
!!!!!!!!!!!!!!!!!!WARNING!!!!!!!!!!!!!!!!!!!!
Before tweaking make backups of all modified directories and files!!!!!!!!!!!
1. What is tweaking?
Tweaking is some kind of changing game, so for example you can jump higher or run faster. Tweaking Worms is easy because a lot of it's setting are stored in well structured text files.

2. How find object to tweak?
Open directory C:\Program Files\Codemasters\Worms 4 Mayhem\data\Tweak. There are a lot of xml files. Each xml file contains Worms settings. Aim of each file can be recognized by it's name. So, let's start! Open file Tweak.xml. It contains main setting related to physics and others. Here is common structure of Tweak.xml and any of xml files:

Code
<?xml version='1.0' ?>
<xomArchive>
<xomObjects>
<XDataBank id='id-0'>
<Section>0</Section>
<IntResources href='GoodShotDamageThreshold'/>
<IntResources href='Jetpack.InitFuel'/>
<IntResources href='MaxRandomCrates'/>
<IntResources href='Net.NetworkAvailable'/>
<IntResources href='Ninja.NumRaycastRefinements'/>
<IntResources href='Ninja.NumShots'/>
...
<UintResources href='Camelot.CastleSize.Max'/>
<UintResources href='Camelot.CastleSize.Min'/>
<UintResources href='Camelot.FortPieces.Max'/>
...
<FloatResources href='AIJetpack.ParabolicTime'/>
<FloatResources href='Audio.DistanceFactor'/>
<FloatResources href='Audio.DopplerFactor'/>
<FloatResources href='Audio.RolloffFactor'/>
<FloatResources href='Crate.ImpulseMagnitude'/>
...
<VectorResources href='WXFE.AmbientColour'/>
<VectorResources href='WXFE.DiffuseColour'/>
<VectorResources href='WXFE.LightDirection'/>
<VectorResources href='Worm.Hop.Velocity'/>
...
<ContainerResources href='FE.PS2Water'/>
<ContainerResources href='FE.Water'/>
<ContainerResources href='PS2Water.ARABIAN.DAY'/>
<ContainerResources href='PS2Water.ARABIAN.EVENING'/>
<ContainerResources href='PS2Water.ARABIAN.NIGHT'/>
...
<ColorResources href='Abducted.Colour'/>
<ColorResources href='Debug.DotColour'/>
<ColorResources href='Fog.Colour'/>
...
</XDataBank>
<XIntResourceDetails id='GoodShotDamageThreshold'>
<Value>30</Value>
<Name>GoodShotDamageThreshold</Name>
<Flags>64</Flags>
</XIntResourceDetails>
<XIntResourceDetails id='Jetpack.InitFuel'>
<Value>7500</Value>
<Name>Jetpack.InitFuel</Name>
<Flags>64</Flags>
</XIntResourceDetails>
<XIntResourceDetails id='MaxRandomCrates'>
<Value>15</Value>
<Name>MaxRandomCrates</Name>
<Flags>64</Flags>
</XIntResourceDetails>
<XIntResourceDetails id='Net.NetworkAvailable'>
<Value>1</Value>
<Name>Net.NetworkAvailable</Name>
<Flags>64</Flags>
</XIntResourceDetails>
<XIntResourceDetails id='Ninja.NumRaycastRefinements'>
<Value>8</Value>
<Name>Ninja.NumRaycastRefinements</Name>
<Flags>64</Flags>
</XIntResourceDetails>
<XIntResourceDetails id='Ninja.NumShots'>
<Value>5</Value>
<Name>Ninja.NumShots</Name>
<Flags>64</Flags>
</XIntResourceDetails>
...
<XContainerResourceDetails id='FE.PS2Water'>
<Value href='FE.PS2Water-0'/>
<Name>FE.PS2Water</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<WaterPlaneTweaks id='FE.PS2Water-0'>
<GlintCentreColor r='219' g='197' b='131' a='255' />
<GlintInnerColor r='219' g='197' b='131' a='255' />
<GlintMiddleColor r='70' g='48' b='26' a='255' />
<GlintOuterColor r='0' g='0' b='0' a='0' />
<GlintRimColor r='0' g='0' b='0' a='0' />
<ShadowCentreColor r='155' g='155' b='155' a='100' />
<ShadowInnerColor r='120' g='120' b='120' a='100' />
<ShadowMiddleColor r='80' g='80' b='80' a='100' />
<ShadowOuterColor r='50' g='50' b='50' a='100' />
<ShadowRimColor r='0' g='0' b='0' a='255' />
<BlendCentreColor r='60' g='61' b='98' a='200' />
<BlendInnerColor r='101' g='120' b='156' a='255' />
<BlendMiddleColor r='140' g='155' b='200' a='200' />
<BlendOuterColor r='146' g='180' b='230' a='0' />
<BlendRimColor r='140' g='163' b='215' a='0' />
<DetailCentreColor r='140' g='163' b='215' a='100' />
<DetailInnerColor r='145' g='76' b='43' a='100' />
<DetailMiddleColor r='50' g='50' b='30' a='100' />
<DetailOuterColor r='100' g='100' b='70' a='0' />
<DetailRimColor r='0' g='0' b='0' a='0' />
<ExtraGlintCentreColor r='0' g='0' b='0' a='0' />
<ExtraGlintInnerColor r='0' g='0' b='0' a='0' />
<ExtraGlintMiddleColor r='0' g='0' b='0' a='0' />
<ExtraGlintOuterColor r='0' g='0' b='0' a='0' />
<ExtraGlintRimColor r='0' g='0' b='0' a='0' />
<GlintResource>FE.DAYWater</GlintResource>
<ShadowResource>FE.DAYWaterDim</ShadowResource>
<SkyBlendResource>FE.WaterBlend</SkyBlendResource>
<DetailResource>FE.DAYDetail</DetailResource>
<SkyBlendColor r='100' g='140' b='200' a='255' />
<GlintTextureScaleA>100</GlintTextureScaleA>
<GlintTextureScaleB>80</GlintTextureScaleB>
<ShadowTextureScaleA>5</ShadowTextureScaleA>
<ShadowTextureScaleB>13</ShadowTextureScaleB>
<DetailTextureScaleA>60</DetailTextureScaleA>
<DetailTextureScaleB>76</DetailTextureScaleB>
</WaterPlaneTweaks>
...
</xomObjects>
</xomArchive>

If you know html(HiperText Markup Language) you can find a lot of common things with xml(Extensible Markup Language). Read more about xml here http://en.wikipedia.org/wiki/XML. xml file has tree stucture. Tree root is always - <xomArchive>. This text <xomArchive> is called tag(start-tag). This is </xomArchive> - end-tag. <ExtraGlintRimColor/> empty-element tag. This text <ExtraGlintRimColor r='0' g='0' b='0' a='0' /> means, that this tag has some atributes, for example r='0', r-atribute name, а 0 - its value. Each block between start-tag and end-tag can contain other blocks or empty-element tags. Empty-element tag can't contain anything. That's all!

======================================================
Not translated yet!
Перевести до конца!
======================================================

Теперь проанализируем, что в этом файле. Блок <XDataBank id='id-0'> это блок, где описана куча ссылок на ресурсы. Рассмотрим например <IntResources href='Jetpack.InitFuel'/> запись href='Jetpack.InitFuel' означает, что где-то в этом файле внутри блока <xomObjects>..</xomObjects> есть структура, которая хранит в себе данные для этого тега, и называется она Jetpack.InitFuel (href в языке html означает ссылку, аналогично и в этом файле один блок может ссылаться на другой). Теперь напрягаем мозги, и пытаемся перевести с английского Jetpack.InitFuel - это "начальное топливо реактивного ранца". Ладно раз в <xomObjects> только ссылки на данные то найдём сами данные. Найдём в файле(Ctrl+F) Jetpack.InitFuel (это берём из атрибута href). Находим этот ресурс.

Code
<XIntResourceDetails id='Jetpack.InitFuel'>
<Value>7500</Value>
<Name>Jetpack.InitFuel</Name>
<Flags>64</Flags>
</XIntResourceDetails>

Как видно его тип XIntResourceDetails. У данного типа есть следующие данные Value(значение), Name(имя), Flags(какие-то не понятно зачем нужные данные). По сути здесь написано: "У реактивного ранца начальное топливо равно 7500". Хм... А не попробовать ли нам его увеличить? Ставим 50000! И получаем

Code
<XIntResourceDetails id='Jetpack.InitFuel'>
<Value>50000</Value>
<Name>Jetpack.InitFuel</Name>
<Flags>64</Flags>
</XIntResourceDetails>

Сохраняем этот файл(только если мы его скопировали перед этим) и запускаем новую игру в вормах! Берём реактивный ранец и радуемся когда видим 99 секунд! Вот и всё!

3. Почему у меня глючит онлайн игры, или я вылетаю из игры???
Не знаю!!!! Я буду разбираться!!! Но вот что установлено! Можно спокойно создавать супер оружие в файле local.xml!

4. И это всё???
Да! теперь вам надо проявить фантазию и поизучать <XDataBank id='id-0'> в этом и других файлах!

5. А почему некоторые ресурсы называются <IntResources href='Wind.Cap'/>, другие <UintResources href='AI.BulletCount'/>, третьи <StringResources href='BACKUP.FE.LevelToUse'/>?
А потому что разные ресурсы хранят данные разных типов IntResources - целые числа, UintResources - целые положительные, StringResources - тектовые, и т.п. Стоит пожалуй выделить такой класс ресурсов, как <ContainerResources href='FE.PS2Water'/>, потому что работа с ним чуть-чуть отличается.
Итак мы нашли строчку <ContainerResources href='FE.PS2Water'/> в секции <XDataBank id='id-0'>. Это тоже ссылка на ресурс, поэтому забиваем в поиск FE.PS2Water. Находим

Code
<XContainerResourceDetails id='FE.PS2Water'>
<Value href='FE.PS2Water-0'/>
<Name>FE.PS2Water</Name>
<Flags>81</Flags>
</XContainerResourceDetails>

Но а где же значение? А значения нет, вместо него ссылка на FE.PS2Water-0. Ну чтож ищем теперь его! Находим

Code
<WaterPlaneTweaks id='FE.PS2Water-0'>
<GlintCentreColor r='219' g='197' b='131' a='255' />
<GlintInnerColor r='219' g='197' b='131' a='255' />
<GlintMiddleColor r='70' g='48' b='26' a='255' />
<GlintOuterColor r='0' g='0' b='0' a='0' />
<GlintRimColor r='0' g='0' b='0' a='0' />
<ShadowCentreColor r='155' g='155' b='155' a='100' />
<ShadowInnerColor r='120' g='120' b='120' a='100' />
<ShadowMiddleColor r='80' g='80' b='80' a='100' />
<ShadowOuterColor r='50' g='50' b='50' a='100' />
<ShadowRimColor r='0' g='0' b='0' a='255' />
<BlendCentreColor r='60' g='61' b='98' a='200' />
<BlendInnerColor r='101' g='120' b='156' a='255' />
<BlendMiddleColor r='140' g='155' b='200' a='200' />
<BlendOuterColor r='146' g='180' b='230' a='0' />
<BlendRimColor r='140' g='163' b='215' a='0' />
<DetailCentreColor r='140' g='163' b='215' a='100' />
<DetailInnerColor r='145' g='76' b='43' a='100' />
<DetailMiddleColor r='50' g='50' b='30' a='100' />
<DetailOuterColor r='100' g='100' b='70' a='0' />
<DetailRimColor r='0' g='0' b='0' a='0' />
<ExtraGlintCentreColor r='0' g='0' b='0' a='0' />
<ExtraGlintInnerColor r='0' g='0' b='0' a='0' />
<ExtraGlintMiddleColor r='0' g='0' b='0' a='0' />
<ExtraGlintOuterColor r='0' g='0' b='0' a='0' />
<ExtraGlintRimColor r='0' g='0' b='0' a='0' />
<GlintResource>FE.DAYWater</GlintResource>
<ShadowResource>FE.DAYWaterDim</ShadowResource>
<SkyBlendResource>FE.WaterBlend</SkyBlendResource>
<DetailResource>FE.DAYDetail</DetailResource>
<SkyBlendColor r='100' g='140' b='200' a='255' />
<GlintTextureScaleA>100</GlintTextureScaleA>
<GlintTextureScaleB>80</GlintTextureScaleB>
<ShadowTextureScaleA>5</ShadowTextureScaleA>
<ShadowTextureScaleB>13</ShadowTextureScaleB>
<DetailTextureScaleA>60</DetailTextureScaleA>
<DetailTextureScaleB>76</DetailTextureScaleB>
</WaterPlaneTweaks>

Ну а здесь уже данные! Много данных о цветах воды! Для тех кот не знает цвет может кодироваться как rgba(Red Green Blue Alpha-Красный Зелёный Синий Прозрачность) и эти числа могут изменяться от 0 до 255.
То есть XContainerResourceDetails это контейнер для каких-то данных и имеет только ссылку на них.

Ну вот вроде и всё! Учитесь, изучайте файлы, пробуйте модить! Я вам дал базовые знания. А вам осталось только найти теги, кторые можно поменять.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
  • Страница 1 из 1
  • 1
Поиск: