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

 
Ответить в эту темуОткрыть новую тему
> возрат к предыдущей команде
raritet
сообщение 30.5.2021, 23:05
Сообщение #1


**

Neophyte
Сообщений: 13
Регистрация: 28.12.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.841
Возраст: 24



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

while true do
kleft (1600,900) -- возврат хотел бы сделать в это место
  wait (600)
kleft (900,450)
  wait (600)
kleft (1050, 550)
  wait (600)
kleft (800, 150)
  wait (600)
kleft (800, 340)
  wait (600)
kleft (787, 767)    
  wait (600)
kleft (960, 850)    
wait (3000)
     if color (958, 429) == 7384988  then
            kleft (976, 659)
            wait (3500)
                if color (958, 429) == 7384988  then
                        kleft (976, 659)
                        wait (3500)
                else
                        kleft (960, 500)
                        wait (600)
                        kleft (1100, 500)  
                        wait (600)
                if color (889, 606) == 2507417  then
                        kleft (889, 606)    
                        wait (600)
-- если дело дошло до данного условия, сделать переход к точке возврата
                else
                        kleft (787, 800)    
                        wait (600)
                        kleft (1038, 952)
                        wait (600)

          end
       end
    end
end

еще хотел бы узнать одинаково ли будут выглядеть команды скрипта, если возврат осуществляется к началу скрипта и возврат, например, к какой-нибудь другой его части?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 30.5.2021, 23:20
Сообщение #2


**********

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



Код
--lua
while true do
    ::metka::
    wait (100)
    if 1 == 1 then
        log (1)
        goto metka
    end
    log (2)
end
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
raritet
сообщение 30.5.2021, 23:54
Сообщение #3


**

Neophyte
Сообщений: 13
Регистрация: 28.12.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.841
Возраст: 24



Цитата(cirus @ 30.5.2021, 23:20) *

Код
--lua
while true do
    ::metka::
    wait (100)
    if 1 == 1 then
        log (1)
        goto metka
    end
    log (2)
end




code
Код

while true do
::metka:: -- правильно я делаю?
kleft (1600,900) -- возврат хотел бы сделать в это место
  wait (600)
kleft (900,450)
  wait (600)
kleft (1050, 550)
  wait (600)
kleft (800, 150)
  wait (600)
kleft (800, 340)
  wait (600)
kleft (787, 767)    
  wait (600)
kleft (960, 850)    
wait (3000)
     if color (958, 429) == 7384988  then
            kleft (976, 659)
            wait (3500)
                if color (958, 429) == 7384988  then
                        kleft (976, 659)
                        wait (3500)
                else
                        kleft (960, 500)
                        wait (600)
                        kleft (1100, 500)  
                        wait (600)
                if color (889, 606) == 2507417  then
                        kleft (889, 606)    
                        wait (600)
                                                
goto metka

-- если дело дошло до данного условия, сделать переход к точке возврата

                else
                        kleft (787, 800)    
                        wait (600)
                        kleft (1038, 952)
                        wait (600)

          end
       end
    end
end



если допустим в скрипте будет 4 перехода в разные части скрипта
то как это выполнить
я добавил лишь открывок
почему я спрашиваю, я не смогу протестить такой переход - это условие происходит редко
произвольно его не добиться

мне будет достаточно писать - ::metka1::, ::metka2:: и так далее?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.5.2021, 0:06
Сообщение #4


**********

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



Цитата
мне будет достаточно писать - ::metka1::, ::metka2:: и так далее?

Да. Имя метки может быть другим.
Код
--lua
local x = 0
while true do
    ::qqq::
    log (111)
    ::qwe::
    log (222)
    wait (300)
    if x == 5 then
        x = 0
        log ('   ')
        goto qqq
    end
     x = x + 1
    goto qwe
end
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
raritet
сообщение 31.5.2021, 0:09
Сообщение #5


**

Neophyte
Сообщений: 13
Регистрация: 28.12.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.841
Возраст: 24



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


**

Neophyte
Сообщений: 13
Регистрация: 28.12.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.841
Возраст: 24



я добавил новое условие с переходом к метке 1
помогите разобраться пожалуйста, хочу для себя выяснить
суть цикла повторяться каждые 32 минуты, один цикл это 4 повторения одних и тех же действий,
но если сработает условие с меткой 1, осуществляется переход на начало цикла
протестировать это не могу, так как само условие с меткой 1 происходит крайне редко

метка 1 до функции for - будет заставлять скрипт снова делать 4 повторения
метка 1 после функции for - завершит то повторение, в котором была метка, и завершит оставшиеся повторения, на чем цикл после закончится - именно это мне и нужно

code
Код

--lua

math.randomseed(os.clock())

while true do

for i = 1, 4  do
::metka1::
kleft (1600,900)
  wait (600)
kleft (900,450)
  wait (600)
kleft (1050, 550)
  wait (600)
kleft (800, 150)
  wait (600)
kleft (800, 340)
  wait (600)

local random_coord = math.random(1, 3)
local coord = {
  {800, 800},
  {1000, 800},
  {1100, 800}
}
kleft(coord[random_coord][1], coord[random_coord][2])
  wait (600)
kleft (960, 850)    
  wait (3000)

    ::metka::

    if color (958, 429) == 7384988  then
        kleft (976, 659)    
        wait (3500)
    goto metka

    else
        kleft (960, 500)
        wait (600)
        kleft (1100, 500)    
        wait (600)
            if color (817, 610) == 2376339  then -- новое условие с меткой
                kleft (817, 610)  
                wait (600)
            goto metka1
    local a = findcolor([[755, 777 1000, 850  (11652317) %arr]])
    if a > 0 then
        move(arr[1][1], arr[1][2])
        wait (200)
        kleft(arr[1][1], arr[1][2])
        wait (200)
        kleft (1027, 941)
        wait (200)
        move(971, 482)

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

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

 

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