Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - HasTigeR

Pages: [1]
1
Общие вопросы / Re: работа IF_PICTURE_IN, #include
« on: July 16, 2017, 09:56:35 PM »
В обоих случаях речь идет о END_CYC.
Нашёл) спасибо)

2
Общие вопросы / Re: работа IF_PICTURE_IN, #include
« on: July 16, 2017, 07:46:31 PM »
В этом цикле нет ошибок. Просто он никогда не выполнится потому что $t изначально не равна 20
Это логическая ошибка, я сразу указал.
Что по твоему скрипту то там сходу ошибки в окончаниях. Ну неужели так сложно, нажимаешь волшебную палочку в редакторе и сразу видны лишние окончания.
Строки 224 и 984
Не удивительно что у тебя инклуды повисли, они не терпят таких ошибок.
Хмм 224 убрал лишнее, спасибо, а как END_THREAD в 984 лишним может быть?

3
Общие вопросы / Re: работа IF_PICTURE_IN, #include
« on: July 16, 2017, 01:33:10 PM »
Рановато вам ещё с++ учить, если в трёх соснах Clickermann так плутаете.
Как то с++ попроще кликермана для меня) там как-то есть где развернуться) просто я не могу пока им полноценно пользоваться, поэтому параллельно разбираю КМ. Учитывая что я кроме с++ (который мне очень нравится, хоть я его и не выучил до конца) учил только HTML, переход на новый синтаксис на мне естественно сказался, + тут язык сценариев процедурный, чем отличается от С++ с его гибкостью (хотя и тут изворачивайся не хочу ;D). И не знаю хороший ли это результат после недели работы с Кликером (с перерывами естественно ::)) но вот такой сыроватый бот для игры у меня получился. Функционал у него пока не ахти. Зато работать будет пока комп не повиснет. И на любом разрешении (моя гордость :) ). Засуну в спойлер, пишет превышает максимально допустимую длину. Файл прикреплю. Конечно его ещё во многом надо дорабатывать, но тут уже много сократил. Если укажете мне какие то логические ошибки или методы которые лучше бы смотрелись и работали с подробным разбором, буду благодарен) а так просто для ознакомления и возможно оценки ::). Критика принимается) Насчёт #include вспомнил, в самом файле тогда была логическая ошибка, долго потом думал почему не работает пока не дошло, учитывая что шанс проверить что же скрипт делает в том куске кода попадался не часто) сонный тогда писал) ошибка была типа
Code: (clickermann) [Select]
FOR($t=0, $t = 20)
END_CYC
Вот и такие реально тупые смешные казусы бывают, сам с себя в шоке)
Не знаю может ли из-за такой ошибки скрипт вообще не запуститься, что и происходило.

4
Общие вопросы / Re: работа IF_PICTURE_IN, #include
« on: July 16, 2017, 06:36:41 AM »
Quote from: Oraven
Это тебе на битву экстрасенсов надо.... Скрипты где?

Скрипт весьма объёмный) более 1000 строк) все инклуды удалил, просто там где раньше стояли инклуды, подставил то, что в них содержалось, иначе скрипт просто не запускался, даже в первую строку перед всем скриптом ставил
Code: (clickermann) [Select]
PRINT("начинаем")
//дальше сам скрипт
в логе при запуске пустота.
При попытке закрыть окно редактора не удалось применить изменения и окно не закрывалось.
Удалил строку с #include, и на её место просто скопировал то, что в нём находилось - всё заработало, тот код к сожалению не сохранился, но могу его воспроизвести.
Quote from: Qwerry
По собственному опыту, проверьте внимательно (построчно) вставляемые файлы (оба инклюда). Убедитесь, что нигде в них в общем коде не срабатывает Halt - большая вероятность, что скрипт запускается, видит его и закрывается.
Думаю, хорошая идея в любых скриптах перед каждым Halt добавлять строчку  "Print("время: ", $_ms-$start)". А в начале  -  "$start=$_ms". Тогда вы будете точно видеть, запускался ли скрипт (да и знать время работы не помешает). 

Ну и заодно, просматривая, проследите за всеми End_sub (End_if,End_cyc) - случайная потеря (при копировании) End_sub приводит ну к очень неожиданным глюкам ;D
На тот момент Halt'ом не пользовался, да и сейчас без надобности почти (вставил его только раз в скрипт). End'ы меня тоже помучить успели ;D, учу с++, там конец операторов другой) часто ловлю себя на точке с запятой где нибудь вставленной ;D. А вот с переменными вроде $_time не очень дружу, так как не понимаю их. Проще поток левый сделать который WAITMS считать будет (мне проще, так как понятнее). Вообще то что не понимаю как работает стараюсь не использовать, чтобы избежать ошибок которые потом не исправишь.

Кстати говоря #include файлы, хотел сделать как альтернативу void() функциям в с++. То есть чтобы не вставлять тонны текста который повторяется вставлять просто #include. Как я понял, это лучше делает SUB) жаль что он значения не возвращает, но да ладно потихоньку вникаю.

5
Общие вопросы / Re: работа IF_PICTURE_IN, #include
« on: July 14, 2017, 11:31:58 PM »
Да, это функция условие и работает она точно также как обычное условие.
Да, именно так #include и работает, вставляет за место себя код из файла. Могут быть конечно и #include в #include.
Странно что инклуд глючит, скрипт просто не запускается при вставке инклуда, если то что в файле поставить на место инклуда, всё работает как часики. В чём может быть проблема?

6
Общие вопросы / работа IF_PICTURE_IN, #include
« on: July 14, 2017, 03:26:36 AM »
Всем привет.
Первый вопрос по IF_PICTURE_IN (IF_PIXEL_IN)
Правильно ли я понимаю что они возвращают 3 значения ($_return1,$_return2 и булевское true/false)
то есть его можно использовать как обычный IF?
И такой код
Code: (clickermann) [Select]
IF_PICTURE_IN($x1,$y1,$x2,$y2,"shot1.bmp",-1,100)
$a = 1
ELSE
$a=0
END_IF
будет искать в указанном диапазоне указанную картинку и если найдёт присвоит переменной а единицу, иначе присвоит 0?
Второй вопрос, работает ли #include при вставке другого скрипта так же, как если бы на месте него был просто код указанный в том скрипте? или там есть ещё какие то закавыки? и еще нормально ли программа реагирует на вложенные #include? то есть если в основном скрипте будет один #include в том вложенном скрипте ещё один и т.д. - всё нормально будет?

7
сделал шаблон как посоветовали, скриншот не появляется, в чём может быть проблема?
Всё заработало, причин не знаю. Спасибо)

8
Как вариант проверки общей работоспособности цветокоррекции у него на компе, пусть попробует запустить из шаблонов:
 
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT 
Если ошибки не будет (и в папке скрипта появится рисунок с ЦК),  пусть ищет, где подправлял код под размеры/цвета своего окна.
 COLORMODE обычно не беспокоит даже отсутствие GETSCREEN (он и черный экран готов корректировать), так что внимание к запятым и скобкам (к лишним/недостающим/случайно уползшим на другую строчку).
сделал шаблон как посоветовали, скриншот не появляется, в чём может быть проблема?

9
Работать будет. Но лучше избавляйся от goto(). Ну ооочень у тебя их много.  :)
В error.cms они вообще не нужны. Там в любом случае все придет в нужное место.
ну уже появилась идея свитчем делать error.cms, потом подумаю :D главное принцип работы понял :)
не хватает операторов типа break; continue; из с++ мне)

10
Code: (clickermann) [Select]
FOR($a = 0, $a < 15)
   IF(условие)
      $a = 16  //  если условие верно прерываем цикл
   ELSE
      WAIT(1)
   END_IF
   //  Цикл наращивает переменную в этом месте. А это значит что при выходе из цикла переменная будет равна:  В случае если условие верно - 17, если не верно - 15.
END_CYC

IF ($a = 14)  //  Значит это условие не сработает.
   #include "error.cms"  //  если эта строка находится внутри цикла, и в файле error.cms есть переход на метку, а сама метка находится за пределами цикла, это считается "прыжком" из него.
   goto(end)
END_IF
да спасибо, немного ошибся. Не подумал что он всё равно нарастит ещё единицу после прерывания цикла.
Code: (clickermann) [Select]
FOR($c = 0, $c < 300)
FOR($a = 0, $a < 15)
IF(условие)
$a = 16
ELSE
WAIT(1)
END_IF
END_CYC
IF ($a = 15)
#include "error.cms"
goto(end)
END_IF
FOR($a = 0, $a < 15)
IF(условие)
$a = 16
ELSE
WAIT(1)
END_IF
END_CYC
IF ($a = 15)
#include "error.cms"
goto(end)
END_IF
end:
END_CYC
error.cms
Code: (clickermann) [Select]
IF(//проверка)
//устранение ошибки
goto(endEr)
ELSE
IF(//проверка)
//устранение ошибки
goto(endEr)
ELSE
IF
...
goto(endEr)
ELSE
END_IF
END_IF
END_IF
endEr:
Так будет работать?

11
Собственно это самое начало скрипта перед этим кодом ничего нет
Code: (clickermann) [Select]
GETSCREEN(100,0,500,260)
COLORMODE(6,100,0,500,260)
IF_PICTURE_IN (100,0, 500,260, "boy0001.bmp",-1, 100)
   DEFINE($boy_x,$_return1)
   DEFINE($boy_y,$_return2)
END_IF
при запуске на моём компьютере, всё отлично, скрипт работает. Дал другу, ему выдаёт при запуске "Ошибка при интерпретации строки: COLORMODE(6,100,0,500,260)
Прервать выполнение сценария?"
у меня Windows 8.1 x64
у него Windows 7 x64
Вообще нет мыслей в чём может быть проблема, привязок к окнам никаких нет, просто на второй строке кода сбой и всё

12
Спасибо, понял, то есть первый проход будет нормальный, а потом глюки. Тогда такой код будет рабочим?
Code: (clickermann) [Select]
FOR($c = 0, $c < 300)
FOR($a = 0, $a < 15)
IF(условие)
$a = 16
ELSE
WAIT(1)
END_IF
END_CYC
IF ($a = 14)
#include "error cms"
goto(end)
END_IF
FOR($a = 0, $a < 15)
IF(условие)
$a = 16
ELSE
WAIT(1)
END_IF
END_CYC
IF ($a = 14)
#include "error cms"
goto(end)
END_IF
end:
END_CYC
а в файле error.cms
Code: (clickermann) [Select]
IF(//проверка)
//устранение ошибки
goto(endEr)
ELSE
IF(//проверка)
//устранение ошибки
goto(endEr)
ELSE
IF
...
goto(endEr)
ELSE
END_IF
END_IF
END_IF
Вроде goto не в циклах получается. А то меня вложенные циклы выше немного смутили)

13
Немного поправил. Выпрыгивать из циклов по goto() ЗАПРЕЩЕНО!
Почему запрещено? проблема в том что мне надо что то вроде проверок на ошибки, то есть 
Code: (clickermann) [Select]
DEFINE($a)
FOR($a, $a < 20)
GETSCREEN($nkan_x,$nkan_y,$nkan_x+1,$nkan_y+1)
DEFINE($nkan)
$nkan = PXL($nkan_x,$nkan_y)
PRINT("nkan", $nkan)
IF($nkan = 11862012)            //если на главном окне
goto(zagr)
ELSE
WAIT(1)
END_IF
END_CYC
goto(end)
....
end:
IF (проверка)
//исправить и начать цикл заново
ELSE IF(следующая проверка)
//исправить и начать цикл заново
ELSE
....
...
END_IF
END_IF
и так по отношению почти к каждому циклу. Что то вроде тотального контроля. И я вообще не представляю как это сделать без goto. Точнее представляю, но код будет в разы объёмнее.
И еще, разве объявлять переменные не требуется? у вас в коде DEFINE отсутствует, и такое не в первые вижу. Не пойму этой механики

14
Добрый день, вот код

Code: (clickermann) [Select]
DEFINE($a)
FOR($a, $a < 20)
GETSCREEN($nkan_x,$nkan_y,$nkan_x+1,$nkan_y+1)
DEFINE($nkan)
$nkan = PXL($nkan_x,$nkan_y)
PRINT("nkan", $nkan)
IF($nkan = 11862012)            //если на главном окне
goto(zagr)
ELSE
WAIT(1)
END_IF
END_CYC
goto(end)
zagr:
UNDEFINE($nkan)
UNDEFINE($a)
DEFINE($a)
FOR($a,$a < 60) //проверка не идёт ли загрузка
DEFINE($zagr)
GETSCREEN($zagr_x,$zagr_y,$zagr_x+1,$zagr_y+1)
$zagr = PXL($zagr_x,$zagr_y)
PRINT("zagr",$zagr)
IF ($zagr = 16579068) // подставить 16579068 если метаморфоз или 1600355 если стандартное древо
goto(arena)
ELSE
WAIT(1)
END_IF
END_CYC
goto(end)
arena:
UNDEFINE($a)
UNDEFINE($zagr)
LCLICK($arena_x,$arena_y)  //идем на арену

Как правильно прописать два условия в строку
Code: (clickermann) [Select]
IF ($zagr = 16579068) // подставить 16579068 если метаморфоз или 1600355 если стандартное древо
потому что такие коды почему то
Code: (clickermann) [Select]
IF ($zagr = 16579068 ^  $zagr = 1600355)
IF ($zagr = 16579068 |  $zagr = 1600355)
IF ($zagr = (16579068 ^1600355))
не работают
заранее спасибо

Pages: [1]