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

Рекомендуемые сообщения

Вот такое дело у меня. Нашёл три инструкции.

1 Стою на мосту, заморозил адрес из инстр. при падении меня подкидывает вверх(разбиться могу из-за заморозки плохой) я думаю, что это Z, я нашёл её лазая по лестнице.

2 Вторая возвращает меня на место, когда я делаю шаг либо влево либо вправо. Я думаю это X

3 Когда я присидаю меня чуть чуть подкидывает вверх, (это точно не Z, потому что стоя/сидя меня бы подкидывало в небо) наверное это Y.

Если я всё нашёл правильно, то помогите мне сделать отдельно скрипт сохраняющий координату и восстанавливающий?

Z :mov [esi+0000029C],ecx

X :mov [ebx],eax

Y :mov [ebx+08],edx

Много раз искал координаты и всегда иструкции для X Y Z отличались либо регистрами, либо смещением, а у тебя все три - совершенно разные. По комментарию похоже, что вторая инструкция - правильная. узнай значение ebx и смотри в структуре значения рядом и, скорее всего, найдешь Y и Z.

Если и так не получится, то пробуй найти значении любой из координаты в структуре игрока.

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

Так. Перенашёл инстр. с координатами

X :mov ecx,[edi+0000031C]

Y :mov edx,[edi+00000320]

Z :mov eax,[edi+00000324]

Переписал скрипт и ничего

[ENABLE]
alloc(_newmemX,1024)
alloc(_newmemY,1024)
alloc(_newmemZ,1024)
label(_returnhereX)
label(_returnhereY)
label(_returnhereZ)
label(_originalcodeX)
label(_originalcodeY)
label(_originalcodeZ)
label(_restX)
label(_restY)
label(_restZ)
label(_X)
label(_Y)
label(_Z)
label(_save)
label(_teleport)
registersymbol(_save)
registersymbol(_teleport)


//X
_newmemX:
mov ecx,[edi+0000031C]
pushad
cmp [_save],1
jne short _restX
mov [_save],0
mov ecx,3
lea edi,[_X]
lea esi,[edi+0000031C]
rep movsd
_restX:
cmp [_teleport],1
jne short _originalcodeX
mov [_teleport],0
mov ecx,3
lea esi,[edi+0000031C]
lea esi,[_X]
rep movsd
_originalcodeX:
popad
mov ecx,[edi+0000031C]
jmp _returnhereX

//Y
_newmemY:
mov edx,[edi+00000320]
pushad
cmp [_save],1
jne short _restY
mov [_save],0
mov ecx,3
lea edi,[_Y]
lea esi,[edi+00000320]
rep movsd
_restY:
cmp [_teleport],1
jne short _originalcodeY
mov [_teleport],0
mov ecx,3
lea esi,[edi+00000320]
lea esi,[_Y]
rep movsd
_originalcodeY:
popad
mov edx,[edi+00000320]
jmp _returnhereY

//Z
_newmemZ:
mov eax,[edi+00000324]
pushad
cmp [_save],1
jne short _restZ
mov [_save],0
mov ecx,3
lea edi,[_Z]
lea esi,[edi+00000324]
rep movsd
_restZ:
cmp [_teleport],1
jne short _originalcodeZ
mov [_teleport],0
mov ecx,3
lea edi,[edi+00000324]
lea esi,[_Z]
rep movsd
_originalcodeZ:
mov eax,[edi+00000324]
popad
jmp _returnhereZ

_save:
dd 0

_teleport:
dd 0

_X:
dd 0

_Y:
dd 0

_Z:
dd 0

//X
jmp _newmemX
nop
nop
nop
nop
_returnhereX:

//Y
jmp _newmemY
nop
nop
nop
nop
_returnhereY:

//Z
jmp _newmemZ
nop
nop
nop
nop
_returnhereZ:


[DISABLE]
dealloc(newmem)
"hl2.exe"+153C:
push 60
push 0040D228
//Alt: db 6A 60 68 28 D2 40 00

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

Izmalkoff,

1) значения координат разве не находятся в памяти процесса рядом друг с другом?

structureCoordinates:

dd 00000000 // адрес X

dd 00000000// адрес Y

dd 00000000// адрес Z

Если адреса находятся рядом, то из самой часто обращаемой инструкции из трёх

X :mov [ebx],eax

Y :mov [ebx+08],edx

Z :mov [esi+0000029C],ecx

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

Короче мой вариант, если использовать только АА-скрипты (кстати не очень удобно, из-за активирующего скрипта, который надо активировать вручную).

Z :mov [esi+0000029C],ecx

X :mov [ebx],eax

Y :mov [ebx+08],edx

Надо реализовать поточное выполнение:

1) запоминание координат

2) запись запомненных координат

3) инициализация

Удобне было бы сделать на Lua, но подозреваю это будет для тебя сложнее.

Скрипт1 - Запоминание координат (выполнится в любом случае при активации или деактивации)


CREATETHREAD(memThreadSave)
[ENABLE]
[DISABLE]

Скрипт2 - Восстановление координат (выполнится в любом случае при активации или деактивации)


CREATETHREAD(memThreadRestore)
[ENABLE]
[DISABLE]

Скрипт3 - Инициализация


[ENABLE]
alloc(newmem,1024)
alloc(memThreadSave,1024)
alloc(memThreadRestore,1024)

registersymbol(memThreadSave)
registersymbol(memThreadRestore)

label(SaveStructureCoordinates)
label(returnhereX)

memThreadSave:
mov ecx, 3
mov esi,[SaveStructureCoordinates]
lea edi,[SaveStructureCoordinates+4]
rep movsd
ret

memThreadRestore:
mov ecx, 3
lea esi,[SaveStructureCoordinates+4]
mov edi,[SaveStructureCoordinates]
rep movsd
ret

newmem:
mov [ebx],eax
mov [SaveStructureCoordinates],ebx
// если нужно, то вписать оригинальный код
jmp returnhereX

SaveStructureCoordinates:
dd 0 // указатель на структуру координат в игре
dd 0 // Запомненнное значение X
dd 0 // Запомненнное значение Y
dd 0 // Запомненнное значение Z


//X
jmp newmem
nop
nop
nop
nop
returnhereX:

[DISABLE]

Сначала пишем и запускаем 3-скрипт.

Затем пишем два остальных.

Ставим горячие клавиши на скрипты

В игре при запуске трейнера, нужно вручную активировать 3-скрипт, тогда будут работать первый и второй. Автоматизировать это можно в связке с Lua.

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

А вот чуток от темы. Мне надо по нажатии хоткея в трейнере постоянно устанавливать значение 100 и не морозить его. Можно ли так делать на АА, а то указатели нудно искать? И ещё вопрос. Есть координата Z, я хочу сделать так, чтобы я всегда находился на высоте, написал скрипт и вот как происходит, я то подлетаю, то падаю то подлетаю. То есть заморозка действует не железо-бетонно, как сделать так, чтобы утановив значение 150 оно вообще не менялось?

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

  • 4 месяца спустя...

Помогите со скриптом, записывает, востанавливает, но я появляюсь в глюках под землёй(писал в Z).

[ENABLE]
alloc(newmem,2048) //2kb should be enough
alloc(coordinates,12)

label(back)
label(end)
label(skip)
label(save)
label(restore)
registersymbol(save)
registersymbol(restore)

newmem: //this is allocated memory, you have read,write,execute access
pushfd
cmp [esi+00000090],0
jz end
cmp [save],1
jne skip
mov [save],0
pushad
mov ecx,2
lea eax,[esi+00000090]
lea edi,[coordinates]
repe movsd
popad
jmp end

skip:
cmp [coordinates],0
jz end
cmp,[restore],1
jne end
mov [restore],0
pushad
mov ecx,2
lea eax,[coordinates]
lea edi,[esi+00000090]
repe movsd
popad

end:
popfd
movss xmm2,[esi+00000090]
jmp back
nop
save:
db 0
restore:
db 0

"vital.dll"+38A1A:
jmp newmem
nop
nop
nop
back:



[DISABLE]
dealloc(newmem)
dealloc(coordinates)
unregistersymbol(save)
unregistersymbol(restore)
"vital.dll"+38A1A:
movss xmm2,[esi+00000090]
//Alt: db F3 0F 10 86 8C 00 00 00

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

но я появляюсь в глюках под землёй(писал в Z).

У меня нет игры под рукой, но осмелюсь предположить, что стоило писать в Y. Но не факт. Надо исследовать.

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

Не, я справился. Игра блин виновата. Написал Три скрипта для всех координат чтоб при телепорте игрок появлялся именно в точке где записались координаты, если один скрипт, то игрока двигает от места сохранения. Xenus 2 ёпт.

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

Я подумал, что этот пост будет полезно увидеть ещё кому-нибудь:

По сути, как это выглядит:

Х: 00 00 00 00

Y: 11 11 11 11

Z: 22 22 22 22

Три координаты, по 4 байта каждая, итого - 12 байт. Хранятся по адресу, скажем, 0х100:

0х100: 00 00 00 00 11 11 11 11 22 22 22 22

Что делает скрипт? Создаёт пустое пространство размером 12 байт:

0x200: ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??

Копирует в него по очереди каждую координату:

0x200: 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ??

0x200: 00 00 00 00 11 11 11 11 ?? ?? ?? ??

0x200: 00 00 00 00 11 11 11 11 22 22 22 22

Затем, при загрузке, копирует из 0x200 в 0x100, тем самым заменяя текущее значение сохранённым.

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

  • 6 месяцев спустя...

всем привет вот нашел я координаты x,y,z вот только не могу понять как написать скрипт как у кенга в видео уроке помогите

Здравствуй, босс!

Для начала посмотри его видео урок внимательнее, скопируй его скрипт и вставь, потом отредактируй под себя.

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

вот нашел я координаты x,y,z вот только не могу понять как написать скрипт как у кенга в видео уроке помогите

А что именно ты не можешь понять после нахождения координат?

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

Здравствуй, босс!

Для начала посмотри его видео урок внимательнее, скопируй его скрипт и вставь, потом отредактируй под себя.

Привет та смотрел не понял и делал все так и игра такая же не получилось

А что именно ты не можешь понять после нахождения координат?

ну вот все от скрипта не могу понять что куда надо делать

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

ну вот все от скрипта не могу понять что куда надо делать

Не, Приятель, это совсем не серьёзно :)

С таким описанием проблемы, ответ к сожалению может быть только коротким. Ищи информацию по созданию скриптов и примеры.

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

Не, Приятель, это совсем не серьёзно :)

С таким описанием проблемы, ответ к сожалению может быть только коротким. Ищи информацию по созданию скриптов и примеры.

можешь скинуть ссылку де такую информацию найти ? (ток не говорите набери в гугле просто дайте конкретную ссылку )
Ссылка на комментарий
Поделиться на другие сайты

можешь скинуть ссылку де такую информацию найти ? (ток не говорите набери в гугле просто дайте конкретную ссылку )

А что сложного написать в гугле ?))))

PS: Ссылка

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

×
×
  • Создать...

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

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