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

x64 Проектный Minecraft делаем полёт персонажа на позицию


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

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

Скрипт:

Спойлер

[ENABLE]
alloc(PlFly,160)
createthread(PlFly)
label(flyTo)
label(multiplayer)
label(savecoords1)
registersymbol(flyTo)
registersymbol(multiplayer)
registersymbol(savecoords1)


PlFly:
cmp byte ptr [flyTo],5 //Если введем значение 5 то поток вернется
je retmetka
cmp byte ptr [flyTo],1
je savecoords2
cmp byte ptr [flyTo],2
je movetocoords
jmp PlFly //Зацикливание потока

savecoords2: //Сохранение позиции
mov byte ptr [flyTo],0 //Обнуление управления
mov eax,[playeradress+4]
movq xmm0,[eax+30]
movq [savecoords1],xmm0 //Сохраняем координату X (movq переписываем 8 байт из 1 в другое)
movq xmm0,[eax+38]
movq [savecoords1+8],xmm0 //Координату Y
movq xmm0,[eax+40]
movq [savecoords1+10],xmm0 //Координату Z
jmp PlFly


movetocoords: //Полет на позицию
mov eax,[playeradress+4]
mov edx,[eax+34] //Правая часть doble координат
cmp edx,[savecoords1+4] //Проверка равны ли координаты
jne Gocoords
mov byte ptr [flyTo],0

Gocoords:
movq xmm0,[savecoords1] //X
subsd xmm0,[eax+30] //Делаем вычитание из сохраненной координаты, теперешней.
divsd xmm0,[multiplayer] //Будет делится на это число, так можно управлять скоростью
movq [eax+48],xmm0 //Записываем в ускорение полученное число
movq xmm0,[savecoords1+8] //Y
subsd xmm0,[eax+38] //Делаем вычитание из сохраненной координаты, теперешней.
divsd xmm0,[multiplayer] //Будет делится на это число, так можно управлять скоростью
movq [eax+50],xmm0 //Записываем в ускорение полученное число
movq xmm0,[savecoords1+10] //Z
subsd xmm0,[eax+40] //Делаем вычитание из сохраненной координаты, теперешней.
divsd xmm0,[multiplayer] //Будет делится на это число, так можно управлять скоростью
movq [eax+58],xmm0 //Записываем в ускорение полученное число

jmp PlFly //Вот и вся функция, зато какой результат!

retmetka: //Перед выключением скрипта для его редактирования надо вернуть поток
ret


//Метки
flyTo: //Это будет метка которая будет управлять скриптом
dd 0

savecoords1: //метка с сохраненными координатами в doble, 1 координата 8 байт
dq 0 0 0

multiplayer:
dq 4024333333333333 //10.1 (doble)


[DISABLE]
unregistersymbol(savecoords1)
unregistersymbol(multiplayer)
unregistersymbol(flyTo)
dealloc(PlFly)

 


Видео:

Спойлер

 

 

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

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

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

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