Лидеры
Популярный контент
Показан контент с высокой репутацией 07.09.2011 в Сообщения
-
Решил написать статью о том, как правильно скрипты писать. Она не призвана научить вас писать скрипты с нуля "шоб работало". Пишу лишь для того, чтоб народ понял как грамотно делать ту или иную функцию, и выглядело это красиво. И так - по порядку: 1. Бессмертие. В большенстве случаев, когда люди пишут скрипты на бессмертие, они отлавливают функцию, которая работает с адресом здоровья (не важно какого она типа), и присваивают значению здоровья какое-то астрономическое число, мотивируя это тем, что "наверняка, чтоб точно не убило", или просто ленятся подумать. Очень любит подобными вещами заниматься Grom-Skynet, из-за чего его функции выглядят слегка "колхозно". mov [eax+смещение]#999999 //а то и больше девяток, сколько смелость позволит ))) Так делать не правильно, т.к. в большенстве случаев из-за таких вот "здоровий" игра по-просту вылетает, игра не может такие цифры воспринять (и это ясно, таким здоровье быть и не может) Грамотнее всего в данном случае либо найти максимум здоровья и присвоить его текущему здоровью (не полиниться и найти есть ли такой), или просто занопить. Поверьте, визуально это будет выглядеть более эстетично. Если есть максимум здоровья, то сделать чит с его помощью проще простого. Предположим, что текущее значение здоровья это еах+04, а максимальное значение еах+08, тогда: push [eax+08] //запоминаем значение максимума pop [eax+04] //восстанавливаем его в текущее здоровье Бывают случаи, когда здоровье типа float. Тогда подгрузить максимум здоровья можно лишь одной опирацией. fst [eax+08] если значения максимума нет, то нопить функции можно таким способом [enable] db 90,90,90,90 //в зависимости от того, сколько байт занимает исходная инструкция [disable] db 45,FA,25,65 // просто оригинальные байты 2. Стрельба без перезарядки В данной ситуации ищется кол-во патронов в обоиме и изменяется, но опять таки не на 999 (и снова Grom-Skynet здесь мастак это делать). От такого кол-ва патронов игра так же начнёт тупить и думать, а можно ли перезарядку делать или нет (обоимы то разные). Такая функция делается следующим образом, предположим, что кол-во патронов это еах+10. Вот так делать НЕ ПРАВИЛЬНО: mov esi,#999 mov [eax+10],esi //родной кусок кода А вот так ПРАВИЛЬНО: inc esi //увеличивает значение esi на 1 mov [eax+10],esi //родной кусок кода ИЛИ add esi,1 //в данном случае нужно указывать на сколько увеличить esi mov [eax+10],esi //родной кусок кода Значение патронов в обоиме будет всегда максимально и гемора будет меньше в будущем. 3. Деньги (или ещё какой-нить шмот) И опять сами-знаете-кто любит присвоить деньгам значение 9999999 (денег же много не бывает). В принципе можно и так делать, но впечатление складыватся, что без "читов" тут дело не обошлось. Если глаз не мозолит, то ничего страшного, пусть будет 999999 денег. Я предпочитаю в данном случае либо морозить значение денег на определённой отметке, чтоб ниже его не опускалось (например денег может быть и 51862, и 56923, но ниже 50000 не опустится), либо просто функцию добавления денег (+1000 золотый например). Если хотите, чтоб значение не опускалось ниже 50000, то нужно отлавливать функцию, которая записывает новое значение в адрес денег. Пусть еах+65 это деньги. mov [eax+65],ebx //именно так эти функции выглядят. то скрипт в данном случае будет выглядеть так: cmp ebx,#50000 jge originalcode mov ebx,#50000 originalcode: mov [eax+65],ebx Т.о. меньше, чем 50000 денег не станет как ни старайтесь... Если хотите добавлять 1000 денег, то нужно отлавливать функцию, которая чаще всех будет получать доступ к деньгам. mov ebx,[eax+65] //функция доступа выглядит примерно так... Далее нужно ввести некую переменную (пусть будет _money), и навесить на неё хоткей чтоб тот присваивал переменной значение 1. Скрипт будет выглядеть так. cmp dword ptr [_money],1 jne originalcode add [eax+65],#1000 mov [_money],0 //чтоб бесконечного цикла не получилось... originalcode: mov ebx,[eax+65] на нажатию хоткея добавится 1000 денег (как резко зависит от того, как часто инструкция получает доступ к деньгам) 4. Прыжки Чем меньше флагов в скрипте - тем лучше, но полностью от них отказаться не возможно. По-этому свидём использование их к минимуму. Тут уже сам Dark Byte зачем-то в стандартном шаблоне навтыкал ненужные флаги - а именно exit и originalcode. Покажу вам наглядно как обойтись без них. Подопытным кроликом я использовал игру The Elder Scrolls 3: Morrowind (не кидайтесь плз фикалиями, знаю что старьё). По-мимо прыжков на флаги можно использовать прыжки через байты. jmp +3 je +3 jne +3 Как видите синтаксис тот же, но изменилось то, что прыгаем через некое колличество байт (указывается в шестнадцатиричной системе счисления) И так, я написал скрипт, который сделает здоровье, ману и выносливость бесконечными. [ENABLE] alloc(newmem,2048) label(returnhere) newmem: fstp dword ptr [ecx+08] push [ecx+04] pop [ecx+08] ret 0010 jmp returnhere "Morrowind.exe"+122F: jmp newmem nop returnhere: [DISABLE] dealloc(newmem) "Morrowind.exe"+122F: fstp dword ptr [ecx+08] ret 0010 //Alt: db D9 59 08 C2 10 00 и знаю, что в ecx+0c хранится идентификатор героя 746464. Но не знаю через сколько байт нужно прыгнуть, чтобы вразу не приписывалось здоровье и тд. Вычисляется кол-во байт следующим образом. в данном случае мне нужно перепрыгнуть push [ecx+04] и pop [ecx+08]. 1. Активируем скрипт каков он есть. 2. смотрим в отладчике что скрипт делает теперь и замечаем байты нужных нам строк. Я обвёл красным те байты, которые мне нужно перепрыгнуть. Судя по картинке их 6 (шесть круглешков) Следовательно мне нужно перептыгнуть 6 байт, и мой скрипт будет выглядеть теперь вот так. [ENABLE] alloc(newmem,2048) label(returnhere) newmem: fstp dword ptr [ecx+08] cmp [ecx+0C],746464 jne +6 // если не равно перепрыгнуть через 6 байт. push [ecx+04] pop [ecx+08] ret 0010 jmp returnhere "Morrowind.exe"+122F: jmp newmem nop returnhere: [DISABLE] dealloc(newmem) "Morrowind.exe"+122F: fstp dword ptr [ecx+08] ret 0010 //Alt: db D9 59 08 C2 10 00 как видите обошёлся двумя флагами (один из которых и флаг и выделение памяти под скрипт).1 балл
-
Witcher 2:Assassins of Kings v1.0.6041-GOG Edition +5 Trainer v1.0 Описание Numpad 1 -> iNFiNiTE Health Numpad 2 -> iNFiNiTE Power Numpad 3 -> Add 1000 Experience Points Numpad 4 -> Add 10 Talent Points Numpad 5 -> Level Up Скрин: Скачать: Ссылка1 балл
-
~Rogue Warrior [1.0] +4 Trainer {1.0} 07.09.2011:~ ~Описание:~ Numpad 1---------------------Infinite Health Numpad 2---------------------Infinite Ammo Numpad 3---------------------No Reload Numpad 4---------------------Infinite Grenades ~Скриншот:~ ~Скачать:~ Ccылка1 балл
-
~Dead Island [1.0] Cheat table {1.0} +5 (07.09.2011):~ ~Описание:~ Hotkeys: Numpad 1---------------------Infinite Health Numpad 2---------------------Infinite Stamina Numpad 3---------------------Indestructible Weapons Numpad 4---------------------Add 1000 Cash Numpad 5---------------------Add 1000 Experience ~Скачать:~ DeadIslandGame.rar1 балл
-
~D a r k S i d e r s [1.0.0.1] +6 Trainer {1.0} 01.09.2011~ ~Описание:~ Numpad 1---------------------Infinite Health Numpad 2---------------------Infinite Wrath Numpad 3---------------------Infinite Chaos Power Numpad 4---------------------One Hit Kill Numpad 5---------------------1'000'000 Blue Souls Numpad 6---------------------Freeze Mission Timer ~Скриншот:~ ~Скачать:~ Cсылка От админа: Трейнеры надо заливать к нам, если они весят меньше двух мегов. //Xipho //Трейнер весит больше 2мб.1 балл
-
~Deus Ex:Human Revolution~ [1.1.622.0] +11 Trainer {1.2} UPDATED 01.09.2011~ ~Описание:~ Numpad 1---------------------Infinite Health Numpad 2---------------------Infinite Energy Numpad 3---------------------Infinite Stamina Numpad 4---------------------Infinite Ammo Numpad 5---------------------No Reload Numpad 6---------------------Freeze Viruses Numpad 7---------------------Add 1000 Credits Numpad 8---------------------Add 5000 Experience Numpad 9---------------------Add 10 Praxis Numpad 0---------------------No Weapon Overheating(Heavy Machinegun) Numpad /----------------------Infinite Ammo for Laser Gun ~Скриншот:~ ~Скачать:~ Cсылка1 балл
-
Dragon Age 2 v1.03(only) +9 Trainer v1.0 Описание: NUMPAD 1 -> Infinite Health (Только гГ) NUMPAD 2 -> Infinite Mana NumPAD 3 -> Infinite Potions (Зелье 999) NUMPAD 4 -> Add 10 Attribute points NUMPAD 5 -> Add 10 Ability Points NUMPAD 6 -> Add 10 Spec. Points NUMPAD 7 -> Add 100 Gold NUMPAD 8 -> Inventory Capacity 999 (Емкость Инвентаря ->999) NUMPAD 9 -> Set Items Weight To 1 (Поставить вес всех предметов ->1) Скрин Скачать: Ссылка1 балл