Author Topic: Сохранить лог.Массивы и циклы. Нужна помощь.  (Read 2039 times)

0 Members and 2 Guests are viewing this topic.

Orotund

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Сразу к делу:
1) Можно ли записать текущий лог в файл ?(уж оч. надо)
 Скрипт выключает компьютер, а лог оч. важен для меня: в нем много полезной инфы.

2)Нужна помощь:
 Один тип сказал что можно записать путь к файлу в ячейки массива, а затем через цикл прогонять их.
 Вот к примеру часть моего скрипта:

Code: (clickermann) [Select]
Drop_part2:
MOVE($ch_x+730,100)
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\åòê.bmp")
LCLICK($_return1+5, $_return2+10)
LCLICK($_return1+5, $_return2+10)
WAITMS(100)
        END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\ïûëüöà.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\ðîñòîê.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\ïóõ.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\öâåòîê.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\çåëåíàÿ.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
Можно ли эту ерунду представить в виде цикла с массивом? Значит если сценарий не нашел картинку "ресурсы\1.bmp" 2 раза , то он должен искать следующую картинку (например "ресурсы\2.bmp") пока они не закончатся.
Помогите мне в этом деле, это существенно уменьшит количество кода (который уже перевалил за 500 строк), ускорит его работу (сейчас все картинки прогоняются с первой по последнюю) и я научусь пользоваться массивами и циклами ;D
« Last Edit: April 04, 2015, 03:00:22 PM by Orotund »

Orotund

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Саб с параматром это хорошо, но этот скрипт не то что нужно. Наверно я плохо описал суть:
  Значит выполняется следующая задача: из инвентаря выкидываются вещи, которые могут повторятся Происходит это последующему алгоритму:
[Начало]
"Дубина" есть в инвентаре ? Да !---> Выкинуть! и вернутся в [начало]
"Дубина" есть в инвентаре ? Нет !---> Искать следующее!
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и вернутся в [начало]
"Дубина" есть в инвентаре ? Нет !---> Искать следующее!
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и вернутся в [начало]
...

  В итоге скрипт медленный, потому что возвращается к метке для того чтобы попробовать найти картинку еще раз, потому что "дубинок" может оказаться $много, как и "кинжалов", как и всего остального. Планируется 50+ наименований вещей которые  могут оказаться в инвентаре и рационально было бы искать картинку всего лишь один раз если ее нет на экране.
Ваш предложенный скрипт не подойдет, потому что он ищет картинки по одному разу.А алгоритм нужен следующий:
[Начало]
"Дубина" есть в инвентаре ? Да !---> Выкинуть! и проверить еще раз.
"Дубина" есть в инвентаре ? Нет !---> Искать следующее!
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и проверить еще раз.
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и проверить еще раз.
"Кинжал" есть в инвентаре ? Нет !---> Искать следующее!
"Копье" есть в инвентаре ? Нет !---> Искать следующее!
"Лук" есть в инвентаре ? Нет !---> Искать следующее!
...

Фуф, надеюсь я на этот раз правильно объяснил задачу.
 
« Last Edit: April 04, 2015, 06:14:40 PM by Orotund »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
О новые данные... Тогда так

Скрипт будет по очереди анализировать 10 картинок и только если не найдет будет переходить к следующей.
Файлы должны быть в таком формате
разгрузка\1.bmp
разгрузка\2.bmp
....
разгрузка\10.bmp

Code: (clickermann) [Select]
MOVE($ch_x+730,100)
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "разгрузка\етк.bmp")
   LCLICK($_return1+5, $_return2+10)
   LCLICK($_return1+5, $_return2+10)
   WAITMS(100)
END_IF

$num = 0
FOR($b=0,$b<10) // анализ 10 картинок
   INC($num,1)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PICTURE_IN ($ch_x,25,$_xmax,625, STRCONCAT("разгрузка\", $num, ".bmp"))
         drop()
         enter()
      ELSE
         $check = 1 // если не нашли прерываем
      END_IF
   END_CYC   
END_CYC

Orotund

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Спасибо, именно то что нужно  ;D