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

 
Ответить в эту темуОткрыть новую тему
> Maximize Effects, --==Ля_лЯ==--
Levo222
сообщение 23.3.2019, 9:54
Сообщение #1


*****

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



Нужен максимальный эффект от скрипта с точки зрения скорости функциональности выполнения большого блока визуальной сверки цветов/картинок и скорости обработки/выполнения команд.
-Если смотреть findimage и findcolor то color я так понимаю выигрывает по времени и проигрывает по точности? И что findcolora в Lua нету? чем это чревато? Я так понимаю в диапазоне он определять не может?
-Помниться sutra где-то там делал новый алогоритм поиска картинок, но почитав что эта схема требовательна к железу и непонятно реализована ли на Lua, понял что нужно копать в более простую сторону
-Если говорить на Lua или Delphi сегодня луа выигрывает в скорости?(ну да глупый вопрос...)
-Какие функции некорректно работают в пилоте на луа по отношению к старому синтаксису касательно финдколора?


P.S: Что означает _,_, на языке Lua?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 23.3.2019, 11:58
Сообщение #2


**********

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



Цитата
И что findcolora в Lua нету?

Есть, только синтаксис остался старый.
Код
--lua
local a = findcolor([[0, 0, 1920, 1080, 1, 1 (4727808) %arr]])
hint ("Найдено пикселей " .. a)
if a then     -- если найдены
    move(arr[1][1], arr[1][2])  -- навести курсор на первый найденный пиксель
end

Цитата
Я так понимаю в диапазоне он определять не может?

Может. Ничего в этом плане не поменялось. Функция какая была, такая и осталась.
Цитата
Какие функции некорректно работают в пилоте на луа по отношению к старому синтаксису

Список_функций
Список_функций_(Lua)
Если в списке функций луа нет какой-то функции, значит она не работает или работает не так как должна.
Большая часть работает.
Цитата
скорости обработки/выполнения команд.

Команды выполняются с одинаковой скоростью, что в старом синтаксисе, что в луа.
Функция одна и также, поменялся лишь синтаксис. Разница по времени вызова будет у самописных функций и стандартных функций луа, например, вместо random() пилота, вызывать math.random() луа. Вот тут будет разница в несколько 1000 раз.
Цитата
Что означает _,_, на языке Lua?

_ это тоже имя переменной. Иногда функция возвращает несколько значений, если какие-то из них не требуются, то _ подразумевает что эти данные не нужны.
Код
--lua
local s = "Найти число 65432 в этой строке"
local _, _, num1 = s:find("(%d+)")
-- функция find  возвращает: <стартовую позицию>, <конечную позицию>, <результат поиска>
-- если позиция не нужна, то можно поставить _
log(num1)

local start_pos, end_pos, num2 = s:find("(%d+)")
log(start_pos, end_pos, num2)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 23.3.2019, 12:42
Сообщение #3


*****

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



Цитата(cirus @ 23.3.2019, 15:58) *

--lua
local s = "Найти число 65432 в этой строке"
local _, _, num1 = s:find("(%d+)")
-- функция find возвращает: <стартовую позицию>, <конечную позицию>, <результат поиска>
-- если позиция не нужна, то можно поставить _
log(num1)

local start_pos, end_pos, num2 = s:find("(%d+)")
log(start_pos, end_pos, num2)

Так понял.)

Цитата(cirus @ 23.3.2019, 15:58) *

math.random() луа.

А какие еще функции ускоряют код?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 23.3.2019, 13:48
Сообщение #4


*****

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



Script PHP
Код

forward TimerDelete();//
public function delete_message( $messageid ){} // удаление сообщения
public OnModeInit()
{
   SetTimer("TimerDelete",1000*60,true);
   return 1;
}

public TimerDelete()
{
   SendClientMessageToAll(0xFFFFFFAA,"Таймер TimerDelete закончил свою работу");
   return 1;
}

удалить сообщение

кнопку добавить
АААА
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 23.3.2019, 14:30
Сообщение #5


*****

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



Вот у меня вопрос, а функция проверить изменился ли цвет вообще нежели искать какой-то конкретный сильно будет отставать по времени?
Просто если есть возможность упростить просто появлением любого цвета на черном фоне, как это закодировать? Т.е. появление любого цвета в заданной области отличного от черного будет трактоваться как условие к действию. Если есть возможность так упростить какую надо брать область и чтобы избежать ошибок?
Или у меня запуталось все?
Он должен найти цвет сверить с заранее записанным в таблице и потом сказать изменился или нет? Или есть функция напрямую отслеживающая изменение?
Код
findcolor([[8, 393 9, 394 1, 1 (12450815) %arr]])

Если я изменю поиск всего в границах 2-х/3-х пикселях это ускорит существенно результат? Изображение статично.

--UPD--
Короче я ниче не понял, у меня даже при отсутствии пикселя срабатывает действие
Код
--lua
local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]])
while 1 do
if  b > 0 then
        --move(arr2[1][1], arr2[1][2])
        send217("v")
        end
end

Но пиксель не находит
Такое ощущение что на момент компиляции пилот находит пиксель и далее держит его в памяти, даже если его там нет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 23.3.2019, 18:31
Сообщение #6


**********

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



Цитата
при отсутствии пикселя срабатывает действие

Цитата
local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]]) -- нашли или не нашли цвет
while 1 do -- зашли в цикл
if b > 0 then -- переменная b всегда будет равна тому что было до цикла

Код
--lua
while 1 do
local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]])
    if  b > 0 then
        --move(arr2[1][1], arr2[1][2])
        send217("v")
    end
    wait (1)
end

Цвет в одной точке можно и color'ом проверить.
Код
--lua
while color (284, 610) == 0 do     -- ждать пока цвет будет любой, кроме чёрного
    wait (1)
end
log ("Цвет в указанных координатах не чёрный")
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 24.3.2019, 0:09
Сообщение #7


*****

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



Цитата(cirus @ 23.3.2019, 22:31) *

Код
--lua
while 1 do
local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]])
    if  b > 0 then
        --move(arr2[1][1], arr2[1][2])
        send217("v")
    end
    wait (1)
end

Цвет в одной точке можно и color'ом проверить.
Код
--lua
while color (284, 610) == 0 do     -- ждать пока цвет будет любой, кроме чёрного
    wait (1)
end
log ("Цвет в указанных координатах не чёрный")


Как мне обьявить сразу несколько переменных в поиске распределив приоритет между ними? чтобы потом вся архитектура не посыпалась при добавлении новых? И при этом приоритетнее всего оставить модификаторы
Если буду добавлять While один за другим это же нарушит приоритетность? Располагать внутри один в другом, объявляя локальные переменные перед каждый из них? Или внутри большого цикла?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 24.3.2019, 0:19
Сообщение #8


**********

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



Непонятно что требуется сделать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 24.3.2019, 0:30
Сообщение #9


*****

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



Цитата(cirus @ 24.3.2019, 4:19) *

Непонятно что требуется сделать.

Вобщем я уперся в то, что Send217 не работает с модификаторами, а sendex послылает нажатие в текущее окно(не перекрытое) и не может быть привязано. Нужно указывать hendl как-то


Дерево приоритетов мне нужно, если точка а но нет б то переходим к с
и главенством всего являлись бы модификаторы shift, ctrl, alt

есть точки a b c d e f g они появляются в перекрытом окне
приоритет их нахождения строго по списку и действия с ними с модификаторами в одном порядке, без модификаторов в другом

если есть а но нет b нажимаем 1
если есть а и есть b нажимаем 2
если есть а и есть b и есть с нажимаем 3
если ее нету то дальше смотрим C,d,e,f и т.д.
но при этом поглядываем на точку A непоявилась ли она? И не появилась ли точка B, Вот как нужно чтобы приоритет первых точек всегда был над последующими
когда смотрится точка C нужно чтобы смотрелась и B и A
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 24.3.2019, 1:14
Сообщение #10


**********

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



Цитата
если есть а но нет b нажимаем 1
если есть а и есть b нажимаем 2
если есть а и есть b и есть с нажимаем 3

Код
--lua
local A, B, C = true, true, false

log "clear" log "mode compact"
if A and not B then log ("1") end    -- если есть A и нет B
if A and B then log ("2") end     -- если есть A и B
if A and B and C then log ("3") end   -- если есть A, B и C

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 24.3.2019, 2:29
Сообщение #11


*****

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



Цитата(cirus @ 24.3.2019, 5:14) *

Код
--lua
local A, B, C = true, true, false

log "clear" log "mode compact"
if A and not B then log ("1") end    -- если есть A и нет B
if A and B then log ("2") end     -- если есть A и B
if A and B and C then log ("3") end   -- если есть A, B и C


Ну и че? Цикл то останавливается, а добавляешь while и какая-т опеременная выходит за её границы и уже корректно не ищется
Щас буду вредничать, но мне нужно древо логической цепочки непредвзято ко времени выполнения, т.е. грамотная архитектура добавления новых переменных внутрь ступенчатой системы приоритетов(Как в Lua распределяется приоритет что внутри то важнее? и т.д.) Пирамидкой вобщем, чтобы не рушить изначально главенство переменных, иначе я потом замучаюсь добавлять ссылки и возвраты к первичной переменной.
А эти If's которые вы написали будут выполняться поочереи что сущестенно замедлит работу.
Я так понимаю загвоздка именно в самом Pilot'e который не может смотреть одновременно на все точки?
Код
if color (284, 610) nil 0 then     -- если цвет в точке не черный... (как объявить функцию отрицания чёрного в заданной точке?)
end
return(0)
if color (300, 800) nil 0 then
return(0)


Вобщем помню я делал скрипты на какую-то игру на Lua и там перечислялись условия для проверки есть они или нет, перечислял в строчку - и лагало у меня ужасно
Потому нужна другая архитектура приоритетов и функций, чтобы лагов не было

Код
A, B, C = true, true, false

что это значит?

Нужно вот так
Код
--lua
local H = findcolor([[8, 393 8, 393 1, 1 (если не черный) %H]]) -- Возможность излечиться
local F = findcolor([[9, 394 9, 394 1, 1 (если не черный) %F]]) -- Защитные функции
--если нет возможности излечиться, возможность использования защитных функций F, если нет ни того, ни другого, переходим к атаке -> посредством прожатия А, B и C по мере их появления
A, B, C = true, true, false --Нутром чую что нужно объявлять и F и H
local a = findcolor([[8, 393 8, 393 1, 1 (12450815) %arr1]]) --1
local b = findcolor([[8, 377 8, 377 1, 1 (2520518) %arr2]])  --2
local c = findcolor([[8, 450 8, 450 1, 1 (3386335) %arr3]])  --3
log "clear" log "mode compact"
if H and then log ("Heal") end    -- хил
if F and not H then log ("Дефенс1") end    -- нет хил есть дэфенс
if A and not Н and not F then log ("удар 1") end  -- удар1
if B and and not A and not C then log ("удар2") end   -- удар2
if С and and not A and not B then log ("удар3") end  -- удар3

Только всё это в цикле

---=== UPD ===---
Я ничего не понял, если бы это был старый пилот я бы писал поочередно выполнение поиска и он искал бы по 3 часа.
Но в Lua нет понятия очередности тут таблицы, как их туда засунуть?

---=== UPD ===---

Вобщем я создал 3 столбика координат по которым будет непосредственно определять возможность нажатия того или иного
Код
--local CoordList 1st = {
10 561[H],
10 579[A],
10 596[C],
10 614[G],
10 632[D],
10 651[E],
10 668[B],
} -- координаты 1 столбик
--local CoordList 2st = {
30 561[P],
30 579[M],
30 596[F],
30 614[GM],
30 632[O],
--30 651[],
--30 668[],
} -- координаты 2 столбик
--local CoordList 3st = {
10 423[X],
10 441[-],
10 458[T],
10 476[D5],
--10 632[],
--11 651[],
--10 668[],
} -- координаты 3 столбик
даже так: если не черный = true

Кто знает как теперь присвоить функцию[findcolor по координатам таким-то с погрешностью такой-то символу такому-то] так чтобы по 10 раз внутри цикла local не объявлять findcolor а сразу вводить переменную и проверку на неё с returnom в виде false по её выполнению?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 24.3.2019, 11:28
Сообщение #12


**********

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



Цитата
Пирамидкой вобщем

Код
if A then  -- если истина
    if B then  -- если истина
        if C then -- если истина
            -- выполнить условие
        end
    end
end

Цитата
if color (284, 610) nil 0 then -- если цвет в точке не черный... (как объявить функцию отрицания чёрного в заданной точке?)

Код
if color (284, 610) ~= 0 then  -- если цвет не равен 0
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 24.3.2019, 11:39
Сообщение #13


*****

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



Цитата(cirus @ 24.3.2019, 15:28) *

Код
if A then  -- если истина
    if B then  -- если истина
        if C then -- если истина
            -- выполнить условие
        end
    end
end


Код
if color (284, 610) ~= 0 then  -- если цвет не равен 0



Нужно что-то типо
Код
--lua
local CoordList 1st = {
10 561[H],
10 579[A],
10 596[C],
10 614[G],
10 632[D],
10 651[E],
10 668[B],
} -- координаты 1 столбик
local CoordList 2st = {
30 561[P],
30 579[M],
30 596[F],
30 614[GM],
30 632[O],
--30 651[],
--30 668[],
} -- координаты 2 столбик
local CoordList 3st = {
10 423[X],
10 441[-],
10 458[T],
10 476[D5],
--10 632[],
--11 651[],
--10 668[],
} -- координаты 3 столбик
SimbolCoord = function color(localCoordList 1,2,3(x,y)) ~= 0 then
return false end
???

Чтобы потом писать

Код

if A then
while do A true(>0)
  Send217("A") return false --т.е. возвращало бы А = 0
end

    if B then
         while do B true(>0)
          Send217("B") return false --
         end
    
        if C then
                 while do C true(>0)
                  Send217("C") return false --
                end
        end
    end
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 24.3.2019, 11:56
Сообщение #14


**********

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



Цитата
Нужно что-то типо
--lua
local CoordList 1st = {
10 561[H],
10 579[A],
10 596[C],
10 614[G],
10 632[D],
10 651[E],
10 668[B],
} -- координаты 1 столбик

Что это за каша?
Цитата
while do A true(>0)

А это?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 24.3.2019, 12:04
Сообщение #15


*****

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



Цитата(cirus @ 24.3.2019, 15:56) *

Что это за каша?

А это?

Ну что-то вроде таблицы откуда функция SimbolCoord будет брать координаты для color(x,y) ~= 0 then
и если 10 561[H] то х=10, y=561 а [H] соответствующая им переменная обозначающая H
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 24.3.2019, 12:20
Сообщение #16


**********

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



С синтаксисом сначала разберитесь.
Код
--lua
local CoordList = {
{10, 561},
{10, 579},
{10, 596},
{10, 614},
{10, 632},
{10, 651},
{10, 668},
}

log(CoordList[1][1], CoordList[1][2])
log(CoordList[2][1], CoordList[2][2])

Код
--lua
local CoordList = {
{10, 561, "H"},
{10, 579, "A"},
{10, 596, "C"},
{10, 614, "G"},
{10, 632, "D"},
{10, 651, "E"},
{10, 668, "B"},
}

log(CoordList[1][1], CoordList[1][2], CoordList[1][3])
log(CoordList[2][1], CoordList[2][2], CoordList[2][3])
log (table.concat(CoordList[3], "   "))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 25.3.2019, 0:54
Сообщение #17


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Помниться sutra где-то там делал новый алогоритм поиска картинок, но почитав что эта схема требовательна к железу и непонятно реализована ли на Lua, понял что нужно копать в более простую сторону
Ничего такого я не говорил, конечно железо влияет, но исключительно в пропорции к алгоритму. Нет разницы между финдКОЛОРОМ и финдИМИДЖЕМ. Вопрос на какой площади (зона поиска) и СКОЛЬКО (количество картинок, количество пикселей) искать. Ничего нового я не сделал. Новое дал ДАРКМАСТЕР. Я для себя реализовал только ТО, что мне дал ДАРК. Нужно что-то искать? Что-то не можете найти? Не хватает скорости? Спрашивайте ... найти можно тысячи картинок (не говоря о пикселях) очень быстро (ну скажем 0,1 сек.) Дам конкретику только для вариантов кода на LUA.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 25.3.2019, 1:16
Сообщение #18


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Да, либо я отстал от жизни, либо совсем ничего не понимаю. Вот читаю посты и совсем не понимаю задач, подлежащих решению. Если есть варианты выполнения кода ..., если есть массивы (таблицы) от которых зависит выполнение кода ..., так это всё надо "запихивать" в файлы и потом читать из них. Ещё лучше, когда эти массивы "автоматом" создаются и сохраняются в файлы и потом используются. Хотя и тут есть варианты, я всё сделал по-своему, использую двоичные файлы, хотя читать приходится всё равно строкой (я не знаю как читать напрямую байты в один буфер из файла в LUA), но в любом случае на порядок быстрее.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 25.3.2019, 1:43
Сообщение #19


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Помниться sutra где-то там делал новый алогоритм поиска картинок, но почитав что эта схема требовательна к железу и непонятно реализована ли на Lua, понял что нужно копать в более простую сторону
А Вы пробовали его использовать? Я давал конкретные рабочие примеры, ну хотя бы для понимания ЧТО МОЖНО искать и с КАКОЙ скоростью. Да, в том коде были недочёты. Да, конечно есть уже другой код, но основа прежняя. Но даже те примеры никто не тестировал, никто не указал на недостатки и ошибки, никто не проявил интереса, никто не задал ни одного вопроса, ну и я утратил интерес. У меня всё работает быстро и как надо, по ходу дела дорабатываю эту функцию. В общем ... будет необходимость - помогу, а абстрактно рассуждать уже не хочется.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 25.3.2019, 3:29
Сообщение #20


*****

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



Цитата(sutra @ 25.3.2019, 5:16) *

Вот читаю посты и совсем не понимаю задач, подлежащих решению. так это всё надо "запихивать" в файлы и потом читать из них.

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

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

 

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