-
Постов
155 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные SergBrNord
-
-
16 минуту назад, Garik66 сказал:
У Механиков есть в антологии игра Serious Sam 3 - BFE - это она?
Просто у тебя в заголовке игра называется Serious Sam HD: TSE, вот я и подобрал наиболее подходящую из антологии.
Нет, это не оно. Объяснил в ПС.
Покопался и нашел смещения, хранящие значения патронов для оружия:
Скрытый текст[ECX] + ...
588 - дробовик/двустволка
798 - миниган/автомат
5А8 - ракеты
5B8 - гранатомёт
5C8 - огнемёт
5D8 - лазерное ружьё
5E8 - серьёзная пушка
5F8 - снайперская винтовка
608 - серьёзная бомба
Попробую похимичить со значениями, но как показало себя вмешательство с бронёй - игра очень нервно реагирует на изменение содержимого ECX.
-
Гарик, ты развил прям-таки бурную деятельность. Но есть один мааааа-хонький нюанс - ты сделал таблицу для "Классики", а движки SE1 и SE3 работают по-разному.
Я проверил твою идею о том, что реальное значение хранится как вещественный тип. Действительно, при выборке в поиск всех типов значений находится и float, но на движке SE3 оно как раз-таки экранное.
Скрытый текст18 час назад, Garik66 сказал:Думаю не работает фильтр свой/чужой в скрипте, поэтому морозятся все брони, а так как урон НР в игре скорее всего проходит только когда бронь разрушена, то морозится и НР.
Интересно. Я даже как-то не подумал о таком варианте, хоть он вроде бы даже и логичен. Поставлю остановов на запись - может чего и выловлю. Хотя в последнем варианте я всё-же записывал после того, как урон наносился. Странно.
-
По мотивам беседы с Гартком в ПМ, пытаюсь совладать с броней и получился такой казус - если пытаться писать скрипт под броню отдельно от здоровья, то получается, что он морозит и здоровье противников тоже... Как я понял, это связано с особенностью пересчёта здоровья и брони игрока.
Собственно, у меня сейчас такой вариант скрипта:
Скрытый текстnewmem: mov [ecx],eax cmp dword ptr [ecx+A0], 2 jne code mov dword ptr [ecx], 63 mov dword ptr [ecx+14], 62 code: mov edx,[edx] mov edx,[edx] jmp return
В данном случае запись идёт уже после получения урона, что отображается в игре другом значение нежели 98. А существует вообще в данном случае вариант записать значение брони так, чтобы получаемый урон на него не влиял?
-
4 часа назад, Garik66 сказал:
Стандартная ошибка всех, кто начинает (не беспокойся все эту ошибку делают ).
Посмотри участок твоего кода:
mov dword ptr [ecx], #99 // записываем 99 НР code: mov [ecx],eax // и сразу же затираем их значением в eax/
Действительно, глупая ошибка; от постоянной возни с C# у меня как-то в голове перепуталось, что ассемблерный код не является функциями и выполняется последовательно (а возился я с asm года этак с 4 назад).
4 часа назад, Garik66 сказал:Записывают XORированные значения (XORирование через две константы) в два соседних адреса, а потом дальше по коду сверяют их друг с другом и, если значения в этих адресах не совпадают, то Ваш ГГ лопается - смотрится очень прикольно кстати - мне понравилось .
Т.к. игра на SeriousEngine3, тут возможна следующая подлянка - за игроком по уровням будет быстро-быстро носится неубиваемая зверюшка и сильно мешаться (это происходило в пиратских SS3)
2 часа назад, LIRW сказал:И всё равно - что то я не то мне кажется дал... Там на СЕ форуме есть тема как раз про эту игру. И там всё описано понятно. Там просто слишком много переходов по ссылкам - по этому и запутался я.
В общем что бы не путаться - вот она Тема
Спасибо, почитаю. Собственно, мне интересно, как работают все вышеуказанные примеры, так что я их обязательно попробую!
Кстати, те первые две инструкции (которые в окне прерывания на доступ) работают с количеством убитых монстров и набранных очков; чит-режимом.
P.S.
Собственно, как задумывался скрипт - в SS HD: TSE есть очки; очки даются как за убийство монстров, так и за сбор предметов на уровне (патронов, аптечек). Соответственно, необходимо установить параметр здоровья в такую максимальную величину, чтобы можно было всегда собирать предметы. Так что меня ещё ждёт броня и оружие. Заодно попробую сделать телепорт по мотивам уроков Xipho и неуязвимость от зон смерти (шипов & etc.)
-
Здравствуйте!
Я обучаюсь по видеокурсу Xipho и малость застрял на фильтрах "свой/чужой".
Делал всё по ГОСТу - нашёл инструкцию, покопался в структурах игрока и противника, написал скрипт, который не работает, как мне кажется, из-за неверного определения местонахожения структуры игрока
Помогите разобраться, где я ошибся.
Насколько я понял, идёт сравнение значений, в начале структуры(?), указатель на который находится в ECX, и значения в EAX; если не совпадает - идёт запись нового значения в начало структуры.
Скрины с редактором памяти и окном прерывания на доступ.
Скрытый текстПозже я при помощи врагов нашёл ещё парочку адресов, которые работали с этой инструкцией и посмотрел, что там находится.
Окно разбора структур. Игрок; враг_1; враг_2; враг_3 соответственно.
Скрытый текстПо смещению А0 там находилось неизменяемое значение - у игрока оно всегда было равно 2.
Соответственно, я написал следующий скрипт, который не работает:
Скрытый текстnewmem: cmp dword ptr [ecx+A0], 2 jne code mov dword ptr [ecx], #99 code: mov [ecx],eax mov edx,[edx] mov edx,[edx] jmp return SAM_HP: jmp newmem nop return: registersymbol(SAM_HP)
Serious Sam HD: TSE; взлом здоровья
in Вопросы по созданию читов в одиночных играх
Опубликовано · Изменено пользователем SergBrNord
Ух ты! Я и подумать не мог, что можно использовать регистры в качестве фильтров )
Собственно, твой скрипт работал на всё, кроме брони, поэтому я немного его модифицировал:
И такой вопрос - данные скрипты, не пишут броню, если её 0. А вот как так сделать, чтобы при получении урона, если брони 0 писалось значение в 98?
Вот такой вариант у меня не работает:
@@: //Запись брони cmp [ecx], 0 je @f cmp [ecx+40], #16 jne code cmp [ecx+2C], 1 jne code mov eax, #98 @@: //Запись брони, если 0 cmp [ecx], 0 jne code mov [ecx+14], #98
P.S.
До внедрения кода на команду выше, чтобы заменяло только "mov edx, [ebp+08"] и "mov [ecx],eax", я тоже вряд ли бы додумался)