[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Моддинг » 1.1. Уроки твикинга » Урок 1 (Базовые знания)
Урок 1
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Как модить игру?
!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!
Перед тем как что-то менять создайте резервные копии всех изменямых папок!!!!!!!!!!!
1. Что такое "модить"?
Мод игры-это её изменение(во всяком случае я так это понимаю!) Червяков модить достаточно легко, потому что большинство настроек хранятся в текстовых достаточно понятных и хорошо структурированных файлов

2. Как искать что можно помодить?
Открываем папку C:\Program Files\Codemasters\Worms 4 Mayhem\data\Tweak в проводнике. В ней куча файлов с расширением xml .В каждом файле лежит куча настроек игры. Для чего служит конкретный файл можно определить по названию. Итак начнём! Возьмём например файл Tweak.xml. В нём, как я понял, находятся основные настройки игры, относящиеся к физике и др. Вот общая структура этого файла(и любого подобного ему файла):

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>

Кто знает язык html(HiperText Markup Language) найдут жуткие сходства с языком xml(Extensible Markup Language). Вот где об этом можно почитать, если интересно http://ru.wikipedia.org/wiki/XML. Короче кратко об xml. Файл xml можно представить как дерево. Корень этого дерева только один - <xomArchive>. Запись в таких скобках <xomArchive> называется тег. Запись </xomArchive> - это закрывающий тег. Запись типа <ExtraGlintRimColor/> называется одиночный тег (который не должен быть закрыт). Эта запись <ExtraGlintRimColor r='0' g='0' b='0' a='0' /> обозначает, что у этого тега есть атрибуты которые записаны как r='0', где r-имя атрибута, а 0 - значение. Внутри блока состоящего из открывающего и закрывающего тегов могут быть ещё одни блоки из тегов, а также одиночные теги. Ну вот в принципе и всё!
Теперь проанализируем, что в этом файле. Блок <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 это контейнер для каких-то данных и имеет только ссылку на них.

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
{Black}_Steel{Csol}
Проверенные
Сообщений: 2
Реп: 0
Все понятно, ясно

 
Некто
Проверенные
Сообщений: 1897
Реп: 21
хм... а если неразбираешся в html записях?
 
MarkWarT
Проверенные
Сообщений: 497
Реп: 22
Некромант блин dry На дату последнего поста посмотри dry
А в хтмл и не нужно разбираться. Все равно что в блокноте текст пишешь


Trading Unusual Nickname with Perfectly Straight Underlines, serious offers only
 
Некто
Проверенные
Сообщений: 1897
Реп: 21
ну и с англиским я недружу cry
 
bender
Проверенные
Сообщений: 312
Реп: 2
а че за строчка <Flags>81</Flags>

 
DarkPower
Проверенные
Сообщений: 15
Реп: 0
Ну Flags переводится как "Флаги".

Сообщение отредактировал DarkPower - ВС, 14.03.2010, 10:20:03
 
MarkWarT
Проверенные
Сообщений: 497
Реп: 22
DarkPower, некропост
Вообще в контексте игры Flags означает "особые свойства". Про таковые в В4 я не знаю, но в GTA San Andreas например их изменение позволяло создать оружие, которые держишь в двух руках по стволу, оружие с которым невозможно приседать и др.


Trading Unusual Nickname with Perfectly Straight Underlines, serious offers only
 
DarkPower
Проверенные
Сообщений: 15
Реп: 0
Quote (MarkWarT)
Вообще в контексте игры Flags означает "особые свойства". Про таковые в В4 я не знаю, но в GTA San Andreas например их изменение позволяло создать оружие, которые держишь в двух руках по стволу, оружие с которым невозможно приседать и др.

Ясно.
 
killeroi
Хранители порядка
Сообщений: 1850
Реп: 88 / Инв: 9
Дам полезные хтучки wink

Как в старые добрые
 
DrHitman27
Админы
Сообщений: 2115
Реп: 52
Quote (SonicX)
Дам полезные хтучки

что этим человек сказать хотел неизвестно


 
Pavel_129
Проверенные
Сообщений: 2
Реп: 2
Герыч спасибо тебе! 7 теперь я могу моды делать!
 
Проверенные
Сообщений: 2848
Реп: 60 / Инв: 6
Pavel_129, это еще не моды. это вступление к модам.



-------------------------------------------------------------
And when the sun is shining, there is justice for all...
And all the people will remember that funny "war".
War, which was so dark in the beginning and so shiny in the end.
But now it's over. Over for all.
-------------------------------------------------------------
Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
 
Genomorf
Заблокированные
Сообщений: 21
Реп: -6
Я сделал всё как надо!
Все уроки прочёл И СДЕЛАЛ ВСЁ КАК НАДО!
Не пашет!!!!
И руки у меня не кривые!


Сообщение отредактировал Genomorf - СБ, 19.03.2011, 18:15:01
 
4erveR
Модераторы
Сообщений: 1511
Реп: 77 / Инв: 13
Quote (Genomorf)
И руки у меня не кривые!

а разве есть ещё причины?
 
killeroi
Хранители порядка
Сообщений: 1850
Реп: 88 / Инв: 9
Quote (4erveR)
Я сделала всё как надо!
Все уроки прочёл И СДЕЛАЛ ВСЁ КАК НАДО!
Не пашет!!!!
И руки у меня не кривые!

Почитай тогда мои уроки для разогрева а потом уже к этим приступай


Как в старые добрые
 
Проверенные
Сообщений: 2848
Реп: 60 / Инв: 6
Quote (Genomorf)
Я сделала всё как надо!
Все уроки прочёл И СДЕЛАЛ ВСЁ КАК НАДО!

ты он или она? biggrin




-------------------------------------------------------------
And when the sun is shining, there is justice for all...
And all the people will remember that funny "war".
War, which was so dark in the beginning and so shiny in the end.
But now it's over. Over for all.
-------------------------------------------------------------
Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
 
killeroi
Хранители порядка
Сообщений: 1850
Реп: 88 / Инв: 9
Она сделала но при этом он прочел. Я понял он гермафродит, ой нельзя такими нехорошими словами ругаться

Как в старые добрые
 
Проверенные
Сообщений: 2848
Реп: 60 / Инв: 6
[WEC]SonicX, мы такие нехорошие слова на биологии изучаем biggrin



-------------------------------------------------------------
And when the sun is shining, there is justice for all...
And all the people will remember that funny "war".
War, which was so dark in the beginning and so shiny in the end.
But now it's over. Over for all.
-------------------------------------------------------------
Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
 
killeroi
Хранители порядка
Сообщений: 1850
Реп: 88 / Инв: 9
Quote (rocketvadim)
[WEC]SonicX, мы такие нехорошие слова на биологии изучаем

Плохо мы все нехорошие слова изучили 3 года назад. И не только связанные с биологией.


Как в старые добрые
 
Форум » Моддинг » 1.1. Уроки твикинга » Урок 1 (Базовые знания)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: