UoKit.com Форумы > Кликер > UO Pilot
nykep
хотел чтоб при застревании персонажа происходило движение мыши по окружности с зажатыми кнопками чтоб он нашел выход и вылез из тупика и чтоб не писать десятки мувов решил попробовать через уравнение окружности, но столкнулся с проблемой - когда 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
Цитата
как нарисовать полный круг

Код
--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
Цитата(nykep @ 16.6.2019, 0:17)

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

а просто Х на Y не поменял в одном месте ))
Вверх
FREEON
Цитата(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 © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.