imaginary Опубликовано 18 февраля, 2018 Поделиться Опубликовано 18 февраля, 2018 (изменено) В этой теме можно узнать как сделать полёт на определённые координаты исходя из координат точки и координат персонажа. Для созданий этого скрипта надо иметь у себя адрес персонажа, потому лучше еще прочитать предыдущую тему. Скрипт: Спойлер [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) Видео: Спойлер Изменено 19 февраля, 2018 пользователем inaginary 1 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения