А вот и я.
Если бы я знал, что к ковырянию FIFA появится такой энтузиазм, давно бы выложил всё, что знаю и некоторым здесь не пришлось бы потеть. Никаким, кроме хекс редактора, я не пользовался, но изложенная инфа всё равно будет полезна для написания редактора команд, например, если это кому-то будет нужно.
По хорошему, всё это было бы неплохо закрепить в шапке, но мне неохота заморачиваться, уж извините.
Редактирование КомандКоманды начинаются по адресу
1314DA и занимают 38 байт каждая, сейчас я их разберу:
Первые 16 байт -
это название команды. Тут всё долнжно быть понятно.
Следующие 3 байта (17, 18, 19) -
цвета табличек. Если вы хотите сделать двухцветную табличку - 18 и 19 байт должны быть одинаковыми.
Список цветов табличек:00 - Зелёный
01 - Голубой
02 - Синий
03 - Красный
04 - Жёлтый
05 - Коричневый
06 - Оранжевый
07 - Чёрный
08 - Смесь двух зелёных (в оригинале использовался только на табличках лиг)
09 - Светло-зелёный (практически нигде не используется)
0A - Серый
0B - Белый
0C - Фиолетовый
Следующие 4 байта отвечают за
покрытие (Coverage)
и менять их крайне не желательноПервый - Defender
Второй и третий - Midfield
Четвёртый - Forward
У всех команд покрытие прописано одинаково, даже если в роме байты выглядят по другому. Если вы задались целью сделать свои команды настолько уникальными, чтобы отдельно прописывать покрытие - это ваша головная боль. Но если накосячили,
стандартное покрытие - 28 12 57 25Следующие 6 байт -
цвета формы и идут они в таком порядке:
1 - футболка (основная)
2 - футболка (гостевая)
3 - шорты (основная)
4 - шорты (гостевая)
5 - голкипер (основная)
6 - голкипер (гостевая)
В оригинале, чтобы у второй команды форма поменялась на гостевую, идут проверки по индексам 1 и 3,
если они совпадают - форма меняется.
Чтобы проверка шла только по 1, у меня в хаке было прописано
4E 71 по адресу
7BF80, чтобы было как в оригинале - нужно поменять обратно на
66 1ССписок цветов формы:00 - Голубой
01 - Синий
02 - Зелёный
03 - Оранжевый
04 - Бледно-Розовый
05 - Фиолетовый
06 - Ярко-Розовый
07 - Красный
08 - Малиновый
09 - Жёлтый
0A - Белый
0B - Серый
0C - Чёрный
Однако, если вы пропишете 0D \ 0E \ 0F \ 10 - вам выдаст телесный цвет, а если 11 - то коричневый, и об этом чуть будет ниже:
Следующие 2 байта - это
цвета кожи и волос.Первый байт - кожа, где 00, 01, 02 - белая кожа, а 03 - чёрная, соответственно.
И если учесть написанное выше, то у меня есть подозрение, что через индексы форм можно читать палитру кожи и телесных палитр - три, а то и четыре.
Это если кто-то захочет добавить новые цвета форм или тип кожи - осталось только поискать саму палитру в роме, но я этим не занимался.
Второй байт - цвет волос, где:
00 - светлые волосы
01 - коричневые
02 - рыжие (нигде не используется)
03 - чёрные
И последние 6 байт - это
рейтинги команд в перемешку с остальными свойствами. Идут они в таком порядке:
Shooting - только shooting занимает целый байт, остальные по половине байта
Running | Passing Defense | TacklingGoalies | Overallдальше чуть запутанее:
Strategy | ??? первая половина байта - номер тактики у команды, вторая мне неизвестна, скорее всего не используется
Formation | Midfield первая половина отвечает за расстановку игроков
Attack | ??? еще одна пустая половина байта, но
Sharpnull мне говорил это нужно для корректного чтения или вроде того (в конце всегда 0).
Теперь сами
номера для рейтингов, тактик и прочего:Рейтинги:
F *****
E ****"
D ****
B-C ***"
9-A ***
7-8 **"
5-6 **
3-4 *"
1-2 *
0 пусто - никогда не используется, хотя разрабы могли бы пол-звездочки для приличия изобразить.
Тактики:
0 - none
1 - long ball
2 - defend
3 - all out defend
4 - attack
5 - all out attack
Формации:
0 - 3-5-2
1 - 4-4-2
2 - Sweeper
3 - 4-2-4
4 - 4-3-3
Большая простыня получилась, но надеюсь, что читабельно. Чуть позже я распишу остальное.
Добавлено позже:Редактирование игроковСледом за командами сразу же идут игроки, по адресу
133854, каждый размером 22 байта, их я тоже сейчас разберу:
Первый байт - инициал (имя), следующие 12 за ним - фамилия игрока. Всего 13 байт на имя, по аналогии с устройством команд.
А дальше уже интересно:
За что отвечает 14 байт? Никто не знает.
Sharpnull для написания редактора целенаправленно искал и он не знает тоже.
15 байт - это амплуа и номер, но они читаются не совсем раздельно, а немного пересекаются.
Первая половина обозначает позицию, а именно:
0 - Goalkeeper
2 - Defender
4 - Midfield
6 - Forward
Вторая половина обозначает номер игрока, но дело в том, что номера игроков начинаются от 0 и заканчиваются 31, что 00 и 1F соответственно. Следовательно, первая половина байта влияет на номер тоже.
Таким образом, 40 - это полузащитник с 0 номером (да, есть нулевой номер), а 3F - это защитник с 31 номером потому, что 20 + 1F = 3F
Соответственно все возможные позиции с номерами:
00-1F - Goalkeeper
20-3F - Defender
40-5F - Midfield
60-7F - ForwardНо если прописать 80-9F, то у игрока будет позиция X - я не думаю, что это баг, скорее всего разрабы хотели добавить позицию вне амплуа. В игре она нигде не встречается и я не тестировал это.
16 байт, на первый взгляд тоже не отвечает ни за что, но как оказалось, он зачем-то дублирует номер игрока. Более того, у игроков американской лиги номера читаются с 16 байта, а не с 15. Я не знаю с чем это связано.
Все остальные байты, кроме последнего -
скиллы игроков, занимающие половину байта каждый, вот они:
Skill | Speed
Agility | Reaction
Shot Acc | Passing
Aggress | Ball Ctl
Fitness | ??? - последнее значение всегда 0
Соответственно величиной от 0 до F каждый:
F - 95
E - 92
D - 89
C - 86
B - 83
A - 80
9 - 77
8 - 74
7 - 71
6 - 68
5 - 65
4 - 62
3 - 59
2 - 56
1 - 53
0 - 50
Однако, в игре можно увидеть, что помимо вышеприведённых 9 скиллов есть еще 5, но они являются производными от первых 9, и чтобы их не пришлось кому-то узнавать методом тыка, я их, пожалуй, тоже распишу:
Awareness = Passing + Ball Ctl
Accel = Speed + Reaction
Bicycles = Agility + Fitness
Headers = Aggress + Agility
Shot Pwr = Speed + Ball Ctl
Для примера, (Passing 95 + Ball Ctl 50) / 2 = Awareness 71 т.к. (F + 0) / 2 = 7
Последний байт всегда пустой - видимо тоже для корректного чтения, но здесь 2 нуля а не один, как у команд, а с предпоследним байтом даже 3.
На этом по внутренннему устройству игроков, пожалуй, всё. Дальше потом про составы и лиги напишу.