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

5 страниц V < 1 2 3 4 > »   
Ответить в эту темуОткрыть новую тему
> -Счётчик, -Lua-
Levo222
сообщение 21.6.2020, 1:16
Сообщение #21


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



еще одна проблема
Код

Угу

Если одно окно выпало, то скрипт споткнётся на таком коде, как проверить в этом же цикле существование каждого из них?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2020, 1:29
Сообщение #22


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
workwindow (W[i][1], W[i][2], W[i][3], W[i][4], W[i][5], W[i][6])

Что это за бред. Можно только одно окно сделать рабочим.
Код
for i=0, 6 do

В луа индексация массива начинается с 1.
Цитата
как проверить в этом же цикле существование каждого из них?

Код
--lua
local W = {111, 222, nil, 444}

for i=1, #W do
    if W[i] then
        log (W[i])
    end
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 1:41
Сообщение #23


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



ууууууууууууууууууу
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2020, 1:47
Сообщение #24


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Тоже самое что и это:
move (H[i][1], H[i][2])

С такой логикой если будет 50 окон, то в функцию будете передавать 50 параметров? Хоть немного-то думать надо.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 2:08
Сообщение #25


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(Levo222 @ 21.6.2020, 5:41) *

Код
workwindow (W[i][1], W[i][2], W[i][3], W[i][4], W[i][5], W[i][6])

Бред.

Тогда как мне следующее окно то из таблицы тыкнуть?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 2:49
Сообщение #26


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



l;kj;lk'l
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 5:46
Сообщение #27


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 21.6.2020, 1:45) *

Вместо log использовать move.

Почему для
Код
 log (H[i][1], H[i][2])
А так мы координаты передавали или # переменной, чё-т оя не понял?
move годится

А workwindow нет?

Так то одновременно и мышь не может в 2-х точках находится, как и workwindow быть привязанным к 2-м окнам.

Цитата(cirus @ 21.6.2020, 5:47) *

то в функцию будете передавать 50 параметров?

А что с ней от этого будет? С функцией? Она же неживая) Вытерпит и 100 параметров
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 9:51
Сообщение #28


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Вобщем ошибка такая:
43:
Код
attemp to compare number with table

А с этим я разобрался. Правда у меня цикл счетчика на 3 круга проверяет. Не могу понять почему так

и почему-то
Код
Kleft (H[i][1], H[i][2])


не работает
Ну хоть left работает. Х с ним
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2020, 10:19
Сообщение #29


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
не работает 

Кусок кода не может работать.
Цитата
Так то одновременно и мышь не может в 2-х точках находится, как и workwindow быть привязанным к 2-м окнам

Точка это 2 координаты, поэтому move принимает 2 параметра.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 10:53
Сообщение #30


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Вот это вот не работает почему-то?
Исходный код
local w1 = findwindow("W1")
local w2 = findwindow("W2")
local w3 = findwindow("W3")
local w4 = findwindow("W4")
local w5 = findwindow("W5")
local w6 = findwindow("W6")
local W = {w1, w2, w3, w4, w5, w6}
local Wcount = {0, 0, 0, 0, 0, 0}
function ActivW(x, y) return(color (x, y)) end -- (317, 81) == 0 --Другие окна
alarm ("Начинаю процедуру выхода.wav")
for k=1, #W do
if W[k] then
log (W[k])
while Wcount[e] == 0 do
for e=0, 6 do
hint ("Выхожу")
workwindow (W[e][1])
if ActivW(317, 81) == 0 then --окно активно
--Глушим его
send217 ("5")
alarm ("выхожу.wav")
else
Wcount[e] = 1 -- записываем если неактивно
hint ("Окно неактивно")
end
end
end
else
msg ("Окно W[e]) не найденоВозможно оно потеряноХотите вернуть его состояние?")
--и присваеваем потерявшемуся окну 1 в счетчике, чтобы его больше не искало
wait (200)
Wcount[e] = 1
end
end
end


Сообщение отредактировал Fors1k - 22.6.2020, 19:35
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2020, 11:23
Сообщение #31


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
while Wcount[e] == 0 do

Переменная e не объявлена.
Цитата
for e=0, 6 do

С 1 надо начинать цикл.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 15:00
Сообщение #32


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 21.6.2020, 15:23) *

Переменная e не объявлена.

Код

while Wcount[e] == 0 do
                for e=0, 6 do
                workwindow (W[e][1])
                    if ActivW(317, 81) == 0 then --окно активно
                    send217 ("5")
                    alarm ("выхожу.wav")
                    else
                    Wcount[e] = 1  -- записываем если неактивно
                    hint ("Окно неактивно")
                    end
                end
            end

Ну так как его объявить чтобы этот цикл был бесконечным до for а не после?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2020, 15:26
Сообщение #33


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Опишите что вообще надо сделать. Или предлагаете по коду с ошибками догадываться?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 15:45
Сообщение #34


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 21.6.2020, 19:26) *

Опишите что вообще надо сделать. Или предлагаете по коду с ошибками догадываться?

Так я уже тут 10 раз писал. Нужно пачку окон закрыть если они существуют вообще, но в цикле перебора их имён

Эм. ну ладно, а так будет работать?

Исходный код
local w1 = findwindow("W1")
local w2 = findwindow("W2")
local w3 = findwindow("W3")
local w4 = findwindow("W4")
local w5 = findwindow("W5")
local w6 = findwindow("W6")
local W = {w1, w2, w3, w4, w5, w6}
local Wcount = {0, 0, 0, 0, 0, 0}
function ActivW(x, y) return(color (x, y)) end -- (317, 81) == 0 --если окна активны
alarm ("выход.wav")
for k=1, #W do --цикл для каждого окна из таблицы W
if W[k] then -- если каждое из них существует
log (W[k])

for e=0, 6 do --то перебираем каждое из них и закрываем
while Wcount[e] == 0 do --пока какое-то окно из W активно
hint ("Выхожу")
workwindow (W[e][1])
if ActivW(317, 81) == 0 then --если окно активно
--Глушим его
send217 ("5")
alarm ("выхожу.wav")
else
Wcount[e] = 1 -- записываем что неактивно
hint ("Окно неактивно")
end
end
end
else -- если окно не найдено
msg ("Окно W[e]) не найденоВозможно оно потеряноХотите вернуть его состояние?")
--и присваеваем потерявшемуся окну 1 в счетчике, чтобы его больше не искало
wait (200)
Wcount[e] = 1
end
end
end

Я конечно могу на каждое окно писать 20+ строк закрытия, но чёт мне кажется так покомпактнее будет
А зачем вообще использовать for в таком случае? Если можно использовать if и бесконечный цикл внутри него на проверку истинности этого if?
А счётчик же нужен...

Сообщение отредактировал Fors1k - 22.6.2020, 19:35
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2020, 16:39
Сообщение #35


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
А счётчик же нужен

Зачем? Findwindow возвращает массив, размер которого известен.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 21.6.2020, 17:09
Сообщение #36


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 21.6.2020, 20:39) *

Зачем? Findwindow возвращает массив, размер которого известен.

То есть мне что-то выше поставить?

Вот так чтоли?
Код
local W = {w1, w2, w3, w4, w5, w6}
local Wcount = {0, 0, 0, 0, 0, 0}
local w1 = findwindow("W1")
  local w2 = findwindow("W2")
  local w3 = findwindow("W3")
  local w4 = findwindow("W4")
  local w5 = findwindow("W5")
  local w6 = findwindow("W6")
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2020, 18:48
Сообщение #37


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Нужно пачку окон закрыть если они существуют вообще, но в цикле перебора их имён

Код
--lua
local WM_CLOSE = 0x0010
local window_name = {'Блокнот', 'Калькулятор', 'Lineage2'}    -- имена окон

log 'clear'  log 'mode compact'

for i=1, #window_name do
    local W = findwindow(window_name[i])
    log('Имя окна: ' .. window_name[i])
    if W then
        log('Найдено окон: ' .. tostring(#W))
        for j=1, #W do
            sendmessage (W[j][1], WM_CLOSE, 0, 0)     -- закрыть окно
        end
    else
        log('Найдено окон: 0')
    end
    log()
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 22.6.2020, 8:34
Сообщение #38


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Мда. Туплю сегодня. Только понял что for i=0 вызывал лишний круг проверки таблицы

Как точно определить на каком шаге находится в данный момент цикл "for c=1, 3 do"?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.6.2020, 10:01
Сообщение #39


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Как точно определить на каком шаге находится в данный момент цикл "for c=1, 3 do"?

Вывести в лог переменную c.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.6.2020, 4:07
Сообщение #40


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 22.6.2020, 14:01) *

Вывести в лог переменную c.

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

5 страниц V < 1 2 3 4 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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