UoKit.com Форумы > Кликер > UO Pilot > UO Pilot в онлайн играх
NoName212
Сам скрипт работает без сбоев, по 8-10 часов в сутки вторую неделю, без изменений пока я на работе. Во время выполнения процедуры 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

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


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

Транслитом, пожалуй нигде не надо Функции на англ, комменты лучше на англ, чтобы самому привыкать к языку и сводобнее ориентироваться (скилл апаем), если предполагается некоторая целевая аудитория с непонятным знанием языка - лучше на русском. В частности на форуме находится достаточно количество людей которые англ не знают и ту полезную информацию которую они могли бы получить из кода, они пропустят.
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.