Лидеры
Популярный контент
Показан контент с высокой репутацией 18.02.2016 во всех областях
-
Выполнял этот запрос - Assassin’s Creed Chronicles: India и решил написать заодно небольшую статейку для новичков. Статья будет короткой, пояснения внутри скриптов, работа скриптов показана на видео. Поиск самих значений таймера в этой статье не рассматривается. По поискам значений есть много статей и видео. Варианты решения задачи с таймером (какой вариант использовать и где, решать Вам). 1. Заморозка таймера. 1.1. С помощь опкода NOP пример скрипт "Timer Mission Freeze v. Nop": 1.2.* С помощью опкода DEC пример скрипт "Timer Mission Freeze v. dec " 2. Обнуление таймера при достижении определённого значения пример скрипт "Timer Mission v. Adding a limit to the timer": 3. Замедление таймера 3.1. Вариант с добавлением дополнительного внутрискриптового таймера: пример скрипт "Timer Mission v. timer slowdown v. Adding a timer inside the script": * - вариант скрипта может приводить в некоторых играх к вылету, в конце в видео я это показал. В этом случае нужно выяснять из-за чего происходит вылет (для данной игры я не делал этого). Но что-то подобное происходило у меня при написании скрипта на патроны для Fallout 3 и там я решил проблемы с вылетами и объяснил почему происходил вылет, если появиться желание можете почитать в той теме - Видео: Ну и сама табличка со скриптами и уже назначенными адресами: PS: Табличку выложил ниже.1 балл
-
1 балл
-
Half-Life: PROSPEKT Просмотреть файл Бессмертие. Бесконечные патроны. Убийство с одного выстрела. Бесконечный фонарик. Без отдачи оружия. Сначала запускаем игру - потом запускаем трейнер и активируем его, а далее активируем нужные нам опции. DEMOGAMEPLAY Автор LIRW Добавлен 18.02.2016 Категория Трейнеры для PC игр1 балл
-
Версия 1.0.0
92 раза скачали
Бессмертие. Бесконечные патроны. Версия игры 1.01 Crack (JorjVirus69 / SKiDROW) В игру встроен руссификатор был - DLC от ZoG Forum Team / R.G. Кинозал.ТВ версии 1.5 На вряд ли он повлияет на работоспособность, но всё же указал. Сначала запускаем игру, а потом трейнер и когда появились в миссии уже - активируем опции...1 балл -
Версия 1.2.5 RIP (Механики)
84 раза скачали
Бессмертие. Бесконечные патроны - без перезарядки оружия. Бесконечные гранаты - молотов. Убийство с одного выстрела. Это опцию активируем только после того, как нанесли врагу хотя бы какой то урон. Выстрелили в него или ударили - только потом активируем опцию. Сначала запускаем игру - потом запускаем трейнер и активируем нужные опции. DEMOGAMEPLAY1 балл -
Ну и для закрепления. Мы написали скрипт, выложили его в паблик и нам пишет ну допустим "Несообразительный пользователь". "Несообразительный пользователь" - "Я включил скрипт, а время не как в игре. Сделайте пожалуйста как в игре. Из сообщения мы понимаем, что пользователь хочет, чтобы таймер был поделён на минуты и секунды. И тут вмешиваетесь Вы, так как уже написали скрипт 2. Обнуление таймера при достижении определённого значения пример скрипт "Timer Mission v. Adding a limit to the timer": Вы - "Это просто, добавим ещё один таймер и каждые 60 секунд будем обнулять секундомер, а минутный таймер увеличивать на 1." Немного подумав, Я - "И это всё? Вы точно всё учли?" И через паузу - "А если "Несообразительный пользователь" активирует скрипт не вначале миссии, когда таймер равен 0, а в середине, например после 10 минут? В этом случае нам нужно разово сделать пересчёт секунд в минуты и остаток записать в секундомер." Итак с первым заданием разобрались. Но "Несообразительный пользователь" не унимается - "Я поставил уровень сложности "Кошмар", а там интерфейса нет, как в Hitman: Absolution и таймера не видно, сделайте мне пожалуйста, чтобы скрипт хотя бы каждую минуту сообщал мне об этом." Итак со вторым заданием тоже всё ясно - нужно добавить какой-нибудь звуковой сигнал и чтобы он звучал каждую минуту. Для этого уже ассемблера СЕ нам не хватит, придётся использовать вставки на LUA. И снова "Несообразительный пользователь" - "И сделайте пожалуйста, чтобы таймер обнулился на 12 минутах, а потом каждые 2 минуты. (время подобрано, чтобы не удлинять видео) Ну вот и третье задание. Сам скрипт на этот раз комментировать не буду. После скрипта опишу некоторые новые опкоды и немного LUA. 4. Скрипт по заданию "Timer Mission v. Sound" Новое на ассемблер: 1. fild dword ptr [timer2] - копируем значение в [timer2] в st(0), сдвигая стек, одновременно переводя значение из Integer во Float. 2. fistp dword ptr [timer2] - выталкиваем из st(0) в [timer2], восстанавливая стек, одновременно переводя значение из Float в Integer, но fistp при этом делает либо усечение (в нашем случае если остаток меньше 30 секунд), либо округление (если больше 30 секунд). На самом деле есть более подходящий для нас опкод fisttp (который отбрасывает дробную часть), но он почему то не компилируется СЕ, поэтому пришлось добавить дополнительные 6 строчек в код: jb @f //1 sub eax,ecx mov [timer3],eax jmp code2 @@: //2 sub [timer2],1 //3 add eax,#60 //4 sub eax,ecx //5 mov [timer3],eax //6 Про вставку на LUA. {$LUA} - выполнить LUA код. {$ASM} - выполнить код на ассемблер СЕ. timer = createTimer(true) - активируем таймер, обратите внимание на это, обязательно деактивируйте таймер при выключении скрипта: [DISABLE] {$LUA} timer:setEnabled(false) timer:setInterval(5) - устанавливаем интервал timer.OnTimer = function() - функция таймера, т.е. что нужно проверять и делать. getAddressList() - функция получающая данные с Вашей таблицы getAddressList().getMemoryRecordByID("63").Value == "59" - проверяет равно ли, значение записи в таблице с ID=63, 59. (в нашем случае это Second Timer). как узнать ID записи в таблице -> посмотрите эту тему - Как посмотреть название, ID и индекс записи в табличке СЕ. Используется LUA-скрипт от MasterGH. PlaySound(findTableFile([[Activate]])) - проигрывание встроенного звука активации скриптов в СЕ, если Вы хотите какой-нибудь другой звук, то посмотрите мой видео урок sleep "1000" - нужен для того, чтобы сигнал прозвучал один раз, уменьшая 1000 Вы можете добиться, чтобы сигнал прозвучал два раза, три и т.д. Если убрать sleep "1000" совсем, то вместо сигнала будет тарахтение в течении 1 секунды. Полностью прокомментировать, что делает скрипт попробуйте сами. На видео показана работа скрипта: И залил табличку со всеми скриптами этой темы. Добавил ещё один скрипт и перезалил табличку в следующем сообщении.1 балл
-
Продолжим. Скрипт 3.1. имеет ограничение - мы можем замедлить таймер только в 2 раза, в 3, в 4 и т.д. Т.е. можем использовать только целые (Integer) числа. А что, если пользователю нужно замедлить таймер в полтора раза, в 2.5, в 8,5 и т.д. В этом случае скрипт 3.1. нам не поможет, придётся переписать его. В работе с нецелыми числами (дробными, вещественными, числами с плавающей точкой - короче FLOAT) нам поможет математический сопроцессор, т.е. FPU. Для изучения вопроса наберите например работа с вещественными числами в поисковике. Лично мне понравилась вот эта статья часто к ней обращаюсь, если пишу что-нибудь для дробных чисел. Как разберётесь не много, то уже задавайте более конкретный вопрос поисковику - например ассемблер fadd. Выложу написанный скрипт, как всегда, для понимания - что он делает, прочтите комментарии внутри скрипта. То, что уже комментировал раньше в скрипте не стал комментировать. Закомментировал, только что делают новые опкоды: FLD1, FDIV, FADD, FSTP и FSUBR. 3.2. Вариант с делением шага игрового таймера: пример скрипт "Timer Mission v. timer slowdown v. division step of the game timer". Скрипт 3.2. более универсальный подойдёт как для целых, так и для не целых значений. На видео показана работа скрипта и половина видео посвящена, как отслеживать онлайн значения регистров FPU. Видео: Ну и табличка с 6 скриптами и нужными адресами: Ниже залита табличка со всеми скриптами этой темы.1 балл
-
Да, реально. Предвижу несколько способов. Покажу на мой взглядлучший из них, но не проверенный и не полный, поэтому могут быть ошибки. function FunctionSpawnCar(hotkey) autoAssemble("CREATETHREAD(SpawnCar)") end function SetHotKey(func, hotkey) local objectHotKey = createHotkey(func, hotkey) generichotkey_setKeys(objectHotKey, hotkey) generichotkey_onHotkey(objectHotKey, func) end function Deinitialization() autoAssemble([[ unregistersymbol(SpawnCar) dealloc(SpawnCar) ]]) end function Initialization() local address = ... // получить адрес вызываемой функции local AAscript = [[ alloc(SpawnCar,2048) registersymbol(SpawnCar) label(stringCar) SpawnCar: push ... push ... push stringCar call ]]..address..[[ ret stringCar: db ... 00 // hex-строка машины оканчивающаясь нулевым символом ]] autoAssemble(AAscript) --создание формы трейнера -- ... --привязка функции Deinitialization() к закрытию формы -- ... --Назначение хоткеев setHotKey(FunctionSpawnCar, VK_F2) -- спавн некоторой машины end function onOpenProcess(processid) Initialization() end local aalist = getAutoAttachList() stringlist_add(aalist, "gta4.exe") Как видно здесь Lua код вперемешку с Автоассемблером. Есть инициализация, деинициализация, првязка горячей клавиши, создание потока на АА. Могут быть проблемы с поточной синхронизацией или другие, надо проверять на практике... 1. Можно ли на Lua делать удобнее не знаю. Для каждого человека своё видение удобства.2. По горячим клавишам можно выполнять Lua функцию, которая могла бы на АА скриптах что-то делать... создавать новые "секции кода" и уничтожать старые. 3. Переменные можно менять и без Lua. Зарегистрируй их в АА через registersymbol. Создай другой АА который бы менял значения по зарегистрированным меткам. 4. Когда Lua поддержки в CE не было у меня была та же проблема. Lua я не знал, но учился на примерах.1 балл
-
Если Вам кажется что в игре какие-то действия происходят слишком медленно или слишком быстро, то почему бы не увеличить или не уменьшить скорость. Герой будет быстрее передвигаться, быстрее стрелять... или же этот процесс можно замедлить. А вдруг в игре Вы что-то долго ждёте: медленные разворачивающиеся события... В таких случаях можно использовать следующий скрипт на Lua. speed = 1.0 function IncSpeed(hotkey) speed = speed + 1 speedhack_setSpeed(speed) end function DecSpeed(hotkey) speed = speed - 1 speedhack_setSpeed(speed) end function ResetSpeed(hotkey) speed = 1.0 speedhack_setSpeed(1.0) end function SetHotKey(func, hotkey) local objectHotKey = createHotkey(func, hotkey) generichotkey_setKeys(objectHotKey, hotkey) generichotkey_onHotkey(objectHotKey, func) end function onOpenProcess(processid) SetHotKey(IncSpeed, VK_F2) SetHotKey(DecSpeed, VK_F3) SetHotKey(ResetSpeed, VK_F4) end local aalist = getAutoAttachList() stringlist_add(aalist, "UT3.exe") Измените горячие клавиши и имя процесса на свои данные. Константы горячих клавиш найдёте здесь. Если вам нужно задать комбинацию горячих клавиш таких как "CTRL+1", то посмотрите справку по createHotkey и generichotkey_setKeys. Горячие клавиши записываются через запятую в этих функциях...1 балл