|
|
|
Подскажите почему move_smooth не работает?, move_smooth в 3D шутере |
|
|
Fors1k |
17.12.2019, 19:49
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2212
Пользователь №: 18.746
|
offtopic
Цитата(DarkMaster @ 17.12.2019, 19:03) У меня есть очередной ответ под копирку, который тебе не понравится =)
Хах, ничего, я только за полезные дискуссии и советы=) Цитата(DarkMaster @ 17.12.2019, 19:03) Lua...там оно уже есть в виде биндингов к ffi)
Ну чего же тогда задача автора не была решена за пару минут великим луа?)) Не, серьезно, если бы люди задавали тут вопросы, и за 5 мин получали ответы на луа, без всяких: ну вроде надо так, а дальше не знаю как закончить... там как бы эта функция есть, но как запускать - хз... раньше запускалось, а ща чет никак...в документации сказано так, но оно так не запускается... и т.д. , то я бы был только за такой язык, где все есть и все работает.) Ясное дело я вижу, что в пилоте то одного, то другого не хватает, но здесь хоть у нас под боком есть Верховный Сотворитель(Wknight), к которому можно сразу же обратиться с каким-то пожеланием в соответствующую тему. Да, там конечно тишина сейчас, но мысль о том, что есть "дверь, куда постучать", уже греет)) Цитата(DarkMaster @ 17.12.2019, 19:03) Правда я там так и не разобрался, как хендлы дергать. Но оно есть =)
В этом весь луа))) : Цитата(minfin @ 27.11.2019, 8:00) трое суток учил Lua. = от это уж точно "грызть кактус" список функций не полный. всё-равно костыль на костыле. не понятный скрипт в непонятном скрипте. Цитата(SeregaB @ 13.12.2019, 20:40) Нашел такую функцию и она работает, правда в другой программе. Цитата(DarkMaster @ 17.12.2019, 19:03) Правда я там так и не разобрался...
Цитата(Sairex @ 15.12.2019, 11:10) Костыли для break и continue на goto Цитата(Themen @ 5.8.2019, 15:24) Почему-то не работают файловые функции (LUA), если расширение файлов "*.int".
Цитата(sutra @ 3.3.2019, 5:05) Цитата Без чудо файликов в Lua jit не будет работать компиляция и еще ряд фишек Во-во! Везде надо "смотреть в оба" на ЧУДО-файлики, на всякие фокусы ..., да ещё и разбираться во всём этом. Всех кудесников - на рудники. И вообще, когда принцип - "милый мой хороший, догадайся сам" становится основой - грош цена таким реализациям. И таких сообщений можно найти сотни, они и отпугивают от луа.
Ну, и раз так все активно агитируют за луа, то я уже все-таки подумываю на выходных ознакомиться с ним, и поискать что-то такое, что на нем получится написать проще и удобнее, чем на пилоте;)
--------------------
Для связи
|
|
|
|
DarkMaster |
17.12.2019, 22:51
|
Модератор UOPilot
Сообщений: 9.477
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27903
Пользователь №: 11.279
|
Цитата Ну чего же тогда задача автора не была решена за пару минут великим луа?)) Потому что я малость не шарю в винапи, и у меня есть проблемы с поиском окон. Винапи, насколько я понял, требует не просто хендл, а полноценную структуру в качестве параметров, а вот, как из хендла вытащить структуру для меня вопрос. Хотя когда-то я писал дллки по дерганью свойств окон с перебором дерева... Это проблема не луа, а квалификации в области знаний. Цитата В этом весь луа))): Луа тут вообще не при чем. Там фактически сишные структуры. Т.е. процесс написания ничем от Си отличаться не будет. А вот структуры в качестве параметров там, где они не нужны, и переопределение стандартных типов - вот в этом все Си и особенно винапи. Не на то грешишь, но саму идею поддерживаю =) Цитата Костыли для break и continue на goto На самом деле в очень многих языках тоже самое. Тот же break <LEVEL> скорее редкая фишка, как правло это все то же goto, как не печально. Цитата Без чудо файликов в Lua jit не будет работать компиляция и еще ряд фишек Во-во! Везде надо "смотреть в оба" на ЧУДО-файлики Опять же вопрос квалификации сборщика. Тапки кидать в меня и кнайта. Пользователь не виноват. Хотя по большому счету, если ты занимаешься разработкой, то должен быть и готов подлинковать что-то, подгуглить. Но сам подход, что не было этих вещей из коробки крайне ошибочен и подобные проблемы меня лично зачастую выбешивают неимоверно. Ладно когда их 1-2, но у меня были _недели_ подобных подлинковок, конфликтов версий и прочей лабуды просто для того чтобы скомпилить какую-нибудь либу. В итоге цепочка из проблем накапливала больше двух десятков звеньев. Виноваты мы короче =)
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
SeregaB |
18.12.2019, 12:20
|
Neophyte
Сообщений: 47
Регистрация: 22.9.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.405
|
Цитата(Fors1k @ 16.12.2019, 18:30) Ну, походу, то, что ты хотел.
Файл закинь в /System32.
Отлично, спасибо, теперь получился поворот экрана, только не понятно что это за файл и как его делать под себя, если понадобятся другие задачи. Как я понимаю, в Пилоте напрямую через DLL нельзя прописать такую функцию?
|
|
|
|
Fors1k |
18.12.2019, 21:14
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2212
Пользователь №: 18.746
|
Цитата(SeregaB @ 18.12.2019, 12:20) Отлично, спасибо, теперь получился поворот экрана, только не понятно что это за файл и как его делать под себя, если понадобятся другие задачи.
В смысле как запускать другие функции winapi? Я думал тебе только move был нужен, и написал удобную процедуру именно под него. Можно и универсальную сделать. Для любой функции winapi: call winApi <библиотека> <функция> <параметры(одной переменной)> . А можно и совместить, если move все-таки будет использоваться в коде часто. Пример: Код set $params 1 -300 -250 0 0 call winapi u mouse_event $params // сдвинуть курсор на 300 влево и на 250 вверх wait 1000
call move 300 250 // вернуть курсор обратно (КОРОТКАЯ ЗАПИСЬ) wait 2000 call move 500 500 abs // сдвинуть курсор в 500x500 (КОРОТКАЯ ЗАПИСЬ)
set $params 0 open calc.exe 0 0 1 call winapi s ShellExecuteW $params // запустить калькулятор wait 4000
set $params findwindow('калькулятор') 16 0 0 call winapi u SendMessageW $params // закрыть калькулятор
end_script
//---------------------------------------------
proc winapi $lib $function $params set linedelay 0 switch $lib case u exec winapiexec.exe user32.dll@$function $params break case s exec winapiexec.exe shell32.dll@$function $params break end_switch end_proc proc move #x #y $abs set linedelay 0 set #flags 1 if $abs = abs set #flags 32769 set #x 65536 * #x / screenwidth set #y 65536 * #y / screenheight end_if exec winapiexec.exe u@mouse_event #flags #x #y 0 0 end_proc Цитата(DarkMaster @ 18.12.2019, 12:48) Скорее всего кстати файлик закинуть можно и просто рядом с пилотом. Ага, можно куда угодно. Просто в s32 удобно, что бы путь не писать каждый раз) Цитата(DarkMaster @ 17.12.2019, 22:51) Потому что я малость не шарю в винапи
Да я сам впервые вижу этот вин апи, и уже начинаю его недолюбливать))
--------------------
Для связи
|
|
|
|
SeregaB |
23.12.2019, 11:12
|
Neophyte
Сообщений: 47
Регистрация: 22.9.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.405
|
Цитата(Fors1k @ 18.12.2019, 21:14) Да я сам впервые вижу этот вин апи, и уже начинаю его недолюбливать))
Хоть и впервые, но уже много чего можешь сделать. Я совсем не представляю откуда брать параметры и как это все на деле применять. В разных программах все по разному, конкретного описапия нигде не нашел. Просто с применением WinApi расширяется круг возможностей, пример тому решилась моя задача. Fors1k, единственное есть вопрос, как можно сделать плавное смещение курсора командой call move x y?
|
|
|
|
Zenogiasu |
13.1.2023, 9:21
|
Neophyte
Сообщений: 45
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28
|
Очень странно... Такая сверхважная весчь, как перемещение камеры вместе с курсором в играх с нонтаргетом... описывается только в 1 захолустной темке на форуме, которую случайно нашел. Был уверен что пилотик на такое не способен, и придется учитться работать с ардуино, ведь утвержалось так, будто лишь только через этот дополнительный костыль в виде платы можно двигать камеру. Но тут приходит уважаемый Fors1k, пишет какой-то файлик и О ЧУДО! Пилот из простого-умного манипулятора мышкой превращается в полноценную программу для написания серьезных ботов в современных играх с нонтаргетом, а не только в браузерках и уо, где только курсором и нужно управлять) Спасибо. Уже собирался заказывать ардуино, хорошо что темку откапал вовремя
|
|
|
|
Zenogiasu |
29.3.2023, 20:03
|
Neophyte
Сообщений: 45
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28
|
Приветствую авантюристы. Возникла пара вопросов. как делить число, чтоб пилот сохранял дробную часть и учитывал её при дальнейших вычислениях? например 577 на 10, пилот вернет 57.Надо это мне для того чтобы move_smooth по своим расчетам реализовать. Принцип расчета в том что мы берем текущие корды мыши и вычитаем из координат, куда надо переместить 500 500, чтобы полученный отрезок уже разделить делителем 10 и двигать мышь с рандом промежутками времени. но если не приделать костыль в виде конечного перемещения обычным мувом в нужные корды 500 500, то курсор приедет с погрешностями в точку назначения, если текущие корды мыши не будут делиться на 10 или другой делитель без остатка. в коде все прописал. Есть решение? Такую-же проблему испытываю при использовании winapiexec. Там с погрешностями двигает и работает странно в этом плане. Иногда четко иногда нет. Просто для человекоподобия в игре надо двигать камерой, и принциаипльно важно после рандомных двиганий вернуть её на ту-же позицию, которую определить можно только по средству вычислений координат, а не визуально, чтоб корректно работал дальше бот. А корды погрености выдают... Код call movesmooth 500 500 //50 50 end_script
proc movesmooth #endx #endy #x1 #y1 set linedelay 0 //set #endx #endx + (-#x1 + random (#x1 * 2)) // это разброс 50 пикслеей туда и сюда если просто хотим поводить мышкой //set #endy #endy + (-#y1 + random (#y1 * 2)) set #delitel 12 get mouse_pos #x #y // получаем текущие корды мыши чтобы set #cx #endx - #x // вычесть из из координат куда надо переместить set #cy #endy - #y // чтобы дать понять на сколько сдвинуть мышь от того где она до того куда надо set #fx #cx / #delitel // затем получаем шаг путем деления set #fy #cy / #delitel // полученных кординат, на столько будет двигаться мушь в 1 шаг repeat #delitel // двигаем мышь столько раз на сколько разделили делителем wait 1 + random (15) set #x #x + #fx set #y #y + #fy move #x #y end_repeat //move #endx #endy // а это костыль если решения не найдется get mouse_pos #x #y log #x #y end_proc
|
|
|
|
Zenogiasu |
30.3.2023, 1:38
|
Neophyte
Сообщений: 45
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28
|
Цитата(Cockney @ 29.3.2023, 21:42) Сейчас лучше lua использовать
(IMG: style_emoticons/default/rolleyes.gif) спс. согласен. но в печали что это не написано на заглавной странице пилота. если с нуля учить то конечно луа. Вот только там нет основополагающего финдколора. точнее чтобы его получить нужно перекопать весь форум за 3 часа, по крупицам в разных темах найти решения как там это реализовать, а неокрепший в программировании разум этому не особо рад. я пытался, но в будущем обязательно доберусь) 1. p.s а есть вариант сделать чтобы сам шаг был рандомный? например из точки 0 0 при перемещении в 500 500 мышь будет по 50 пикселей по х и у двигать каждый раз, и это тоже палевно (не кидайтесь, разрабы тут уменют смотреть в экран игрока). нужно чтоб например двигал мышь и шаки рандомизировал, например если первый шаг 40 то второй уже 60 и в итоге пришелд всеравно к цели. 2. Как сделать кривые перемещения? про кривую Безье что-нибудь слышали, не подскажете? как реализовать в коде её
|
|
|
|
nykep |
30.3.2023, 9:55
|
Apprentice
Сообщений: 234
Регистрация: 1.9.2012 Группа: Пользователи Наличность: 1226
Пользователь №: 15.246
Возраст: 25
|
чтоб вернуть обратно записывай все рандомные движения мышью в массив, а потом двигай по ним в обратном порядке. Если замутить что-то с дробной частью, то все равно будет погрешность, потому что надо будет округлять до целого чтоб не выдало ошибку при попытке перемещения мыши. Код --lua local a = findcolor (46, 737, 468, 767, 16711422, '%b', 2, 1, 0) -- координаты, цвет, массив, тип поиска, количество точек, отклонение -- "(1341565-2435657)" так записывается диапазон, а так несколько цветов "(1341565, 2435657)"
|
|
|
|
Cockney |
30.3.2023, 10:29
|
Master
Сообщений: 1.395
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 21232
Пользователь №: 16.156
|
Цитата(Zenogiasu @ 30.3.2023, 1:38) (IMG: style_emoticons/default/rolleyes.gif) спс. согласен. но в печали что это не написано на заглавной странице пилота. если с нуля учить то конечно луа. Вот только там нет основополагающего финдколора. точнее чтобы его получить нужно перекопать весь форум за 3 часа, по крупицам в разных темах найти решения как там это реализовать, а неокрепший в программировании разум этому не особо рад. я пытался, но в будущем обязательно доберусь) 1. p.s а есть вариант сделать чтобы сам шаг был рандомный? например из точки 0 0 при перемещении в 500 500 мышь будет по 50 пикселей по х и у двигать каждый раз, и это тоже палевно (не кидайтесь, разрабы тут уменют смотреть в экран игрока). нужно чтоб например двигал мышь и шаки рандомизировал, например если первый шаг 40 то второй уже 60 и в итоге пришелд всеравно к цели. 2. Как сделать кривые перемещения? про кривую Безье что-нибудь слышали, не подскажете? как реализовать в коде её 1. почему нет ? это должно выглядеть примерно так set #step = random(50). далее нужно просто этот #step учитывать, чтобы не перемахнуть ключевую точку 2. взять готовую реализацию и портировать на пилот или алгоритм реализовать самостоятельно с учетом особенностей пилота по работе с дробными числами
|
|
|
|
Zenogiasu |
30.3.2023, 16:59
|
Neophyte
Сообщений: 45
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28
|
Цитата(nykep @ 30.3.2023, 9:55) чтоб вернуть обратно записывай все рандомные движения мышью в массив, а потом двигай по ним в обратном порядке. Если замутить что-то с дробной частью, то все равно будет погрешность, потому что надо будет округлять до целого чтоб не выдало ошибку при попытке перемещения мыши. Код --lua local a = findcolor (46, 737, 468, 767, 16711422, '%b', 2, 1, 0) -- координаты, цвет, массив, тип поиска, количество точек, отклонение -- "(1341565-2435657)" так записывается диапазон, а так несколько цветов "(1341565, 2435657)"
о отлично, финдколор на луа! не плохо бы поместить это на главную страницу в список функций
|
|
|
|
Zenogiasu |
25.4.2023, 15:09
|
Neophyte
Сообщений: 45
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28
|
Здравстуйте. подскажите пожалуйста существует ли проблема у пилота в том, что на разных версиях вин10 скрипты могут работать с разной скоростью? поставил пилота на другой комп с другой виндой там те-же самые скрипты работают раза в 2 быстрее (пипка пилота тайминги скрипты все иддентично). Какбудто на другой винде некоторые тайминги пропускаются чтоли или их рандомная составляющая хз. Может ли быть дело в том что на новой винде, где все работает быстрее, подчищена папка winsxs?(через командную строку) ПС то что на новой винде все работает бстрее не значит что это хорошо, так как когда на старой версии виндовс ему надо ждать 200 мс, а затем сделать чек открытия инвентаря или еще чего либо, на новой винде он какбудто ждет вместо 200мс всего 50 или 100, инвентарь еще прорисоваться не успевает в виду чего некоторый сбой. при этом дело не в компах, там ранаьше была та-же винда, просто на 2х снес и поставил новую и обнаружил этот казус. + есть причина считать что сея пиратскаая сборка устаревшая потому-что обс на ней не запускается
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|