Найти тему
Бабуля TV

✅ Как взломать Far Cry ? часть 2 Уроки взлома игр от бабушки Авдотьи

Оглавление

Мы продолжаем взламывать игру, в этом уроке вы научитесь программировать на языке LUA. И даже сможете создавать свои собственные элементы меню которые смогут напрямую влиять на игру.

>> КАНАЛ БАБУЛИ <<
>> ПЕРВЫЙ УРОК СМОТРИТЕ ТУТ <<

А перед тем как мы научимся программировать отвечу на ваши вопросы из прошлого видео.

-2

Всё из-за проблем с кириллицей на Windows 7 , 8 и 10.
По этому всегда загружайте игру только на английской раскладке клавиатуры.

-3

Но если вы зайдете с русской раскладкой то настройки собьются. Как защититься от того что вы забыли поставить английский ?
1) зайдите в игру с английской клавиатурой и настройте всё как вам удобно, затем покиньте игру.
2) в корневой папке FarCry есть файл game.cfg - в нём содержатся настройки управления игры. Надо защитить этот файл от редактирования.
Заодно можно добавить горячие клавиши для быстрого СОХРАНЕНИЯ и ЗАГРУЗКИ игры. Открываем обычным текстовым редактором.

-4
Добавляем в конце строчки для сохранения ( у меня здесь по кнопке F5)
Добавляем в конце строчки для сохранения ( у меня здесь по кнопке F5)

Теперь защищаем файл от редактирования. Заходим в свойства файла и ставим галочку "только для чтения"

-6

Почему нету режима статистики ?

-7

Откройте файл system.cfg через блокнот или любой тексотвый редактор

-8

найдите строчку g_timezone и задайте значение 31337

Если статистика не доступна скорее всего у вас g_timezone = "0"
Если статистика не доступна скорее всего у вас g_timezone = "0"

После этого статистика будет доступна.

-10

Мод должен лежать в папке FarCry / Mods

Есть несколько разных способов как запускать моды:
1) зайти в меню модификации и выбрать нужный вам мод

-11

-12

2) создать ярлык для запуска мода, вот таким образом:

-13

Если нужен режим разработчика (Devmode) то надо ещё дописать -devmode

-14

3) запускать через бат файлы, в некоторых модах они лежат в папке

-15

Если нету, то создаём вручную.
Для этого создаем текстовый документ и открываем его.

-16

И вбиваем вот такой код, только вместо Matto3 ставьте название своего мода (т.е. название папки с модом)

-17

Если нужен девмоде режим, дописываем строчку -devmode

-18

Теперь меняем расширение файла на bat или cmd

-19

4) запускать моды через программу Crysis Launcher. Она подходит и на крайзис и на фаркрай.

-20

С этой программой можно грузить не только моды, но и просто одиночные либо сетевые уровни

-21

Ну что будем учиться программировать ?

Но для начала пересмотрите первый базовый урок по взлому игры вот по этой >> ссылке << иначе многое из этого урока будет не понятно.

-22

Для начала копируем стандартный архив со скриптами в папке FCData

-23

Переименовываем его например в zzCheats.pak

-24

буковки "zz" в начале имени нужны для того чтобы наш мод был в алфавитном списке самым последним.

Если прочитаете логи игры из файла log.txt то увидите что игра грузит архивы в алфавитном порядке подменяя один архив другим и если в двух архивах окажутся одинаковые файлы, то работать будет тот который последний.

-25

Теперь попробуем создать свою кнопку в меню которая будет напрямую влиять на игру, например прибавит нам патронов при нажатии на неё.

-26

Открываем наш мод при помощи архиватора (winrar или 7zip). По пути SCRIPTS/MenuScreens лежат файлы страниц меню:


Кампания - Campaign.lua

Сетевая игра - Multiplayer.lua

Настройки - Options.lua

Профили - Profiles.lua

Модификации - Mods.Lua

Демо-ролики - DemoLoop.lua

Авторы - Credits.lua

Вместе со страницами лежит скрипт skin.lua он содержит дизайн всех элементов меню
Вместе со страницами лежит скрипт skin.lua он содержит дизайн всех элементов меню
-28

Тут есть 3 варианта кнопок: TopMenuButton и BottomMenuButton это одинаковые кнопки, отличие только в расположении на экране. Top значит сверху, Bottom значит снизу. Но если вы в параметрах кнопки указали свой отступ сверху то вообще нету разницы

-29

SideMenuButton - это кнопка в виде текста на который можно нажать.

Во время игры когда вы нажимаете кнопку "ESC" вы попадаете в страницу меню которое лежит по пути: SCRIPTS/MenuScreens/Ingame/InGameSingle.lua

-30

Я вам рекомендую использовать вместо обычного блокнота, Notepad2 или Notepad++ разницу ощутите сразу ! Там скрипт код будет подсвечиваться разными цветами, можно настроить отображение максимально удобным чтобы вы не запутались в нагромождении кодов и чисел.

Вот вам ссылки на официальные сайт обоих программ
Текстовый редактор Notepad++
Текстовый редактор Notepad2

-31

Чтобы вам было проще учиться у меня есть для вас готовые шаблоны скриптов, >> скачать их можно здесь <<

Скачанный документ открывайте так же как и скрипты текстовым редактором
Скачанный документ открывайте так же как и скрипты текстовым редактором

Под цифрой 2 здесь есть пример кода кнопки,

-33

копируем его и вставляем в наш мод в SCRIPTS/MenuScreens/Ingame/InGameSingle.lua

На картинке зелёным текстом всё уже подписано
На картинке зелёным текстом всё уже подписано

Там где на изображении выше выделено зеленым, это функция которая будет выполняться при нажатии на эту кнопку в меню, вот сюда как раз и нужно вставлять строчки кода для исполнения.
Давайте вставим код прибавляющий патроны
В шаблонах под цифрой 2 есть разные примеры кода для вставки

_localplayer.cnt.ammo= 800; -- этот код то что нам нужно, при нажатии на кнопку он сделает нам 800 патронов текущего оружия в текущем режиме стрельбы. Через точку прописан путь к переменной которая была задана в других скриптах и мы можем её менять.
Через _localplayer - мы ссылаемся на главного героя Джека Карвера за которого вы играете.

cnt - это сокращенное current, что означает текущий параметр. ammo - это патроны.

И данные этой переменной на которую мы ссылаемся мы приравниваем к количеству которое нам нужно получить

Результат нажатия мы видим на рисунке ниже. У нас теперь 800 патронов

-37

Точно по такому же принципу создаём кнопку для получения 100% брони

-38

Код здесь точно такой же только в конце armor вместо ammo.

И обратите внимание мы сделали возможность добавлять по 100% при каждом нажатии на кнопку вот таким кодом:
_localplayer.cnt.armor=_localplayer.cnt.armor+100;

-39

А координаты кнопки нужно сдвинуть левее на ширину кнопки. Т.е. было left=360, а станет left=280.

Аналогично делаем кнопку для получения 100% здоровья

-40

Вот такой код у кнопки:

-41

А 255 здесь потому что именно это число считается 100% здоровьем, прописано это в скрипте GameRules.lua

Если перед текстом на кнопке добавлять вот такие коды состоящие из знака доллара и числа, то цвет текста поменяется

-42

Вот таким образом сделали кнопку "Health" с красным текстом:
text= "$4Health",
аналогично с кнопкой "Armor" для получения брони.

-43

Теперь как переводить всё на русский язык

-44

По пути FarCry/FCData/Localized лежит архив с локализацией, в нашем случае он содержит перевод игры на русский язык.

-45

Fonts - русские шрифты

missiontalk и voicepacks - русская озвучка

Textures - текстуры с русскими словами

А всё что ниже отмеченное на картинке зелёным это переводы текстов на русский

-46

menutable.xml - содержит перевод всех страниц меню

-47

все эти xml файлы легко редактируются при помощи программы Microsoft Office Exel (экселькой проще говоря)

Вот так выглядит открытый файл menutable.xml

-48

1 столбец - это ключи переводов, слова без пробелов типа хештегов в интернете. По ним мы обращаемся к нужному нам переводу

2 столбец - перевод на английский, заполнять его вообще не обязательно, т.к. для английского обычно используется своя собственная локализация. Это как правило отдельный архив english.pak

3 столбец - текст перевода на русский.

Для больше совместимости мы не будем трогать файл menutable.xml , а лучше создадим свой собственный файл. для этого копируем menutable.xml на рабочий стол и переименовываем как нам нужно

-49

Затем в нашем меню создаем точно такой же код как на картинке выделенный зелёным, только вписываем своё название локализации вместо menutable.xm .

Language:LoadStringTable("ВАШЕ_НАЗВАНИЕ.xml");

это скрипт UISystem.lua
это скрипт UISystem.lua

Вставили код в самое начало скрипта InGameSingle.lua

И в кнопках через @ делаем ссылку на локализацию см. на картинке.

Второй способ локализации это text = Localize("armor_add"),

-51

И теперь всё стало на русском

-52

Чтобы лучше научиться программировать на языке LUA вы можете испытывать простые коды при помощи >> этого онлайн тренажёра <<

В нём можно создать простой скрипт и моментально увидеть как он работает. Вот например как работает связка If-Then- End

-53

По русски это означает:

-54

Это фильтрующая связка она срабатывает когда условие подходит, вот например у нас локальная переменная a=85, первое условие что "а" должно быть больше 100 не подходит, а вот второе самое то.
В третьем условии а=100 тоже не подходит.

-55

В игре подобный код можно наблюдать везде и повсюду. Например:

ЕСЛИ ( ваше здоровье = 0 ) ТО: -- условие когда вас подстрелили

СТОП ИГРА - ПЕРЕХОД В ГЛАВНОЕ МЕНЮ;

КОНЕЦ

если переменная не имеет числа или значения, то в языке LUA считается что она равна nil

-56

Знак " ~= " означает НЕ равно