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

 
Ответить в эту темуОткрыть новую тему
> Switch, помогите разобраться с шайтан кодом
DurNoy
сообщение 18.4.2020, 16:43
Сообщение #1


**

Neophyte
Сообщений: 17
Регистрация: 30.3.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.593
Возраст: 32



никак его понять не могу, я нуб..
пользуюсь командами if else, но мне будет проще использовать switch, код меньше и более стабилен для моей задачи. не могу разобраться как сравнить цвет, нужно один цвет сравнить с цветом в разных координатах и в зависимости от того в какой координате находится этот цвет, выполнить нажатие левой кнопкой мыши в одной из двух координат. координаты, где появляется этот цвет фиксированы (я так текст определяю..) и сам цвет только один. подскажите как это сделать, буду очень благодарен.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 18.4.2020, 17:02
Сообщение #2


**********

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



Код
--lua
local color1 = 5581568   --  цвет

local coord = {      -- массив в координатами
{234, 87},    -- координата1
{568, 295},   -- координата2
{144, 371}    -- координата3
}

for i = 1, #coord do    -- цикл, в котором проверям цвет в координатах
    if color (coord[i][1], coord[i][2]) == color1 then    -- если совпал
        log ('Цвет в координате ' .. tostring(i))
        move (coord[i][1], coord[i][2]) -- навести курсор
        -- нужные действия
    end
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DurNoy
сообщение 18.4.2020, 17:32
Сообщение #3


**

Neophyte
Сообщений: 17
Регистрация: 30.3.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.593
Возраст: 32



Цитата(cirus @ 18.4.2020, 17:02) *

Код
--lua
local color1 = 5581568   --  цвет

local coord = {      -- массив в координатами
{234, 87},    -- координата1
{568, 295},   -- координата2
{144, 371}    -- координата3
}

for i = 1, #coord do    -- цикл, в котором проверям цвет в координатах
    if color (coord[i][1], coord[i][2]) == color1 then    -- если совпал
        log ('Цвет в координате ' .. tostring(i))
        move (coord[i][1], coord[i][2]) -- навести курсор
        -- нужные действия
    end
end


сложно как.. =)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DurNoy
сообщение 18.4.2020, 19:31
Сообщение #4


**

Neophyte
Сообщений: 17
Регистрация: 30.3.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.593
Возраст: 32



это ведь по сути тот же if else, только слишком сложный..
я думал над вариантом типа

Код

repeat 150
switch //тут как то задать тот цвет с которым буду сравнивать цвета в координатах
    case //первая координата, если в ней нужный цвет, то нажимается лкм по этой же координате
        break
    case //тут следующая координата по тому же принципу
        break
    case // третья координата
        break
***//тут код если ни одно из условий не сошлось
end_switch
end_repeat
alarm
wait 120s
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DurNoy
сообщение 19.4.2020, 0:05
Сообщение #5


**

Neophyte
Сообщений: 17
Регистрация: 30.3.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.593
Возраст: 32



Код

repeat 150
set #a findcolor (698, 939 893, 965 1 1 16777215 %arr 2)
set #b findcolor (924, 939 1119, 965 1 1 16777215 %arr 2)
switch %arr
    case #a [358] : left 813, 962
        break
    case #b [358] : left 1019, 960
        break
    case #a [194] : left 823, 965
        break
    case #b [194] : left 1027, 964
        break
end_switch
end_repeat
alarm
wait 120s


такой вариант тоже не работает =( либо я тупой, либо описание команд написано для тех кто эти команды и так знает, а тем кто не знает и не понять пока не объяснят на пальцах..

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


**********

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



Что именно не понятно?
Цитата
switch <значение>
case <значение 1>: [команда]
[команда]
case <значение 2>:
[команда]
break
case :
[команда]
end_switch

switch <значение>, у вас написано switch %arr, выведите в лог:
Код
set #a findcolor (698, 939 893, 965 1 1 16777215 %arr 2)
log %arr  // это сравнивается
log #a [358]  // с этим?
end_script

Напишите конкретнее что вы хотите от этого кода.

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


**

Neophyte
Сообщений: 17
Регистрация: 30.3.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.593
Возраст: 32



Цитата(cirus @ 19.4.2020, 0:21) *

Что именно не понятно?

switch <значение>, у вас написано switch %arr, выведите в лог:
Код
set #a findcolor (698, 939 893, 965 1 1 16777215 %arr 2)
log %arr  // это сравнивается
log #a [358]  // с этим?
end_script

Напишите конкретнее что вы хотите от этого кода.


опишу что я вообще хочу заскриптовать, что бы нагляднее было.
в вк есть текстовые игры, и в одной из них есть прохождение данжа, суть которого заключается в том что бы нажимать либо одну кнопку, либо вторую (потому и скриптую, что нудно очень)
(IMG:https://sun1-28.userapi.com/eBIHymqfJm_WTpEPg5pkeBFqG34oxL0eWhxRQw/GkUaiKxVD9E.jpg)

кнопок несколько есть восстановить жизни, удвоенные ресурсы, меньше мобов, двойной урон и так далее. у меня работает связка из трех скриптов
первый скрипт проверяет сколько белых пикселей в левой кнопке (у каждого буста свое количество), если там 358 пикселей значит это восстановить жизни и ее надо нажать, если нет то запускается второй скрипт, который так же проверяет вторую кнопку на буст восстановить жизни, если и там нету, то запускается третий скрипт, который проверяет в левой кнопке есть ли там удвоенные ресурсы, если нет то нажимает правую кнопку, после чего все повторяется с первого скрипта.
Код

repeat 150
set $a findcolor (699, 941 892, 964 1 1 16777215 %arr 2)
if $a == 358
left 813, 956
wait 2700
else
start_script 2 wait
end_if
end_repeat
alarm
wait 120s


Код

set $b findcolor (925, 939 1119, 966 1 1 16777215 %arr 2)
if $b == 358
left 1029, 963
wait 2300
else
start_script 9 wait
stop_script
end_if


Код

set $c findcolor (702, 939 896, 964 1 1 16777215 %arr 2)
if $c == 194
left 803, 968
wait 2600
else
left 1027, 963
wait 2600
stop_script
end_if


меня в принципе эта связка устраивает, но всегда хочется сделать красивее и практичнее. по этому и обратил внимание на switch, судя по описанию я все эти условия смогу запихнуть в один скрипт и прописать условия не только для восстановления жизни и ресурсов, но и для остальных среди которых есть совершенно не нужные бусты.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.4.2020, 11:28
Сообщение #8


**********

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



switch тут не применим.
Вместо запуска скриптов используйте подпрограммы gosub.
код
Код
while 1 = 1
    set #a findcolor (699, 941 892, 964 1 1 16777215 %arr 2)
    if  #a = 358
        gosub script2
    end_if

    set #a findcolor (925, 939 1119, 966 1 1 16777215 %arr 2)
    if  #a = 358
        gosub script9
    end_if

    set #c findcolor (702, 939 896, 964 1 1 16777215 %arr 2)
    if #c = 194
        gosub metka
    end_if
    wait 1000
end_while


:script2
    log Действия скрипта 2
return

:script9
    log Действия скрипта 9
return

:metka
    log Нужные действия
return
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DurNoy
сообщение 19.4.2020, 11:48
Сообщение #9


**

Neophyte
Сообщений: 17
Регистрация: 30.3.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.593
Возраст: 32



Цитата(cirus @ 19.4.2020, 11:28) *

switch тут не применим.
Вместо запуска скриптов используйте подпрограммы gosub.
код
Код
while 1 = 1
    set #a findcolor (699, 941 892, 964 1 1 16777215 %arr 2)
    if  #a = 358
        gosub script2
    end_if

    set #a findcolor (925, 939 1119, 966 1 1 16777215 %arr 2)
    if  #a = 358
        gosub script9
    end_if

    set #c findcolor (702, 939 896, 964 1 1 16777215 %arr 2)
    if #c = 194
        gosub metka
    end_if
    wait 1000
end_while
:script2
    log Действия скрипта 2
return

:script9
    log Действия скрипта 9
return

:metka
    log Нужные действия
return


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

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

 

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