Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Скрипт жрет 30% процессора, в чем косяк?
dron4938
сообщение 20.5.2019, 20:48
Сообщение #1


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Код
 
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end
local startX, startY, endX, endY = 940, 846, 980, 846   -- координаты поиска
local start2X, start2Y, end2X, end2Y = 860, 803, 1055, 806   -- координаты поиска
local path = [["C:\Users\Andrey\Desktop\PIL6\img\001.bmp"]]
local pathz = [["C:\Users\Andrey\Desktop\PIL6\img\002.bmp"]]                  -- путь к картинке, bmp 24 бита
--=============================================================================

while 1 do
hint("---------")
  local state = GetKeyState(112)  -- проверка нажата ли клавиша f1
    if  state then

      while 1 do
        local state113 = GetKeyState(113)   -- проверка нажата ли клавиша f2
        local state1 = GetKeyState(1)  --  проверка нажата ли ЛКМ
        local state2 = GetKeyState(2)  --  проверка нажата ли ПКМ
        local state164 = GetKeyState(164)  --  проверка нажата ли альт
        local state77 = GetKeyState(77)  --  проверка нажата ли М
        local state73 = GetKeyState(73)  --  проверка нажата ли I

        if state113 or state164 or state77 or state73 then
        break
        end

        if  state1 then
        hint("Л Е В А Я")
        wait(25+math.random(25)) sendex("1")
        wait(25+math.random(25)) sendex("2")
        wait(25+math.random(25)) sendex("3")
        wait(25+math.random(25)) sendex("4")
        wait(25+math.random(25)) sendex("f")
        else
        hint("+++++")
        end
--==========================================================================
        if  state2 then
local arr, a = findimage (startX, startY, endX, endY, {path}, 2)  -- поиск картинки
--log (a)
  if arr then  -- если найдена
    --log ("Изображение найдено в координатах X= " .. arr[1][1] .. " Y= " .. arr[1][2])
    wait(50+math.random(50)) sendex("f")
        wait (10)
    asd = 1; time1 = os.clock(); time2 = 0
      while asd == 1 and time2 < 1 do
        time2 = os.clock()-time1
        local arr2, b = findimage (start2X, start2Y, end2X, end2Y, {pathz}, 2)  -- поиск картинки
          if arr2 then
            local a = color (arr2[1][1]-2, arr2[1][2]+1)          -- определить цвет в координатах 150 200
              while 1 do
                if color (arr2[1][1]-2, arr2[1][2]+1) ~= a then
                  sendex("f")
                  asd = 0
                  break
                end
              end
          end
      end
  end
        end
--==========================================================================
      end
    end
end


Обычный скрипт, на состояние нажатия клавиш, при запуске жрет 25-30% процессора.
Не наблюдал раньше такого с пилотом, где я начудил?
При чем в состоянии покоя жрет процессор, даже если F1 не нажать
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 20.5.2019, 21:03
Сообщение #2


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Помогло выставление wait (1) в строке:
Код
--======================================

while 1 do
wait (1)
hint("---------")


теперь норм, процессор ноль процентов) Неужели 1мс так важна? или это косяк в пилоте где-то?
До этого в пауза между строками ставил 100, и все равно процессор жрало на 30%
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Juzzver
сообщение 21.5.2019, 11:46
Сообщение #3


**********

Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008
Группа: Супермодераторы
Наличность: 22565
Из: Северная Корея
Пользователь №: 11.273



зациклив любую программу - будет загружен процессор.
Не знаю умеет ли пилот работать с событиями, если да - то просто переписать условие на обработку событий при нажатии кнопок - это в значительной мере оптимизирует процесс.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 19:37
Designed by Nickostyle