MasterGH

Создание языкового файла RU

195 сообщений в этой теме

Работа над руссификатором не останавливалась. Был переведен практически заново.

Требуется Cheat Engine не ниже 6.2 Alpha2 (http://cheatengine.o...ine62Alpha2.rar)

Не перведено:

Pointer adding: Append pointerline instead of insert (знаю для чего эта опция, но корректно перевести "pointerline" не могу)

Окно Structure linker (Появилось совсем недавно. Для правильного перевода еще не разобрался как это работает)

Просьба проверить правильность перевода окна анализа структур (есть некоторые сомнения)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ANT' date='29 Октябрь 2011 - 05:15' timestamp='1319850904' post='4974']

Работа над руссификатором не останавливалась. Был переведен практически заново.

Требуется Cheat Engine не ниже 6.2 Alpha2 (http://cheatengine.org/temp/CheatEngine62Alpha2.rar)

Не перведено:

Pointer adding: Append pointerline instead of insert (знаю для чего эта опция, но корректно перевести "pointerline" не могу)

Окно Structure linker (Появилось совсем недавно. Для правильного перевода еще не разобрался как это работает)

Просьба проверить правильность перевода окна анализа структур (есть некоторые сомнения)

"Pointer adding: Append pointerline instead of insert" - при добавлении нового уровня указателя происходит или сдвиг смещений предыдущих уровней на клетку вверх, или просто добавление пустой строчки. В первом случае приходится все смещения переписывать на клетку выше - к своим адресам, во втором это делается автоматически и просто добавляется пустая строка вида Адрес:Смещение. Это есть и в 6.1.

Перевести можно как-нибудь вроде "Добавление указателя: Вставка вместо замены". Или "Добавление вместо замены".

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нуждаюсь в помощи, зарание спасибо.

Fill in pointers that point into a structure instead of the start

Preemptive flushing

When enabled Cheat Engine will flush the data for each cpu instead of only the game when the buffer is full

Notice 2:

In some games the original code can exist out of multiple instructions, and sometimes, not always, it might happen

that a code at another place jumps into your jump instruction end will then cause unknown behavior. If that

happens, you should usually look near that instruction and see the jumps and fix it, or perhaps even choose to use a

different address to do the code injection from. As long as you're able to figure out the address to change from inside

your injected code.

Extra2: In some situations it is recommended to change ce's codefinder settings to Access violations when encountering instructions like mov eax,[eax] since debugregisters show it AFTER it was changed, making it hard to find out the the value of the pointer

Extra3: If you're still reading. You might notice that when looking at the assembler instructions that the pointer is being read and filled out in the same codeblock (same routine, if you know assembler, look up till the start of the routine). This doesn't always happen, but can be really useful in finding a pointer when debugging is troublesome

Alternatively, you can also use this to build a so called "Array of byte" string which you can use to search which will result in a list of all your or the enemies players

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Preemptive flushing

Дословно перевести трудновато. Скажем, "Предварительная очистка".

When enabled Cheat Engine will flush the data for each cpu instead of only the game when the buffer is full

Если эта опция включена, СЕ очистит данные (память?) для каждого процессора (ядра?), когда буфер заполнится. Иначе - только буфер того процессора (ядра?), который используется игрой.

Extra2: In some situations it is recommended to change ce's codefinder settings to Access violations when encountering instructions like mov eax,[eax] since debugregisters show it AFTER it was changed, making it hard to find out the the value of the pointer

Дополнение №2: В некоторых ситуациях рекомендуется изменить настройки "Access violations" поисковика кода (codefinder) CE, если вы имеете дело с такими инструкциями, как mov eax,[eax], так как отладчик показывает состояние регистров ПОСЛЕ выполнения инструкции, затрудняя поиск указателя.

Extra3: If you're still reading. You might notice that when looking at the assembler instructions that the pointer is being read and filled out in the same codeblock (same routine, if you know assembler, look up till the start of the routine). This doesn't always happen, but can be really useful in finding a pointer when debugging is troublesome

Дополнение №3: Если вы всё ещё читаете. Вы можете заметить, что ассемблерные инструкции, читающие значение указателя и те, что заполняют это значение, находятся в одном и том же сегменте кода (в одном цикле кода, если вы знаете ассемблер - поищите начало этого цикла). Такая ситуация возникает не всегда, но может быть очень полезна в нахождении указателя, если отладка затруднена.

Alternatively, you can also use this to build a so called "Array of byte" string which you can use to search which will result in a list of all your or the enemies players

С другой стороны, вы так же можете использовать это (эту возможность?) для создания т.н. "массива байт" (текстовой строки), поиском которого можно найти всех игроков или ботов. (видимо, это описание поиска структур по сигнатуре структуры)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Notice 2:

In some games the original code can exist out of multiple instructions, and sometimes, not always, it might happen

that a code at another place jumps into your jump instruction end will then cause unknown behavior. If that

happens, you should usually look near that instruction and see the jumps and fix it, or perhaps even choose to use a

different address to do the code injection from. As long as you're able to figure out the address to change from inside

your injected code.

Хозяйке на заметку №2:

В некоторых играх код может быть разбросан в нескольких местах и иногда, правда, редко, может получиться так, что код из другого места прыгнет на код вашего кейва и это может повлечь за собой непредсказуемые действия. Если такое происходит, вам необходимо просмотреть код рядом с вашим кейвом и проверить все переходы, или даже использовать другую инструкцию для создания кейва.

Последнюю строчку я что-то нифига не понял, чесслово.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

PS: Можно заодно к непонятным местам прикладывать скриншоты этих мест? Имхо, будт понятнее, к чему та или иная опция относится.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Такого быстрого ответа я не ожидал. Страна вас не забудет!

snap1jw.png

snap2r.png

Step 7: Code Injection: (PW=013370)

Code injection is a technique where one injects a piece of code into the target process, and then reroute the

execution of code to go through your own written code

In this tutorial you'll have a health value and a button that will decrease your health with 1 each time you click it.

Your task is to use code injection to increase the value of your health with 2 every time it is clicked

Start with finding the address and then find what writes to it.

then when you've found the code that decreases it browse to that address in the disassembler, and open the auto

assembler window (ctrl+a)

There click on template and then code injection, and give it the address that decreases health (If it isn't already filled

in correctly)

That will generate a basic auto assembler injection framework you can use for your code.

Notice the alloc, that will allocate a block of memory for your code cave, in the past, in the pre windows 2000

systems, people had to find code caves in the memory(regions of memory unused by the game), but that's luckily a

thing of the past since windows 2000, and will these days cause errors when trying to be used, due to SP2 of XP

and the NX bit of new CPU's

Also notice the line newmem: and originalcode: and the text "Place your code here"

As you guessed it, write your code here that will increase the health with 2.

a usefull assembler instruction in this case is the "ADD instruction"

here are a few examples:

"ADD [00901234],9" to increase the address at 00901234 with 9

"ADD [ESP+4],9" to increase the address pointed to by ESP+4 with 9

In this case, you'll have to use the same thing between the brackets as the original code has that decreases your

health

Notice:

It is recommended to delete the line that decreases your health from the original code section, else you'll have to

increase your health with 3 (you increase with 3, the original code decreases with 1, so the end result is increase

with 2), which might become confusing. But it's all up to you and your programming.

Notice 2:

In some games the original code can exist out of multiple instructions, and sometimes, not always, it might happen

that a code at another place jumps into your jump instruction end will then cause unknown behavior. If that

happens, you should usually look near that instruction and see the jumps and fix it, or perhaps even choose to use a

different address to do the code injection from. As long as you're able to figure out the address to change from inside

your injected code.

Step 8: Multilevel pointers: (PW=525927)

This step will explain how to use multi-level pointers.

In step 6 you had a simple level-1 pointer, with the first address found already being the real base address.

This step however is a level-4 pointer. It has a pointer to a pointer to a pointer to a pointer to a pointer to the health.

You basicly do the same as in step 6. Find out what accesses the value, look at the instruction and what probably is

the base pointer value, and what is the offset, and already fill that in or write it down. But in this case the address

you'll find will also be a pointer. You just have to find out the pointer to that pointer exactly the same way as you did

with the value. Find out what accesses that address you found, look at the assembler instruction, note the probable

instruction and offset, and use that.

and continue till you can't get any further (usually when the base address is a static address, shown up as green)

Click Change Value to let the tutorial access the health.

If you think you've found the pointer path click Change Register. The pointers and value will then change and you'll

have 3 seconds to freeze the address to 5000

Extra: This problem can also be solved using a auto assembler script, or using the pointer scanner

Extra2: In some situations it is recommended to change ce's codefinder settings to Access violations when

encountering instructions like mov eax,[eax] since debugregisters show it AFTER it was changed, making it hard to

find out the the value of the pointer

Extra3: If you're still reading. You might notice that when looking at the assembler instructions that the pointer is

being read and filled out in the same codeblock (same routine, if you know assembler, look up till the start of the

routine). This doesn't always happen, but can be really useful in finding a

pointer when debugging is troublesome

Step 9: Shared code: (PW=31337157)

This step will explain how to deal with code that is used for other object of the same type

Often when you've found health of a unit or your own player, you will find that if you remove the code, it affects

enemies as well.

In these cases you must find out how to distinguish between your and the enemies objects.

Sometimes this is as easy as checking the first 4 bytes (Function pointer table) which often point to a unique location

for the player, and sometimes it's a team number, or a pointer to a pointer to a pointer to a pointer to a pointer to a

playername. It all depends on the complexity of the game, and your luck

The easiest method is finding what addresses the code you found writes to and then use the dissect data feature to

compare against two structures. (Your unit(s)/player and the enemies) And then see if you can find out a way to

distinguish between them.

When you have found out how to distinguish between you and the computer you can inject an assembler script that

checks for the condition and then either do not execute the code or do something else. (One hit kills for example)

Alternatively, you can also use this to build a so called "Array of byte" string which you can use to search which will

result in a list of all your or the enemies players

In this tutorial I have implemented the most amazing game you will ever play.

It has 4 players. 2 Players belong to your team, and 2 Players belong to the computer.

Your task is to find the code that writes the health and make it so you win the game WITHOUT freezing your health

To continue, press "Restart game and autoplay" to test that your code is correct

Tip: Health is a float

Tip2: There are multiple solutions

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, вроде всё так. Подумаю ещё, наверняка можно и попроличней перевести.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо)

Последнюю строчку я что-то нифига не понял, чесслово.

Вот и я тоже. Хоть я и написал оригинальные предложения целиком, но во всех них меня смущало лишь одно слово или словосочетание.

С другой стороны, вы так же можете использовать это (эту возможность?) для создания т.н. "массива байт" (текстовой строки), поиском которого можно найти всех игроков или ботов. (видимо, это описание поиска структур по сигнатуре структуры)

Это меня и завело в тупик, что в оригинале, что в переводе, т.к. я так не умею. Мб вот она, тема для нового видеоурока ?)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ANT' date='15 Март 2012 - 22:20' timestamp='1331835646' post='7398']

Большое спасибо)

Вот и я тоже. Хоть я и написал оригинальные предложения целиком, но во всех них меня смущало лишь одно слово или словосочетание.

Это меня и завело в тупик, что в оригинале, что в переводе, т.к. я так не умею. Мб вот она, тема для нового видеоурока ?)

Вообще, я не пробовал таким заниматься, только задумки были. Как зарелизят версию СЕ с этим функционалом - опробую и запишу урок. Думаю, что есть есть структура:

Player
{
int id;
float hp;
}

То в СЕ подразумевается поиск строки байт вида "01FFFFFFFF" (для примера, id = 1, hp = рандомное число). Ищем такую строчку, заменяя байт айдишника на XX - получаем адреса всех подобных структур, со всеми айдишниками.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По поводу этого:

As long as you're able to figure out the address to change from inside

your injected code.

ДБ, видимо, имел ввиду вот такое:

Есть инструкция, скажем:

MOV [EAX],EBX

Заносит в указатель [EAX] новое значение здоровья, не суть важно.

Берём и ставим сюда кейв, получаем что-нибудь типа:

JMP 80800000
NOP

Теперь, если сюда будет прыгать какой-то ещё код - можно получить вылет, если в кейве было что-то важное для того участка кода. Поэтому берём участок повыше или пониже.

"До тех пор, пока мы можем сделать кейв с нужным функционалом". (Если меняем адрес здоровья)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Extra2: In some situations it is recommended to change ce's codefinder settings to Access violations when encountering instructions like mov eax,[eax] since debugregisters show it AFTER it was changed, making it hard to find out the the value of the pointer

Дополнение №2: В некоторых ситуациях рекомендуется изменить настройки "Access violations" поисковика кода (codefinder) CE, если вы имеете дело с такими инструкциями, как mov eax,[eax], так как отладчик показывает состояние регистров ПОСЛЕ выполнения инструкции, затрудняя поиск указателя.

временный перевод таков:

Дополнение2: В некоторых ситуациях, когда вы имеете дело с инструкциями вида mov eax,[eax], рекомендуется изменить настройки поисковика кода to Access violations, т.к. состояние регистров отладчика показывается только ПОСЛЕ выполнения инструкции, затрудняя поиск указателя

смущает (и до этого меня смущало именно это) "ce's codefinder settings to Access violations"

В самом Cheat Engine не доступны настройки codefinder, эту вкладку можно найти только в исходниках

snap3xq.png

И как видно, там нет подобной опции. Описание этого туториала, как и настройки CodeFinder, давно не менялись. Выходит, что переводится как-то так "...рекомендуется изменить настройки поисковика кода CE на доступ к нарушениям..." (бред какой-то)

да и перевести это как "настройки "Access violations"" можно было бы только в случае, если бы в оригинале было "Access violations settings"

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Cheat Engine 6.2 rev1338 + руссификатор

del

Если нужен оригинальный текст, то измените "PreferedLanguage=ru_RU" на "en_US" в ./languages/language.ini (чтобы и туториал был на английском, смена языка в .ini не поможет, баг программы, нужно удалять ru_RU/tutorial-x86_64.po)

(Почти 100% перевод, полностью переведен будет только к финальной версии CE, а пока тестируем, пишем замечания)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В главном меню Label3 под Test Cap

Что Это?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так скопилилось из исходников, сам я ничего не менял.

26772636.png

Собрал CE без этих строк, ссылка та же

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В главном меню Label3 под Test Cap

Что Это?

Не обращай внимание это "рудименты" демо-версии. В официальной версии все эти надписи "выключаются", а в бетта и т.п. версиях остаются случайным образом (просто забыли их выключить или поленились). Их назначение тестирование некоторой функции при клике мышкой.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Готов окночательный перевод для CE 6.2 Final

http://cheatengine.org/download/ru_RU.rar

В сравнении с русификатором для 6.1, он сильно переделан. Было много исправлений и добавлений (но я не исключаю каких-либо косяков). На данный момент, он преобрел такой вид, за который не стыдно.

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

del

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

UP!

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Queued memory events waiting:

Очередь:

Только так, если не коряво переводить. Или, на крайний случай,

Событий в очереди (но это уже криво звучит)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

SOS!

Cheatengine is being a fag

Не смог отловить это сообщение (что-то связанное с lua), поэтому в затруднении перевода слова "fag"

_n.1_собир. тяжелая, утомительная или скучная работа 2 младший ученик, оказывающий услуги старшему (в англ. школах) 3_собир. сигарета 4_редк. изнурение, утомление _v.1 (тж. fag away) трудиться, корпеть; (at - над) You've been fagging away (at your writing) all morning, it's time you took a rest. 2 утомляться (тж. fag out) 3 пользоваться услугами младших товарищей; оказывать услуги старшим товарищам (в англ. школах) - fag out

а еще это слово переводится как, извиняюсь, пидорас =)

Show on \"print\"

У слова "print" есть много значений, но т.к. при нажатии ничего не происходит, то не уверен как переводить.

Fill in pointers that point into a structure instead of the start

Не знаю, что делает это опция и "Structure linker" в целом, поэтому затрудняюсь в переводе "instead of the start"

1) Stack addresses as ONLY static address

2) Allow stack addresses of the first thread(s) to be handled as static

3) Fill in the total number of threads that should be allowed to be used as a stack lookup.

Thread 1 is usually the main thread of the game, but if that one spawns another thread for game related events, you might want to have that secondary thread as well.

More threads is not recommend as they may get created and destroyes on the fly, and are therefore useless as a lookup base, but it depends on the game.

4) Max stackoffset to be deemed static enough:

Новые настройки "Pointerscanner scanoptions". Не разобрался с этими опциями и смущает слово "stack". Вроде, в данном контексте его можно перевести только как "Стек", но... не всегда перевод получается внятным

1) "Адреса стека" только как статический адрес (бред... если поменять менястами "как" и "только", то еще хуже)

2) "Адреса стека" из первого потока обрабатываются как статические

3) Заполните общее количество потоков, которым разрешено использоваться в кач-ве "поиска по стеку". (Вот тут "стек" вообще не вяжется)

Первый поток обычно является потоком игры, но если он порождает другой поток для связанных с игрой событий, вам также может потребоваться и второй поток.

Большее число потоков не рекомендуется, т.к. они могут создаваться и уничтожаться на лету, а значит бесполезны как поисковая база, но это зависит от игры.

4) Макс. смещение стека, чтобы считаться достаточно статическим:

Overlay with structure

Элемент контекстного меню в "Memory Viewer", которое не отображается (мб с включением DBVM появляется, т.к. в исходниках есть), поэтому не знаю, что именно оно делает и как точно перевести "Overlay"

Впринципе, хоть я и не уверен, но могу перевести всё из этого как я думаю, но охота правильно!

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

UP!

Хотя бы просто приведите свой пример перевода этих строк, пусть и не правильный (но только не из переводчика), чтобы было с чем сравнить.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то я пропустил эту тему о_О. Примерные варианты:

Overlay with structure - скорее всего, в данном контексте имеется в виду "Пересечение со структурой", но не факт.

Cheatengine is being a fag - СЕ устает? о_О Других контекстов пока представить не могу )))

Show on \"print\" - показать в черновике? о_О Тоже не совсем, но более близкого по значению не приходит пока на ум.

Fill in pointers that point into a structure instead of the start - заполнять указателями на структуру, а не на начало блока (если подразумевать, что Линкер структур - ничто иное, как объединение структур по их взаимосвязи)

Stack addresses as ONLY static address - ближайшее по смыслу - Считать адреса в стеке статичными

Allow stack addresses of the first thread(s) to be handled as static - Разрешить обрабатывать адреса в стеке первого потока как статичные (?)

Max stackoffset to be deemed static enough - максимальное смещение в стеке, чтобы адрес мог считаться статичным (криво, но пока по-другому в голову не идет)

Fill in the total number of threads that should be allowed to be used as a stack lookup. - Введите количество потоков, для которых будет включен "поиск в стеке".

Thread 1 is usually the main thread of the game, but if that one spawns another thread for game related events, you might want to have that secondary thread as well. - Поток 1 - обычно это главный поток игры, но если он создает еще один поток для обработки связанных с игрой событий, возможно, этот вторичный поток вам тоже пригодится.

More threads is not recommend as they may get created and destroyes on the fly, and are therefore useless as a lookup base, but it depends on the game. - большее количество потоков не рекомендуется, так как они могут создаваться и уничтожаться "на лету", и поэтому они бесполезны в качестве базы для поиска. Впрочем, это зависит от игры.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо!

Пока оставил без перевода:

Cheatengine is being a fag

Show on \"print\"

Max stackoffset to be deemed static enough: (Тут еще загвоздка в том, чтобы перевод был таким же по размеру, как и оригинал. Иначе не влезит)

Overlay with structure

Есть ещё пару не переведенных предложений:

"Number of bytes a row exists out" (в Graphical Memory View) - тут какой-то косяк у DB, т.к. опция делает совсем другое.

"Max auto-expand level:" - перевод влазиет, только если сократить все 3 слова, что делает его малочитабельным.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пока в футболе перерыв...

Wait for all known scanners to connect and finish

Перевод:

"Ожидать все известные поисковики для присоединения и окончания поиска."

(Нужно понятно сократить до длинны оригинала)

Will only mark the given range as valid base address (Will reduce the number of results)

This internally makes use if the "Only find paths with a static address" feature by making the provided range as static only, so it must be enabled.

Перевод:

"Только указанный диапазон будет отмечен в качестве допустимого базового адреса (Сократит количество результатов)"

(А вот второе предложение приводит в ступор. Не знаю как перевести. В крайнем случае можно сократить до "Работает совместно с "Искать только цепочки со статическим адресом"")

Max stackoffset to be deemed static enough:

Перевод:

"Максимальное смещение стека, достаточное для того, чтобы считаться статическим"

(А верен ли перевод? Тут тоже нужно понятно сократить до оригинала.)

Let other workers rescan as well

Перевод:

Позволить отсеивать также и остальным рабочим процессам

(Опять же нужно сократить. Плюс, не совсем понятно значение "workers". Опция "сетевая", возможно имеется ввиду Cheat Engine на др. компьютере)

Set/Change dropdown selection options

Перевод:

???

(Вроде и не сложно, но, честно говоря, запутался. При этом и не разобрался как эта новая опция работает)

Буду благодарен любой помощи.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас