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

Garik66

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

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

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

    292

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

  1. Как же победить этот чёртов телепорт?

  2. Собственно я так и делал и нашёл все инструкции для X и Y (и в портале и на переходах м/у уровнями они одинаковые (их две на каждую координату)), для Z - 3 инструкции (1 - при переходах м/у уровнями, 2 - при входе в портал из уровня в деревню и 3 - наоборот из деревни назад на уровень). Проблема в нахождении момента, когда игра получают команду загрузить карту, вот если бы это место отследить. Скачал, для того чтобы запустить в оконном режиме игру, свежую версию проги - "dxwnd v2_02_99_build(no locale)", благо они до сих пор её делают, крутая прога стала, не то что раньше, но зараза на английском. Мод для "Дьябло" запустить в оконном режиме не смог, а вот сам "Diablo - Hellfire" запустил. Поставил бряк, а там очень много шагов до выполнения загрузки (моего уровня знаний, читать такой код, явно не хватает) и самое главное отследить момент начала загрузки не получается, потому что вначале Герой стоит, потом рябь в окне игры и потом, после того как подвигать это окно, Герой уже вышел из портала. Я собственно бряками до этого не занимался. Вопрос - есть ли хороший видео урок на эту тему. Если есть, скиньте ссылку пожалуйста. Может всё-таки доделаю. Мне кажется, что если найти где искать, то там окажется всё просто. Скорее всего должно будет выглядеть так: 1. На (перед) инструкции, которая даёт команду какую карту игре загрузить, меняем циферками (от 0 (деревня) и до 16 (уровни)) номер нужной нам карты. 2. Загружаем Z, X, Y (по соответствующим инструкциям - их я уже нашёл) и........................... 3. Радуемся - У НАС ВСЁ ПОЛУЧИЛОСЬ!!! Короче если у кого-нибудь есть дельные мысли - советуйте, помогайте. Заранее - БОЛШОЙ СПАСЫБ!!! Ссылка на мод, для которого пишу трейнер - [ССЫЛКА УДАЛЕНА] Ссылку на прогу "dxwnd v2_02_99_build(no locale)" забыл откуда качал, но думаю ГУГЛ поможет. Кстати, если кому удастся запустить Diablo: The Hell [v1.196] [ENG] это мод в оконном режиме с помощью этой проги или как то иначе, тоже просьба - поделиться информацией. И тоже заранее - СЕНКУЮ БАРЗО!!!
  3. Занимаюсь написанием "Телепорта" для мода под старенькую игру "Diablo - Hellfire". С координатами X и Y разобрался - Герой прыгает в пределах уровня. (Пока разбирался, много приколов насмотрелся, особенно было смешно, когда бегало куча копий Героя ) Но никак не могу заставить прыгать Героя между уровнями. Для тех, кто не знает игры: в игре есть карты: Деревня ( с которой собственно и начинает Герой) и уровни в соборе, по смыслу спускающиеся вниз с 1 и по-моему по 16. На уровни можно попасть через входы или через порталы (соответственно идёт подгрузка карты). Якобы координату Z я нашёл и вроде бы даже нашёл инструкции, при которых Герой куда-то прыгает (я пытался сделать, чтобы прыгнул из подземного уровня назад в деревню или выше на уровень), но подгрузки карты не происходит и собственно на экране участок уровня без Героя и всё - играть больше нельзя, причём враги подходят и начинают бить пустое место, где ранее стоял герой. (Смотрится прикольно ) Мой вопрос в чём: 1. Можно ли реализовать чит "Телепорт" в подобных играх по трём (а не по двум) координатам? 2. Если нет, объясните почему? 3. Если можно, то как это сделать? Что я не учитываю?
  4. Уф восстановил. Получилось даже Красивше. Всё-таки идти по проторенной дороге гораздо быстрее - понадобилось двое суток вместо 2-х недель. Осталось поиграться с координатами и можно делать трейнер. Но вопрос "есть возможность как то восстановить?" оставлю открытым, вдруг кто-нибудь знает ответ. Да и забыл: Для новичков, таких же как и я. Столкнулся с проблемкой. И нашёл решение, может кому-то из новичков поможет. Перед случайным затиранием таблицы, у нас в доме погас свет, а какой-то из скриптов был активирован. Так как я использую Аобскан, вместо адреса игры в коде в результате вылета осталась метка адреса из скрипта. Когда при восстановлении таблицы я дошёл до написания этого скрипта, у меня метка адреса оказалась другая. В результате, активация вроде бы рабочего скрипта, приводила к вылету игры. Я вначале растерялся, перезагрузка не помогала, вручную вписать адрес в код нет возможности, я даже пару раз переустановил игру по глупости. Короче, если поняли в чём была проблема, решение: Создаём из инструкции, соответствующей нужному адресу игры, новый скрипт с использованием Аобскана. Оставляем в скрипте оригинальный код, главное метку адреса делаем как в начальном скрипте (перед вылетом). Активируем скрипт, выключаем и всё адрес игры восстановлен. Ну вроде бы так. Опытным пользователям просьба не смеяться, это я для нас неопытных написал.
  5. Попробовал, не пашет. Нашёл ещё одну ошибку в коде, нужно так: push edx // Заталкиваем в стекpush esi // регистрыpush ecx // чтобы восстановить потомpush ebx // оригинальные значенияmov ecx,16c // Записываем количество проходов в цикле{loop:} //МЕТКУ НУЖНО СТАВИТЬ НИЖЕ ПЕРВЫХ АДРЕСОВ!!!!!lea esi,[eax+dbc] // Поместить в ESI адрес старого участка памятиlea ebx,[eax+53a8] // поместить в ebx адрес-приемникloop:mov al,[esi] // загрузить в al байт из [ESI]mov byte ptr [ebx],al // записать в новый адресdec ecx // Уменьшить счетчик циклаinc ebx // Увеличить адрес-приемникinc esi // увеличить адрес-источникcmp ecx,0 // Достигли ли конца цикла?je @F // Если да, выходим из циклаjmp loop // Прыгаем на метку loop, то есть, переходим к следующей итерации цикла@@: // Безымянная метка для указания местоположения выхода из циклаpop ebx // Восстановлениеpop ecx // задействованныхpop esi // в циклеpop edx // регистров После этого всё заработало.
  6. ТОВАРИЩИ HELP!!!!!!!!!!!!!!!! Пока игрался с проверкой скриптов, случайно сохранил поверх своей таблицы нулевую таблицу. Неужели вся 2-х недельная работа на смарку (там 10 рабочих скриптов и куча адресов была)? Или есть возможность как то восстановить? Проверил скрипт: при запуске кода - игра вылетела.
  7. Мне кажется что в скрипте ошибка, Нужно сюда : dec ecx // Уменьшить счетчик цикла inc ebx // Увеличить адрес-приемник добавить ещё одну строку, т.е. так: dec ecx // Уменьшить счетчик цикла inc esi // Увеличить адрес старого участка памяти inc ebx // Увеличить адрес-приемник Попробую это проверить. (а то пока код не работает). Нет так тоже не работает. Где то ещё ошибка. Проверьте скрипт пожалуйста. А то писать 364 раза push ebx mov byte ptr ebx,[eax+4] move byte ptr [eax+dbc],ebx pop ebx push ebx mov byte ptr ebx,[eax+5] move byte ptr [eax+dbd],ebx pop ebx ............................. и так далее, не хочется
  8. Если работает, то красиво! (Код короче, нету лишней метки и использует 3 регистра). Попозже тоже попробую. Но у MasterGH 2 регистра. Хочется попробовать и этот скрипт. Как новичку - что делает инструкция rep movsb? И правильно я понимаю что в "mov ecx,size" size в шестнадцатитер. системе, т.е. в моём случае 16c?
  9. Это надо сделать на CE Autoassembler. В программировании 0, пользуюсь только CE. В следующий раз буду обязательно писать CE Autoassembler. Попытался вставить скрипт в код, возникли вопросы: alloc(newMem, 2048) alloc(x,364)label(returnHere) newMem: .................................... push ebxpush edxmov ebx,[x+4]mov edx,[x+dbc]ret x:readmem(?????????,364)pop edxpop ebx jmp returnHere ..............................jmp newMem..............................returnHere: [DISABLE]................................. 1. alloc(x,364) - у Вас 16 у меня 364. Я правильно понял, что это в десят. системе, т.к. 16c (364 в десят.) CE не приняла?2. Все регистры используются, поэтому правильно ли я использую push и pop?3. Допустим мне нужно скопировать 364 байта начинающихся с адреса [eax+4] в [eax+dbc], что поставить вместо ????????? или как получить ????????? значение.4. Перепишите пожалуйста мой код правильно.
  10. Большой сенк. Попробую. Отпишусь - что получилось. Пока не получается.
  11. При написании скрипта возникла необходимость скопировать довольно большой участок памяти (точнее 364 байта) из одного адреса в другой (Вручную это получалось и в игре получаю то что хотел). Помогите написать скрипт на Ассемблере.
  12. Алло. Дальше что делать? Ок перехожу в личные сообщения. Пока решения нет. Повторю. Более конкретно (с чем сейчас встрял), Например, вернёмся к Туториал CE v. 6.3 шаг 9. Допустим, у меня есть адрес с цепочкой указателей на здоровье наших союзников. Мне нужно вытащить значение в адресе в тренер, в окошко, с возможностью редактировать значение в самом тренере (без СЕ). Как это можно сделать? Здоровье Дейва (Игрок 1) [[[006313a0]+4b8]+4], здоровье Эрика (Игрок 2) [[[006313a0]+4bc]+4].
  13. Где Name? Фу ты нашёл техт ниже Стёр Хотелось бы в данном случае автоматически, а в игре я буду актировать другой скрипт и после него должно появиться значение в окне.
  14. Теперь понял тебя: выбрали "Едит" Дальше переходим в "Инспектор Объектов"
  15. Зачем тебе два окошка? Без разницы можно и одно. Неважно. Туториал эт я для примера взял. A1t0r Ну что попробуем так сделать? Извини, нужно было выйти в Скайп - звонила сестра. Сначала добавил горячую кнопку на Бессмертие. Затем я перешёл в "Пользовательский дизайн". Что нужно сделать дальше? Точнее, что выбираем в FormDesigner:
  16. Что "ридом" читаем, а "врайтом" пишем это-то понятно. и что в инструкции должен быть Float тоже понятно, т.к. у нас значение здоровья float. Меня интересует как всё это вытащить в тренер, а точнее в форму. A1t0r Сейчас можно сделать так, я открою СЕ, Туториал и таблицу и попробуем создать тренер, где будут два окошка со здоровьем игроков и горячая клавиша с God_Mod. Так будет проще по-моему.
  17. CE v. 6.3 (ru). Сделал себе тренер с 12 функциями с горячими кнопками (активирующими и деакт. скрипты из таблицы). таких примеров на форуме много. Огромное спасибо!!! В программировании и английском к сожалению "0". Для дальнейшего изучения возможностей СЕ, нужны переводы main.lua и описание на русском всего что входит в "свой дизайн" при создании тренера, если есть. Если нет, придётся (как я понял, продолжая ломать игру) ещё много вопросов позадавать на форуме. Более конкретно (с чем сейчас встрял), Например, вернёмся к Туториал CE v. 6.3 шаг 9. Допустим, у меня есть адрес с цепочкой указателей на здоровье наших союзников. Мне нужно вытащить значение в адресе в тренер, в окошко, с возможностью редактировать значение в самом тренере (без СЕ). Как это можно сделать? Здоровье Дейва (Игрок 1) [[[006313a0]+4b8]+4], здоровье Эрика (Игрок 2) [[[006313a0]+4bc]+4]. В main.lua увидел такую функцию writeFloatLocal(address,value), думаю, что скорее всего её нужно в данном примере использовать, но как не знаю. Примеров не нашёл.
  18. Полностью согласен, просто хотелось уяснить для себя, как правильно записывать адреса в код. А по структуре согласен на все сто. Очень помогло, нашёл многие характеристики, именно изучая структуру главного героя (выносливость, которую в этой игре по-моему вообще обычным способом не найдёшь, отравление, окаменение, проклятие ну и т.д.). Сейчас мучаюсь с поиском координат. В структуре почти в самом начале лежат, координаты это видно, но они больше похожи на координаты камеры, потому что при изменении этих значений (и заморозке) герой стоит на месте, а изменяется именно расстояние до него от камеры. А вот найти координаты Ггероя пока не получается смотрел и в структуре, и поиском неизвестного (здесь вооще: при поиске Z - оставалось около 650 адресов, но они уже ни в какую не менялись, Х или Y - оставалось 2500 неменяющихся значений) уже 7 раз начинал искать, но так и бросал, слишком долго. Кстати SER[G]ANT как выделить все адреса я понимаю - CTRL+A, а вот ка заморозить сразу много выделенных адресов не могу понять, подскажите пожалуйста. И повторю вопрос: Как встроить спидхак в свой тренер? Интересует именно назначение Горячих клавиш, а не кнопка на форме (с кнопкой я понял как сделать, как оказалось у меня вообще не работал вызов LUA-скриптов ни в таблице, ни при создании трейнера, так что пришлось вчера пару часов чистить реестр вручную для полного удаления СЕ (утилиты как оказалось не полностью чистят) и по новой переустанавливать СЕ). И ещё вопрос: Есть ли в доступе исходный код спидхака СЕ или он слишком навороченный для моего теперешнего уровня.
  19. Решил проверить, всё ли я понял и вернулся к шагу 9 Туториала CE. Есть решение с использованием структуры игрока и нахождением ID - Туториал CE v. 6.3 шаг 9 v. ID: [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) newmem: cmp [ebx+10],1 je originalcode mov [ebx+04],0 originalcode: fldz jmp returnhere "Tutorial-i386.exe"+27E76: jmp newmem returnhere: [DISABLE] "Tutorial-i386.exe"+27E76: mov [ebx+04],eax fldz dealloc(newmem) Это понятно, это прекрасно работает. Я, всё-таки в продолжении своего вопроса, нашёл адреса с указателями здоровья наших игроков (Дейва и Эрика), поэтому вариант Туториал CE v. 6.3 шаг 9 v. Адрес: [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) newmem: push edx lea edx,dword ptr [ebx+04] push eax lea eax,[[[006313a0]+4b8]+4] cmp edx,eax pop eax je originalcode push eax lea eax,[[[006313a0]+4bc]+4] cmp edx,eax pop eax je originalcode mov [ebx+04],0 originalcode: pop edx fldz jmp returnhere "Tutorial-i386.exe"+27E76: jmp newmem returnhere: [DISABLE] "Tutorial-i386.exe"+27E76: mov [ebx+04],eax fldz dealloc(newmem) Всё вроде хорошо - при нажатии кнопок "Атака", здоровье наших остаётся неизменным, а враги сразу умирают. Но при нажатии "Случайная игра" умирают все четыре игрока и соответственно мы проиграли. Мастера, пожалуйста подскажите, где я ошибаюсь и почему не работает скрипт. И как правильно всё-таки записать скрипт во втором варианте. А то уже голову сломал. Извините меня тормоза, собственно SER[G]ANT мне уже всё ответил, перед этим. Для таких же лузеров как я, выложу правильный скрипт с использованием адресов с указателями: [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) newmem: cmp ebx,[[006313a0]+4b8] je originalcode cmp ebx,[[006313a0]+4bc] je originalcode mov [ebx+04],0 originalcode: fldz jmp returnhere "Tutorial-i386.exe"+27E76: jmp newmem returnhere: [DISABLE] "Tutorial-i386.exe"+27E76: mov [ebx+04],eax fldz dealloc(newmem) Здесь тоже всё прекрасно работает. Как я понял, с использованием регистров для нас - начинающих, лучше вначале быть поосторожнее.
  20. SER[G]ANT Сенк! Во втором моём варианте, как раз я вписываю текущее максимальное здоровье. SER[G]ANT и ещё вопрос, если можно? Как встроить спидхак в свой тренер? Хочу на горячую кнопку назначить спидхак встроенный в CE. Нашёл в нете и на форуме "Speed hack_setSpeed (2)" (2 - это в моём случае), но пока не могу врубиться, как встроить это в таблицу и в тренер.
  21. Круто! Но я "Лузер" и пока пишу только первый тренер. SER[G]ANT всё понял в Вашем скрипте, только не понял, что это - #100. (100 %; - здоровья или просто 100?) И в игре объединять InfHealth и OHK в один скрипт не стоит из-за NPC, которым нужно сохранить жизнь до поры. А делать фильтры на нужных NPC или всех врагов - эт слишком много и долго. Так что во втором моём варианте я разделил эти два чита используя две инструкции игры.
  22. Как я понял, раз ни кто не пишет, наверное тема на форуме мусолилась неоднократно. Жаль. Всё таки мне не понятно из-за чего происходил вылет в первом варианте. Это я где-то ошибаюсь или не возможно записать многоуровневый указатель в код в принципе? KENG может Вы посмотрите (начинал учиться по Вашим урокам на Тюбе, жаль, что нету урока 7 часть 1 и один урок, для меня тоже очень важный, без звука). KENG, если посмотрите и подскажите, моя благодарность не будет знать границ в пределах возможного . Короче добился, чтобы первый вариант тоже работал и поэтому, для таких же "Лузеров" как я, выкладываю готовый вариант чита на бессмертие только Вашего Героя: Но второй вариант, выложенный мною в предыдущем посте, всё же лучше и правильнее для игры. Так что тему можно закрыть.
×
×
  • Создать...

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

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