-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные MasterGH
-
-
Может быть всё что угодно. Причины можно только угадывать. Могу посоветовать открыть новую тему, указать в ней название игры, привести скрипт и ждать возможного ответа.
-
А почему эта функция очень неудобна?
Если хочешь логически отделить части сообщений можешь использовать тег:
[hr]
-
>> Значок CoD4. Студия мне ставит какой-то замок:
Synapsehome, если бы ты привёл свой исходный код,то тебе сразу ответили, что именно ты делаешь неправильно
-
Ну я не спросил вас писать все за меня.
А просто написать как это сделать без какого либо кода.
Это можно сделать написав программу. Это ответ на твой вопрос без "какого-либо кода". Ты же сам понимаешь, что это ответ ни о чём. И все кто читал твой первый пост восприняли его как помочь и рассказать словами, то что нужно писать на языке программирования. В твоём случае тебе нужно публиковать исходный код всей программы (которую ты пишешь) "от и до" и писать, что у тебя не получается.
-
На форуме изменен список званий репутации. Теперь он выглядит так:
4. Lamer
8. Newbie
16. Novice
...
И да, кстати, отсутствие какой-либо активности на форуме в течение месяца автоматически будет понижать текущий уровень репутации на 32 пункта.
Заход в регу и создание поста в течении месяца считается этой самой "какой-либо активностью"? Что минимально нужно для активности?
Звание Lamer это как-то с "принижением"... я бы заменил на что-то более похоже как на не проявление активности на Английском сленге "инертный", "мало активный". Дело в том, что человек который набрал когда-то 20-32 пунктов, а потом месяц вообще на форум не заходил станет "ламером" ?! С чего же он ламер, если по каким-то обстоятельствам не посещал форум - может быть у него просто не было время.
По поводу снятия пунктов каждый месяц. Не могу дать конкретную оценку, что это правильно или неправильно. Пока не понятно о какой "минимальной активности" идёт речь(первый вопрос). С одной стороны это даст возможность новым людям побыстрее догнать тех кто мало активен и попасть в ТОП10, в котором люди уже "расслабились". Но с другой стороны, те кто явно потом и кровью "копил эти баллы" и рассчитывал, что они за ним закреплены и не будут уменьшаться. Ну... не знаю это может расстроить некоторых пользователей.
-
M4K, да какая разница
. Просто я ошибся. Очевидно, что от перемены мест "из чего" во "что" суть не поменяется, кроме алгоритма. Извини, я готовое решение давать не буду - ты же сам понимаешь, мне это ненужно. Кому надо те запустят CE для ce-файлов. Кому надо Artmoney те запустят Artmoney. А конвертеры писать это бесполезное дело. По конкретным вопросам я подскажу, по общим подсказал. Ну а дальше, "делайте самостоятельно"
-
1) Изучаешь формат данных .СЕ и .amt в текстовом редакторе (надеюсь там везде текст, а не бинарная кракозяба). Если кракозяба, то изучаешь в hex-редакторе;
2) Строишь алгоритм перевода из одного формата в другой;
3) Пишешь программу чтобы на входе был *.amt а на выходе *.CT;
Программу можно написать на любом языке программирования, который позволит читать/записывать файл по указанной директории.
-
Спасибо, но чтобы я что-то сделал по этой игре мне сейвы ненужны - это раз. Два - сейчас у меня задачи, более глобальные и более сложные в решении, и более интересные.
-
>>Можно ли сейчас автоматически конвертить в CE таблицы Cheat Engine (.CT) в таблицы для ArtMoney (.amt)?
Если в CE таблицах есть данные адресов и указателей, то можно. Если есть АА-код или есть Lua-код, то дело значительно усложняется вплоть до невозможности выполнить поставленную задачу, если только не делать модернизацию Artmoney в виде "отладочного" плагина.
>>Наоборот вроде можно (.amt в .CT)?
Тут особых проблем не будет... Просто надо уныло и и наверно долго писать программу перевода. Т.е. ничего сверхсложного.
-
Тему перемещаю по трейнерам. Этот раздел не для исходников по трейнерам.
-
Насколько я помню после "инцидента", когда ты "модерировал" и тебя снял Xipho за "плохое дело" ты молча ушёл с форума как будто так и надо было. Виноват только ты сам и никто тебя не мучает.
-
Мы откуда знаем почему вырубается?!
В гадалки играть
или за тебя делать??
Вот помощь, которой необходимо и достаточно по виду данного вопроса. Проверяй в отладке в Visual Studio
Не знаешь как работать в отладке ищи информацию об этом в Интернете
Если будут данные по отладке ты сможешь сам понять ошибку или эти данные предоставить сюда. И тогда не только у меня, но и у остальных будет больше представления о проблеме.
-
Предложения по форуму с моей стороны:
1) Добавить виджеты:
Последние темы Форума "Трейнеры"
Последние темы "Скрипты и Таблицы"
2) Включить функцию запрета дабл-постинга. Два близких сообщения автоматически соединять.
-
Ты единственный, кто круче варенного яйца)) У Руслана, как и у меня (что вполне заслужено для меня) по нулям))
Ты Xipho-не обижай... и мне совсем не лестна эта оценка
Ты сам понимаешь, что высокий рейтинг у Админстрации был только малой мерой принятой для того чтобы Администраторам ничего не ставили.
-
Оформление форума приятно хочется ещё больше почаще заходить на форум.
Xipho писал, что отключит репутацию Администрации, так что Администрация будет в топах недолго...
-
ANT' date='14 Март 2012 - 20:25' timestamp='1331731504' post='7354']
Только после (де)активации скрипта нужно нажимать кнопку 2 раза для вступления изменений в силу, что не очень красиво.
Жду продолжений ваших трейнми (если есть такие планы), только что-нибудь сложней.
Сложность тут всё-таки это не главная цель.
Очевидно, что цель была показать наглядный пример как сделать бессмертие только для своего игрока и как это сделать скриптами на Cheat Engine. Хорошо, что этот пример и прост, и одновременно чем-то хорошо похож на то, что может встретиться в играх.
Сделать другой такой трейнерми чтобы он был и сложнее и похож на существующие проблемы в многих играх будет сложно. Было дело я видел трейнми настолько закрученные, что это превращалось в экзотику, которую в играх я не видел даже. Это называется угробить своё время на создание трейнми решение которого используется очень редко. Могут быть, правда, маньяки, которые любят полазить в отладке и им все равно что им подсунут
-
На здоровье
Желаю успехов
-
Могу добавить одно. Игра исполняется виртуальной машиной Явы. Отсюда танцы с бубном
Поэтому я думаю, что даже найти адрес счётчика ресурсов проблематично. Я не нашёл не 4, 2, 1 байтами. Текст не искал.
Помнится есть декомпиляторы jar файлов. Вот и поковырять им minecraft.jar с перекомпиляцией наверно будет проще чем искать адреса или пытаться изменить код.
-
Это из-за Юникода. Дописывай префикс "L" или отключи Юникод в свойствах проекта
L"3D Pinball for Windows - Space Cadet"
Также предвижу ошибку об отсутствии предкомпилированного заголовка. Также отключается в свойствах проекта. Иначе придётся писать этот предкомпилированный заголовок вручную.
-
А как именно не работает? Как ошибка вылазит, если вылазит?
1) Если вылазит сообщение "Игра должна быть запущенна до трейнера", то может быть в названии окна есть какие-то проблемы с русскими символами, если они там есть.
2) Сделай аналогичные сообщения для проверки ProcessId, Handlewindow.
Проверь WriteProcessMemory(HandleWindow,ptr(Address),buf,NumberOfBytes,write) на исключение. Если исключение возникает выведи мессагу. Возможно у адреса защита от записи. Или блокировка Антивирусом.
3) Потом мне не нравится GetMem c переменной buf, т.е. вот эти манипуляции.
GetMem(buf,1);
buf^ := Chr(PokeValue);
//...
FreeMem(buf);
Проверь существует ли действительно адрес buf
4) Я точно не помню, но кто знает, может WriteProcessMemory не успевает выполнится по каким-то причинам и тут же идёт сразу FreeMem(buf) и CloseHandle(HandleWindow);
5) Может быть нужно какие-то параметры компиляции поставить. 6) Может быть требуется присутствие каких то dll-ок. См. пункт 5
Короче поставь мессаги на каждой функцией. И обверни блок кода от begin до end в обработку исключения с выводом мессаги о об этом исключении. Можно также извлечь информацию об этом исключении используя WinAPI. К сожалению я не буду заниматься тестированиями. Подсказал чем смог. Ещё предлагаю поискать примеры на дельфи без GetMem -> FreeMem...
-
Еще вопрос
Почему на некоторых ОС не работает трейнер? Т.е. адреса все совпадают, но на нажатие кнопки никак не реагирует?
Нужно больше конкретизировать. Мы же не телепаты.
Какой трейнер и для какой игры? Есть ли исходный код? Какие операционные системы? Как было определено, что адреса совпадают, когда нажатия кнопок не срабатывают?
-
Если я не ошибся, то этот вариант программы будет лучше построен:
--------------------------------------------------
--[[
Фризер процесса.
клавиши:
HOME - включает (но не морозит), просто "взводит курок"
END - отключает (размораживает процесс если был заморожен)
F4 - морозит процесс
SPACE - морозит с задержкой указанной в sleep(8000) = 8сек.
Клавиши и задержки можно менять и дописывать при необходимости по аналогии.
* Перед "употреблением" это примечание удалить (т.к CE не любит кирилицы)
--]]
---------------------------------------------------
function checkEnd(timer)
if not enableHotkey and isKeyPressed(VK_HOME) then
enableHotkey = true
else
if enableHotkey then
if (isKeyPressed(VK_END)) then
enableHotkey = false
unpause()
else
if (isKeyPressed(VK_SPACE)) then
sleep(8000)
pause()
else
if (isKeyPressed(VK_F4)) then
pause()
end
end
end
end
end
end
enableHotkey = false
tEnd=createTimer(nil)
timer_setInterval(tEnd, 100)
timer_onTimer(tEnd, checkEnd)
timer_setEnabled(tEnd, true) -
VirtualAlloc / HeapAlloc / malloc / new
Первый вариант объяснения:
Each API is for different uses. Each one also requires that you use the correct deallocation/freeing function when you're done with the memory.VirtualAlloc
A low-level, Windows API that provides lots of options, but is mainly useful for people in fairly specific situations. Can only allocate memory in (edit: not 4KB) larger chunks. There are situations where you need it, but you'll know when you're in one of these situations. One of the most common is if you have to share memory directly with another process. Don't use it for general-purpose memory allocation. Use VirtualFree to deallocate.
HeapAlloc
Allocates whatever size of memory you ask for, not in big chunks than VirtualAlloc. HeapAlloc knows when it needs to call VirtualAlloc and does so for you automatically. Like malloc, but is Windows-only, and provides a couple more options. Suitable for allocating general chunks of memory. Some Windows APIs may require that you use this to allocate memory that you pass to them, or use its companion HeapFree to free memory that they return to you.
malloc
The C way of allocating memory. Prefer this if you are writing in C rather than C++, and you want your code to work on e.g. Unix computers too, or someone specifically says that you need to use it. Doesn't initialise the memory. Suitable for allocating general chunks of memory, like HeapAlloc. A simple API. Use free to deallocate. Visual C++'s malloc calls HeapAlloc.
new
The C++ way of allocating memory. Prefer this if you are writing in C++. It puts an object or objects into the allocated memory, too. Use delete to deallocate. Visual studio's new calls HeapAlloc, and then maybe initialises the objects, depending on how you call it.
There are also a couple of other similar functions like SysAllocString that you may be told you have to use in specific circumstances.
Второй вариант:
VirtualAlloc is a specialized allocation from the OS VM system. Allocation's must be made at on an allocation granularity which is architechture dependent. It is one of the most basic forms of memory allocation. VM allocations can take several forms, memory is not nessisarially dedicated or physically backed in RAM (though it can be). It is typically a special purpose type of allocation, either vary large, needs to be shared, must be aligned on a perticular value (performance reasons) or the caller need not use all of this memory at once... etc...HeapAlloc is essentially what malloc and new both eventually call. It is designed to be very fast and useable under many different types of scenerio's a general purpose allocation. It is the "Heap" in a classic sence. Heap's are actually setup by a VirtualAlloc, which is what is used to initially reserve space from the OS, after this the space is initialized, which is when various tables, lists's and other data structures are configured to maintain and control the operation of the HEAP. Some of that is in the form of dynamically sizing (growing and shrinking), adapting to perticular usages (frequent allocations of some size), etc..
new and malloc are somewhat the same, malloc is essentially an exact call into HeapAlloc( heap-id-default ); new however, can configure object's for C++. C++ will store vtable's onto the heap for each caller. These vtable's are redirect's for execution and form part of what gives C++ it's oo charicteristics like inheratence, function overloading, etc...
Some other common allocation methods; _alloca() and _malloca are stack based, FileMappings's are really VirtualAlloc'd and set with perticualr bit flags's which designate them FILE.
Most of the time, you should allocate memory in a way which is consistant with the use of that memory
. new in C++, malloc for C, VirtualAlloc for massive or IPC cases.
*** Note, large memory allocation's by HeapAlloc are actually shipped off to Virtual Alloc after some size (couple hundred k or 16 MB or something I forget, but fairly big
*** EDIT I brefly remarked about IPC and VirtualAlloc, there is also something very neat about a related VirtualAlloc which none of the responder's to this question have discussed.
VirtualAlloc Ex is what one process can use to allocate memory in a different process's address space. Most typically, used in combination to get remote execution in the context of another process via CreateRemoteThread (simular to CreateThread, the thread is just run in the other process).
Тот кто усвоил - молодец.
-
1
-
-
В первый пост я добавил исходник.
Забыл указать как устанавливать. Самый простой вариант распаковать файлы из ce_luasocket.rar в папку c CE. Запустить cheatengine-i386.exe и для проверки выполнить например
http = require("socket.http")
print(http.request("http://forum.gamehacklab.ru"))Если ошибок не будет, то увидим исходник html-я.
К первому посту я прикрепил исходник. С его помощью можно скомпилировать под 64-рязрядную платформу.
Использовать 32-х разрядные модули или 64-разрядные можно используя Lua команды:
cheatEngineIs64Bit(): Returns true if CE is 64-bit, false if 32-bit
targetIs64Bit(): Returns true if the target process is 64-bit, false if 32-bit
Тестирование CE 6.2
in Cheat Engine
Опубликовано
Cheat Engine 6.2 Beta 6 (Fri Apr 20, 2012)
О себя добавлю, что это далеко не все изменения. Более подробно см. SVN от даты предыдущей CE Beta 5.
Появились функции на Lua по работе со структурами, что позволит автоматизировать многие вещи по сравнению структур, делать сохранения промежуточных данных, анализирование и извлечение информации из структур до бряка, после бряка, с остановкой процесса или после неё... Всё что ваша "извращённая"
фантазия пожелает.