Author Topic: DIALOGBOX внутри IF_PICTURE_IN  (Read 9555 times)

0 Members and 1 Guest are viewing this topic.

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
DIALOGBOX внутри IF_PICTURE_IN
« on: January 05, 2014, 02:00:47 PM »
Clickermann зависает при выполнении сценария. При нахождении первой или второй текстуры - все отлично.
Если видимых текстур нет, последняя запись в лог - "8", потом виснет.
Есть ли способ изменить алгоритм?
Code: (clickermann) [Select]
$cennost = 0
getscreen
colormode(6)
IF($cennost = 0)
   print("1")
   WAIT(1)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\surprise.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть сюрприз?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("2")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\pernatiy.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть пернатый?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("3")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\butilka.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть бутылки?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("4")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\svitok.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть свитки?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("5")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\vaza.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть вазы?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("6")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\chasha.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть чашы?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("7")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\rogatoe.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть рогатое?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("8")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\strogoe.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть строгое?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("9")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\prostoe.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть простое?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("10")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\baby.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть бейби-сюрприз?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   print("11")
   WAIT(1)   
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\klubnichnoe.bmp" , -1 , 80)
      $z = DIALOGBOX("Открыть клубничное?", 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost =  1
      END_IF
   END_IF
END_IF
IF($cennost = 0)
   $z = DIALOGBOX("Нечего открывать", 1 )
   halt
END_IF
//--------------------------------
// Коэффицент задержки
$k = 2   // 1 - быстро, 10- медленно
//--------------------------------
//--------------------------------
//--------------------------------
$x_10 = $_return1+100
$y_10 = $_return2+70
$x_open = $_return1
$y_open = $_return2+130
MOVE($x_10, $y_10)
WAITMS(500)
LCLICK($x_10, $y_10)
WAITMS(300)
MOVE($x_open, $y_open)
WAITMS(500)
LCLICK($x_open, $y_open)
WAIT(2)
getscreen
colormode(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\sklad.bmp" , -1 , 80)
   $x_sklad = $_return1
   $y_sklad = $_return2+10
else
   print("Не видна кнопка склад")
   halt
END_IF
$re = ROUND($shtuk/10 - 1, 0)
FOR($a,$a<$re)
   MOVE($x_sklad, $y_sklad)
   WAITMS(100)
   LCLICK($x_sklad, $y_sklad)
   WAITMS($k*1000)
   MOVE($x_10, $y_10)
   WAITMS(100)
   LCLICK($x_10, $y_10)
   WAITMS($k*50)
   MOVE($x_open, $y_open)
   WAITMS(100)
   LCLICK($x_open, $y_open)
   WAITMS($k*500)
END_CYC
halt

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #1 on: January 05, 2014, 04:54:01 PM »
В строке 51 и 73 после textures затесался пробел, может он мешает?


Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #2 on: January 05, 2014, 06:45:31 PM »
Что то не вижу пробела
Code: (clickermann) [Select]
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\vaza.bmp" , -1 , 80)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #3 on: January 05, 2014, 07:17:43 PM »
А зачем в каждом условии WAIT(1) ??? Чего ждать то?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #4 on: January 05, 2014, 07:44:48 PM »
Что то не вижу пробела
Code: (clickermann) [Select]
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\vaza.bmp" , -1 , 80)
Напомнило: "Ты суслика видишь? Нет. А он там есть...". Перед слэшем. Не знаю у меня так отображается. Может и не пробел, а один из управляющих символов. Здесь ещё и после v
« Last Edit: January 05, 2014, 07:50:48 PM by Vint »


Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #5 on: January 05, 2014, 07:50:57 PM »
wait(1) - пыталась разгрузить процессор. Причину выявила. (-1 , 80) - в IF_PICTURE_IN загружают процессор. В одном сравнении это незаметно, а когда подряд 10 сравнений - не любой процессор вывезет))) Заодно алгоритм пересмотрела.

P.S. Ну нет у меня пробела))) Ставлю курсор справа от слэша,  перевожу стрелкой влево. BACKSPASE - удаляет "S"

P.P.S.  Сижу ржу)))) Две картинки забыла обрезать, в них был полный снимок экрана (4 mb), еще удивляюсь, почему виснет)))
« Last Edit: January 05, 2014, 08:42:59 PM by Крис Тинка »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #6 on: January 05, 2014, 09:47:05 PM »
Ну вот и ладушки. А процент да, он такой. При чём, чем меньше значение, тем дольше выполняется.
Для разгрузки вставлять 1 секунду это много, очень много. И не нужно.
Для ускорения нужно искать не по всему экрану. Как минимум отнять значения от области до краев стандартного окна с игрой. И эти значения учесть от краев экрана. По хорошему, привязаться к элементу открытого окна склада и задавать область ограниченную.
« Last Edit: January 05, 2014, 09:50:46 PM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #7 on: January 05, 2014, 11:41:29 PM »
Даже не знаю будет ли работать такая оптимизация  :D
Самому интересно.... Работать будет корректно на версии 4.9

Code: (clickermann) [Select]
$cennost = 0
$cen_arr[0] = "surprise.bmp:Открыть сюрприз?"
$cen_arr[1] = "pernatiy.bmp:Открыть пернатый?"
$cen_arr[2] = "butilka.bmp:Открыть бутылки?"
$cen_arr[3] = "svitok.bmp:Открыть свитки?"
$cen_arr[4] = "vaza.bmp:Открыть вазы?"
$cen_arr[5] = "chasha.bmp:Открыть чашы?"
$cen_arr[6] = "rogatoe.bmp:Открыть рогатое?"
$cen_arr[7] = "strogoe.bmp:Открыть строгое?"
$cen_arr[8] = "prostoe.bmp:Открыть простое?"
$cen_arr[9] = "baby.bmp:Открыть бейби-сюрприз?"
$cen_arr[10] = "klubnichnoe.bmp:Открыть клубничное?"

getscreen
colormode(6)
FOR($cen,$cen<ARRSIZE($cen_arr))
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("textures\", STRCUT2($cen_arr[$cen],1,STRPOS($cen_arr[$cen],":")-1)), -1 , 80)
      $z = DIALOGBOX(STRCUT2($cen_arr[$cen],STRPOS($cen_arr[$cen],":")+1,STRLEN($cen_arr[$cen])), 6, 7)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost = 1
         $cen = 999
      END_IF
   END_IF
   WAITMS(100)
END_CYC

IF($cennost = 0)
   $z = DIALOGBOX("Нечего открывать", 1 )
   halt
END_IF
//--------------------------------
// Коэффицент задержки
$k = 2   // 1 - быстро, 10- медленно
//--------------------------------
//--------------------------------
//--------------------------------
$x_10 = $_return1+100
$y_10 = $_return2+70
$x_open = $_return1
$y_open = $_return2+130
MOVE($x_10, $y_10)
WAITMS(500)
LCLICK($x_10, $y_10)
WAITMS(300)
MOVE($x_open, $y_open)
WAITMS(500)
LCLICK($x_open, $y_open)
WAIT(2)
getscreen
colormode(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\sklad.bmp" , -1 , 80)
   $x_sklad = $_return1
   $y_sklad = $_return2+10
else
   print("Не видна кнопка склад")
   halt
END_IF
$re = ROUND($shtuk/10 - 1, 0)
FOR($a,$a<$re)
   MOVE($x_sklad, $y_sklad)
   WAITMS(100)
   LCLICK($x_sklad, $y_sklad)
   WAITMS($k*1000)
   MOVE($x_10, $y_10)
   WAITMS(100)
   LCLICK($x_10, $y_10)
   WAITMS($k*50)
   MOVE($x_open, $y_open)
   WAITMS(100)
   LCLICK($x_open, $y_open)
   WAITMS($k*500)
END_CYC
halt
« Last Edit: January 06, 2014, 02:05:35 AM by Oraven »

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #8 on: January 06, 2014, 08:31:45 AM »
Oraven, попробовала  твой код. ни на 4.8 ни на 4.9 корректно не сработал. Я кстати тоже в своем коде использовала массивы, но немного по другому. Вот кусок.
Code: (clickermann) [Select]
HINTPOPUP("Пожалуйста подождите", "Анализ экрана")
getscreen
colormode(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\surprise.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 1)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\pernatiy.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 2)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\butilka.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 3)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\svitok.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 4)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\vaza.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 5)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\chasha.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 6)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\rogatoe.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 7)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\strogoe.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 8)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\prostoe.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 9)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\baby.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 10)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\klubnichnoe.bmp")
   arrpush($xy, $_return1)
   arrpush($xy, $_return2)
   arrpush($cen, 11)
END_IF
IF($xy = 0)
   $z = DIALOGBOX("Нечего открывать", 1 )
   halt
END_IF
while($xy > 0)
   $a = arrpop($cen)
   $y = arrpop($xy)
   $x = arrpop($xy)
   $b = 1
   IF($a = 1)
      $cennost = "Открыть сюрприз?"
   END_IF
   IF($a = 2)
      $cennost = "Открыть пернатый?"
   END_IF
   IF($a = 3)
      $cennost = "Открыть бутылку?"
   END_IF
   IF($a = 4)
      $cennost = "Открыть свиток?"
   END_IF
   IF($a = 5)
      $cennost = "Открыть вазу?"
   END_IF
   IF($a = 6)
      $cennost = "Открыть чашу?"
   END_IF
   IF($a = 7)
      $cennost = "Открыть рогатое?"
   END_IF
   IF($a = 8)
      $cennost = "Открыть строгое?"
   END_IF
   IF($a = 9)
      $cennost = "Открыть простое?"
   END_IF
   IF($a = 10)
      $cennost = "Открыть бэйби-сюрприз?"
   END_IF
   IF($a = 11)
      $cennost = "Открыть клубничное?"
   END_IF
   $z = DIALOGBOX($cennost, 6, 7)
   IF($z = 6)
      $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
      $xy = 0
   ELSE
      $b = 0
   END_IF
   print($cennost," координаты - ",$x,":",$y)
end_cyc
IF($b = 0)
   $z = DIALOGBOX("Ничего не выбрано", 1 )
   halt
END_IF
halt
« Last Edit: January 06, 2014, 08:57:55 AM by Крис Тинка »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #9 on: January 06, 2014, 10:32:55 AM »
Стал тестить отдельно и увидел что у тебя неправильные параметры DIALOGBOX. Там нужно 4, 2 писать а 6,7 это возвращаемые коды!
Code: (clickermann) [Select]
$cennost = 0
ARRPUSH($cen_arr, "surprise.bmp:Открыть сюрприз")
ARRPUSH($cen_arr, "pernatiy.bmp:Открыть пернатый?")
ARRPUSH($cen_arr, "butilka.bmp:Открыть бутылки?")
ARRPUSH($cen_arr, "svitok.bmp:Открыть свитки?")
ARRPUSH($cen_arr, "vaza.bmp:Открыть вазы?")
ARRPUSH($cen_arr, "chasha.bmp:Открыть чашы?")
ARRPUSH($cen_arr, "rogatoe.bmp:Открыть рогатое?")
ARRPUSH($cen_arr, "strogoe.bmp:Открыть строгое?")
ARRPUSH($cen_arr, "prostoe.bmp:Открыть простое?")
ARRPUSH($cen_arr, "baby.bmp:Открыть бейби-сюрприз?")
ARRPUSH($cen_arr, "klubnichnoe.bmp:Открыть клубничное?")

FOR($cen,$cen<ARRSIZE($cen_arr))
   $aaa = STRCONCAT("textures\", STRCUT2($cen_arr[$cen],1,STRPOS($cen_arr[$cen],":")-1))
   LOGWRITE ($aaa)
   $z = DIALOGBOX(STRCUT2($cen_arr[$cen],STRPOS($cen_arr[$cen],":")+1,STRLEN($cen_arr[$cen])), 4, 2)
   LOGWRITE ($z)
END_CYC

HALT

вот это на 4.9 работает нормально.
« Last Edit: January 06, 2014, 10:36:34 AM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #10 on: January 06, 2014, 10:41:28 AM »
Может такой вариант сработает?

Code: (clickermann) [Select]
$cennost = 0
ARRPUSH($cen_arr, "surprise.bmp:Открыть сюрприз")
ARRPUSH($cen_arr, "pernatiy.bmp:Открыть пернатый?")
ARRPUSH($cen_arr, "butilka.bmp:Открыть бутылки?")
ARRPUSH($cen_arr, "svitok.bmp:Открыть свитки?")
ARRPUSH($cen_arr, "vaza.bmp:Открыть вазы?")
ARRPUSH($cen_arr, "chasha.bmp:Открыть чашы?")
ARRPUSH($cen_arr, "rogatoe.bmp:Открыть рогатое?")
ARRPUSH($cen_arr, "strogoe.bmp:Открыть строгое?")
ARRPUSH($cen_arr, "prostoe.bmp:Открыть простое?")
ARRPUSH($cen_arr, "baby.bmp:Открыть бейби-сюрприз?")
ARRPUSH($cen_arr, "klubnichnoe.bmp:Открыть клубничное?")

getscreen
colormode(6)
FOR($cen,$cen<ARRSIZE($cen_arr))
   $pict = STRCONCAT("textures\", STRCUT2($cen_arr[$cen],1,STRPOS($cen_arr[$cen],":")-1))
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, $pict, -1, 80)
      $z = DIALOGBOX(STRCUT2($cen_arr[$cen],STRPOS($cen_arr[$cen],":")+1,STRLEN($cen_arr[$cen])), 4, 2)
      IF($z = 6)
         $shtuk = INPUTBOX("Сколько открыть?", 10 , 10)
         $cennost = 1
         $cen = 999
      END_IF
   END_IF
   WAITMS(100)
END_CYC
UNDEFINE($cen_arr)
IF($cennost = 0)
   $z = DIALOGBOX("Нечего открывать", 1 )
   halt
END_IF
//--------------------------------
// Коэффицент задержки
$k = 2   // 1 - быстро, 10- медленно
//--------------------------------
//--------------------------------
//--------------------------------
$x_10 = $_return1+100
$y_10 = $_return2+70
$x_open = $_return1
$y_open = $_return2+130
MOVE($x_10, $y_10)
WAITMS(500)
LCLICK($x_10, $y_10)
WAITMS(300)
MOVE($x_open, $y_open)
WAITMS(500)
LCLICK($x_open, $y_open)
WAIT(2)
getscreen
colormode(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\sklad.bmp", -1, 80)
   $x_sklad = $_return1
   $y_sklad = $_return2+10
else
   print("Не видна кнопка склад")
   halt
END_IF
$re = ROUND($shtuk/10 - 1, 0)
FOR($a,$a<$re)
   MOVE($x_sklad, $y_sklad)
   WAITMS(100)
   LCLICK($x_sklad, $y_sklad)
   WAITMS($k*1000)
   MOVE($x_10, $y_10)
   WAITMS(100)
   LCLICK($x_10, $y_10)
   WAITMS($k*50)
   MOVE($x_open, $y_open)
   WAITMS(100)
   LCLICK($x_open, $y_open)
   WAITMS($k*500)
END_CYC
halt

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #11 on: January 06, 2014, 10:57:00 AM »
в 4.9 версии выдает ошибку в этих строках
Code: (clickermann) [Select]
$re = ROUND($shtuk/10 - 1, 0)
FOR($a,$a<$re)

в 4.8 ошибка в этих
Code: (clickermann) [Select]
ARRPUSH($cen_arr, "surprise.bmp:Открыть сюрприз")
ARRPUSH($cen_arr, "pernatiy.bmp:Открыть пернатый?")
ARRPUSH($cen_arr, "butilka.bmp:Открыть бутылки?")
ARRPUSH($cen_arr, "svitok.bmp:Открыть свитки?")
ARRPUSH($cen_arr, "vaza.bmp:Открыть вазы?")
ARRPUSH($cen_arr, "chasha.bmp:Открыть чашы?")
ARRPUSH($cen_arr, "rogatoe.bmp:Открыть рогатое?")
ARRPUSH($cen_arr, "strogoe.bmp:Открыть строгое?")
ARRPUSH($cen_arr, "prostoe.bmp:Открыть простое?")
ARRPUSH($cen_arr, "baby.bmp:Открыть бейби-сюрприз?")
ARRPUSH($cen_arr, "klubnichnoe.bmp:Открыть клубничное?")
Полную свою рабочую версию с картинками выложила тут http://crapware.aidf.org/forum/index.php?topic=969.0
Не совсем поняла разницу dialogbox("то-то" , 6, 7) и dialogbox("то-то" , 4, 2) Или совсем не поняла)))
« Last Edit: January 06, 2014, 11:00:24 AM by Крис Тинка »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #12 on: January 06, 2014, 12:48:14 PM »
Ошибка в другом
Вот так все будет норм
Code: (clickermann) [Select]
$shtuk = INT(INPUTBOX("Сколько открыть?", 10, 10))Видать возвращается строка а не число а потом ошибка в вычислении

Справку повнимательнее почитай.

Тебе нужны
Коды наборов кнопок
Код Кнопка
0 OK
1 OK, CANCEL
2 ABORT, RETRY, IGNORE
3 YES, NO, CANCEL
4 YES, NO
5 RETRY, CANCEL

В данном случае 4 - это (YES, NO), а 2 - это код иконки (Вопрос)
Code: (clickermann) [Select]
$mr = dialogbox("Yes or No?", 4,2)
if ($mr = 6)
  print("Yes")
else
  print("No")
end_if
halt

После того как нажмешь кнопку функция вернет код
Возвращаемые коды
Код Кнопка
1 OK
2 CANCEL
3 ABORT
4 RETRY
5 IGNORE
6 YES
7 NO
« Last Edit: January 06, 2014, 12:57:42 PM by Oraven »

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #13 on: January 06, 2014, 01:46:01 PM »
Справку читала. В 4.8 написано так
Code: [Select]
Функция принимает коды одной или нескольких кнопок, которые в последствии будут на диалоговом окне.
Функция возвращает код той кнопки, которую нажал пользователь. Выполнение скрипта будет остановлено до тех пор, пока какая-либо из кнопок не будет нажата


В 4.9 - да, надо делать, как ты сказал. Но мой скрипт на 4.9 не работает, так как не исправлена ошибка "arrpop"

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: DIALOGBOX внутри IF_PICTURE_IN
« Reply #14 on: January 06, 2014, 02:15:45 PM »
Ну тык вот такой вариант работает или нет на 4.9 ?

Code: (clickermann) [Select]
$cennost = 0
ARRPUSH($cen_arr, "surprise.bmp:Открыть сюрприз")
ARRPUSH($cen_arr, "pernatiy.bmp:Открыть пернатый?")
ARRPUSH($cen_arr, "butilka.bmp:Открыть бутылки?")
ARRPUSH($cen_arr, "svitok.bmp:Открыть свитки?")
ARRPUSH($cen_arr, "vaza.bmp:Открыть вазы?")
ARRPUSH($cen_arr, "chasha.bmp:Открыть чашы?")
ARRPUSH($cen_arr, "rogatoe.bmp:Открыть рогатое?")
ARRPUSH($cen_arr, "strogoe.bmp:Открыть строгое?")
ARRPUSH($cen_arr, "prostoe.bmp:Открыть простое?")
ARRPUSH($cen_arr, "baby.bmp:Открыть бейби-сюрприз?")
ARRPUSH($cen_arr, "klubnichnoe.bmp:Открыть клубничное?")

getscreen
colormode(6)
FOR($cen,$cen<ARRSIZE($cen_arr))
   $pict = STRCONCAT("textures\", STRCUT2($cen_arr[$cen],1,STRPOS($cen_arr[$cen],":")-1))
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, $pict, -1, 80)
      $z = DIALOGBOX(STRCUT2($cen_arr[$cen],STRPOS($cen_arr[$cen],":")+1,STRLEN($cen_arr[$cen])), 4, 2)
      IF($z = 6)
         $shtuk = INT(INPUTBOX("Сколько открыть?", 10 , 10))
         $cennost = 1
         $cen = 999
      END_IF
   END_IF
   WAITMS(100)
END_CYC
UNDEFINE($cen_arr)
IF($cennost = 0)
   $z = DIALOGBOX("Нечего открывать", 1 )
   halt
END_IF
//--------------------------------
// Коэффицент задержки
$k = 2   // 1 - быстро, 10- медленно
//--------------------------------
//--------------------------------
//--------------------------------
$x_10 = $_return1+100
$y_10 = $_return2+70
$x_open = $_return1
$y_open = $_return2+130
MOVE($x_10, $y_10)
WAITMS(500)
LCLICK($x_10, $y_10)
WAITMS(300)
MOVE($x_open, $y_open)
WAITMS(500)
LCLICK($x_open, $y_open)
WAIT(2)
getscreen
colormode(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\sklad.bmp", -1, 80)
   $x_sklad = $_return1
   $y_sklad = $_return2+10
else
   print("Не видна кнопка склад")
   halt
END_IF
$re = ROUND($shtuk/10 - 1, 0)
FOR($a,$a<$re)
   MOVE($x_sklad, $y_sklad)
   WAITMS(100)
   LCLICK($x_sklad, $y_sklad)
   WAITMS($k*1000)
   MOVE($x_10, $y_10)
   WAITMS(100)
   LCLICK($x_10, $y_10)
   WAITMS($k*50)
   MOVE($x_open, $y_open)
   WAITMS(100)
   LCLICK($x_open, $y_open)
   WAITMS($k*500)
END_CYC
halt