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 - Huligan812

Pages: [1]
1
Справку похоже таки читать не модно
Quote
собственные процедуры; при необходимости использования внутри потока процедуру, она описывается и вызывается внутри тела потока; внешний вызов и описание процедур не в рамках одного тела потока не допускается
Модно, но что-то я невнимательно прочитал это...


А основная программа чего позабыта?
Из справки:
при запуске основного скрипта все дочерние потоки находятся в приостоновленном состоянии; при паузе и останове работу прерывают все дочерние и основной поток
Основной поток здесь:
Code: (clickermann) [Select]
$q_cikl = INT (inputbox("На скольких жертв нападаем?", "50"))
...
HALT 
Ну вот inputbox отрабатывает и стоп по HALT
Блин... перечитал еще раз справку. Спасибо. Исправил.

2
вот из-за таких преподов выросло поколение GOTO-фобов.
Довольно полезная команда, только пользовать с умом надо
Я не GOTO-фоб, я его использую. Но стараюсь использовать его там, где больше уже ничего "не помогает"


Из цикла твой скрипт выйдет в любом случае, зато в конструкции SWITCH (переключатель) ты можешь делать  с полученным результатом что тебе угодно.
Все супер, только этом варианте скрипт будет все 6 картинок, даже если найдет первую, а в варианте Oraven'a как только нашел первую - вышел из цикла

3
Всем привет. Это опять я.

Есть рабочий скрипт, и все бы ничего, если бы не мои шаловливые рученки, которые вечно что-то хотят допились.

Начнемс...
Code: (clickermann) [Select]
$wait_now = 0

SUB(wait_x_min, $x_min)
$wait_now = 1
$restart = 0
Print ("ждать еще: ", $x_min, ":00")
FOR($time_min = 0, $time_min<$x_min)
FOR($time_sec = 1, $time_sec<7)
FOR($time_sec2=0,$time_sec2<10)
IF(iskeydown(#INSERT)=1) // если нажата кнопка insert - выйти из цикла
$time_sec2 = 10
$time_sec = 6
$time_min = $x_min-1
ELSE
IF(iskeydown(#PAUSE)=1) // если нажата кнопка PAUSE - выйти из цикла и сбросить счетчик игры
$time_sec2 = 10
$time_sec = 6
$time_min = $x_min-1
$restart = 1
ELSE
wait(1)
END_IF
END_IF
END_CYC
Print ("ждать еще: ", $x_min-1-$time_min, ":", 60-$time_sec*10)
END_CYC
END_CYC
Print ("все")
$wait_now = 0

IF ($restart = 1)
GOTO (RESTART)
END_IF
END_SUB
В это САБе живет функция, которая получает в качестве переменной число и ждет это число минут

Code: (clickermann) [Select]
$q_cikl = INT (inputbox("На скольких жертв нападаем?", "50"))

THREAD (bot, 1)
RESTART:

FOR($farm = 0, $farm < $q_cikl) // Нападения по фарм-листу

тут большой кусок кода, который к делу не относится

wait_x_min (5)
wait (RND (1,3))

END_CYC
END_THREAD

THREAD (close_brouser, 1)
wait (10)
$close_brouser = 0
IF (($_time_m > 35) & ($_time_m < 40))
IF ($wait_now = 1)
Print ("Сейчас будет перезапущен браузер. Кнопка F1 отменит это действие")
FOR($time_sec3=0,$time_sec3<15)
IF(iskeydown(#F1)=1) // если нажата кнопка F1 - выйти из цикла
$time_sec3 = 15
$close_brouser = 1
ELSE
wait(1)
END_IF
END_CYC
IF ($close_brouser = 0)
lclick(1890, 10)
WAIT(5)
EXECUTE (c:\Program Files (x86)\Mozilla Firefox\firefox.exe)
END_IF
END_IF
END_IF
END_THREAD

HALT

Мысль такая:
bot фармит по циклу персов из закладок мозилы. Нападает, проверяет что все ОК, если все ОК, то ждет 5 минут + RND (1,3)
В эти 5 минут SUB wait_x_min (5) меняет значение переменной $wait_now с 0 на 1

close_brouser палит текущее время и если оно в пределах 36-39 минут, то проверяет $wait_now и, если $wait_now = 1 (т.е. поток bot ничего не делает) надо перезагрузить браузер.

Но на деле ничего не происходит.
Скрипт запускается, спрашивает $q_cikl, потом ждет RND (1,3) и останавливается.


я нид хелп

PS: пишу скрипты в notepad++, поэтому табуляция немного "конская"

4
v.1: Подставку с вентилятором под ноут, крышку закрыть
v.2: найти датчик закрытия крышки, нажать его, тем самым "эмулировать" закрытие крышки
v.3: забить.

5
ИМХО вынос переменных в отдельный файл надо использовать когда у тебя больше 1 скрипта.

Например: у меня есть основной скрипт, который фармит по времени.
Так же есть еще несколько скриптов, которые я запускаю руками.
У меня есть 2 файлика var.cms и functions.cms в которых живут переменные и вспомогательные функции которые я использую во всех своих скриптах.
Сделано это для того, чтобы не копировать кучу кода в разные скрипты и для того, чтобы централизованно править/модернизировать некоторое функции.

6
а крышку закрыть не?

Панель управления - Электропитание - Настройка плана электропитания - Изменить доп. параметры
В пункте "Кнопки питания и крышка" выбрать, чтобы по закрытию крышки он ничего не делал.

7
может такой способ подойдет?
Не люблю я костыли из GOTO. Нас препод по Basic'у далеком 92м по рукам за это бил. Стараюсь использовать очень редко

8
т.к. постоянно допиливаю в скрипт новые фишки, и иногда эти допиливания вызывают ошибки в работе скрипта я решил допилить в скрипт систему "отчетов" которые пишут в лог всякую фигню важную мне инфу

Поэтому добавил в разные места в скрипте следующие куски
Code: (clickermann) [Select]
IF ($test = 1)
Print ("** начинаем искать картинку №1")
END_IF

Но из-за этого читабельность скрипта стала еще более ужасной.

Решил упростить и вынести все это в отдельный SUB
Code: (clickermann) [Select]
SUB(testmode, $text)
IF ($test = 1)
Print ("** ", $text)
END_IF
END_SUB

testmode (Ищем кнопку атаковать)
На выходе в лог валится: ** Ищемкнопкуатаковать
Валится именно без пробелов. И, если не дай бог, в тексте будет стоять запятая то скрипт падает с ошибкой.

что я делаю не так?

9
Спасибо за помощь

10
День добрый.
В скрипте есть такой кусок:
Code: [Select]
$time_2 = 0
WHILE($time_2 < 10)
GETSCREEN
IF_PICTURE_IN ($_xmax/2, 0, $_xmax, $_ymax, $Boi)
Print ("__$Boi")
$time_2 = 10
END_IF
IF_PICTURE_IN ($_xmax/2, 0, $_xmax, $_ymax, $Napali)
Print ("__$Napali")
$err_code = 1
$time_2 = 10
END_IF
IF_PICTURE_IN ($_xmax/2, 0, $_xmax, $_ymax, $Chasto)
Print ("__$Chasto")
$err_code = 2
$time_2 = 10
END_IF
IF_PICTURE_IN ($_xmax/2, 0, $_xmax, $_ymax, $Zanjat)
Print ("__$Zanjat")
$err_code = 3
$time_2 = 10
END_IF
IF_PICTURE_IN ($_xmax/2, 0, $_xmax, $_ymax, $travma)
Print ("__$travma")
$err_code = 4
$time_2 = 10
END_IF
IF_PICTURE_IN ($_xmax/2, 0, $_xmax, $_ymax, $Dostatochno)
Print ("__$Dostatochno")
$err_code = 5
$time_2 = 10
END_IF

$time_2 = $time_2 + 1
END_CYC
Print ("вышли из цикла")
Суть была в том, чтобы в течении 5 секунд скрипт искал кнопки/сообщения игры и по итогам - или рестартил бой или делал всякие дествия.
Но из-за того, что в цикле аж целых шесть IF_PICTURE_IN каждый проход цикла длится 3-4 секунды.

Есть ли какая-то команда на принудительный выход из цикла?

11
Quote
Как ты сравнивал в ФШ непонятно
Ха-ха-ха. Сейчас проверил еще раз - да, разные. Видимо я вчера один и тот же файл сравнивал ))) Надо больше спать!

12
Quote
неужели такая разница большая между 1600х1200 и 1920х1080 что используются картинки разного размера для таких  действий?
Беда не в расширение экрана, а в цвете. Почему-то кнопка Atak.bmp из "Дома" не работает на "Работа". В свое время заморачивался и пытался сравнить, чтобы в дальнейшем использовать COLORMODE, но в итоге забил и сделал как есть.

Сейчас у меня уже нет дублей Farm.cms.

Благодаря подсказке Oraven у меня остался только одна копия Farm.cms и две папки, где лежат свои coord_list и файлы с кнопками. Меня это в принципе не напрягает, но возможно в дальнейшем - допилю COLORMODE


Спасибо за помощь

13
Всем привет.

Играю в одну он-лайн игруху из дома и с работы.
Но т.к. на работе и дома стоят мониторы с разным разрешением экрана, то и координаты кнопок, областей поиска и всего прочего - тоже разные.

Путем длительного геморроя я дошел сейчас до следующего:
созданы две папки: Дом и Работа. В каждой папке лежит файл Farm.cms (собственно сам скрипт), файл _coord_list.cms (тут указаны все координаты) и кучка бмпшек. Файлы Farm.cms одинаковы в обеих папках, остальные файлы - индивидуальны для каждой папки. Папки синхронизируются через облако на обеих компах. Т.О. если я вношу правку в файл Farm.cms например на работе, то я его тупо копирую в папку "Дом" и дома уже играю с новыми плюшками.

Но есть желание пойти еще дальше: хочу сделать чтобы скрипт как-то сам различал где он запущен.

Что я надумал: т.к. разрешение экранов разное, то я могу через связку $_xmax и $_уmax определить на каком мониторе он (скрипт) запущен => будет понятно дома и или на работе.

Code: [Select]
IF ($_ymax = 1199) // монитор 1600*1200
#include "home/_coord_list.cms"
end_if
IF ($_ymax = 1079)    // монитор 1920*1080
#include "work/_coord_list.cms"
end_if

Тут все понятно. Проверено и работает. Но как быть с картинками?


Можно ли в IF_PICTURE_IN (0, 0, $_хmax, $_ymax, "Atak.bmp") заменить "Atak.bmp" на переменную?
Например на $atak, значение которой будет прописано в соответствующем файле _coord_list.cms
Если да, то подскажите как это прописать?

Pages: [1]