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

Активность

Лента обновляется автоматически     

  1. Сегодня
  2. Ты немного неправильно понимаешь работу твоей игры. На самом деле, она не делает слепки и не кладет их ДО действующей структуры. Наоборот, при перезагрузке локации старая память копируется в новое место и становится истинным именно новое место. А старые места подметает сборщик мусора, когда придется. Именно поэтому у тебя действующая структура всегда последняя. По скрипту - тебе не нужно перебирать циклом всю эту хрень, тебе нужен только последний элемент. str = stringlist_getString(sl,j-1) - скорее всего, после этого тебе нужно будет полученную строку перевести в число средствами Lua CE, и только после этого записать байты в нужную тебе метку. Но вектор я тебе дал, дальше давай сам.
  3. Всем привет. Делаю скрипт на автомат. поиск структуры с координатами, вопросы изначально задавал отсюда (тема закрыта за постинг в неправильный раздел), исправил регистр с eax на rcx и максимально упростил код (сделав другую часть работы через систему поинтеров CE), в итоге он заработал правильно, вот, если кто хочет взглянуть: Но из непродолжительного использования вылезла другая проблема. После перезахода с главного меню или в процессе перехода по локациям игра делает копию памяти прошлой сессии и кладет его в память, видимо, в целях защиты, пуская пыль в глаза аобскану. Такая "копия" полностью неактивна и значительна по размерам - делать фильтры полностью бесполезно и бессмысленно. С каждым перезаходом их число возрастает, из памяти они чистятся примерно раз в час. Если условно перезайти раз 9 - будет найдено 9 совпадений по АОБскану соответственно. Все бы было полностью сломано, если б не один нюанс... Клиент кладет фуфлыжные "слепки" памяти всегда ДО истинных рабочих структур. Использовав этот скрипт покажу по скрину: Следовательно, последний результат сканирования будет правильным при любых раскладах. Но как это реализовать и записывать в метку именно его? (Главный вопрос темы) Покурил гугл и внятной инфы по этому поводу шаром покати. В качестве реализации взял вышеприведенный скрипт и попробовал добавить доп. функцию write в цикл, чтобы по его окончании в метку записался адрес именно последнего результата аобскана, получилось так: А также простецкий АА скрипт под создание метки value и отведение под нее памяти (сделал эти скрипты отдельно т к при совмещении компилятор ругается): Правда, по итогу метка value вообще не перезаписывается и с ней ничего толком не происходит... Я даже не могу проверить, правильно ли то, что я использовал именно writeBytes для записи адреса.
  4. Вчера
  5. Разобрался как работают функции рисования примитивов в этих библиотечках. Всё очень просто, оказывается, что так как функция вызывается очень много раз, практически каждый кадр в игре, то и соответственно рисует она каждый кадр и каждый кадр количество примитивов, которые необходимо нарисовать может отличаться. К примеру в первый кадр рисуется мир, а во второй рисуется картинка с камеры игрока, через которую мы и видим мир игры и штука вся в том, что количество примитивов для рисования картинки с камеры нужно меньше чем для рисования мира (мир - от 100 примитивов, камера от 2 до ~10 примитивов).
  6. Последняя неделя
  7. Понял прекращаю, Игорь прими извинения, за то что я на тебя подумал.
  8. 1. Минус тебе поставил не Игорь. 2. Сообщение Игорь процитировал целиком, потому что отвечал на всё сообщение в целом (как и я сейчас). 3. Минус тебе поставили с целью смотивировать тебя прекратить оффтоп, а не чтобы избежать необходимости перед тобой оправдываться. 4. Заканчивай уже с оффтопом.
  9. Понятно минусы пошли, правда не нравится. А правда заключается в том, что админ должен сам соблюдать правила за которые преды ставит. А Игорь признавать этого не хочет, он хочет минусами заставить заткнутся, в место того чтоб признать что не прав, а не прав не в том что преды ставит, а что сам нарушает эти правила.
  10. офф топ, ладно заканчиваю, больше не вернусь к этой теме , только один вопрос не по теме не сочтите за флуд, не вы ли мне пред поставили за то что я цитировал сообщение целиком?
  11. Такая же штучка и в D3D работает к примеру в 9 версии, я пробовал, проверяя значение параметра primCount метода DrawIndexedPrimitive, похоже что функция не рендерит всё сразу а как то по очереди обрабатывает каждый примитив.
  12. чтоб он понял к чему я клоню. если вы заметили я процитировал часть сам напросился.
  13. Вот в функции перехвата я проверяю параметр count, который пришёл в функцию glDrawElements, он хранит количество примитивов для рендера и вот по идее рисование линиями должно работать для всех примитивов так как условие выполняется. К примеру если count равен 100 (то есть в функцию пришёл аргумент count со значением 100 то функция не будет рисовать линиями так как условие count > 260, а вот если в функцию придёт 261 то по идее он должен всё нарисовать линиями а получается только один примитив так как 261 > 260. Это то что нужно но сам алгоритм не понятен. Так как по логике условие сработало и выполняется glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); (по идее для всех примитивов)
  14. с чего ты взял ? даже мои таблицы разбирали геймхакеры у кого уровень на много выше моего .
  15. Потому что те, у кого достаточный уровень, не расковыривают чужие работы с целью "посмотреть, как он там сделал"
  16. почему ты так решил ?
  17. Ну что Jleha или партизан, или то и другое, расскажи подробно до всяких тонкостей, как ты вышел на эту функцию и утри всем нос, на деле докажи чтоб придраться не к чему было, а то я за тебя встреваю, а теперь начал сомневаться, может зря я за тебя встрял, может действительно тебе есть что скрывать, и что таблица реально истинно только твоё произведение? Мне что то показалось что рыльце то в пуху. Докажи что я не прав.
  18. Вот тут у тебя избыточное условие. Это видно по дублированию блока else Предлагаю поменять на А в остальном - молодец, что разобрался и поделился решением. ЗЫ. Не забывай код прятать под спойлер.
  19. Решил проблемку, как оказалось перехватывать нужно было не glBegin а функцию именно для рисования как в том же Direct3D. Функция называется glDrawElements и рисует примитивы из массива, который приходит четвёртым аргументом. Конечно если почитать справочки от Microsoft и от Khronos, то из описания параметром понятно что где лежит, а вот если почитать справочку [здесь] по этой функции, то немножко запутаться можно в описании четвёртого параметра ну да ладно. Всё рисуется всё работает, проблема была в том, что как оказалось сам экран или камера через которую мы смотрим на мир игры тоже является примитивом и если мы отключаем рисование для него то он соответственно не будет обновляться и будет якобы висеть с одним изображением. Проблема решена через проверку сколько примитивов рисует функция (второй параметр): При таком раскладе функция будет рисовать линиями только если число примитивов больше 260, а если нет, то рисовать сплошной заливкой. Вопрос теперь в том как сама функция это понимает? Ведь это хук и выполняется также в потоке или в цикле в игре. Эта функция вызывается и ей приходят аргументы и вот пришли ей на пример 261 примитив, то она рисует только один примитив линиями, хотя по логике должна все ведь условие стоит на это. Как такое происходит? Если посмотреть справочку то можно понять что второй параметр это число примитивов для рисования (то есть они все рисуются в этой функции), а условие будто выполняется для конкретного диапазона от 260 как так? Вот результат стараний, темновато но думаю видно:
  20. Еслиб я взял функцию из тренера лирва. Я спросилбы у него. Как спрашивал в личке про снайпера. И заметь на снайпера не стал ни чего выкладывать ни здесь ни где еще либо. А по поводу быстроты ты меня с кемто путаешь. По этой игре могу признаться только в том что использавал для поиска прыжка и бега чужой UETools автора Cake-san с другого форума.
  21. А по-моему, как раз говорит. По факту - функция крафта сложна для поиска, и уж если над ней Женька просидел весь день, то твоего уровня явно мало, чтобы ее самостоятельно сделать. Так что да, я уверен, что эту функцию ты взял из его трейнера с помощью одного из способов, которые ты демонстрировал мне в личке (на вышеупомянутом скриншоте). Ну и до этого где-то было, ты не скрывая упоминал, что брал функцию из чужого трейнера "для быстроты". Попался - имей мужество признаться, а не пытайся вилять дальше, как уж на сковороде.
  22. Вы немного пароноик? Я просил ссылку на факт моего воровства. То что под прошлым ником я показал что ваши и остальные тренеры не защитить и нет смысла пытаться это делать еще не говорит о том что я что-то ворую. И на видео я все доказал. По этой игре
  23. Сам напросился. Что ж, придется обнародовать. Кстати, мы с самого твоего повторного появления знали, кто ты. Ты даже свою "первую" работу по ником Партизана выложил с того же ютуб аккаунта, с которого в личку показывал видосы, как ты тыришь инфу с трейнеров (на скриншоте выше). Правда, потом быстренько исправился, перезалив на другой аккаунт, вот только история редактирования всё помнит. И еще ты не подумал о том, что хватает и других средств, чтобы выяснить, кто ты на самом деле. Я лично тебя хотел разоблачить сразу, но по совету наших ребят не стал это делать. Решил дать тебе шанс начать с чистого листа. Но теперь вижу, что это было зря.
  24. Балаган начал не я. Ссыль на тему где и что я украл. Закончил.
  25. @Partizan заканчивай уже этот балаган. Ты прекрасно знаешь причину недоверия и "нелюбви" к тебе.
  26. Я тоже выкладываю как есть. Мне скрывать нечего!!! Я денег не беру
  1. Загрузить ещё активность
×
×
  • Создать...

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

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