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

Сохранение значений на диск


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

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

 

Игра Forza Horizon 3, имеются два адреса, адрес косинуса камеры и адрес синуса. Задача - сделать свободное вращение камерой на 360 градусов. Диапазон значений каждого адреса от 5.23 до -5.23. Вся проблема в том что значения асинхронные. Нельзя просто так задать инструкцие условие - если дойдешь до 5.23 то начинай убавление и наоборот, если дойдешь до -5.23 - то начинай прибавление.

Нельзя потому что в итоге камера вращается с непостоянной скоростью. Камера делает оборот, потом второй и так до бесконечности, но в четырех точках камера замедляет движение, далее пройдя их - ускоряет его, и поэтому нет одной постоянной скорости, в этом и вся проблема.

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

 

Вобщем, есть идея, сделать один оборот камеры, и записать значения косинуса и синуса в два файла. Количество значений должно будет быть одинаковым, так как частота записи будет одна для всех. Далее уже, считывая значения из файлов, в косинус и синус в один момент будет записываться специальные оригинальные значения. Останется только определиться как управлять поворотом или в одну сторону или в другую, а также как  останавливать камеру на месте.

 

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

Привет, по-моему это слишком трудно) Я делал вращение камеры так:

Скрытый текст

function MLeft()
gr = math.acos(readFloat('Адрес1'))*(180/3.1415926535)+3
if (gr > 179) then gr=0 end
x = math.rad(gr)
cos = math.cos(x)
sin = math.sin(x)
writeFloat('Адрес1', cos)
writeFloat('Адрес2', sin)
end
createHotkey(MLeft, VK_NUMPAD7)

 

 

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

Привет, проверил, значения сразу меняются на Nan.

Это в какой игре ты использовал этот скрипт? Какие там максимальные и минимальные значения адресов

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

Рабочий метод Влад. Но только если значение не бывает ниже -1 (минус 1) и выше 1

Если ниже или выше то вот что получается - 1.#QNAN.

А в игре как раз значения от 5.23 до -5.23.

 

С сохранение в файл разобрался, а с загрузкой не получается. А ведь интересные моды можно сделать И запись движения камеры, с дальнейшим его воспроизведением, и вращение, да и вообще что угодно.

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

Все, работает.

Скрытый текст

camerarotat_not360_1_Act:
cmp [camfly_rotat_Hotkey_left],#1
je camerarotat_not360_1_ToLeft
cmp [camfly_rotat_Hotkey_Right],#1
je camerarotat_not360_1_ToRight
jmp camerarotat_not360_1_Step_UpDown


camerarotat_not360_1_ToLeft:
fld dword ptr [camfly_rotat_value_MAIN]
fadd dword ptr [camfly_rotat_Speed]
fstp dword ptr [camfly_rotat_value_MAIN]
fld dword ptr [camfly_rotat_value_MAIN]
fcos
fstp dword ptr [rbx+000001D0]
fld dword ptr [camfly_rotat_value_MAIN]
fsin
fstp dword ptr [rbx+000001D8]
jmp camerarotat_not360_1_Step_UpDown

camerarotat_not360_1_ToRight:
fld dword ptr [camfly_rotat_value_MAIN]
fsub dword ptr [camfly_rotat_Speed]
fstp dword ptr [camfly_rotat_value_MAIN]
fld dword ptr [camfly_rotat_value_MAIN]
fcos
fstp dword ptr [rbx+000001D0]
fld dword ptr [camfly_rotat_value_MAIN]
fsin
fstp dword ptr [rbx+000001D8]
jmp camerarotat_not360_1_Step_UpDown

//--------------------------------------------- camerarotat_not360_1_Step_UpDown:

camerarotat_not360_1_Step_UpDown:
cmp [camfly_rotat_Hotkey_Up],#1
je camerarotat_not360_1_ToUp
cmp [camfly_rotat_Hotkey_Down],#1
je camerarotat_not360_1_ToDown
jmp BACKcamerarotat_not360_1


camerarotat_not360_1_ToUp:
fld dword ptr [rbx+000001D4]
fadd dword ptr [camfly_rotat_Speed]
fstp dword ptr [rbx+000001D4]
jmp BACKcamerarotat_not360_1

camerarotat_not360_1_ToDown:
fld dword ptr [rbx+000001D4]
fsub dword ptr [camfly_rotat_Speed]
fstp dword ptr [rbx+000001D4]
jmp BACKcamerarotat_not360_1

 

 

Скрипт плавно вращает камерой вправо-влево, вверх-вниз.

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

 

camfly_rotat_value_MAIN - это флоат значение. Его можно увеличивать до бесконечности и камера будет вращаться все время вправо, если же уменьшать до бесконечности - то влево.

Fcos и Fsin сами все правильно делают, несмотря на то что значение camfly_rotat_value_MAIN не до 1 и даже не до 5.23

Влад, благодарю.

 

По поводу записи в текстовый файл, не понятно ничего, так как нет знаний lua. Но есть одна другая интересная идея, если получится, и все будет "ок", то отпишусь

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

Получилось сделать запись камеры с дальнейшим воспроизведением и всё "ок".

Кому интересно, а никому не интересно, я расскажу суть.

- Вначале находим инструкцию на X координату камеры

- Далее нахрдим Z, Y, Cos, Sin, Pitch камеры, - они обычно недалеко от X координаты

- Далее Готовим инструкцию X координаты к работе, она будет всем заправлять

- Выделяем 6 участков памяти для каждого адреса (у меня памяти выделено на ~43 минуты записи - 1 000 000 x 6 = 6 000 000)

 

- Далее необходимо установить условия

* Если память закончилась, остановись.

* Если память не записывалась, не воспроизводи.

 

- Далее всякие прибамбасы

* Счетчик записанного пространства

* Паузы

* Перезапись

 

- Запись производится так

* Считывается начальный адрес выделенного участка

* Прибавляется нужное смещение (у меня адрес 8 байт дробный, поэтому смещение 8)

* Записывается значение

* Далее цикл повторяется

Вобщем это все.

 

Скрытый текст

 

 

 

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

21 часа назад, AntonVit сказал:

Получилось сделать запись камеры с дальнейшим воспроизведением и всё "ок".

Классно получилось, самое оно, чтобы пилить видосики)))

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

Есть идея, сделать автопилот в Forza Horizon 3. Выставил метку на карте, и машина сама поехала и доехала. Есть у кого-нибудь какие-нибудь соображения, по средствам чего это можно осуществить?

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

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

1 час назад, AntonVit сказал:

Есть идея, сделать автопилот в Forza Horizon 3.

Да............... Идея глобальная - кода будет отщень и отщень много.;)

1 час назад, AntonVit сказал:

А вот ориентиры, где повернуть, где сбросить немного скорость, где прибавить.

Скорее всего постоянно сканировать координаты на наличие объектов на карте (столбов, машин, ограждений), учитывать инерцию, короче по новой поизучать Физику, чтобы автопилот вовремя тормозил, сбрасывал скорость, ускорялся. Задача - не на один месяц.  Могу только пожелать - Удачи!!!

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

3 часа назад, AntonVit сказал:

А вот ориентиры, где повернуть, где сбросить немного скорость, где прибавить.

 

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

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

1 час назад, partoftheworlD сказал:

. А с поворотами как сказал @Garik66 задавать координаты ключевых поворотов.

 

Что значит ключевые координаты поворотов?

 

В игре есть дороги асфальтированные, и есть грунтовые, песчаные, и по воде, нужно чтобы работало на всех типах.

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

25 минуты назад, AntonVit сказал:

В игре есть дороги асфальтированные, и есть грунтовые, песчаные, и по воде, нужно чтобы работало на всех типах.

Я говорю о  триггерах вокруг дороги, типа травы на этом скрине, если машина попадает на траву, то скорость уменьшается.

Вспомнил о дирт и вот, если перехватить координаты по которым рекомендует ехать помощник, можно задать путь автопилоту. Думаю в Forza Horizon тоже помощник есть.

 

maxresdefault.jpg

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

В Форзе есть такие же указатели на дороге, только в виде стрелок. Каждая стрелка имеет свои координаты.

 

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

 

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

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

4 часа назад, AntonVit сказал:

Взял стрелку, нашел инструкцию, заменил все значения XYZ стрелок через инструкцию на значения за пределами карты,

Поделись, каким методом ты нашел стрелки? Указывал точку на карте куда ехать и медленно по ней ехал, отсеивая значения?

Или стоял на месте и менял навигацию?

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

10 час назад, AntonVit сказал:

Взял стрелку, нашел инструкцию

 

Теперь буду знать как выходить на структуру ботов в гонках, через координаты - дольше как мне кажется.:D

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

10 час назад, elvis66666 сказал:

Поделись, каким методом ты нашел стрелки? Указывал точку на карте куда ехать и медленно по ней ехал, отсеивая значения?

Или стоял на месте и менял навигацию?

 

Поставил метку на карте, на дороге появились стрелки. Наехал машиной на первую стрелку, и сделал сканирование (X машины например 1000, то сканирование например от 970 до 1030). Потом отключил метку на карте, отъехал в другое место, снова поставил метку, сделал изменилось, в итоге осталось около 100 штук, какие то из них постоянно менялись. Взял те что не менялись и изменил на любое другое значение, в итоге стрелки передвинулись.

 

Когда то в Дирт 3 в Монако, передвинул такой же указатель на дороге в сторону обрыва, но указатель не первый, а 20 -30ый (не помню точно), и стал смотреть за действиями бота, - бот тронулся со старта, доехал до этого указателя, точнее до того указателя который перед этим сдвинутым указателем, и стал пытаться съехать в обрыв, но не мог по причине того что там был бордюр, в этот то бордюр он и бился беспрестанно.

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

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

8 часов назад, AntonVit сказал:

Поставил метку на карте, на дороге появились стрелки. Наехал машиной на первую стрелку, и сделал сканирование (X машины например 1000, то сканирование например от 970 до 1030). Потом отключил метку на карте, отъехал в другое место, снова поставил метку, сделал изменилось, в итоге осталось около 100 штук, какие то из них постоянно менялись. Взял те что не менялись и изменил на любое другое значение, в итоге стрелки передвинулись.

Сделал вчера почти так же, попал на инструкции работающие с миникартой) Отключил траекторию на миникарте и саму миникурту ^_^ 

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

14 часа назад, AntonVit сказал:

А так то, интересный бы мод получился, а то ездишь один одинешенек по пустыне, а так за тобой целая команда ботов.

Интересная идея. Я думаю ее легко реализовать, но нужно подумать как. 

Первая мысль была найти координату точки (WayPoint), которую ставить на карте и к ней рисуется маршрут. Соответственно для всех ботов поставить WayPoint на себя и маршрут будет автоматом рисоваться для ботов, они будут ехать.

Нашел сегодня координаты, сместил точку, точка сместилась, но маршрут не перерисовался. Решил проверить в гонке, там вообще инструкция не работает.

Следующая идея была найти чекпоинты расположенные в гонке. Нашел, но игра крашнулась, не успел проверить ))) Уже галаза закрываются, завтра пройдусь еще по коду. Я думаю без проблем можно выйти на инструкцию выше.

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

18 час назад, AntonVit сказал:

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

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

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

1 час назад, elvis66666 сказал:

Там допустимость координат проверяется и условие что эти координаты не дальше 5-10 метров от машины бота.

 

Откуда информация? Я подъезжал вплотную к машине бота, но он не ехал за мною.

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

34 минуты назад, AntonVit сказал:

Откуда информация? Я подъезжал вплотную к машине бота, но он не ехал за мною.

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

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

  • 3 недели спустя...

Скрипт управления движением камеры слежения, + записи движения и вращения камеры слежения + воспроизведения движения и вращения камеры слежения.

В работе также участвуют и некоторые другие скрипты, но этот основной.

Скрипт не объясняю, по разным причинам, в том числе и по причине того, что я многое забыл.

Скрытый текст

[ENABLE]
aobscanregion(SCANcamera_coord_x, 7FF000000000, 7FFFFFFFFFFF, F2 0F 11 B3 B0 01 00 00 0F 28 B4 24 D0 00 00 00)
alloc(PLACEcamera_coord_x,50048,SCANcamera_coord_x)
registersymbol(SCANcamera_coord_x)
label(BACKcamera_coord_x)
label(camera_coord_x_ACT)
label(camera_coord_x_ORIG)

alloc(camfly_pos_Checker,8)
registersymbol(camfly_pos_Checker)
alloc(camfly_Hotkey_Forward_Mov,8)
registersymbol(camfly_Hotkey_Forward_Mov)
alloc(camfly_Hotkey_Backward_Mov,8)
registersymbol(camfly_Hotkey_Backward_Mov)
alloc(camfly_Hotkey_Left_Mov,8)
registersymbol(camfly_Hotkey_Left_Mov)
alloc(camfly_Hotkey_Right_Mov,8)
registersymbol(camfly_Hotkey_Right_Mov)
alloc(camfly_Hotkey_Up_Mov,8)
registersymbol(camfly_Hotkey_Up_Mov)
alloc(camfly_Hotkey_Down_Mov,8)
registersymbol(camfly_Hotkey_Down_Mov)
alloc(camfly_Hotkey_FullForw_Mov,8)
registersymbol(camfly_Hotkey_FullForw_Mov)
alloc(camfly_Hotkey_FullBacw_Mov,8)
registersymbol(camfly_Hotkey_FullBacw_Mov)

alloc(Xcam_fly,8)
registersymbol(Xcam_fly)
alloc(Zcam_fly,8)
registersymbol(Zcam_fly)
alloc(Ycam_fly,8)
registersymbol(Ycam_fly)
alloc(COScam_fly,8)
registersymbol(COScam_fly)
alloc(SINcam_fly,8)
registersymbol(SINcam_fly)
alloc(PITCHcam_fly,8)
registersymbol(PITCHcam_fly)
alloc(CamFlyingspeed_fly_cam,8)
registersymbol(CamFlyingspeed_fly_cam)

//************************* RECORD
alloc(camfly_Firts_Time_run_Scr,8)
registersymbol(camfly_Firts_Time_run_Scr)

alloc(PLACEEcamfly_Record,1000512)
registersymbol(PLACEEcamfly_Record)
alloc(Get_First_Alloc_Adree_X,8)
registersymbol(Get_First_Alloc_Adree_X)
alloc(PLACEEcamfly_Record_Z,1000512)
registersymbol(PLACEEcamfly_Record_Z)
alloc(Get_First_Alloc_Adree_Z,8)
registersymbol(Get_First_Alloc_Adree_Z)
alloc(PLACEEcamfly_Record_Y,1000512)
registersymbol(PLACEEcamfly_Record_Y)
alloc(Get_First_Alloc_Adree_Y,8)
registersymbol(Get_First_Alloc_Adree_Y)

alloc(PLACEEcamfly_Record_Turn_X,1000512)
registersymbol(PLACEEcamfly_Record_Turn_X)
alloc(Get_First_Alloc_Adree_Turn_X,8)
registersymbol(Get_First_Alloc_Adree_Turn_X)

alloc(PLACEEcamfly_Record_Turn_Z,1000512)
registersymbol(PLACEEcamfly_Record_Turn_Z)
alloc(Get_First_Alloc_Adree_Turn_Z,8)
registersymbol(Get_First_Alloc_Adree_Turn_Z)

alloc(PLACEEcamfly_Record_Turn_Y,1000512)
registersymbol(PLACEEcamfly_Record_Turn_Y)
alloc(Get_First_Alloc_Adree_Turn_Y,8)
registersymbol(Get_First_Alloc_Adree_Turn_Y)

alloc(Record_Percent_complete,8)
registersymbol(Record_Percent_complete)
alloc(Record_PLAY_Percent_complete,8)
registersymbol(Record_PLAY_Percent_complete)
alloc(First_Adrees_Adder,8)
registersymbol(First_Adrees_Adder)

alloc(camfly_RECORD_Checker,8)
registersymbol(camfly_RECORD_Checker)
alloc(camfly_RECORD_START,8)
registersymbol(camfly_RECORD_START)
alloc(camfly_RECORD_RESTART,8)
registersymbol(camfly_RECORD_RESTART)
alloc(camfly_RECORD_PAUSE_AH,8)
registersymbol(camfly_RECORD_PAUSE_AH)
alloc(camfly_RECORD_PLAY,8)
registersymbol(camfly_RECORD_PLAY)

alloc(camfly_RECORD_PLAY_FORW,8)
registersymbol(camfly_RECORD_PLAY_FORW)
alloc(camfly_RECORD_PLAY_BACW,8)
registersymbol(camfly_RECORD_PLAY_BACW)
alloc(camfly_RECORD_PLAY_FORW_restart,8)
registersymbol(camfly_RECORD_PLAY_FORW_restart)
alloc(camfly_RECORD_PLAY_PAUSE_Forw_AH,8)
registersymbol(camfly_RECORD_PLAY_PAUSE_Forw_AH)

label(camera_RECORD_ACT)
label(camera_RECORD_PLAY_ACT)
label(camera_RECORD_PLAY_Forward)
label(camera_RECORD_PLAY_Bacward)

//-----------------------------------------PLACEcamera_coord_x
PLACEcamera_coord_x:
cmp [camfly_pos_Checker],#1
je camera_coord_x_ACT
movsd [rbx+000001B0],xmm6
jmp BACKcamera_coord_x


camera_coord_x_ACT:
cmp [camfly_Firts_Time_run_Scr],#0
je @f
fld qword ptr [rbx+000001B0] // Load X to alloc
fstp qword ptr [Xcam_fly]
fld qword ptr [rbx+000001B0+8] // Load Y to alloc
fstp qword ptr [Zcam_fly]
fld qword ptr [rbx+000001B0+8+8] // Load Y to alloc
fstp qword ptr [Ycam_fly]
fld dword ptr [rbx+000001B0+20] // Load Cosinus to alloc
fstp dword ptr [COScam_fly]
fld dword ptr [rbx+000001B0+20+8] // Load Sinus to alloc
fstp dword ptr [SINcam_fly]
fld dword ptr [rbx+000001B0+20+4] // Load Sinus to alloc
fstp dword ptr [PITCHcam_fly]

// Operations
// For X
fld dword ptr [COScam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [COScam_fly]
fld qword ptr [Xcam_fly]
fadd dword ptr [COScam_fly]
fstp qword ptr [Xcam_fly]
// For Y
fld dword ptr [SINcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [SINcam_fly]
fld qword ptr [Ycam_fly]
fadd dword ptr [SINcam_fly]
fstp qword ptr [Ycam_fly]
// For Z
mov [PITCHcam_fly],(float)0
fld dword ptr [PITCHcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [PITCHcam_fly]
fld qword ptr [Zcam_fly]
fadd dword ptr [PITCHcam_fly]
fstp qword ptr [Zcam_fly]
// Uploading
fld qword ptr [Xcam_fly]
fstp qword ptr [rbx+000001B0]
fld qword ptr [Zcam_fly]
fstp qword ptr [rbx+000001B0+8]
fld qword ptr [Ycam_fly]
fstp qword ptr [rbx+000001B0+8+8]








mov [camfly_Firts_Time_run_Scr],#0
@@:
cmp [camfly_Hotkey_Forward_Mov],#1
jne @f
// Loading to allocS
fld qword ptr [rbx+000001B0] // Load X to alloc
fstp qword ptr [Xcam_fly]
fld qword ptr [rbx+000001B0+8+8] // Load Y to alloc
fstp qword ptr [Ycam_fly]
fld dword ptr [rbx+000001B0+20] // Load Cosinus to alloc
fstp dword ptr [COScam_fly]
fld dword ptr [rbx+000001B8+20] // Load Sinus to alloc
fstp dword ptr [SINcam_fly]
// Operations
// For X
fld dword ptr [COScam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [COScam_fly]
fld qword ptr [Xcam_fly]
fadd dword ptr [COScam_fly]
fstp qword ptr [Xcam_fly]
// For Y
fld dword ptr [SINcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [SINcam_fly]
fld qword ptr [Ycam_fly]
fadd dword ptr [SINcam_fly]
fstp qword ptr [Ycam_fly]
// Uploading
fld qword ptr [Xcam_fly]
fstp qword ptr [rbx+000001B0]
fld qword ptr [Ycam_fly]
fstp qword ptr [rbx+000001B0+8+8]

@@:
cmp [camfly_Hotkey_Backward_Mov],#1
jne @f
// Loading to allocS
fld qword ptr [rbx+000001B0] // Load X to alloc
fstp qword ptr [Xcam_fly]
fld qword ptr [rbx+000001B0+8+8] // Load Y to alloc
fstp qword ptr [Ycam_fly]
fld dword ptr [rbx+000001B0+20] // Load Cosinus to alloc
fstp dword ptr [COScam_fly]
fld dword ptr [rbx+000001B8+20] // Load Sinus to alloc
fstp dword ptr [SINcam_fly]
// Operations
// For X
fld dword ptr [COScam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [COScam_fly]
fld qword ptr [Xcam_fly]
fsub dword ptr [COScam_fly]
fstp qword ptr [Xcam_fly]
// For Y
fld dword ptr [SINcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [SINcam_fly]
fld qword ptr [Ycam_fly]
fsub dword ptr [SINcam_fly]
fstp qword ptr [Ycam_fly]
// Uploading
fld qword ptr [Xcam_fly]
fstp qword ptr [rbx+000001B0]
fld qword ptr [Ycam_fly]
fstp qword ptr [rbx+000001B0+8+8]

@@:
cmp [camfly_Hotkey_Left_Mov],#1
jne @f
// Loading to allocS
fld qword ptr [rbx+000001B0] // Load X to alloc
fstp qword ptr [Xcam_fly]
fld qword ptr [rbx+000001B0+8+8] // Load Y to alloc
fstp qword ptr [Ycam_fly]
fld dword ptr [rbx+000001B0+20] // Load Cosinus to alloc
fstp dword ptr [COScam_fly]
fld dword ptr [rbx+000001B8+20] // Load Sinus to alloc
fstp dword ptr [SINcam_fly]
// Operations
// For X
fld dword ptr [SINcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [SINcam_fly]
fld qword ptr [Xcam_fly]
fsub dword ptr [SINcam_fly]
fstp qword ptr [Xcam_fly]
// For Y
fld dword ptr [COScam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [COScam_fly]
fld qword ptr [Ycam_fly]
fadd dword ptr [COScam_fly]
fstp qword ptr [Ycam_fly]
// Uploading
fld qword ptr [Xcam_fly]
fstp qword ptr [rbx+000001B0]
fld qword ptr [Ycam_fly]
fstp qword ptr [rbx+000001B0+8+8]

@@:
cmp [camfly_Hotkey_Right_Mov],#1
jne @f
// Loading to allocS
fld qword ptr [rbx+000001B0] // Load X to alloc
fstp qword ptr [Xcam_fly]
fld qword ptr [rbx+000001B0+8+8] // Load Y to alloc
fstp qword ptr [Ycam_fly]
fld dword ptr [rbx+000001B0+20] // Load Cosinus to alloc
fstp dword ptr [COScam_fly]
fld dword ptr [rbx+000001B0+20+8] // Load Sinus to alloc
fstp dword ptr [SINcam_fly]
// Operations
// For X
fld dword ptr [SINcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [SINcam_fly]
fld qword ptr [Xcam_fly]
fadd dword ptr [SINcam_fly]
fstp qword ptr [Xcam_fly]
// For Y
fld dword ptr [COScam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [COScam_fly]
fld qword ptr [Ycam_fly]
fsub dword ptr [COScam_fly]
fstp qword ptr [Ycam_fly]
// Uploading
fld qword ptr [Xcam_fly]
fstp qword ptr [rbx+000001B0]
fld qword ptr [Ycam_fly]
fstp qword ptr [rbx+000001B0+8+8]

@@:
cmp [camfly_Hotkey_Up_Mov],#1
jne @f
fld qword ptr [rbx+000001B0+8]
fadd dword ptr [CamFlyingspeed_fly_cam]
fstp qword ptr [rbx+000001B0+8]

@@:
cmp [camfly_Hotkey_Down_Mov],#1
jne @f
fld qword ptr [rbx+000001B0+8]
fsub dword ptr [CamFlyingspeed_fly_cam]
fstp qword ptr [rbx+000001B0+8]

@@:
cmp [camfly_Hotkey_FullForw_Mov],#1
jne @f
// Loading to allocS
fld qword ptr [rbx+000001B0] // Load X to alloc
fstp qword ptr [Xcam_fly]
fld qword ptr [rbx+000001B0+8] // Load Y to alloc
fstp qword ptr [Zcam_fly]
fld qword ptr [rbx+000001B0+8+8] // Load Y to alloc
fstp qword ptr [Ycam_fly]
fld dword ptr [rbx+000001B0+20] // Load Cosinus to alloc
fstp dword ptr [COScam_fly]
fld dword ptr [rbx+000001B0+20+8] // Load Sinus to alloc
fstp dword ptr [SINcam_fly]
fld dword ptr [rbx+000001B0+20+4] // Load Sinus to alloc
fstp dword ptr [PITCHcam_fly]

// Operations
// For X
fld dword ptr [COScam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [COScam_fly]
fld qword ptr [Xcam_fly]
fadd dword ptr [COScam_fly]
fstp qword ptr [Xcam_fly]
// For Y
fld dword ptr [SINcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [SINcam_fly]
fld qword ptr [Ycam_fly]
fadd dword ptr [SINcam_fly]
fstp qword ptr [Ycam_fly]
// For Z
fld dword ptr [PITCHcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [PITCHcam_fly]
fld qword ptr [Zcam_fly]
fadd dword ptr [PITCHcam_fly]
fstp qword ptr [Zcam_fly]
// Uploading
fld qword ptr [Xcam_fly]
fstp qword ptr [rbx+000001B0]
fld qword ptr [Zcam_fly]
fstp qword ptr [rbx+000001B0+8]
fld qword ptr [Ycam_fly]
fstp qword ptr [rbx+000001B0+8+8]

@@:
cmp [camfly_Hotkey_FullBacw_Mov],#1
jne @f
// Loading to allocS
fld qword ptr [rbx+000001B0] // Load X to alloc
fstp qword ptr [Xcam_fly]
fld qword ptr [rbx+000001B0+8] // Load Y to alloc
fstp qword ptr [Zcam_fly]
fld qword ptr [rbx+000001B0+8+8] // Load Y to alloc
fstp qword ptr [Ycam_fly]
fld dword ptr [rbx+000001B0+20] // Load Cosinus to alloc
fstp dword ptr [COScam_fly]
fld dword ptr [rbx+000001B0+20+8] // Load Sinus to alloc
fstp dword ptr [SINcam_fly]
fld dword ptr [rbx+000001B0+20+4] // Load Sinus to alloc
fstp dword ptr [PITCHcam_fly]

// Operations
// For X
fld dword ptr [COScam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [COScam_fly]
fld qword ptr [Xcam_fly]
fsub dword ptr [COScam_fly]
fstp qword ptr [Xcam_fly]
// For Y
fld dword ptr [SINcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [SINcam_fly]
fld qword ptr [Ycam_fly]
fsub dword ptr [SINcam_fly]
fstp qword ptr [Ycam_fly]
// For Z
fld dword ptr [PITCHcam_fly]
fmul dword ptr [CamFlyingspeed_fly_cam]
fstp dword ptr [PITCHcam_fly]
fld qword ptr [Zcam_fly]
fsub dword ptr [PITCHcam_fly]
fstp qword ptr [Zcam_fly]
// Uploading
fld qword ptr [Xcam_fly]
fstp qword ptr [rbx+000001B0]
fld qword ptr [Zcam_fly]
fstp qword ptr [rbx+000001B0+8]
fld qword ptr [Ycam_fly]
fstp qword ptr [rbx+000001B0+8+8]
@@:
cmp [camfly_RECORD_Checker],#1
je camera_RECORD_ACT
jmp BACKcamera_coord_x







////////////////////////////////////////-camera_RECORD_ACT-//////////////////////

camera_RECORD_ACT:
cmp [camfly_RECORD_PAUSE_AH],#1
je camera_coord_x_ORIG
cmp [camfly_RECORD_PLAY],#1
je camera_RECORD_PLAY_ACT
cmp [camfly_RECORD_RESTART],#0
je @f
mov [Get_First_Alloc_Adree_X],#0
mov [Get_First_Alloc_Adree_Z],#0
mov [Get_First_Alloc_Adree_Y],#0
mov [Get_First_Alloc_Adree_Turn_X],#0
mov [Get_First_Alloc_Adree_Turn_Z],#0
mov [Get_First_Alloc_Adree_Turn_Y],#0

mov [PLACEEcamfly_Record+F4240],#0
mov [PLACEEcamfly_Record_Z+F4240],#0
mov [PLACEEcamfly_Record_Y+F4240],#0
mov [PLACEEcamfly_Record_Turn_X+F4240],#0
mov [PLACEEcamfly_Record_Turn_Z+F4240],#0
mov [PLACEEcamfly_Record_Turn_Y+F4240],#0

mov [camfly_RECORD_RESTART],#0
mov [camfly_RECORD_START],#1
mov [Record_Percent_complete],#0

@@:
cmp [camfly_RECORD_START],#0
je camera_coord_x_ORIG
cmp [Get_First_Alloc_Adree_X],#0
jne @f
push rdi
mov rdi,PLACEEcamfly_Record
mov [Get_First_Alloc_Adree_X],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Z
mov [Get_First_Alloc_Adree_Z],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Y
mov [Get_First_Alloc_Adree_Y],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Turn_X
mov [Get_First_Alloc_Adree_Turn_X],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Turn_Z
mov [Get_First_Alloc_Adree_Turn_Z],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Turn_Y
mov [Get_First_Alloc_Adree_Turn_Y],rdi
pop rdi

@@:
fld qword ptr [Get_First_Alloc_Adree_X]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_X]
fld qword ptr [Get_First_Alloc_Adree_Z]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Z]
fld qword ptr [Get_First_Alloc_Adree_Y]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Y]

fld qword ptr [Get_First_Alloc_Adree_Turn_X]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_X]
fld qword ptr [Get_First_Alloc_Adree_Turn_Z]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_Z]
fld qword ptr [Get_First_Alloc_Adree_Turn_Y]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_Y]

cmp [PLACEEcamfly_Record+F4240],#0
je @f
mov [camfly_RECORD_START],#0

@@:
push rdi
push rsi
mov rdi,PLACEEcamfly_Record
mov rsi,[Get_First_Alloc_Adree_X]
sub rsi,rdi
mov [Record_Percent_complete],rsi
pop rsi
pop rdi


push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_X]
mov rsi,[rbx+000001B0]
mov [rdi],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Z]
mov rsi,[rbx+1C0]
mov [rdi],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Y]
mov rsi,[rbx+000001B0+8]
mov [rdi],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_X]
mov rsi,[rbx+000001B0+20]
mov [rdi],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_Z]
mov rsi,[rbx+000001B0+24]
mov [rdi],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_Y]
mov rsi,[rbx+000001B0+28]
mov [rdi],rsi
pop rsi
pop rdi
jmp BACKcamera_coord_x

/////////////////////////////////////////////-camera_RECORD_PLAY_ACT

camera_RECORD_PLAY_ACT:
cmp [camfly_RECORD_PLAY_PAUSE_Forw_AH],#1
je camera_coord_x_ORIG
cmp [PLACEEcamfly_Record+8],#0
je camera_coord_x_ORIG

cmp [camfly_RECORD_PLAY_FORW],#1
je camera_RECORD_PLAY_Forward
cmp [camfly_RECORD_PLAY_BACW],#1
je camera_RECORD_PLAY_Bacward
jmp BACKcamera_coord_x

/////////////////////////////////////////////-camera_RECORD_PLAY_Forward

camera_RECORD_PLAY_Forward:
cmp [camfly_RECORD_PLAY_FORW_restart],#0
je @f
push rdi
mov rdi,PLACEEcamfly_Record
mov [Get_First_Alloc_Adree_X],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Z
mov [Get_First_Alloc_Adree_Z],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Y
mov [Get_First_Alloc_Adree_Y],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Turn_X
mov [Get_First_Alloc_Adree_Turn_X],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Turn_Z
mov [Get_First_Alloc_Adree_Turn_Z],rdi
pop rdi

push rdi
mov rdi,PLACEEcamfly_Record_Turn_Y
mov [Get_First_Alloc_Adree_Turn_Y],rdi
pop rdi
mov [camfly_RECORD_PLAY_FORW_restart],#0

@@:
push rdi
mov rdi,[Get_First_Alloc_Adree_X]
cmp [rdi+16],#0
pop rdi
jne @f
mov [camfly_RECORD_PLAY_FORW],#0
jmp BACKcamera_coord_x
@@:
fld qword ptr [Get_First_Alloc_Adree_X]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_X]
fld qword ptr [Get_First_Alloc_Adree_Z]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Z]
fld qword ptr [Get_First_Alloc_Adree_Y]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Y]

fld qword ptr [Get_First_Alloc_Adree_Turn_X]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_X]
fld qword ptr [Get_First_Alloc_Adree_Turn_Z]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_Z]
fld qword ptr [Get_First_Alloc_Adree_Turn_Y]
fadd qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_Y]

push rdi
push rsi
mov rdi,PLACEEcamfly_Record
mov rsi,[Get_First_Alloc_Adree_X]
sub rsi,rdi
mov [Record_PLAY_Percent_complete],rsi
pop rsi
pop rdi


push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_X]
mov rsi,[rdi]
mov [rbx+000001B0],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Z]
mov rsi,[rdi]
mov [rbx+000001B0+8+8],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Y]
mov rsi,[rdi]
mov [rbx+000001B0+8],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_X]
mov rsi,[rdi]
mov [rbx+000001B0+20],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_Z]
mov rsi,[rdi]
mov [rbx+000001B0+24],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_Y]
mov rsi,[rdi]
mov [rbx+000001B0+28],rsi
pop rsi
pop rdi
jmp BACKcamera_coord_x

/////////////////////////////////////////////-camera_RECORD_PLAY_Bacward

camera_RECORD_PLAY_Bacward:
cmp [PLACEEcamfly_Record+8],#0
je camera_coord_x_ORIG
push rdi
mov rdi,[Get_First_Alloc_Adree_X]
cmp [rdi-18],#0
pop rdi
jne @f
mov [camfly_RECORD_PLAY_BACW],#0
jmp BACKcamera_coord_x
@@:
fld qword ptr [Get_First_Alloc_Adree_X]
fsub qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_X]
fld qword ptr [Get_First_Alloc_Adree_Z]
fsub qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Z]
fld qword ptr [Get_First_Alloc_Adree_Y]
fsub qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Y]

fld qword ptr [Get_First_Alloc_Adree_Turn_X]
fsub qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_X]
fld qword ptr [Get_First_Alloc_Adree_Turn_Z]
fsub qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_Z]
fld qword ptr [Get_First_Alloc_Adree_Turn_Y]
fsub qword ptr [First_Adrees_Adder]
fstp qword ptr [Get_First_Alloc_Adree_Turn_Y]

push rdi
push rsi
mov rdi,PLACEEcamfly_Record
mov rsi,[Get_First_Alloc_Adree_X]
sub rsi,rdi
mov [Record_PLAY_Percent_complete],rsi
pop rsi
pop rdi


push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_X]
mov rsi,[rdi]
mov [rbx+000001B0],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Z]
mov rsi,[rdi]
mov [rbx+000001B0+8+8],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Y]
mov rsi,[rdi]
mov [rbx+000001B0+8],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_X]
mov rsi,[rdi]
mov [rbx+000001B0+20],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_Z]
mov rsi,[rdi]
mov [rbx+000001B0+24],rsi
pop rsi
pop rdi

push rdi
push rsi
mov rdi,[Get_First_Alloc_Adree_Turn_Y]
mov rsi,[rdi]
mov [rbx+000001B0+28],rsi
pop rsi
pop rdi
jmp BACKcamera_coord_x






camera_coord_x_ORIG:
jmp BACKcamera_coord_x

////////////////

First_Adrees_Adder:
dd #8

SCANcamera_coord_x:
jmp PLACEcamera_coord_x
nop
nop
nop
BACKcamera_coord_x:
[DISABLE]
dealloc(PLACEcamera_coord_x)
unregistersymbol(SCANcamera_coord_x)
dealloc(camfly_pos_Checker)
unregistersymbol(camfly_pos_Checker)

dealloc(camfly_Hotkey_Forward_Mov)
unregistersymbol(camfly_Hotkey_Forward_Mov)
dealloc(camfly_Hotkey_Backward_Mov)
unregistersymbol(camfly_Hotkey_Backward_Mov)
dealloc(camfly_Hotkey_Left_Mov)
unregistersymbol(camfly_Hotkey_Left_Mov)
dealloc(camfly_Hotkey_Right_Mov)
unregistersymbol(camfly_Hotkey_Right_Mov)
dealloc(camfly_Hotkey_Up_Mov)
unregistersymbol(camfly_Hotkey_Up_Mov)
dealloc(camfly_Hotkey_Down_Mov)
unregistersymbol(camfly_Hotkey_Down_Mov)
dealloc(camfly_Hotkey_FullForw_Mov)
unregistersymbol(camfly_Hotkey_FullForw_Mov)
dealloc(camfly_Hotkey_FullBacw_Mov)
unregistersymbol(camfly_Hotkey_FullBacw_Mov)

dealloc(Xcam_fly)
unregistersymbol(Xcam_fly)
dealloc(Zcam_fly)
unregistersymbol(Zcam_fly)
dealloc(Ycam_fly)
unregistersymbol(Ycam_fly)
dealloc(COScam_fly)
unregistersymbol(COScam_fly)
dealloc(SINcam_fly)
unregistersymbol(SINcam_fly)
dealloc(PITCHcam_fly)
unregistersymbol(PITCHcam_fly)
dealloc(CamFlyingspeed_fly_cam)
unregistersymbol(CamFlyingspeed_fly_cam)

//**********************RECORD
dealloc(camfly_Firts_Time_run_Scr)
unregistersymbol(camfly_Firts_Time_run_Scr)

dealloc(PLACEEcamfly_Record)
unregistersymbol(PLACEEcamfly_Record)
dealloc(Get_First_Alloc_Adree_X)
unregistersymbol(Get_First_Alloc_Adree_X)
dealloc(PLACEEcamfly_Record_Z)
unregistersymbol(PLACEEcamfly_Record_Z)
dealloc(Get_First_Alloc_Adree_Z)
unregistersymbol(Get_First_Alloc_Adree_Z)
dealloc(PLACEEcamfly_Record_Y)
unregistersymbol(PLACEEcamfly_Record_Y)
dealloc(Get_First_Alloc_Adree_Y)
unregistersymbol(Get_First_Alloc_Adree_Y)

dealloc(PLACEEcamfly_Record_Turn_X)
unregistersymbol(PLACEEcamfly_Record_Turn_X)
dealloc(Get_First_Alloc_Adree_Turn_X)
unregistersymbol(Get_First_Alloc_Adree_Turn_X)
dealloc(PLACEEcamfly_Record_Turn_Z)
unregistersymbol(PLACEEcamfly_Record_Turn_Z)
dealloc(Get_First_Alloc_Adree_Turn_Z)
unregistersymbol(Get_First_Alloc_Adree_Turn_Z)
dealloc(PLACEEcamfly_Record_Turn_Y)
unregistersymbol(PLACEEcamfly_Record_Turn_Y)
dealloc(Get_First_Alloc_Adree_Turn_Y)
unregistersymbol(Get_First_Alloc_Adree_Turn_Y)

dealloc(Record_Percent_complete)
unregistersymbol(Record_Percent_complete)
dealloc(Record_PLAY_Percent_complete)
unregistersymbol(Record_PLAY_Percent_complete)
dealloc(First_Adrees_Adder)
unregistersymbol(First_Adrees_Adder)

dealloc(camfly_RECORD_Checker)
unregistersymbol(camfly_RECORD_Checker)
dealloc(camfly_RECORD_START)
unregistersymbol(camfly_RECORD_START)
dealloc(camfly_RECORD_RESTART)
unregistersymbol(camfly_RECORD_RESTART)
dealloc(camfly_RECORD_PAUSE_AH)
unregistersymbol(camfly_RECORD_PAUSE_AH)
dealloc(camfly_RECORD_PLAY)
unregistersymbol(camfly_RECORD_PLAY)

dealloc(camfly_RECORD_PLAY_FORW)
unregistersymbol(camfly_RECORD_PLAY_FORW)
dealloc(camfly_RECORD_PLAY_BACW)
unregistersymbol(camfly_RECORD_PLAY_BACW)
dealloc(camfly_RECORD_PLAY_FORW_restart)
unregistersymbol(camfly_RECORD_PLAY_FORW_restart)
dealloc(camfly_RECORD_PLAY_PAUSE_Forw_AH)
unregistersymbol(camfly_RECORD_PLAY_PAUSE_Forw_AH)

SCANcamera_coord_x:
movsd [rbx+000001B0],xmm6


{
// ORIGINAL CODE - INJECTION POINT: 7FF6301157D8

7FF6301157A3: FF 50 10                    -  call qword ptr [rax+10]
7FF6301157A6: F3 0F 10 4C 24 64           -  movss xmm1,[rsp+64]
7FF6301157AC: 0F 57 C0                    -  xorps xmm0,xmm0
7FF6301157AF: 44 0F 28 94 24 90 00 00 00  -  movaps xmm10,[rsp+00000090]
7FF6301157B8: F3 0F 58 4C 24 54           -  addss xmm1,[rsp+54]
7FF6301157BE: F2 0F 58 30                 -  addsd xmm6,[rax]
7FF6301157C2: F2 44 0F 58 40 10           -  addsd xmm8,[rax+10]
7FF6301157C8: F2 44 0F 58 48 18           -  addsd xmm9,[rax+18]
7FF6301157CE: F2 0F 58 78 08              -  addsd xmm7,[rax+08]
7FF6301157D3: 0F 5C 44 24 40              -  subps xmm0,[rsp+40]
// ---------- INJECTING HERE ----------
7FF6301157D8: F2 0F 11 B3 B0 01 00 00     -  movsd [rbx+000001B0],xmm6
// ---------- DONE INJECTING  ----------
7FF6301157E0: 0F 28 B4 24 D0 00 00 00     -  movaps xmm6,[rsp+000000D0]
7FF6301157E8: F2 44 0F 11 83 C0 01 00 00  -  movsd [rbx+000001C0],xmm8
7FF6301157F1: 44 0F 28 84 24 B0 00 00 00  -  movaps xmm8,[rsp+000000B0]
7FF6301157FA: F2 44 0F 11 8B C8 01 00 00  -  movsd [rbx+000001C8],xmm9
7FF630115803: 44 0F 28 8C 24 A0 00 00 00  -  movaps xmm9,[rsp+000000A0]
7FF63011580C: F2 0F 11 BB B8 01 00 00     -  movsd [rbx+000001B8],xmm7
7FF630115814: 0F 29 83 D0 01 00 00        -  movaps [rbx+000001D0],xmm0
7FF63011581B: F3 0F 58 8B 10 02 00 00     -  addss xmm1,[rbx+00000210]
7FF630115823: F3 0F 58 8B D4 01 00 00     -  addss xmm1,[rbx+000001D4]
7FF63011582B: F3 0F 11 8B D4 01 00 00     -  movss [rbx+000001D4],xmm1
}

 

 

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

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

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

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