Author Topic: неправильно работает switch  (Read 4604 times)

0 Members and 1 Guest are viewing this topic.

zromaz

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
неправильно работает switch
« on: March 02, 2014, 12:47:20 AM »
Code: [Select]
LOGCLEAR
//SWITCH для ресурсов
$LVLRES=inputbox("какие ресурсы собирать?",60,999)
print($LVLRES)
switch($LVLRES)
case(0)
   print("0")
   $COLORRES1=0
   $COLORRES2=0
   $COLORRES3=0
   $COLORRES4=0
   $COLORRES5=0
   LOGWRITE($COLORRES1,$COLORRES2,$COLORRES3,$COLORRES4,$COLORRES5)
case(30)
   print("30")
   $COLORRES1=0
   $COLORRES2=0
   $COLORRES3=0
   $COLORRES4=0
   $COLORRES5=0
   LOGWRITE($COLORRES1,$COLORRES2,$COLORRES3,$COLORRES4,$COLORRES5)
case(60)
   print("60")
   $COLORRES1=4480676
   $COLORRES2=6739939
   $COLORRES3=5638832
   $COLORRES4=1383280
   $COLORRES5=1507450
   $COLORRES6=8221204
   $COLORRES7=6721792
   LOGWRITE($COLORRES1,$COLORRES2,$COLORRES3,$COLORRES4,$COLORRES5)
   GOTO(BOOT)
case(90)
   print("90")
   $COLORRES1=0
   $COLORRES2=0
   $COLORRES3=0
   $COLORRES4=0
   $COLORRES5=0
   LOGWRITE($COLORRES1,$COLORRES2,$COLORRES3,$COLORRES4,$COLORRES5)
case(120)
   print("120")
   $COLORRES1=0
   $COLORRES2=0
   $COLORRES3=0
   $COLORRES4=0
   $COLORRES5=0
   LOGWRITE($COLORRES1,$COLORRES2,$COLORRES3,$COLORRES4,$COLORRES5)
default
   PRINT("НЕ ВВЕДЕНО ЗНАЧЕНИЕ")
   $LVLRES=90
end_switch

BOOT:

Еще одна проблема вылезла со свитчом, когда вставляю этот кусок кода отдельно, в другом файле, то все нормально переход происходит именно к тому что написал, 30 к 30, 60 к 60, но как только вставляю в код бота, все идет на перекосяк: ввожу 60, он сделает все операции с 0 потом 30 потом 60 и т.д. Именно поэтому я поставил там goto, чтобы хоть на этом вышел.Но почему он так некорректно работает внутри другого кода, непонятно.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: неправильно работает switch
« Reply #1 on: March 02, 2014, 10:22:52 AM »
У тебя всего 1 GETSCREEN в скрипте. Конечно если анализ идет друг за другом без задержек то можно и не писать GETSCREEN но у тебя например
Code: (clickermann) [Select]
for($var, $var < 5, 1)
   wait(13,4)
   IF_PIXEL_IN(405,203,428,221, 1386092) // что тут через 13 сек анализируется??? Снимок сделанный в начале скрипта?!!!
      #include "WARINBOT.cms"
   END_IF
end_cyc

Про твою ошибку, нужно заключить INPUTBOX в INT чтобы возвращалось именно число а не строка.
Code: (clickermann) [Select]
$LVLRES=INT(inputbox("какие ресурсы собирать?",60,999))

zromaz

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: неправильно работает switch
« Reply #2 on: March 02, 2014, 12:26:26 PM »
Насчет getscreen'ов-Весь бот работал без них всегда и все хорошо, только менял любую цифру в первом if_pixel_in'е в коде.
Но сейчас другая байда, не запускается бот когда открыто окно редактора, как только его закрою то все работает.Добавил int но ничего не изменилось, как проходит через все до нужного в свитче, так и осталось.Извините, может и вопросы тупы, но как только начал добавлять что-то новое типа свитча, так все перестало работать.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: неправильно работает switch
« Reply #3 on: March 02, 2014, 12:50:01 PM »
У тебя там кот в мешке в виде инклуда. обычно все что в инклуде заключают в подпрограмму а сам инклуд помещают в начале. В нужном месте вызывают эту подпрограмму. Если не работает то есть ошибка.

Не важно что все работает с одним гетскрином, вероятно скрипт проходит кучу лишних циклов пока не обновится снимок.

Версия у тебя 4.9.005 ?

zromaz

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: неправильно работает switch
« Reply #4 on: March 02, 2014, 01:01:06 PM »
Да, последняя, всегда беру с оф сайта. Проставил getscreen везде сейчас. Ошибка со свитчом остается. А вот инклуд я думал эта функция берет код из файла и вставляет его в этот файл, просто сокращая место. Вообще как ни странно в таком виде все работает, бой по пикселю нашелся и код из инклуда работает.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: неправильно работает switch
« Reply #5 on: March 02, 2014, 02:46:48 PM »
ну и где этот инклуд то?

zromaz

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: неправильно работает switch
« Reply #6 on: March 02, 2014, 04:16:34 PM »
вот)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: неправильно работает switch
« Reply #7 on: March 02, 2014, 04:48:08 PM »
Наверное могу поставить тебе диагноз: острое заболевание GOTO. Ты там прыгаешь во всех немыслимых направлениях. Инклуд находится в цикле FOR, в этом инклуде есть прыжки за цикл, а это запрещено. Как оно у тебя вообще может работать с единственным гетскрином?? В записи в лог нужно ставить кавычки. LOGWRITE("НАЧАЛСЯ_БОЙ"). Сам по себе скрипт написан почти синтаксически верно (прыжок за цикл), но дикое количество GOTO не позволяет увидеть хоть какую то логику.






zromaz

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: неправильно работает switch
« Reply #8 on: March 02, 2014, 04:54:30 PM »
Понимаю, знаю свой косяк,но без переходов я не вижу возможности реализации.