Перейти к содержанию

Garik66

Помогаторы
  • Постов

    5 750
  • Зарегистрирован

  • Победитель дней

    292

Весь контент Garik66

  1. Хотя может не сработать, просто в файле main.LUA, для твоего случая, описания writeBytes нет. Поэтому лучше сделать так:
  2. Вот проверь, писал в блокноте, не проверял:
  3. нет 1. скрипт морозит запись в таблице, 2. должен морозить конкретный адрес не зависимо находится он в таблице или нет. Можно написать скрипт для конкретных (статичных) адресов игры. Но в этом случае вместо memoryrecord_freeze нужно будет использовать writeBytes и чуть-чуть изменить скрипт, плюс не будет крестика перед адресом, если он находится в таблице, но в игре адрес заморозится, так как write на LUA это тоже самое, что и mov на ассемблер. А про скрипт на ассемблер я уже тебе писал раньше в другой теме.
  4. Когда смотрел твои скрипты, мне показалось, что под все адреса отводятся 4 байта. Но на всякий случай тот же скрипт под одно-байтовый адрес. где readBytes('00A3F3E5',1) - readBytes - читать по адресу '00A3F3E5', а 1 -количество байт. Отрывок из файла main.LUA
  5. "При поиске указателей находится адрес, по которому и искали указатель " - довольно частый случай, особенно в играх, где инструкций работающих с нужными адресами мало (обычно 1 на запись и 1 на чтение), а адресов, с которыми работают эти инструкции очень много. Я сам практически никогда не ищу указателей, но изредка бывает необходимость и тоже сталкивался с такими ситуациями. Предложу способы: 1. Воспользоваться Сканом указателей самой СЕ (кстати, по-моему в версии СЕ 6.4 в настройках Скана был пункт, как раз касающийся этой проблемы, по-моему звучал так "Не учитывать указатели, приводящие к зацикливанию". В СЕ 6.5 я этого пункта не нашёл.), т.е. автоматическим поиском указателей. 2. При ручном поиске указателей откатиться на 1 (а может быть два) указателя назад и выбрать другой адрес. (Помню ну очень было обидно когда после 8 смещения нарвался на зацикливание , тогда так и бросил поиск не доделал). 3. Попробовать самому составить указатели прыгая по коду игры. В этом случае нужны высокие навыки в реверсе кода. По этому пункту лучше сразу же обратиться к MasterGH. 4. Отказаться от поиска указателей. И написать скрипты.
  6. Не знаю проверил ли ты или нет, с какими адресами работает твоя инструкция. Если не с одним адресом, то нужно делать фильтр. Если инструкция работает только с НР твоей лошадки, то объясню как нужно написать твой скрипт. инструкция fstp dword ptr [esi+28] нам указывает, что в регистре FPU st(0) лежит текущее значение НР, т.е чтобы лошадка стало бессмертной тебе нужно заменить значение в этом регистре на максимальноe, как быстрее это сделать, смотри скрипт: Если окажется, что в найденном тобою смещении "[esi+c4] - (в этом смещении тоже значение фл. 350)" значение не постоянно и меняется, то можно переписать скрипт так:
  7. 1. Как я понял control - это название адреса, который нужно заморозить. Тогда нужно добавить таймер (из 3 скрипта) для проверки условия (условие правильно написано во 2 скрипте), т.е. так: Проверь скрипт. (Возможно, что нужно будет добавить ещё один end. Мне к сожалению скрипт проверить не на чем.) PS: Ниже в видео проверил работу скрипта - скрипт работает. Действительно нужно было добавить один end. (Скрипт поправил здесь же.) 2. Почему скрипт не работает - потому что нужно подключить таймер, чтобы была постоянная проверка условия и его выполнения при активации скрипта. И как оказалось при проверке memoryrecord_freeze работает только с записью в таблице (а не с конкретным статичным или с указателями адресом), т.е. может заморозить адрес (или скрипт) по названию, ID или Index записи. На 3. вопрос пусть ещё кто-нибудь ответит.
  8. Точно MasterGH, забыл я про этот способ, хотя им пользовался.
  9. Так как ты обычно забиваешь кучу адресов которые находятся рядом в регионе памяти (помню что визуально они отличались на 4 байта), то останется только вручную поменять смещения, т.е. открываешь адрес и прямо вверху добавляешь +4 (или -4) и сохраняешь адрес.
  10. Как временное решение. Полуавтоматизация: добавляешь допустим пять адресов - 10 нажатий в таблицу. (5* "Добавить"+"Подтвердить") Копируешь все пять, вставляешь - ПКМ+Копировать+ПКМ + Вставить + Вставить - 5 нажатий. Копируешь все 10 и вставляешь - 5 нажатий. Копируешь все 20 и вставляешь - 5 нажатий. Итого за 25 нажатий имеем табличку - с 40 адресами. Дальше копируешь свой адрес, ну и раскидываешь по 40 адресам (как тебе нужно) добавляя (или отнимая) к адресу смещения. А лучше вначале вставить адрес, а потом копировать и вставлять. Тогда останется потом прибавить(отнять) смещения.
  11. Ну да - я забыл, что там окошко вываливается (где можно сразу отредактировать либо смещения, либо сам адрес) и его ещё нужно закрыть.
  12. Куда уже быстрее. ПКМ/"Копировать"/ПКМ/"Вставить". Здесь не долго и до этого: "А я хочу функцию автонаписания скриптов, т.е. включил игру/включилСЕ/Нажал кнопку -> Бумц и все читы в красивом трейнере"
  13. не бред , просто на СЕ Асссемблер не знаю как сделать это отдельным потоком. Вот в этом и просил помочь. Вот сейчас реализовал с помощью Sleep, но вставкой LUA, в ней автоматически идёт отдельным потоком и поэтому всё работает, как и задумывалось. Скрипт посмотри, если интересно, в теме: Работает на много точнее (ну и самого кода поменьше), предложенного тобой метода, т.е. Sleep "3000" точно соответствует ровно 3 сек задержки таймера.
  14. Ну и напоследок (надеюсь , что напоследок). 3.4. Вариант с использованием функции Sleep. пример скрипт "Timer Mission v. Sleep LUA". Этот метод всё-таки точнее, т.е. Sleep "3000" соответствует ровно 3 сек задержки таймера. Табличку перезалил ниже.
  15. В скриптах что ты мне приводил в ЛС (для объединения), это одни и те же адреса (работающие с одной инструкцией) и их многовато для ручного добавления.
  16. Благодаря gmz и этой теме Sleep для ассемблер СЕ. было найдено ещё одно решение для пункта 3. Замедление таймера 3.3. Вариант с получением времени работы инструкции inc eax (Call GetTickCount64) и с созданием отдельного потока под неё. пример скрипт "Timer Mission v. GetTickCount64". Подробности прочитайте в теме по ссылке.
  17. Я это уже увидел, цикл в том что Inc eax не сработает пока eax не станет равным 1000 - а это всё равно цикл. По-видимому притормаживает, так как визуально в игре пауза около 3-х секунд. gmz, не смотря на все твои: и своеобразную подачу инфы - СПАСИБО тебе большое!!! - часто мне помогаешь. Результат выложил здесь:
  18. Так отлично заработало, gmz, ещё вопрос. Скольки секундам будет соответствовать, например cmp eax,1000?
  19. Да перепутал (b в jb меня запутало, я почему-то это увидел как jb @b), но моя ошибка не меняет дела - в коде у тебя всё равно цикл. Твой вариант сейчас попробую
  20. Razi, практически все инструкции, которые ты давал для написания скриптов и есть уже выполненный пункт 2., пример И вот, если ты разберёшься с этим - тебе не нужно будет добавлять вручную кучу адресов в таблицу (или в скрипт).
  21. Этот вопрос совсем не понял, поэтому не знаю что ответить.
  22. Записывает 1 во все адресы, с которыми работает та инструкция. Т.е. это пункт 2. из предыдущего сообщения.
  23. gmz, а об этом нужно было сразу предупредить - я же не телепат, ( я уже тебе писал - спускайся с небес твоего уровня знаний на наш, давай информацию более подробно, если уже решил её дать). Поставил паши и попы, где нужно - вылетов из игры нет. Но, если вставить твой код вместо inc eax, то это просто приводит к замораживанию значения eax (т.е. проще занопить инструкцию). Если же вставить твой код перед inc eax. то eax продолжает увеличиваться как не в чём не бывало, как будто твоего кода и нет. Так что приведу лучше весь скрипт, думаю в твоём коде где-то ошибочка , проверь его пожалуйста.
  24. Razi, ты зациклился на ручной вставке адресов. По началу я тоже так делал, пока количество адресов не превысило 10. Способов несколько: 1. Либо создать вручную цикл (не добавки адресов в таблицу или в скрипт - это нонсенс , прикинь, если адресов будет больше сотни, у меня например был случай, когда мне нужно было скопировать участок размером больше 300 (точнее 364 байт) - читай тему Как скопировать участок памяти. ) 2. Выходить на игровую инструкцию (контейнер, обычно в такой инструкции участвуют два регистра, например mov eax,[ebx + 4*ecx+04], где ebx - указатель на структуру, а ecx - ID нужной нам характеристики), где эти адреса появляются. К сожалению ссылку на табличку давать бессмысленно, так как доступ туда пока для тебя закрыт, поэтому приведу два примера своих скриптов для Героев 2: Обрати внимание, сколько бы пришлось тебе добавить адресов в табличку (скрипт), например в первом скрипте максимум - // 20736 байт, во втором тоже много.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.