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

 
Ответить в эту темуОткрыть новую тему
> Использовать go to или нет?, чтобы начать сначала процедуру
NoName212
сообщение 21.11.2018, 10:38
Сообщение #1


**

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



Сам скрипт работает без сбоев, по 8-10 часов в сутки вторую неделю, без изменений пока я на работе. (IMG:style_emoticons/default/smile.gif) Во время выполнения процедуры zaryadkaFonarya #g #h может выскочить сообщение, и если оно закроет окно, в котором выполняется процедура, надо процедуру начать сначала... самый как мне кажется простой вариант - go to :startProc, и метка :startProc строкой выше вызова процедуры. Но видимо такой вариант - не самый лучший. Он используется в скрипте один раз, но если привыкнут так делать возможно буду постоянно его использовать. Подскажите что лучше?

скрипт с go to
Код
//--->>> ФАРМ ГРИБОВ В ЛЕСУ/БОЛОТЕ МУРМАНСКА ДИНАМО-ФОНАРЁМ <<<---//

//*** все характеристики по нулям, не должно быть болезней, динамо-фонарь на 100% заряжен***//

//всплывающие окна погода/землятресения и т.д.
proc okno #a #b
    set #a 0
    set #b findimage (1596, 314 1686, 400  (C:\DAYR\DAY_R_IMAGE\pogoda.bmp) %arr 2 80 1 10)
    if #b > #a
        wait 300
        left %arr [1 1] %arr [1 2]
        wait 300
    end_if
    wait 300
end_proc

//локация, если всплывающеке окно закрыло локация
proc locachiya #c #d
    set #c 0
    set #d findimage (37, 663 173, 711   (C:\DAYR\DAY_R_IMAGE\chat.bmp) %arr 2 40 1 10)
    if #d > #c
        wait 300
        left 1496, 963  //выбирает локация
        wait 300
    end_if
    wait 300
end_proc


//локация, если всплывающее окно закрыло инвентарь, во время зарядки динамо-фонаря (proc zaryadkaFonarya #g #h)
proc inventar #cd #ef
    set #cd 1
    set #ef findimage (37, 663 173, 711   (C:\DAYR\DAY_R_IMAGE\chat.bmp) %arr 2 40 1 10)
    if #cd = #ef
        wait 300
        goto startProc
        wait 300
    end_if
    wait 300
end_proc

//если фонарь разряжен
proc fonarOff #cde #fqr
    set #cde 1
    set #fqr 0
    if #cde > #fqr
        wait 300
        left 419, 237 //динамо-фонарь (разряжен)
        wait 300
        left 1766, 479 //зарядить
        wait 8000
        call fonarTake
    end_if
    wait 300
end_proc

//берёт фонарь, если уснул после зарядки
proc fonarTake #ta #ke
    wait 300
    left 1512, 960 //локация
    wait 300
    left 1246, 957 //инвентарь
    wait 300
    left 194, 485 //выживание
    set #ta 1
    set #ke 0
    if #ta > #ke
        left 414, 260 //динамо фонарь
        wait 300
        call okno #a #b
        call inventar #cd #ef
        left 1804, 407 //использовать
    end_if
    wait 300
end_proc


//едим, пьем, спим, едим
proc edimSpimEdim #e #f
set #e 0
set #f 1
if #f > #e
    call okno #a #b
    wait 300
    left 1569, 953 //локация
    wait 300
    call okno #a #b
    left 743, 819  //пьём
    wait 300
    call okno #a #b
    left 891, 819   //жрем
    wait 300
    call okno #a #b
    left 1740, 791  //спим
    wait 16000
    call okno #a #b
    left 865, 813  //жрем
    wait 300
    call okno #a #b
    wait 300
end_if
end_proc

//фарм грибов
proc farmGribov #q #r
set #q 0
set #r 1
if #r > #q
    wait 300
//    for #farmG 0 25 1
    for #farmG 0 23 1
        left 1378, 840  //искать
        wait 1500
        call okno #a #b
        call locachiya #c #d
        call piz #pi #de
    end_for
    wait 2000
end_if
end_proc

//зарядка динамо-фонаря
proc zaryadkaFonarya #g #h
set #g 0
set #h 1
if #h > #g
    wait 300
    left 1241, 934 //инвентарь
    wait 300
    call okno #a #b
    call inventar #cd #ef
    left 65, 472  //выживание
    call okno #a #b
    call inventar #cd #ef
    wait 300
    left 427, 257 //динамо-фонарь
    call okno #a #b
    call inventar #cd #ef
    wait 300
    left 1785, 755  //зарядить
    wait 4500
    call okno #a #b
    call inventar #cd #ef
    //если фонарь разряжен - заряжает. Кординаты взяты у батарейки: 12:18-1:30
    set #fonarColor findcolor (362, 219 369, 223  1 1 (1056216-856711) %arr 2 -1 10)
    if #fonarColor > 0
        call fonarOff #cde #fqr
    end_if
    call okno #a #b
    call inventar #cd #ef
    left 1473, 946  //локация
    wait 300
    call okno #a #b
    call inventar #cd #ef
    left 1473, 946  //локация
    wait 300
    call okno #a #b
    left 1761, 788  //спать
    wait 7000
end_if
end_proc

//проверка на истощение 61-74 (цвета в таком диопазоне) при истощении 38 срабатывает
proc piz #pi #de
set #pi 1
set #de 0
if #pi > #de
    wait 300
    set #die findcolor (208, 4 282, 50   1 1 (676544-17151) %arr 2 -1 10)
    if #die > 0
        wait 300
        left 1473, 946  //локация
        wait 300
        left 1031, 827 //бриокарм
        wait 2000
    end_if
end_if
end_proc

//---->>>>>>>>> начало <<<<<<<<<--------//

for #gribs 0 1 1
    call okno #a #b
    call locachiya #c #d
    call farmGribov #q #r
    call edimSpimEdim #e #f
end_for
:startProc
call zaryadkaFonarya #g #h

//---->>>>>>>>> конец <<<<<<<<<--------//


ещё про название функций хотел спросить, на транслите или на инглише лучше надо их писать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 21.11.2018, 15:42
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Goto не использую принципиально. Очень правильно лечит кривой код. Хотя иногда считаю его вполне оправданным:
1) Зацикливание основной функции.
2) В языках не поддерживающих break LEVEL считаю допустимым сделать goto в виде прерывания нескольких уровней цикла.
Цитата
ещё про название функций хотел спросить, на транслите или на инглише лучше надо их писать?

Транслитом, пожалуй нигде не надо (IMG:style_emoticons/default/smile.gif) Функции на англ, комменты лучше на англ, чтобы самому привыкать к языку и сводобнее ориентироваться (скилл апаем), если предполагается некоторая целевая аудитория с непонятным знанием языка - лучше на русском. В частности на форуме находится достаточно количество людей которые англ не знают и ту полезную информацию которую они могли бы получить из кода, они пропустят.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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