Мы продолжаем взламывать игру, в этом уроке вы научитесь программировать на языке LUA. И даже сможете создавать свои собственные элементы меню которые смогут напрямую влиять на игру.
>> КАНАЛ БАБУЛИ <<
>> ПЕРВЫЙ УРОК СМОТРИТЕ ТУТ <<
А перед тем как мы научимся программировать отвечу на ваши вопросы из прошлого видео.
Всё из-за проблем с кириллицей на Windows 7 , 8 и 10.
По этому всегда загружайте игру только на английской раскладке клавиатуры.
Но если вы зайдете с русской раскладкой то настройки собьются. Как защититься от того что вы забыли поставить английский ?
1) зайдите в игру с английской клавиатурой и настройте всё как вам удобно, затем покиньте игру.
2) в корневой папке FarCry есть файл game.cfg - в нём содержатся настройки управления игры. Надо защитить этот файл от редактирования.
Заодно можно добавить горячие клавиши для быстрого СОХРАНЕНИЯ и ЗАГРУЗКИ игры. Открываем обычным текстовым редактором.
Теперь защищаем файл от редактирования. Заходим в свойства файла и ставим галочку "только для чтения"
Почему нету режима статистики ?
Откройте файл system.cfg через блокнот или любой тексотвый редактор
найдите строчку g_timezone и задайте значение 31337
После этого статистика будет доступна.
Мод должен лежать в папке FarCry / Mods
Есть несколько разных способов как запускать моды:
1) зайти в меню модификации и выбрать нужный вам мод
2) создать ярлык для запуска мода, вот таким образом:
Если нужен режим разработчика (Devmode) то надо ещё дописать -devmode
3) запускать через бат файлы, в некоторых модах они лежат в папке
Если нету, то создаём вручную.
Для этого создаем текстовый документ и открываем его.
И вбиваем вот такой код, только вместо Matto3 ставьте название своего мода (т.е. название папки с модом)
Если нужен девмоде режим, дописываем строчку -devmode
Теперь меняем расширение файла на bat или cmd
4) запускать моды через программу Crysis Launcher. Она подходит и на крайзис и на фаркрай.
С этой программой можно грузить не только моды, но и просто одиночные либо сетевые уровни
Ну что будем учиться программировать ?
Но для начала пересмотрите первый базовый урок по взлому игры вот по этой >> ссылке << иначе многое из этого урока будет не понятно.
Для начала копируем стандартный архив со скриптами в папке FCData
Переименовываем его например в zzCheats.pak
буковки "zz" в начале имени нужны для того чтобы наш мод был в алфавитном списке самым последним.
Если прочитаете логи игры из файла log.txt то увидите что игра грузит архивы в алфавитном порядке подменяя один архив другим и если в двух архивах окажутся одинаковые файлы, то работать будет тот который последний.
Теперь попробуем создать свою кнопку в меню которая будет напрямую влиять на игру, например прибавит нам патронов при нажатии на неё.
Открываем наш мод при помощи архиватора (winrar или 7zip). По пути SCRIPTS/MenuScreens лежат файлы страниц меню:
Кампания - Campaign.lua
Сетевая игра - Multiplayer.lua
Настройки - Options.lua
Профили - Profiles.lua
Модификации - Mods.Lua
Демо-ролики - DemoLoop.lua
Авторы - Credits.lua
Тут есть 3 варианта кнопок: TopMenuButton и BottomMenuButton это одинаковые кнопки, отличие только в расположении на экране. Top значит сверху, Bottom значит снизу. Но если вы в параметрах кнопки указали свой отступ сверху то вообще нету разницы
SideMenuButton - это кнопка в виде текста на который можно нажать.
Во время игры когда вы нажимаете кнопку "ESC" вы попадаете в страницу меню которое лежит по пути: SCRIPTS/MenuScreens/Ingame/InGameSingle.lua
Я вам рекомендую использовать вместо обычного блокнота, Notepad2 или Notepad++ разницу ощутите сразу ! Там скрипт код будет подсвечиваться разными цветами, можно настроить отображение максимально удобным чтобы вы не запутались в нагромождении кодов и чисел.
Вот вам ссылки на официальные сайт обоих программ
Текстовый редактор Notepad++
Текстовый редактор Notepad2
Чтобы вам было проще учиться у меня есть для вас готовые шаблоны скриптов, >> скачать их можно здесь <<
Под цифрой 2 здесь есть пример кода кнопки,
копируем его и вставляем в наш мод в SCRIPTS/MenuScreens/Ingame/InGameSingle.lua
Там где на изображении выше выделено зеленым, это функция которая будет выполняться при нажатии на эту кнопку в меню, вот сюда как раз и нужно вставлять строчки кода для исполнения.
Давайте вставим код прибавляющий патроны
В шаблонах под цифрой 2 есть разные примеры кода для вставки
_localplayer.cnt.ammo= 800; -- этот код то что нам нужно, при нажатии на кнопку он сделает нам 800 патронов текущего оружия в текущем режиме стрельбы. Через точку прописан путь к переменной которая была задана в других скриптах и мы можем её менять.
Через _localplayer - мы ссылаемся на главного героя Джека Карвера за которого вы играете.
cnt - это сокращенное current, что означает текущий параметр. ammo - это патроны.
И данные этой переменной на которую мы ссылаемся мы приравниваем к количеству которое нам нужно получить
Результат нажатия мы видим на рисунке ниже. У нас теперь 800 патронов
Точно по такому же принципу создаём кнопку для получения 100% брони
Код здесь точно такой же только в конце armor вместо ammo.
И обратите внимание мы сделали возможность добавлять по 100% при каждом нажатии на кнопку вот таким кодом:
_localplayer.cnt.armor=_localplayer.cnt.armor+100;
А координаты кнопки нужно сдвинуть левее на ширину кнопки. Т.е. было left=360, а станет left=280.
Аналогично делаем кнопку для получения 100% здоровья
Вот такой код у кнопки:
А 255 здесь потому что именно это число считается 100% здоровьем, прописано это в скрипте GameRules.lua
Если перед текстом на кнопке добавлять вот такие коды состоящие из знака доллара и числа, то цвет текста поменяется
Вот таким образом сделали кнопку "Health" с красным текстом:
text= "$4Health",
аналогично с кнопкой "Armor" для получения брони.
Теперь как переводить всё на русский язык
По пути FarCry/FCData/Localized лежит архив с локализацией, в нашем случае он содержит перевод игры на русский язык.
Fonts - русские шрифты
missiontalk и voicepacks - русская озвучка
Textures - текстуры с русскими словами
А всё что ниже отмеченное на картинке зелёным это переводы текстов на русский
menutable.xml - содержит перевод всех страниц меню
все эти xml файлы легко редактируются при помощи программы Microsoft Office Exel (экселькой проще говоря)
Вот так выглядит открытый файл menutable.xml
1 столбец - это ключи переводов, слова без пробелов типа хештегов в интернете. По ним мы обращаемся к нужному нам переводу
2 столбец - перевод на английский, заполнять его вообще не обязательно, т.к. для английского обычно используется своя собственная локализация. Это как правило отдельный архив english.pak
3 столбец - текст перевода на русский.
Для больше совместимости мы не будем трогать файл menutable.xml , а лучше создадим свой собственный файл. для этого копируем menutable.xml на рабочий стол и переименовываем как нам нужно
Затем в нашем меню создаем точно такой же код как на картинке выделенный зелёным, только вписываем своё название локализации вместо menutable.xm .
Language:LoadStringTable("ВАШЕ_НАЗВАНИЕ.xml");
Вставили код в самое начало скрипта InGameSingle.lua
И в кнопках через @ делаем ссылку на локализацию см. на картинке.
Второй способ локализации это text = Localize("armor_add"),
И теперь всё стало на русском
Чтобы лучше научиться программировать на языке LUA вы можете испытывать простые коды при помощи >> этого онлайн тренажёра <<
В нём можно создать простой скрипт и моментально увидеть как он работает. Вот например как работает связка If-Then- End
По русски это означает:
Это фильтрующая связка она срабатывает когда условие подходит, вот например у нас локальная переменная a=85, первое условие что "а" должно быть больше 100 не подходит, а вот второе самое то.
В третьем условии а=100 тоже не подходит.
В игре подобный код можно наблюдать везде и повсюду. Например:
ЕСЛИ ( ваше здоровье = 0 ) ТО: -- условие когда вас подстрелили
СТОП ИГРА - ПЕРЕХОД В ГЛАВНОЕ МЕНЮ;
КОНЕЦ
если переменная не имеет числа или значения, то в языке LUA считается что она равна nil
Знак " ~= " означает НЕ равно