Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Движение мыши по окружности

Автор: nykep 15.6.2019, 23:54

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

Код

--lua
local r = 300
local x = 660
--local a = 960 --координата центра х
--local b = 520 -- координата центра у
-- центр примерно посередине экрана
repeat
    x = x + 1
    c = x^2 - 1920*x - r^2 + 520^2 + 960^2
    D = 1040^2 - 4*c
    y = math.modf((1040 + math.sqrt(D))/2)
    move (x, y)
    wait (10)
until y == 220

Может кто сообразит как нарисовать полный круг или обойти это дело другим методом? у меня не получается

Автор: cirus 16.6.2019, 0:01

Цитата
как нарисовать полный круг

Код
--lua
local r = 300    -- радиус окружности
local startX, startY = 960, 520   -- центр круга
for i = 1, 360 do
   local x = startX + math.floor(math.sin(math.rad(i)) * r)
   local y = startY + math.floor(math.cos(math.rad(i)) * r)
   move (x, y)
   wait (5)
end
end_script ()

Автор: nykep 16.6.2019, 0:23

Цитата(nykep @ 16.6.2019, 0:17) *

спасибо, теперь пытаюсь это подогнать в мой скрипт и у меня рисует окружность только в профиль ))))

а просто Х на Y не поменял в одном месте ))

Автор: FREEON 17.8.2019, 16:59

Цитата(cirus @ 16.6.2019, 0:01) *

Код
--lua
local r = 300    -- радиус окружности
local startX, startY = 960, 520   -- центр круга
for i = 1, 360 do
   local x = startX + math.floor(math.sin(math.rad(i)) * r)
   local y = startY + math.floor(math.cos(math.rad(i)) * r)
   move (x, y) -- движение мыши против часовой стрелки
   wait (5)
end
end_script ()


Код

--lua
local r = 150    -- радиус окружности
local startX, startY = 425, 307    -- центр круга
for i = 180, 540 do
   local x = startX + math.floor(math.cos(math.rad(i)) * r)
   local y = startY + math.floor(math.sin(math.rad(i)) * r)
   move (x, y) -- движение мыши по часовой стрелке
   wait (5)
end
end_script ()

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)