Новости Кладовая Кузня Жжеш Инвентарь Волшебство

Взлом с использованием ArtMoney, исходников датабазы и консольных комманд

Неуязвимость и Бестелость

Игра за персонажей монстров

Взлом имени персонажей

Изменение скорости персонажа

Левитация

Игра за неодушевленные предметы типа кустов, деревьев домик с Гипата

Изменение внешнего вида персонажа

Теория читерства в ПЗ

____________________________________________

 

В этой теме рассмотрены все известные автору на данный момент методы и способы взлома сетевой (сингловой) частей игры Проклятые земли. Для реализации этих методов будут необходимы следующие инструменты:
1. ArtMoney (или любой другой редактор с аналогичными функциями)
2. Исходники датабазы (databasaLMP.res)
3. Полный список скриптов (консольных комманд)
4. Патч разрешающий ввод консольных комманд в сетевой игре
Автор не пропагандирует взлом данной игры, все сведения, выложенные в данной теме носят чисто познавательный характер.

Взлом с использованием ArtMoney
Программа ArtMoney создавалась как универсальный взломщик к любым играм. Она умеет сканировать память или файлы игры для поиска каких-то определенных значений (деньги, ресурсы и т.д.). Таких значений может быть много и надо выбрать нужные, поэтому поиск разделяется на два этапа - поиск значений и отсев ненужных значений. В итоге получаем адреса, в которых находятся числа, и их можно изменить на нужные.

Поиск в памяти процесса игры. Запустите ArtMoney и потом игру. Выберите, какой параметр, вы хотите сломать и запомните его. Переключитесь из игры на ArtMoney, используя Alt-Tab. Если не помогает, то Ctrl-F12. Теперь выберите процесс с игрой. Если, например, хотим денег, жмем на кнопку "Искать" и выберем метод искать "Точное значение". Поскольку игра не знакомая, то ставим тип - все(стандартные). Это общий принцип применимый для большинства игр.

Для взлома конкретно игры Проклятые земли необходимо вместе с самой программой ArtMoney скачать готовые таблицы.

Таблиц представлено три:
Armor (доспехи)
Weapon (оружие)
Spell (заклинания)

Метод взлома стандартные, сначала в окне конструктора заклинаний (доспехов/оружия) собирается собственно само заклинание (доспех/оружие), далее переключаемся через Alt-Tab в программу и ищем некоторое определенное значение (для заклинаний это "запас сил" для доспехов и оружия это "Вес"). Тип значения "с точкой 4 байта". Программа находит очень много значений, необходимо опять переключится через Alt-Tab в игру, разобрать заклинание (доспех/оружие) и собрать его заново (для заклинаний изменить набор рун, чтобы изменился "запас сил"), (для доспехов и оружия изменить материал, чтобы изменился "Вес" предмета). Переключиться в ArtMoney, и отсеять вновь найденное значение "запас сил/вес". Повторять эти операции до тех пор, пока не останется приблизительно 4-8 значений. Далее загрузить готовую таблицу (Spell/Armor/ Weapon), в правом окне выделить мышкой значение "запас сил/вес", в левом выделить одно из найденных значений и выбрать опцию "автозамена". Если все сделано правильно значение параметров в правой таблице изменятся на необходимые. Изменить любой параметр, заморозить его и опять переключится в игру, несколько раз собрать разобрать заклинание/предмет (чтобы убедиться в правильности найденного значения), если измененный параметр в игре не принимает нужного значения, то надо заново загрузить таблицу и повторить автозамену со следующим найденным значением. В случае возникновения каких либо вопросов, рекомендую обратиться к "руководству по взлому игр с помощью ArtMoney" которое присутствует в самой программе.

В итоге с помощью такого "взлома" можно получить предметы и заклинания с любыми характеристиками.

Взлом с использованием исходников датабазы
Исходники датабазы представляют собой набор текстовых файлов (таблиц), в которых прписывается большинство параметров персонажей, заклинаний, предметов, материалов для сетевой игры. В комплект входят и специальные утилиты для компиляции текстовых файлов (таблиц) в готовый файл databaseLMP.res.
Таблицы в принципе можно редактировать в любом текстовом редакторе, но я настоятельно рекомендую использовать Microsoft Exel (очень удобно). После редактирования и изменнения нужных параметров запускается утилита которая компилирует датабазу "databaseLMP.res", после чего датабазу нужно скопировать в директорию /res установленной игры, предварительно сохранив в безопасном месте имеющуюся в этой директории датабазу.

Взлом с помощью консольных комманд
Консольные команды (скрипты) представляют собой простой язык программирования, в Проклятых землях, начиная с версии 1.03, отключена возможность ввода консольных команд в сетевой игре. Для того, чтобы включить ввод консольных команд необходимо скачать специальный патч и установить его.
Консольные команды вводятся в консоли, которая вызывается пимпой "~", для активации режима ввода команд необходимо в консоли ввести thingamabob и нажать enter, после чего должно появится сообщение Activated!
Внимание! Список консольных команд с необходимыми пояснениями будет приведен в соседней теме в ближайшее время.
Большинство консольных команд из списка необходимо вводить с приставкой @ пример:
@playanimation(getleader(),"crest") (ваш персонаж должен вальяжно присесть)
Часть команд вводится без приставки @ пример:
lootall (в обоз персонажа должен переместиться весь лут с карты)

НИЖЕ ВЫЛОЖЕНЫ ВСЕ ИЗВЕСТНЫЕ МНЕ ЧИТЫ, КОТОРЫЕ РЕАЛИЗУЮТСЯ ВЫШЕИЗЛОЖЕННЫМИ МЕТОДАМИ

1. Неуязвимость


1.1 "Баксовая" броня
Название "баксовая" означает, что вместо числового показателя брони появляется значок 1.$, при этом персонаж одетый в такие доспехи становится в некотором роде бессмертным, урон нанесенный любым оружием с любыми характеристиками и заклинаниями с любыми характеристиками будет равен нулю.
Достигается такой эффект двумя способами:
а) С помощью редактирования датабазы.
В файле "Materials.txt" для какого либо материала необходимо в разделе Absorption в колонках (Piercing … General) исправить показатели. В значениях перед точкой добавить некоторое количество нулей, например 50 нулей (пример для материала Adamantium в колонках Piercing … General раздела Absorption показатели 6.162384551 изменяются на 600000000000000000000000000000000000000000000000000.162384551). После чего компилируется датабаза и копируется в каталог /res установленной игры. После захода в игру необходимо из матерала Adamantium собрать любые доспехи, в результате показатель брони таких доспехов будет 1.$. Легко убедиться, что персонаж одетый в такие доспехи подобен богу Правда не спешите радоваться, в свое время был создан патч, позволяющий убивать персонажей одетых в "баксовую" броню. Патч имеет название AntiBugs, автор патча MB. Эффект пробивания баксовой брони достигается за счет обнуления всей брони в игре, т.е. абсолютно все доспехи будут иметь показатель брони 0 в том числе и те которые вроде бы баксовые. Следует заметить, что после установки данного патча обычная честная игра становится по понятным причинам невозможна.

б) С помощью Artmoney.

Обычным способом (см. выше описание взлома с помшью Artmoney) находим значенние показателя брони и заменяем его на "яяя" с ковычками, в результате показатель брони станет -1.$ эффект такой же как и у брони 1.$ без знака минус, единственное появляется знак минус перед показателем, дополнительная фишечка

1.2 "Безтелость"
Название "безтелость" означает, что у персонажа нет областей для нанесения удара. Эффект достигается редактирование датабазы.
В файле "RaceModels.txt" датабазы необходимо изменить в разделах
(HL: Head … HL: Left Leg) в колонках:
- Type (значения Skull … Leg на значение None);
- Weight (цифры заменить на нули);
- Vitality (стереть значения).
Изменения проводить для нужного вам персонажа (строки) Human Male (мужской персонаж), Human Female (женский персонаж) либо если собираетесь играть за персонажа монстра, то для того монстра которым хотите играть.
После чего компилируется датабаза и копируется в каталог /res установленной игры. После захода в игру необходимо создать обычным способом нового персонажа, и убедиться в том, что области для удара, такие как голова, тело, руки и ноги отсутствуют. Урон от любого оружия, заклинания, скрипта будет равен нулю.
Методы убийства вашего персонажа, обладающего "безтелостью" также имеются, опять же есть патч. Автор патча MB, но беспокоится не имеет большого смысла, ибо в отличие от патча AntiBugs данный патч не распространен для свободного скачивания. Никто из играющих на данный момент такого патча не имеет, за исключением самого автора и возможно еще 1 - 2 человек. Никто из этих счастливчиков в Проклятые земли уже давно не играет

При применение неуязвимости п.п. 1.1, 1.2 персонаж неуязвим не только на сервере самого игрока, но и на серверах других игроков.

1.3 Неуязвимость с помощью скрипта (работает только на сервере самого игрока).
С помощью консоли вводится команда
@GodMode( nPlayer : float , Mode : float )
Команда: GodMode - устанавливает текущей партии игрока под номером: nPlayer режим: Mode - 0 значение по умолчанию, Mode - 1 партия неубиваемы при беге мана нерасходуется, Mode - 2 члены партии неубиваемы, при беге мана нерасходуется и любой юнит из партии убивает врага с одного удара.

2. Игра за персонажей монстров

2.1 С помощью ArtMoney
Я думаю все уже разобрались с программой ArtMoney, и не буду повторять механизм поиска и нахождения нужного значения.
Для начала необходимо немного рассказать о параметрах, которые влияют за отображение той или иной модели персонажа. Таких параметров два, это - параметр в колонке Mask name, раздела Graphics data, файла "RaceModels.txt" датабазы; параметр TypeID, раздела TypeID, файла "RaceModels.txt" датабазы. Оба параметра находятся рядом друг с другом, в соседних колонках. Параметр Mask name это практически название файла анимации для моделей из ресурсов игры, параметр TypeID это своего рода класс персонажей (человек, монстр, животное). В файле "RaceModels.txt" в колонке Mask name отображены все задействованные в сетевой игре названия файлов анимации для всех задействованных в сетевой игре юнитов. Для юнита Human Male название файла анимации прописано unhuma, для юнита Human Female прописано unhufe и т.д. для всех монстров и животных. В файле "RaceModels.txt" в колонке TypeID отражается класс юнитов, которых как уже упониманось 3, а именно - human (человеческие персонажи); monster (персонажи монстры); animal (персонажи животные). Класс юнитов влияет на отображение модели, т.е. если персонажу монстру monster изменить на human, модель получится неправильная (будут отсутствовать некоторые части тела). С этой проблеммой связано неудобство применения программы ArtMoney, возникают частые и малопредсказуемые ошибки, которые ведут к критическому завершению программы (игры). Тем не менее такой способ существует и следует о нем упомянуть.
Итак с помощью ArtMoney (персонаж при этом должен находиться на одной из баз пещера, ингос, суслангер, гипат) ищем и находим текстовое значение unhuma или unhufe (если вы играете женским персонажем), программа найдет несколько тысяч значений. Все найденные значения необходимо заменить на название файла анимации для монстра/животного за которое вы хотите играть, например хочется поиграть драконом (ищем в "RaceModels.txt" в колонке Mask name название файла анимации для дракона - unmodg). После замены unhuma на unmodg возвращаемся в игру и немного "шаманим" т.е. поговорить с какими либо NPC, возможно несколько раз, но в итоге у вас должен появиться дракончик, который будет слегка неправильный (осутствует шея например). Чтобы персонаж был полоценным необходимо аналогичным способом с найти и заменить класс персонажа human на соотвествующий monster или animal.
Еще раз напоминаю о возможных критических ошибках, и не рекомендую использовать данный способ.

2.2 С помощью консольных команд
Этот способ работает на порядок корректнее, применять следует именно его.
Для того, чтобы играть за персонажа монстра необходимо ввести последовательность консольных команда, команды вводятся поочередно одна за другой.
thingamabob
@createparty(0,"NameParty")
@addunittoparty(0,"NameParty::Hero","NameUnit")
@setcurrentparty(0,"NameParty")
@redeployparty(0)

Данные консольные команды следует вводить когда персонаж находится на одной из баз (гипат, суслангер, ингос, пещера).
В данных командах приняты следующие переменные:
NameParty - название новой партии, может быть любым каким вы захотите;
NameUnit - имя юнита из файла "MonstersPrototypes.txt" из колонки Name, раздела Name;
Имя юнита выбирается исходя из вашего желания, в зависимости от того каким именно монстром/животным вы хотите играть. Важное замечание, имя юнита NameUnit писать в скрипте следует с учетом регистра (большие/маленькие буквы имеют значение), ошибки в написании имени юнита не допускаются, ошибка приведет к критическиому завершению программы.
Пример:
Мы хотим поиграть за дракона, в файле "MonstersPrototypes.txt" необходимо найти имя юнита-дракона, в колонке Name, раздела Name находим например "LMP Unique Dragon Plague Ancient 30" (это дракон повелитель из одноименного квеста в сетевой игре в пещере). Далее следует зайти в игру, создать обычным способом нового персонажа и зайти им на одну из баз (гипат, ингос, суслангер, пещера), ввести в консоли последовательность скриптов:

thingamabob
@createparty(0,"Dragon")
@addunittoparty(0,"Dragon::Hero","LMP Unique Dragon Plague Ancient 30")
@setcurrentparty(0,"Dragon")
@redeployparty(0)


В итоге получаем дракона, причем практически полноценного, с шеей
Неполноценность дракона будет заключаться в том, что он будет без имени, с 1 жизнью и 0 запаса сил, будет медленно перемещаться, при попытке зайти в магазин или в окно инвентаря игра будет вылетать с критической ошибкой.
Как сделать дракону имя мы рассмотрим чуть позже.
Проблема с заходом в магазин решается редактированием датабазы, а именно в файле "RaceModels.txt" в колонке TypeID для персонажа дракона (или любого другого которого вы сделали) необходимо заменить значение monster на human (или animal на human). Скомпилировать датабазу и установить ее в папку /res установленной игры (родную датабазу обязательно сохранить в безопасном месте!!!). Теперь персонаж дракон у вас будет выглядеть неполноценно, но сможет заходить в магазин, что очень важно для того, чтобы решить проблемму с медленным перемещением, 1 жизни и 0 запаса сил. После того как вы сделает в магазине все, что вам необходимо, следует вернуть исходную датабазу (чтобы дракон выглядел как подобает дракону), опять же сохранив исправленную в безопасном месте и в последующем при необходимости воспользоваться магазином менять датабазы.
После решения проблемы с заходом в магазин можно приступать к решению проблемы с медленным перемещением, 1 жизнью и 0 запаса сил. Необходимо войти в магазин, и ввести консольные команды:
thingamabob
give 0 exp 5000

проблема собственно решена, у персонажа появляются все необходимые скорость, жизни, запас сил.
Собственно вот таким вот нехитрым образом все и производится, следует заметить, что все монстры и животные полученные любым из двух способов будут без текстур (белые) с текстурами будут только орки и человеческие персонажи, проблема создания персонажей монстров с тесктурами на данный момент не решена.
Эти два метода позволяют создавать только персонажей монстров, которые задействованы в сетевой игре, как делать персонажей не задействованных в сетевой игре и играть за например елку, куст, или домик с гипата будет рассмотренно чуть далее.

3. Имена персонажей
Изменение имени персонажа одна из самых популярных фишек, смотрится достаточно эффектно
Имена изменяются с помощью ArtMoney.

3.1 Написание длинного имени или длинного названия клана
В окне выбора персонажей (там где выбирается каким из созданных ранее персонажей играть) выбирается персонаж с допустим именем "test", и нажимаем изменить название клана и вводим максимально возможное по количеству букв название клана (10 символов), допустим название клана будет 1111111111 то есть наш персонаж будет иметь такое вот имя с названием клана test | 1111111111 (17 символов!), переключаемся в ArtMoney и ищем текстовое значение "test | 1111111111" (без ковычек). Программа найдет от 4 до 7 значений, все эти значения заменяем на нужное нам (не больше не меньше чем 17 символов) например все заменить на ххххххххххххххххх переключаемся в игру и опять нажимаем изменить название клана, видим что у нас получилось имя персонажа ххххххххххххххххх именно этого мы и добивались. Если необходимо иметь еще больше символов имени персонажа, повторяем операцию. Изменяем название клана на ххххххххххххххххх | 1111111111 и опять запускаем ArtMoney повторяя все шаги, в итоге получаем уже 30 символов, хотите больше? Повторяем еще раз Допустим нас устраивает 17 символов в имени, имя ххххххххххххххххх состоящее из этих 17 символов не устраивает, опять запускаем ArtMoney и ищем наше 17-ти символьное имя ххххххххххххххххх, находим и заменяем на например SuperCheater 2004. Механизм думаю ясен и до предела прост. Длинное название клана получаем аналогично, делаем длинное имя, символов так 30 например хххххххххххххххххххххххххххххх и при замене в ArtMoney вставлем в нужном месте "|", с двумя пробелами по сторонам, т.е. хххххххх | ххххххххххххххххххх.

3.2 Вставка спец символов в имя или название клана
Аналогично можно использовать ArtMoney, и при замене вставлять спец символы.
Думаю подробно расписывать это не имеет смысла, так как после прочтения предыдущего пункта вопросов быть не должно.

3.3 Изменение цвета имени персонажа или цвета отдельных букв в имени персонажа.
Цвета изменяются нехитрым способом, а именно введение перед именем вот такой вот конструкции ^1 перед всем именем или перед какой либо буквой в имени. Пример делаем имя опять же с помощью ArtMoney например хххххххххххххххххх, н овместо первых двух символов хх ставим ^1ххххххххххххх в итоге получаем ник синего цвета независимо от того цвета который будет назначаться автоматически при заходе на сервер, а если сделаем так:
^1хххххх^2xxxxx то половина имени будет синяя, половина зеленая . Нетрудно догадаться, что что цифра после ^ означает цвет, предлагаю поэкспериментировать и самим установить какая цифра какому цвету соответствует.
В дополнение следует заметить, что таким образом можно менять цвет не только имени и названия клана, но и просто писать в игровом чате разными цветами, просто перед фразами или буквами вводить конструкцию ^n, где n- цифра, соответствующая определенному цвету.

3.4 Присвоение имени безымянному монстру (при создании персонажа монстра см. п.п. 2.2
Как и обещалось рассказываю о присвоении имени монстру в принципе уже наверное можно и самостоятельно догадаться.
По аналогии с п.п 3.1 ищем с помощью ArtMoney имя, возникает резонный вопрос как найти имя если его нету? Ответ прост имени действительно нет, а вот название клана можно ввести и найти Другими словами делаем монстру название клана xxxxxxxxxx, переключаемся в ArtMoney и ищем такую вот текстовую конструкцию "| xxxxxxxxxx" естественно без ковычек, находим и заменяем на хххххххххххх, легко заметить, что всего лишь заменили разделитель имени и названия клана "| " двумя символами "хх". В итоге повторяя вышеописанные операции получаем имя и по п.п. 3.1…3.3 делаем его супер навороченным (или простым).

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

4. Изменение скорости персонажа

Скорость персонажа меняется редактированием датабазы.
В файле "RaceModels.txt" в колонках Run … Crawl, раздела Speed, для нужного персонажа изменить значения, это и есть скорости передвижения персонажа при ходьбе, беге и т.д. При изменении значений в сторону увеличения существует предел 15.3, выше этого предела скорость не изменить. Т.е. изменить значения можно и на 200 и на 300, но в игре скорость больше чем 15.3 не поднимется. Скомпилировать датабазу, скопировать ее в каталог /res установленной игры, зайти в игру, обязательно создать нового персонажа (у которого скорость будет 15.3, на ранее созданных персонажей изменение не распространится)

Чтобы изменить скорость персонажа выше чем 15.3 необходимо редактировать еще и файл "MonstersPrototypes.txt". В колонке Move, раздела Tuning файла "MonstersPrototypes.txt" для нужного персонажа выставить значение 255, одновременно в разделе "RaceModels.txt" в колонках Run … Crawl, раздела Speed выставить значение 255. Скомпилировать датабазу, скопировать ее в каталог /res установленной игры, зайти в игру, и в отличие от предыдущего созлать нового персонажа скриптами (также как создавали монстров см. п. 2.2). Да ведь я забыл упомянуть, что скриптами можно создавать не только монстров но и обычных персонажей точно так же как и монстров, персонажей людей, задействованных в сетевой игре из файла "MonstersPrototypes.txt". В итоге у созданного таким образом персонажа скорость перемещения будет 150.0, согласитесь впечатляет, за 1 сек переместиться через всю карту

5. Левитация

Многие наверное видели в игре персонажей, которые спокойно бегали по воде аки по суху, так вот за эту способность отвечает левитация.
Взлом производится опять же с помощью датабазы, в файле "RaceModels.txt", в колонке Locomotion, раздела Secondary занченние с 1 изменить на 2, скомпилировать датабазу скопировать ее в каталог /res установленной игры, войти в игру создать нового персонажа и посмотреть на результат - рядом со значением скорости будет красоваться (левитирует), персонаж спокойно бегает по воде, забирается в ранее недоступные места.

6. Игра за монстров которых вроде бы нету в датабазе

Вспомним п. 2.2, там где играли за дракона и т.п. и вспомним сингловую часть игры, в сингле был такой монстр как Проклятье Джунов, летучемышеподобный драконообразый уродец. Им оказывается тоже можно сыграть. Все операции производятся аналогично п. 2.2 также вызываем дракона, но перед этим редактируем датабазу. В файле "RaceModels.txt", в колонке с названием файла анимации, как помнится это колонка Mask name, раздела Graphics data изменяем значение названия файла анимации для дракона, которое имеет название unmodg на unmocu. Unmocu это название файла анимации для Проклятья Джунов. Скомпилировать датабазу скопировать ее в каталог /res установленной игры, аналогично п.2.2 сделать скриптами дракона, но вместо дракончика у нас будет красоваться Проклятье Джунов. Все проще простого, единственное в чем возникнет проблема - откуда узнать названия файлов анимации для других незадействованных в сетевой игре монстров? Узнать это тоже не так трудно, достаточно всего лишь распаковать датабазу для сингловой части игры "database.res". Да именно распаковать, запаковывать мы уже научились, а вот распаковывать нет. Не беда дело 2 минут.
Создаем папку на диске с любым названием и копируем туда файл "database.res" туда же копируем файл из набора исходников датабазы с именем ResBuild.exe (он находится в папке /Utils. В этой же папке создаем тектовый файл в обычном редакторе типа блокнота. Содержание файла должно быть такое:

ResBuild.exe e database.res *.*

Сохраняем этот файл с расширение *.bat.
Таким образом в нашей папке должно лежать три файла database.res, ResBuild.exe и наш созданный файл с расширением *.bat (назовем его к примеру ext.bat). Далее следует запустить наш файл ext.bat и через несколько секунд в папке появятся нужные нам файлы. Файлы с расширением *.adb это и есть нужные нам названия файлов анимации, среди них вы увидите и те названия, которые уже прописаны в сетевой датабазе, но есть и те, которых в сетевой датабазе нету. Это как раз unmocu, файл панцирника unanwicr.adb - нам нужно только название без расширения т.е. unanwicr (его тоже нету в сетевой игре).
Кстати я упоминал игру не только за монстров, животных, людей, но и за неодушевленные предметы типа куста, дерева и т.д. Об этом расскажу в следующем разделе.


7. Игра за неодушевленные предметы типа кустов, деревьев домик с Гипата

Для начала следует сказать, что игра за неодушевленные предметы сама по себе не корректна и 100% будут критические ошибки, но если очень хочется то можно и с критическими ошибками ужиться.
Кстати я ведь не рассказал об одной интересной фиче, которая здорово упрощает ввод скриптовых команд, а эта фича просто спасает при игре за неодушевленные предметы, потому как приходится постоянно вводить одну и туже группу консольных команд. Итак вводить все команда вручную вовсе не обязательно, достаточно эти команды записать изначально в какой-нибудь текстовый файл. Создаем текстовый файл с любым названием и записываем в него наши команды в таком вот виде:

thingamabob
@createparty(0,"NameParty")
@addunittoparty(0,"NameParty::Hero","NameUnit")
@CopyStats(0,"Hero","NameParty::Hero")
@CopyItems(0,"Hero","NameParty::Hero")
@CopyLoot(0,"","NameParty")
@setcurrentparty(0,"NameParty")
@redeployparty(0)

естественно с нужными значениями NameParty и NameUnit см. п. 2.2.
Сохранить этот файл с каким либо названием (допустим monster), скопировать файл в корневую папку установленной игры. В последствии вместо того, чтобы каждый раз набирать вручную эти скрипты наберем в консоли простую команду

exec monster

monster естественно это название нашего файла.

Внимательно приглядевшись, можно заметить, что скриптов стало больше, я не ошибся в этом случае имеет смысл ввести в структуру еще две команды. Это сделано потому, что как я говорил при игре за неодушевленные предметы возникают критические ошибки. Ошибки возникают по такому принципу - после ввода скрипта и получения персонажа допустим дерева им нельзя будет повторно войти в игру, т.е. войдя на базу и запустив скрипт, получив дерево им можно только входить и выходить на карту, при выходе с сервера и попытке вторично выбрать получившегося персонажа игра вылетит в винду. Такой вот своего рода одноразовый персонаж. Естественно в таком случае невозможно добавить такому персонажу полноценности - имя, скорость, жизни и т.п. Эти введенные два скрипта позволяют получившемуся персонажу унаследовать имя и скорость и жизни и запас сил от "родительского" персонажа. То есть от персонажа, которого вы создаете обычным способом которым впоследствии заходите на базу из которого и получается персонаж (монстр либо неодушевленный предмет). Естественно эти же скрипты можно использовать и для создания простых монстров, для упрощения генерации имени и статов (под статами понимается как раз жизни, запас сил, и т.п.).
Далее переходим у непосредственно созданию неодушевленных моделей, принцип такой же как и при создании монстров которых вроде бы нету в датабазе см. п. 6. Все один к одному, за исключением названий файлов анимации, в данном случае их следует искать не в database.res, а в файле figures.res, который также необходимо предварительно распаковать. Содержание bat будет немного другим:

ResBuild.exe e figures.res *.*

Файлов распакуется а порядок больше, названия файлов анимации это названия файлов с расширением *.mod, опять же в датабазу следует записывать одно название файла, без расширения. Еще раз повторюсь, что придется при каждом перезаходе в игру создавать персонажа. Зато эффект того стоит. Я не буду расписывать какие названия каким именном предметам соответствуют, просо на просто лень, те кому интересно могут поэкспериментировать и выложить полный список.

8. Изменение внешнего вида персонажа (комплекции/фигуры/роста)


Многие наверное заметили, что стандартные параметры при создании персонажа не дают возможности получить более менее нормального персонажа, они получаются достаточно комичными (пузатенькие такие).
Меня в свое время заинтересовала проблема получения более менее реалистичного персонажа. Так вот оказывается есть возможность обойти стандартные игровые параметры.

8.1 Изменение роста
Рост меняется с помощью ArtMoney при создании персонажа стандартными игровыми методами. Ищется значение, меняется и т.д. Повторять в который раз работу программы ArtMoney думаю не имеет смысла. Единственно могу заметить, что рост персонажа ограничен только нижним пределом, если поставить рост -99 персонаж получается в виде такого комичного карлика с микроскопическим тельцем. Еще более уменьшать рост вредно, ибо игра будет вылетать.

8.2 Изменение комплекции (фигуры персонажа)
Есть два способа:
а) С помощью датабазы и скриптов
В файле "MonstersPrototypes.txt" в колонке Complection, раздела Graphics Data прописывается изначальная комплекция юнитов, задействованных в сетевой игре. В колонке через запятую стоит три значения например "0.4,0.3,1.1" - первая цифра "0.4" соответствует силе персонажа деленной на 100, т.е. если сила персонажа 40 то значение в колонке будет 40/100=0.4; вторая цифра соответствует ловкости (30/100=0.3); третья росту (110/100=1.1). Необходимо для заранее выбранного персонажа заменить значение на то, которое вам необходимо, например я в свое время делал "1.65,0.35,1.2" что соответствовало персонажу с силой 165, ловкостью 35, ростом 120 и получал этакого мистера олимпия. Далее как обычно собираем датабазу и скриптами см. п. 2.2 делаем персонажа. Вроде ничего сложного.

б) С помощью одной датабазы
В файле "Perks.txt" для perk'a Strength1, устанавливаем в колонке Shown Exp значение 0, в колонке Modifier то занчение которое хотим например 50. Аналогичным образом для perk'a Dexterity1 устанавливаем в колонке Shown Exp значение 0, а в колонке Modifier то значение которое захотелось например 15. Компилируем датабазу, устанавливаем ее, заходим в игру и в окне магазина берем себе навыки сила и ловкость, так как мы устанавили значения Shown Exp=0, то взятие этих навыков не будет стоить нам опыта, а прибавка к силе и ловкости будет 50 и 15. Эти изменения отобразятся на нашем персонаже, он офигурится в момент.

Следует уточнить, что я не люблю второй способ, а пользуюсь исключительно первым, с помощью датабазы и скриптов, так как первый способ не влечет за собой изменения самих параметров силы и ловкости, а только изменение фигуры.

© Noone

____________________________________________

Читер не тот, кто использует читы, а тот, кто их создает.

Chupacabr

Специально для честных игроков.

Теория читерства в ПЗ.

И немного извращенной практики...

Введение.

Cheater - в переводе с английского - жулик, обманщик. Читер это игрок, который преступил законы игры. Чит - лазейка, используемая читером для изменения игрового процесса. Если вас пугает данное определение читера, можете дальше не читать, а то вдруг тоже что-нибудь преступите...

Читеры бывают 2х типов: те, которые используют чужие читы и те, которые сами их создают. К первому типу относятся ленивые игроки, не желающие напрягаться при прохождении игры. Они бегут на ближайший сайт и скачивают оттуда тренер или список чит-кодов (в основном godmode и giveallweapon). Немного поиздевавшись над игрой, такие читеры быстро теряют интерес, но зато они "прошли" очередную игру.

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

Еще существуют "читеры"-попрошайки, они тоже довольно опасны. Эти "читеры" ленятся даже поискать информацию по игре. Они способны лишь выпрашивать читы (например, ломанные заклы) у более продвинутых читеров, но при этом у них очень быстро угасает интерес к игре, да и обычным игрокам они могут сильно навредить.

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

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

Впоследствии возможно перерождение читеров 2-го типа в модмейкеров.

Вообще любые читеры - это санитары игры. Они отбирают только самых преданных игре людей. А если таких было мало, значит, игра не имеет своей изюминки, сливается с серой массой однотипных игр...

Читеров можно ненавидеть, бояться или проклинать, но без них нельзя обойтись.

Часть 1.

Введение в техники читерства.

Девушки бывают разные:

Черные, белые, красные...

Отпетые мошенники

В игре Проклятые Земли существует 3 основные техники читерства.

1) скриптовый язык

2) игровые ресурсы (база данных по сетевой игре)

3) прямой доступ к значениям памяти (Artmoney, Magic Trainer Creator)

I. Скриптовый язык.

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

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

II. Игровые ресурсы (база).

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

База - это совокупность текстовых таблиц с параметрами игры. Она позволяет изменять практически любые значения игровых объектов. В умелых руках это гибкий читерский инструмент.

В основном база используется для изменения значений урона, защиты и цены предметов, эффекта и длительности заклов и создания сильных персов (бестелость, неуязвимость, скорость, левитация, характеристики, телосложение, радиус зрения...)

III. Artmoney.

Чаще всего artmoney применяется, как и база, но для использования всех преимуществ artmoney перед базой желательно неплохо знать компьютер (хотя, если идти уже по проложенной дорожке, то это знание вовсе необязательно).

Но кроме изменения параметров игровых объектов, artmoney позволяет писать длинные имена со спецсимволами и превращаться в монстров.

Все это подробно описано в руководстве Noone.

Часть 2.

Особенности и ошибки ПЗ.

Взгляд изнутри.

Я вчера разбил гитару,

Не случайно, неспроста.

Она мне вдруг предсказала

Дату близкого конца.

Черный Обелиск

Про стандартные способы читерства сказано уже довольно много, но тут я буду морочить голову низкоуровневыми аспектами взлома. Затронуть данную тему я решил из-за скорого выхода патча Античитер, который поможет борьбе простых игроков с читерами. Низкоуровневый способ взлома наиболее сложен, но возможности его ограничены только знанием ассемблера и опытом программиста. А ассемблер уже не так популярен как раньше, сейчас даже вирусы пишут на дельфи...

Для разбора ПЗ нам понадобится IDA Pro, SoftICE и Artmoney. Первые две программки (и инструкцию по установке SoftICE) можно взять с сайта cracklab.ru. Также желательно знать что такое ассемблер и набор команд сопроцессора. Если вас эти слова сильно пугают, то лучше сразу перейти к части 3.

Поставим задачу по написанию патча против бестелых игроков. Для начала надо решить с какой стороны подходить к раскопкам и куда копать. Проанализируем бестелость: бестелый перс, это такой перс у которого нет тела и по нему нельзя попасть, значит, где-то в коде игры есть проверка на количество (или наличие, например I: Если частей_тела>0 то нанести повреждение; или II: Если часть_тела[i]==существует то нанести повреждение) частей тела и в зависимости от результата нанесение урона. А такое может быть только в процедуре нанесения урона. А при нанесении урона обычному персонажу уменьшается здоровье, поэтому здоровье и будет той ниточкой, которая приведет нас к процедуре урона. Для отладки игру лучше запускать в окне, в стартере в настройках есть соответствующая опция.

Для поиска здоровья воспользуемся Artmoney и скриптами. Сначала создаем нового перса и выходим на карту. В консоли пишем thingamabob и #hp(getleader()). Появится значение здоровья перса. Т.к. это значение с плавающей точкой, то определить точное значение невозможно, поэтому, свернув игру и запустив Artmoney, надо искать диапазон значений (например, здоровье перса 47.833, искать надо диапазон 47.83 - 47.84). Найдется несколько значений, возвращаемся в игру, бьем себя кабаном, жмем паузу и опять узнаем здоровье в консоли, отсеиваем. Когда найдено одно значение, мы записываем его на бумажку (при запущенном отладчике останавливается даже винда) и закрываем Artmoney. Вызываем SoftICE (Ctrl+D) и пишем “addr game” и потом “bpm Наш_Адрес_Здоровья w”, естественно без кавычек, и жмем F5. Потом разворачиваем игру (и пытаемся атаковать кабана, пытаемся, потому что отладчик сильно достает) и записываем на бумажке все адреса, на которых SoftICE останавливался. Обязательно во время игры должны быть нанесены повреждения. После этого опять вызываем SoftICE и пишем “bc *” и “bpm Адрес_Останова1 x”, жмем F5 и смотрим частоту появления отладчика. Если он появляется всегда, даже когда вы ходите или стоите, то значит это не та функция. Надо вызывать отладчик заново и повторять “bc *” “bpm Адрес_ОстановаN” где N это очередной записанный на бумажке адрес. Нужным нам адрес будет вызывать отладчик только во время нанесения удара. Основная функция по расчету урона: 525070 (отладчик будет появляться на адресе 5253B2). Трассировка функции при различных характеристиках персонажа показала, что если тело отсутствует, то происходит прыжок почти на выход из функции. Для обычного урона происходит простое сравнение, но при нанесении магического урона происходит еще и исключение сопроцессора, и тоже выход из функции. Если изменить все эти переходы, то бестелому персонажу будет наноситься урон. Это способ на проверку количества частей тела. Есть еще один способ. В конце главной функции есть еще одна, в которой происходит расчет урона в зависимости от показателя брони для каждой части тела. В этой функции в антибаксе стоит обнуление брони. Это как раз способ на наличие частей тела. Для исправления похожих ошибок (например, с непробиваемой антимагией) действовать надо так: устанавливать точку останова на функцию нанесения урона и трассировать. Если останова вообще не происходит, то надо проверять вызывающие функции. Проще всего это делать не в отладчике, а в дизассемблере (IDA Pro)

Для написания патча Античит я переделаю патч антибакс, дополнив его фильтрацией обнуления, чтоб не обнулять простую броню. Еще попробую ограничить наносимый урон. Ну и соответственно включу пробивание бестелости.

А теперь про особенности. При анализе ассемблерного кода и трассировки игры я пришел к выводу, что ПЗ очень не любит "нечисла", специальные битовые значения, которые не могут быть представлены числом. Если броня или защитный закл имеют в показателе защиты "нечисло", то они приобретают удивительные свойства. А если эффект заклинаний усиления или ослабления установит "нечислом", то их можно будет накладывать поверх уже наложенных обычных заклов.

Часть 3.

Комментарии к практическим занятиям от Noone.

"~" - это не пимпа, а тильда :)

После редактирования в Excel'e необходимо сохранять формат файла, а то ексель умеет лихо преобразовывать txt в xls.

Ну, это общее, а теперь конкретно:

Про бакс в artmoney.

Вообще-то знак "-" это не дополнительная фишечка, а принципиально другое значение. Оригинальный бакс выставляется в редакторе памяти значением 7F800000. Для сопроцессора это означает бесконечность. А -1.$ получается, если выставить "нечисло" (FFFFFF00 в примере Noone), специальное значение в сопроцессоре. Для бакса это не имеет принципиального значения, но для заклов и оружия имеет! Например, закл Антимагия со значением "бесконечность" ведет себя вполне нормально (абсолютно защищает от магии), но если выставить значение "нечисло", то будут происходить некоторые странности (закл станет защищать от ЛЮБОГО урона и при этом не отображаться). Атакующие заклы и оружие не могут иметь специальных значений (бесконечность, нечисло).

Бестелость.

Параметр Type менять не нужно, а параметр Vitality в этом случае бесполезен. Он служит для другого типа бессмертия и выставляется везде в 0%,1% или -1%. При этом тело существует, но на жизнь не влияет. Патч от бестелости существует для свободного скачивания :)

Имя в artmoney.

Т.к. в ПЗ используются Си строки с двоичным нулем на конце, то соответственно имя можно делать любой длины, но не забывать ставить в редакторе памяти завершающий 0.

© CAHEK7

25.01.2004

04:22

 

 


Page in development. There will be additions © 2005
Используются технологии uCoz