Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Doda on January 14, 2016, 01:02:34 PM
-
Глаз замылен, не могу сообразить
[spoiler](https://pp.vk.me/c631517/v631517606/befb/1DQ3PwUE5bM.jpg)[/spoiler]
как написать простейший скрипт определения своей позиции на поле?
мое местонахождение определяется по красной полоске, окаймляющей ник
теперь надо связать это, с той фирмой на которой нахожусь, в переменную выдавать значение текущей фирмы. я начал писать, но это никуда не годится(66 строк на нижний и верхний ряды фирм, без боковых)
GETSCREEN
IF_PICTURE_IN (302,105, 1063,645, "krasnii.bmp", -1, 100)
if ($_return2<222)
if (($_return1>414)& ($_return1<458)) //1
else
if (($_return1>503)& ($_return1<533))
else
if (($_return1>548)& ($_return1<584))
else
if (($_return1>636)& ($_return1<666))
else
if (($_return1>680)& ($_return1<710))
print ("в рекламе")
else
if (($_return1>723)& ($_return1<753))
else
if (($_return1>813)& ($_return1<836))
else
if (($_return1>855)& ($_return1<892))
else
if (($_return1>900)& ($_return1<930))
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
else
if ($_return2>527)
if (($_return1>414)& ($_return1<458)) //1
else
if (($_return1>503)& ($_return1<533))
else
if (($_return1>548)& ($_return1<584))
else
if (($_return1>636)& ($_return1<666))
else
if (($_return1>680)& ($_return1<710))
print ("в рекламе")
else
if (($_return1>723)& ($_return1<753))
else
if (($_return1>813)& ($_return1<836))
else
if (($_return1>855)& ($_return1<892))
else
if (($_return1>900)& ($_return1<930))
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
WAITMS(100)
END_IF
-
Можно сократить условия. Если ты проверяешь слева направо, то проверять переменную на больше ">" нет смысла.
Будем отсекать последовательно.
Если меньше 458, то поле 1.
Дальше проверяем если меньше 533, то поле 2 и т.д.
if ($_return2 < 222) // верхний ряд
if ($_return1 < 458) //1
else
if ($_return1 < 533)
else
if ($_return1 < 584)
else
if ($_return1 < 666)
else
if ($_return1 < 710)
print ("в рекламе")
else
if ($_return1 < 753)
else
if ($_return1 < 836)
else
if ($_return1 < 892)
else
if ($_return1 < 930)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
// и так далее..........
Мне непонятен один вопрос, почему определяем 9 мест в ряду? Ячеек же больше. Или на них не может стоять?
Если может, то нужно обязательно и их определять и соответствующе обрабатывать.
Пока ты с этим определись. Я покажу на том что есть как бы я сделал.
Во первых нужно пронумеровать поля на которых мы стоим, например, от старта по часовой стрелке. Старт это 0.
Можно координаты для сравнивания загнать в массив и сравнивать пробегаясь по массиву. Ну и получая номер поля. Дальше от номера будут зависеть действия.
Вот как, примерно, будет выглядеть для верхней и нижней строк:
STRSEPARATE("458:533:584:666:710:753:836:892:930", ":", $pos_coord_X)
GETSCREEN
IF_PICTURE_IN (302,105, 1063,645, "krasnii.bmp")
$avatar_X = $_return1
$avatar_Y = $_return2
END_IF
$field = -1
IF($avatar_Y < 222) // верхний ряд
FOR($i=0, $i < ARRSIZE($pos_coord_X))
IF($avatar_X < $pos_coord_X[$i])
$field = $i + 1
$i = 100
END_IF
END_CYC
ELSE //нижний ряд
FOR($i=0, $i < ARRSIZE($pos_coord_X))
IF($avatar_X < $pos_coord_X[$i])
// тут нужно пересчитать индекс в номер поля например:
$field = 16 + 9 - $i // 9 вверху+6 справа + инверт низа
$i = 100
END_IF
END_CYC
END_IF
-
А, ещё. Не пиши скрипт на жёстких координатах, чтобы потом не было мучительно больно, когда после обновления браузера/или его смены/или смены темы оформления/или винды весь скрипт писаный долго и мучительно не превратился в ничто.
Определяй в начале скрипта, например по флажкам "старт" левый верхний угол всего поля игры.
А в скрипте используй уже смещения от этой точки.
Если одной точки недостаточно (всё плавает или резиновое), можно сделать несколько.
-
Насчет жестких координат. берем маячки, и вручную прибавляем к маяку +x1,y2 до цели? вручную долго считать все это..есть ли быстрые способы?
Если ты проверяешь слева направо, то проверять переменную на больше ">" нет смысла
не сообразил насчет этого, ведь if вложенные, и смысла в двух условиях нет
Мне непонятен один вопрос, почему определяем 9 мест в ряду? Ячеек же больше. Или на них не может стоять?
может стоять на всех клетках, но мне нужно знать лишь на каких фирмах стоит игрок, чтобы знать -покупать или нет фирму, на которую я попадаю, анализируя важность фирмы для меня. Остальные ячейки не требуют особого внимания(например, ячейка налог - дествие -оплатить)
Во первых нужно пронумеровать поля на которых мы стоим, например, от старта по часовой стрелке. Старт это 0.
нумерация вот такая
analiz(424,219,454,219) // кафе [b] 0[/b]
analiz(512,219,542,219) // бар [b]1[/b]
analiz(557,219,587,219) // ресторан[b] 2
[/b]
analiz(645,219,675,219) // москва 3
analiz(949,359,951,391) //киев 4
analiz(689,532,719,532) //париж 5
analiz(416,359,417,391) //лондон 6
analiz(689,219,719,219) //рекл.агенство 7
analiz(733,219,763,219) //модельное агенство
analiz(822,219,852,219) //турагенство 9
analiz(866,219,896,219) //радиостанция 10
analiz(910,219,940,219) //телецентр 11
analiz(416,227,417,257) //алм.прииск 12
analiz(416,315,417,347) //зол.прииск 13
analiz(416,404,417,434) //карибы 14
analiz(416,448,417,478) //таити
analiz(416,492,417,522) //фиджи 16
analiz(424,532,454,532) //газ.компания 17
analiz(468,532,498,532) //н.компания 18
analiz(512,532,542,532) //авиакомпания 19
analiz(601,532,631,532) //автом.компания
analiz(645,532,675,532) //судостроит.компания 21
analiz(777,532,807,532) //футб.клуб 22
analiz(822,532,852,532) //бакс.команда
analiz(910,532,940,532) //хокк.команда 24
analiz(949,227,951,257) //табачная фабрика 25
analiz(949,271,951,301) //пиповарня
analiz(949,315,952,347) //спиртзавод 27
analiz(950,404,952,434) //ночной клуб 28
analiz(950,492,952,522) //казино 29
-
Вот код на определение важности фирмы для покупки. он работает примитивно(неплохо бы добавить анализ суммы денег на счету, но это уже нереально для меня), но хоть работает
if ($start=0) //маячок игры
GETSCREEN
IF_PICTURE_IN (447,240, 516,257, "chat.bmp", -1, 100)
$start=1
WAITMS(100)
END_IF
END_IF
if ($start=1)
if ($mynomer=0)//если игра включена, а цвет моей фишки неопределен, то определеяем
GETSCREEN
IF_PIXEL_IN(519,233, 927,257, 4277214)
$mynomer="cun" //смотрим окошко чата, какого цвета нету, тот значит мой
else
IF_PIXEL_IN(519,233, 927,257, 16490549)
$mynomer="kras"
WAITMS(100)
END_IF
END_IF
END_IF
END_IF
//$krasn[0]=12303604
//$krasn[1]=15132667
//$sin[0]=16571048
//$sin[1]=16708320
//$zelen[0]=7338922
//$zelen[1]=13369056
//$zhelt[0]=8257535
//$zhelt[1]=13697023
//$roz[0]=14796284
//$roz[1]=16050942
//$bel[0]=14013909
$cvet[0] = 12303604 //красн
$cvet[1] = 16571048 // синий
$cvet[2] = 8257535 //желтый
$cvet[3] = 7338922 // зеленый
$cvet[4] = 14796284 // розовый
$cvet[5] = 13697023 //з.желт
$cvet[6] = 16708320// заложенный.синий
$cvet[7] = 15132667 // з.красн
$cvet[8] = 16050942// з.роз
$cvet[9] = 13369056 // з.зел
$cvet[10] =14013909 // белый
SUB(analiz,$pxl_x1,$pxl_y1,$pxl_x2,$pxl_y2)
GETSCREEN
FOR($e=0,$e<11)
IF_PIXEL_IN($pxl_x1,$pxl_y1, $pxl_x2,$pxl_y2, $cvet[$e])// прогоняем все цвета и записываем совпадения
ARRPUSH($firma, $cvet[$e]) ////заносим в массив фирма совпадения
$e=11 // на заложенных может быть белый цвет, чтобы не занести в массив лишнй белый, белый цвет отодвигаем к онец поиска, а при нахождении цвета break цикл
END_IF
END_CYC
END_SUB
analiz(424,219,454,219) // кафе 0 //смотриим что какого цвета у нас
analiz(512,219,542,219) // бар
analiz(557,219,587,219) // ресторан 2
//это блоки фирм, собрав блок полностью можно прокачивать каждый дом, для увеличения своей прибыли
analiz(645,219,675,219) // москва 3
analiz(949,359,951,391) //киев
analiz(689,532,719,532) //париж
analiz(416,359,417,391) //лондон 6
analiz(689,219,719,219) //рекл.агенство 7
analiz(733,219,763,219) //модельное агенство
analiz(822,219,852,219) //турагенство 9
analiz(866,219,896,219) //радиостанция 10
analiz(910,219,940,219) //телецентр 11
analiz(416,227,417,257) //алм.прииск 12
analiz(416,315,417,347) //зол.прииск 13
analiz(416,404,417,434) //карибы 14
analiz(416,448,417,478) //таити
analiz(416,492,417,522) //фиджи 16
analiz(424,532,454,532) //газ.компания 17
analiz(468,532,498,532) //н.компания 18
analiz(512,532,542,532) //авиакомпания 19
analiz(601,532,631,532) //автом.компания
analiz(645,532,675,532) //судостроит.компания 21
analiz(777,532,807,532) //футб.клуб 22
analiz(822,532,852,532) //бакс.команда
analiz(910,532,940,532) //хокк.команда 24
analiz(949,227,951,257) //табачная фабрика 25
analiz(949,271,951,301) //пиповарня
analiz(949,315,952,347) //спиртзавод 27
analiz(950,404,952,434) //ночной клуб 28
analiz(950,492,952,522) //казино 29
if ($mynomer="cun") //если цвет нашей фишки синий, обозначаем какие цвета мои, какие вражеские. добавляем в мой массив синий, во вражеский - красные цвета
$pustoi=14013909
$moi[0]=16571048 //купленная моя
$moi[1]=16708320 //заложенная моя
$vrag[0]=12303604
$vrag[1]=15132667
end_if
if ($mynomer="kras")
$pustoi=14013909
$moi[0]=12303604
$moi[1]=15132667
$vrag[0]=16571048
$vrag[1]=16708320
end_if
sub(pole, $firms) // подпрограмма, поле, перменная фирмс
SWITCH($firms) // в вызове указать от 1 до 10
CASE(1) //если входной равен 1
$u1=0 //огда анализируем блок:кафе, ресторан, кофейня
$u2=3
CASE(2) //если входной равен 2
$u1=7
$u2=10
CASE(3)
$u1=10
$u2=12
CASE(4)
$u1=12
$u2=14
CASE(5)
$u1=14
$u2=17
CASE(6)
$u1=17
$u2=19
CASE(7)
$u1=19
$u2=22
CASE(8)
$u1=22
$u2=25
CASE(9)
$u1=25
$u2=28
CASE(10)
$u1=28
$u2=30
DEFAULT
END_SWITCH
for ($o=$u1, $o<$u2)//крутим ндексы массива фирма, по блокам монополий
$q=$firma[$o]
if ($pustoi=$q) // если находим пустую фирму,
$p=1 //переменную увеличиваем
arrpush($pp, $o) //добавляем в массив индекс массива фирмА, для использорвания в дальнейшем
end_if
if (($moi[0]=$q)|($moi[1]=$q)) ///то же самое
$m=1
arrpush($mm, $o)
end_if
if (($vrag[0]=$q)|($vrag[1]=$q))
$v=1
arrpush($vv, $o)
end_if
end_cyc
if ($p=1) //анализ важности фирм
if ($m=1)
if ($v=1)
// print("не надо брать.потратишь впустую деньги")
//это блок ненужных!!!
//блок закладывания
for($k=0, $k<arrsize($pp))
arrpush($low, ($pp[$k]))
end_cyc
for($k=0, $k<arrsize($mm))
arrpush($sale, ($mm[$k]))
end_cyc
else
// print("бери, для полной коллекции")
//блок нужных!!!
for($k=0, $k<arrsize($pp))
arrpush($high, ($pp[$k]))
end_cyc
//end_cyc
end_if
else
if ($v=1)
// print("моих нет, бери, чтобы враг не развивал монополию")
//блок нужных!!
for($k=0, $k<arrsize($pp))
arrpush($high, ($pp[$k]))
end_cyc
UNDEFINE($pp)
else
// print("все пусто")
for($k=0, $k<arrsize($pp))
arrpush($high, ($pp[$k]))
end_cyc
//блок нужных
end_if
end_if
else
if ($m=1)
if ($v=1)
// print("поровну с врагом")
for($k=0, $k<arrsize($mm))
arrpush($sale, ($mm[$k]))
end_cyc
//блок закладывания
else
print("все мое")
//блок постройки фирм
for($k=0, $k<arrsize($mm))
arrpush($proect, ($mm[$k]))
end_cyc
end_if
else
// print("все у противника")
end_if
end_if
UNDEFINE($v)
UNDEFINE($m)
UNDEFINE($p)
//создать 4 массива. важные для покупки. ненужные покупки. закладывание фирм, блок постройки(4)
end_sub
sub(clean)
UNDEFINE($vv)
UNDEFINE($mm)
UNDEFINE($pp)
end_sub
//print("общепит")
Pole(1)
clean()
//print("реклама")
Pole(2)
clean()
//print("радио")
Pole(3)
clean()
//print("прииск")
Pole(4)
clean()
//print("острова")
Pole(5)
clean()
//print("нефть")
Pole(6)
clean()
//print("транспорт")
Pole(7)
clean()
//print("спорт")
Pole(8)
clean()
//print("завод")
Pole(9)
clean()
//print("клубы")
Pole(10)
clean()
UNDEFINE($firma)
for($k=0, $k<arrsize($proect)) //
// print($proect[$k],"стройк")
end_cyc
for($k=0, $k<arrsize($low))
// print($low[$k],"неважн")
end_cyc
for($k=0, $k<arrsize($high))
// print($high[$k],"важн")
end_cyc
for($k=0, $k<arrsize($sale))
// print($sale[$k],"заклад")
end_cyc
halt
Исходя из того на какую клетку попадаем, оцениваем важность и далее предпринимаем действия: купить, отказаться. Закладывание ненужных фирм и постройка монополий
-
Насчет жестких координат. берем маячки, и вручную прибавляем к маяку +x1,y2 до цели? вручную долго считать все это..есть ли быстрые способы?
Да вагон. Мне проще делать скрин и в просмотрщике XnViev вижу любые координаты и расстояния.
Вот этой прогой тоже очень удобно
InqSoft Window Scanner
http://crapware.aidf.org/forum/index.php?topic=42.msg572#msg572
Можно написать минискриптик на том же кликермэне. Будет искать твою опорную точку и по кликам выводит/сохранять уже сами смещения от неё.
Я пользуюсь всеми тремя.
может стоять на всех клетках, но мне нужно знать лишь на каких фирмах стоит игрок, чтобы знать -покупать или нет фирму, на которую я попадаю, анализируя важность фирмы для меня. Остальные ячейки не требуют особого внимания(например, ячейка налог - дествие -оплатить)
Если может стоять везде то и пронумеровать и определять нужно все. Иначе нужно проверять как ты делал <>.
Просто обрабатывать только нужные остальные игнорить, или там ход пропускать... не знаю что в игре делать нужно.
нумерация вот такая
...
Ну раз у тебя уже пронумеровано и остальным полям номера не даны, тогда или не упрощать условия.
Или перенумеровать. Если там уже куча кода написано о котором ты не упомянул... можно сделать по новому определить позицию и перенумеровать через CASE... Даже так и надо! Только увидел что они у тебя по типам, а не по порядку.
-
перенумеровать через CASE
Отличная мысль! 40 клеток всего, переменная $kletka - если на старте, то =0, и так далее, по кругу(пример ниже может содержать ошибки, так как набросан на коленке))
switch($kletka)
case(0)
//ничего не делаем
case(1)//если на первой фирме кафе
sub(polojhenie, $now)
switch($now)
case(0)
$rew=$firma[0]
end_switch
for($k=0, $k<arrsize($low))
if $rew=$low[$k]//если фирма в списке неважных для покупки
IF_PICTURE_IN (447,240, 516,257, "отказаться.bmp", -1, 100)//то отказыываемся
// кликаем по кнопке отказа
WAITMS(100)
END_IF
end_if
end_cyc
for($k=0, $k<arrsize($low))
if $rew=$high[$k]//если фирма в списке важных для покупки
IF_PICTURE_IN (447,240, 516,257, "покупка.bmp", -1, 100)//то покупаем
// кликаем по кнопке покупка
WAITMS(100)
END_IF
end_if
end_cyc
end_sub
//и так все остальные кейсы.
end_switch
-
Сделал, сейчас довожу до ума.. единственное гонит слегка. 8 раз прогоняет скрипт, пишет правильно - 23, потом зацикливается и выдает 122
решил! было переполнение массива
14:38:39 ----------
14:38:39 23
14:38:39 ----------
14:38:39 23
14:38:39 ----------
14:38:39 23
14:38:40 ----------
14:38:40 23
14:38:40 ----------
14:38:40 23
14:38:40 ----------
14:38:40 23
14:38:40 ----------
14:38:40 23
14:38:41 ----------
14:38:41 23
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
14:38:41 122
if ($massiv=0)
STRSEPARATE("418:461:506:550:594:639:683:727:771:816:859:903:947:1065", ":", $pos_coord_X1)
STRSEPARATE("264:309:354:397:441:486:529", ":", $pos_coord_y1)
STRSEPARATE("948:903:859:816:771:727:683:639:595:550:506:462:418:302", ":", $pos_coord_x2)
STRSEPARATE("486:442:397:353:309:264:221", ":", $pos_coord_y2) \
$massiv=0
End_if
GETSCREEN
IF_PICTURE_IN (302,105, 1063,645, "krasnii.bmp") //ищем красный
$avatar_X = $_return1 //обзываем возврат аватаром_х
$avatar_Y = $_return2
print("----------")
END_IF
$field = -1 // хз
IF($avatar_Y < 222) // верхний ряд
FOR($i=0, $i < ARRSIZE($pos_coord_X1)) // от первого элемента массива по последний
IF($avatar_X < $pos_coord_X1[$i]) //если аватар меньше чем прописанная координата
$field = $i + 1 //то файлд равен позиции на которой стою. пример, я на 7 клетке, 0123456. это 7 элемент массива, файлд= 6
$i = 100 //прерываем
END_IF
END_CYC
else
IF($avatar_Y > 529) // верхний ряд
FOR($i=0, $i < ARRSIZE($pos_coord_X2)) // от первого элемента массива по последний
IF($avatar_X > $pos_coord_X2[$i]) //если аватар , больше чем прописанная координата
$field = $i + 21 //то файлд равен позиции на которой стою. пример, я на 7 клетке, 0123456. это 7 элемент массива, файлд= 6
$i = 100 //прерываем
print($field)
END_IF
END_CYC
END_IF
END_IF
IF($avatar_X > 948) //нижний ряд
FOR($i=0, $i < ARRSIZE($pos_coord_y1))
IF($avatar_Y < $pos_coord_y1[$i])
$field = 14+$i
// тут нужно пересчитать индекс в номер поля например:
// $field = 16 + 9 - $i // 9 вверху+6 справа + инверт низа
$i = 100
END_IF
END_CYC
else
IF($avatar_X < 417) //нижний ряд
FOR($i=0, $i < ARRSIZE($pos_coord_y2))
IF($avatar_Y > $pos_coord_y2[$i])
$field = 35+$i
// тут нужно пересчитать индекс в номер поля например:
// $field = 16 + 9 - $i // 9 вверху+6 справа + инверт низа
$i = 100
END_IF
END_CYC
END_IF
END_IF
-
Можно написать минискриптик на том же кликермэне. Будет искать твою опорную точку и по кликам выводит/сохранять уже сами смещения от неё.
Например: нашли опорную точку, затем, кликаем где-то в с тороне. вот как отследить этот клик? нигде не нашел
-
GETSCREEN
WHILE ($xtime<$_time_t)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "krasn.bmp", -1, 100)
$red=1
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "sin.bmp", -1, 100)
$blue=1
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "zhelt.bmp", -1, 100)
$yellow=1
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "zelen.bmp", -1, 100)
$green=1
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "roz.bmp", -1, 100)
$pink=1
END_IF
$xtime= $_time_t+600
print ($xtime)
print($_time_t)
end_cyc
//if ($start=1)
if ($mynomer=0)//???? ???? ????????, ? ???? ???? ????? ???????????, ?? ???????????
GETSCREEN
IF_PIXEL_IN(519,233, 927,257, 4277214)
$mynomer="cun" //??????? ?????? ????, ?????? ????? ????, ??? ?????? ???
else
IF_PIXEL_IN(519,233, 927,257, 16490549)
$mynomer="kras"
WAITMS(100)
END_IF
END_IF
END_IF
//$krasn[0]=12303604
//$krasn[1]=15132667
//$sin[0]=16571048
//$sin[1]=16708320
// //$zhelt[0]=8257535
//$zhelt[1]=13697023
//$zelen[0]=7338922
//$zelen[1]=13369056
//$roz[0]=14796284
//$roz[1]=16050942
//$bel[0]=14013909
$_ms1= $_ms
$cvet[0] = 12303604 //êðàñ
$cvet[1] = 15132667 // ç êð
$cvet[2] = 16571048 // ñèíèé
$cvet[3] = 16708320// çñèí
$cvet[4] = 8257535 //æ
$cvet[5] = 13697023 //çæ
$cvet[6] = 7338922 // çåë
$cvet[7] = 13369056 // ççåë
$cvet[8] = 14796284 // ðîç
$cvet[9] = 16050942// çðîç
$cvet[10] =14013909 // áåë
SUB(analiz,$pxl_x1,$pxl_y1,$pxl_x2,$pxl_y2)
GETSCREEN
FOR($e=0,$e<11)
if ( $red=1)
if (($e=0)|($e=1))
IF_PIXEL_IN($pxl_x1,$pxl_y1, $pxl_x2,$pxl_y2, $cvet[$e])
ARRPUSH($firma, $cvet[$e])
// print($cvet[$e])
$e=11
END_IF
END_IF
END_IF
if ( $blue=1)
if (($e=2)|($e=3))
IF_PIXEL_IN($pxl_x1,$pxl_y1, $pxl_x2,$pxl_y2, $cvet[$e])
ARRPUSH($firma, $cvet[$e])
// print($cvet[$e])
$e=11
END_IF
END_IF
END_IF
if ($yellow=1)
if (($e=4)|($e=5))
IF_PIXEL_IN($pxl_x1,$pxl_y1, $pxl_x2,$pxl_y2, $cvet[$e])
ARRPUSH($firma, $cvet[$e])
// print($cvet[$e])
$e=11
END_IF
END_IF
END_IF
if ($green=1)
if (($e=6)|($e=7))
IF_PIXEL_IN($pxl_x1,$pxl_y1, $pxl_x2,$pxl_y2, $cvet[$e])
ARRPUSH($firma, $cvet[$e])
//print($cvet[$e])
$e=11
END_IF
END_IF
END_IF
if ($pink=1 )
if (($e=8)|($e=9))
IF_PIXEL_IN($pxl_x1,$pxl_y1, $pxl_x2,$pxl_y2, $cvet[$e])
ARRPUSH($firma, $cvet[$e])
//print($cvet[$e])
// $e=11
END_IF
END_IF
END_IF
if ($e=10)
IF_PIXEL_IN($pxl_x1,$pxl_y1, $pxl_x2,$pxl_y2, $cvet[$e])
ARRPUSH($firma, $cvet[$e])
// print($cvet[$e])
$e=11
END_IF
END_IF
END_CYC
END_SUB
UNDEFINE($firma)
analiz(424,219,454,219) // êàôå 0 //ñìîòðèèì ÷òî êàêîãî öâåòà ó íàñ
analiz(512,219,542,219) // áàð
analiz(557,219,587,219) // ðåñòîðàí 2
//ýòî áëîêè ôèðì, ñîáðàâ áëîê ïîëíîñòüþ ìîæíî ïðîêà÷èâàòü êàæäûé äîì, äëÿ óâåëè÷åíèÿ ñâîåé ïðèáûëè
analiz(645,219,675,219) // ìîñêâà 3
analiz(949,359,951,391) //êèåâ
analiz(689,532,719,532) //ïàðèæ
analiz(416,359,417,391) //ëîíäîí 6
analiz(689,219,719,219) //ðåêë.àãåíñòâî 7
analiz(733,219,763,219) //ìîäåëüíîå àãåíñòâî
analiz(822,219,852,219) //òóðàãåíñòâî 9
analiz(866,219,896,219) //ðàäèîñòàíöèÿ 10
analiz(910,219,940,219) //òåëåöåíòð 11
analiz(416,227,417,257) //àëì.ïðèèñê 12
analiz(416,315,417,347) //çîë.ïðèèñê 13
analiz(416,404,417,434) //êàðèáû 14
analiz(416,448,417,478) //òàèòè
analiz(416,492,417,522) //ôèäæè 16
analiz(424,532,454,532) //ãàç.êîìïàíèÿ 17
analiz(468,532,498,532) //í.êîìïàíèÿ 18
analiz(512,532,542,532) //àâèàêîìïàíèÿ 19
analiz(601,532,631,532) //àâòîì.êîìïàíèÿ
analiz(645,532,675,532) //ñóäîñòðîèò.êîìïàíèÿ 21
analiz(777,532,807,532) //ôóòá.êëóá 22
analiz(822,532,852,532) //áàêñ.êîìàíäà
analiz(910,532,940,532) //õîêê.êîìàíäà 24
analiz(949,227,951,257) //òàáà÷íàÿ ôàáðèêà 25
analiz(949,271,951,301) //ïèïîâàðíÿ
analiz(949,315,952,347) //ñïèðòçàâîä 27
analiz(950,404,952,434) //íî÷íîé êëóá 28
analiz(950,492,952,522) //êàçèíî 29
print($_ms-$_ms1)
$_ms2= $_ms
if ($my=0)
if ($mynomer="cun") //åñëè öâåò íàøåé ôèøêè ñèíèé, îáîçíà÷àåì êàêèå öâåòà ìîè, êàêèå âðàæåñêèå. äîáàâëÿåì â ìîé ìàññèâ ñèíèé, âî âðàæåñêèé - êðàñíûå öâåòà
$pustoi=14013909
$moi[0]=16571048 //êóïëåííàÿ ìîÿ
$moi[1]=16708320 //çàëîæåííàÿ ìîÿ
$vrag[0]=12303604
$vrag[1]=15132667
end_if
if ($mynomer="kras")
$pustoi=14013909
$moi[0]=12303604
$moi[1]=15132667
$vrag[0]=16571048
$vrag[1]=16708320
end_if
$my=1
end_if
sub(pole, $firms) // ïîäïðîãðàììà, ïîëå, ïåðìåííàÿ ôèðìñ
SWITCH($firms) // â âûçîâå óêàçàòü îò 1 äî 10
CASE(1) //åñëè âõîäíîé ðàâåí 1
$u1=0 //îãäà àíàëèçèðóåì áëîê:êàôå, ðåñòîðàí, êîôåéíÿ
$u2=3
CASE(2) //åñëè âõîäíîé ðàâåí 2
$u1=7
$u2=10
CASE(3)
$u1=10
$u2=12
CASE(4)
$u1=12
$u2=14
CASE(5)
$u1=14
$u2=17
CASE(6)
$u1=17
$u2=19
CASE(7)
$u1=19
$u2=22
CASE(8)
$u1=22
$u2=25
CASE(9)
$u1=25
$u2=28
CASE(10)
$u1=28
$u2=30
DEFAULT
END_SWITCH
for ($o=$u1, $o<$u2)//êðóòèì íäåêñû ìàññèâà ôèðìà, ïî áëîêàì ìîíîïîëèé
$q=$firma[$o]
if ($pustoi=$q) // åñëè íàõîäèì ïóñòóþ ôèðìó,
$p=1 //ïåðåìåííàÿ åäèíè÷êà
arrpush($pp, $o) //äîáàâëÿåì â ìàññèâ èíäåêñ ìàññèâà ôèðìÀ, äëÿ èñïîëüçîðâàíèÿ â äàëüíåéøåì
end_if
if (($moi[0]=$q)|($moi[1]=$q)) ///òî æå ñàìîå
$m=1
arrpush($mm, $o)
end_if
if (($vrag[0]=$q)|($vrag[1]=$q))
$v=1
arrpush($vv, $o)
end_if
end_cyc
if ($p=1) //àíàëèç âàæíîñòè ôèðì
if ($m=1)
if ($v=1)
// print("íå íàäî áðàòü.ïîòðàòèøü âïóñòóþ äåíüãè")
//ýòî áëîê íåíóæíûõ!!!
//áëîê çàêëàäûâàíèÿ
for($k=0, $k<arrsize($pp))
arrpush($low, ($pp[$k]))
end_cyc
for($k=0, $k<arrsize($mm))
arrpush($sale, ($mm[$k]))
end_cyc
for($k=0, $k<arrsize($vv))
arrpush($arend, ($vv[$k]))
end_cyc
else
// print("áåðè, äëÿ ïîëíîé êîëëåêöèè")
//áëîê íóæíûõ!!!
for($k=0, $k<arrsize($pp))
arrpush($high, ($pp[$k]))
end_cyc
//end_cyc
end_if
else
if ($v=1)
// print("ìîèõ íåò, áåðè, ÷òîáû âðàã íå ðàçâèâàë ìîíîïîëèþ")
//áëîê íóæíûõ!!
for($k=0, $k<arrsize($pp))
arrpush($high, ($pp[$k]))
end_cyc
for($k=0, $k<arrsize($vv))
arrpush($arend, ($vv[$k]))
end_cyc
else
// print("âñå ïóñòî")
for($k=0, $k<arrsize($pp))
arrpush($high, ($pp[$k]))
end_cyc
//áëîê íóæíûõ
end_if
end_if
else
if ($m=1)
if ($v=1)
// print("ïîðîâíó ñ âðàãîì")
for($k=0, $k<arrsize($mm))
arrpush($sale, ($mm[$k]))
end_cyc
for($k=0, $k<arrsize($vv))
arrpush($arend, ($vv[$k]))
end_cyc
//áëîê çàêëàäûâàíèÿ
else
print("âñå ìîå")
//áëîê ïîñòðîéêè ôèðì
for($k=0, $k<arrsize($mm))
arrpush($proect, ($mm[$k]))
end_cyc
end_if
else
for($k=0, $k<arrsize($vv))
arrpush($arend, ($vv[$k]))
end_cyc // print("âñå ó ïðîòèâíèêà")
end_if
end_if
UNDEFINE($v)
UNDEFINE($m)
UNDEFINE($p)
UNDEFINE($vv)
UNDEFINE($mm)
UNDEFINE($pp)
//ñîçäàòü 4 ìàññèâà. âàæíûå äëÿ ïîêóïêè. íåíóæíûå ïîêóïêè. çàêëàäûâàíèå ôèðì, áëîê ïîñòðîéêè(4)
end_sub
UNDEFINE($proect)
UNDEFINE($arend)
UNDEFINE($low)
UNDEFINE($high)
UNDEFINE($sale)
//print("îáùåïèò")
Pole(1)
//print("ðåêëàìà")
Pole(2)
//print("ðàäèî")
Pole(3)
//print("ïðèèñê")
Pole(4)
//print("îñòðîâà")
Pole(5)
//print("íåôòü")
Pole(6)
//print("òðàíñïîðò")
Pole(7)
//print("ñïîðò")
Pole(8)
//print("çàâîä")
Pole(9)
//print("êëóáû")
Pole(10)
for($k=0, $k<arrsize($proect)) //
print($proect[$k],"ñòðîéê")
end_cyc
for($k=0, $k<arrsize($low))
print($low[$k],"íåâàæí")
end_cyc
for($k=0, $k<arrsize($high))
print($high[$k],"âàæí")
end_cyc
for($k=0, $k<arrsize($sale))
print($sale[$k],"çàêëàä")
end_cyc
print($_ms-$_ms2)
if ($massiv=0)
STRSEPARATE("418:461:506:550:594:639:683:727:771:816:859:903:947:1065", ":", $pos_coord_X1)
STRSEPARATE("264:309:354:397:441:486:529", ":", $pos_coord_y1)
STRSEPARATE("948:903:859:816:771:727:683:639:595:550:506:462:418:302", ":", $pos_coord_x2)
STRSEPARATE("486:442:397:353:309:264:221", ":", $pos_coord_y2)
$massiv=1
End_if
$_ms3=$_ms2
GETSCREEN
if ($mynomer="kras")
IF_PICTURE_IN (302,105, 1063,645, "krasn.bmp") //èùåì êðàñíûé
$avatar_X = $_return1 //îáçûâàåì âîçâðàò àâàòàðîì_õ
$avatar_Y = $_return2
print("----------")
END_IF
else
if ($mynomer="cun")
IF_PICTURE_IN (302,105, 1063,645, "sin.bmp") //èùåì êðàñíûé
$avatar_X = $_return1 //îáçûâàåì âîçâðàò àâàòàðîì_õ
$avatar_Y = $_return2
print("----------")
END_IF
END_IF
END_IF
IF($avatar_Y < 222) // âåðõíèé ðÿä
FOR($i=0, $i < ARRSIZE($pos_coord_X1)) // îò ïåðâîãî ýëåìåíòà ìàññèâà ïî ïîñëåäíèé
IF($avatar_X < $pos_coord_X1[$i]) //åñëè àâàòàð ìåíüøå ÷åì ïðîïèñàííàÿ êîîðäèíàòà
$field = $i //òî ôàéëä ðàâåí ïîçèöèè íà êîòîðîé ñòîþ. ïðèìåð, ÿ íà 7 êëåòêå, 0123456. ýòî 7 ýëåìåíò ìàññèâà, ôàéëä= 6
$i = 100 //ïðåðûâàåì
print($field)
END_IF
END_CYC
else
IF($avatar_Y > 529) // âåðõíèé ðÿä
FOR($i=0, $i < ARRSIZE($pos_coord_X2)) // îò ïåðâîãî ýëåìåíòà ìàññèâà ïî ïîñëåäíèé
IF($avatar_X > $pos_coord_X2[$i]) //åñëè àâàòàð , áîëüøå ÷åì ïðîïèñàííàÿ êîîðäèíàòà
$field = $i + 21 //òî ôàéëä ðàâåí ïîçèöèè íà êîòîðîé ñòîþ. ïðèìåð, ÿ íà 7 êëåòêå, 0123456. ýòî 7 ýëåìåíò ìàññèâà, ôàéëä= 6
$i = 100 //ïðåðûâàåì
print($field)
END_IF
END_CYC
END_IF
END_IF
IF($avatar_X > 948) //íèæíèé ðÿä
FOR($i=0, $i < ARRSIZE($pos_coord_y1))
IF($avatar_Y < $pos_coord_y1[$i])
$field = 14+$i
// òóò íóæíî ïåðåñ÷èòàòü èíäåêñ â íîìåð ïîëÿ íàïðèìåð:
// $field = 16 + 9 - $i // 9 ââåðõó+6 ñïðàâà + èíâåðò íèçà
$i = 100
print($field)
END_IF
END_CYC
else
IF($avatar_X < 417) //íèæíèé ðÿä
FOR($i=0, $i < ARRSIZE($pos_coord_y2))
IF($avatar_Y > $pos_coord_y2[$i])
$field = 35+$i
// òóò íóæíî ïåðåñ÷èòàòü èíäåêñ â íîìåð ïîëÿ íàïðèìåð:
// $field = 16 + 9 - $i // 9 ââåðõó+6 ñïðàâà + èíâåðò íèçà
$i = 100
print($field)
END_IF
END_CYC
END_IF
END_IF
print($_ms-$_ms3," ìóð")
if ($mynomer="cun")
$noxodme1= 3014841
$noxodme2= 1507421
$xodme1= 16215040
$xodme2= 8140288
else
if ($mynomer="kras")
$noxodme1= 16215040
$noxodme2= 8140288
$xodme1= 3014841
$xodme2= 1507421
END_IF
END_IF
//íèæå èíäèêàòîð.
GETSCREEN
IF_PIXEL_IN(524,660,835,686, $xodme1)// ìîé õîä
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "brosok.bmp", -1, 100)
if (arrsize($proect)<1)
if ($field!13)
LCLICK($_return1, $_return2)
MOVE(1365,290)
WAITMS(100)
END_IF
END_IF
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "oplata.bmp", -1, 100)
if (($field=2)|($field=9)|($field=19)|($field=23)|($field=30)|($field=40))
LCLICK($_return1, $_return2)
MOVE(1365,290)
WAITMS(100)
else
for($k=0, $k<arrsize($arend))
if ($field=$arend[$k])
LCLICK($_return1, $_return2)
MOVE(1365,290)
$k=100
END_IF
end_cyc
END_IF
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "kupit.bmp", -1, 100)
for($k=0, $k<arrsize($high))
if ($field=$high[$k])
LCLICK($_return1, $_return2)
MOVE(1365,290)
$k=100
END_IF
end_cyc
END_IF
END_IF
//else
// IF_PIXEL_IN(524,660,835,686, $noxodme2)//íå ìîé õîä àêöèîí
// WAITMS(1000)
// else
// IF_PIXEL_IN(524,660,835,686, $xodme1)//ÿ õîæó
// $xozhu=1
// WAITMS(1000)
// else
// IF_PIXEL_IN(524,660,835,686, $xodme2)//ÿ õîæó
// $xozhu=1
// WAITMS(1000)
// END_IF
// END_IF
// END_IF
//END_IF
////äåéñòâèå ïðè ìîåì õîäå.
//if ($xozhu=1)
// GETSCREEN
// IF_PIXEL_IN(297,46,994,92, 234206)
// LOGWRITE ("ìîé õîä")
// WAITMS(1000)
// else
// IF_PIXEL_IN(297,46,994,92, 827129)
// LOGWRITE ("ìîé õîä")
// WAITMS(1000)
// else
// IF_PIXEL_IN(297,46,994,92, 350078)
// LOGWRITE ("ìîé õîä")
// WAITMS(1000)
// else
// IF_PIXEL_IN(297,46,994,92, 84591)
// LOGWRITE ("ìîé õîä")
// WAITMS(1000)
// END_IF
// END_IF
// END_IF
// END_IF
//END_IF
Вот что вышло. позже допилю, а пока скидываю может кому надо.
-
Принцип:
1. смотрим кто играет(чтобы не проверять лишние цвета на поле, включаем таймер на 10 минут
2. проверяем через чат какого цвета нет - и присваиваем себе
3. анализ всех клеток, че кого, выводим всю ифу в массив фирма
4. смотрим мой цвет, вводим 3 массива:пустые фирмы, мои, врага
5. через саб прокручиваем каждый филиал(по 2-3 фирмы), проверяем, важность фирмы, нужно ли покупать/закладывать ,строить, кидать на аукцион
6. проверка где находится моя фишка на поле
7. смотрим, если мой ход, то ... Вот здесь у меня косяки пошли с иерархией кода, ну и соотвтествием позиции и фирмы. массив фирмы - из 30, а позиций 42)) чет подтупливаю
-
через кейс можно прикрутить соответствия. а еще вопрос, если экран тухнет, то тухнут все цвета фирмы(бывает при аукционах). получается что 3 цвета, которые мы указали для определения фирмы - их не хватает. и кликер вылетает с ошибкой
GETSCREEN
IF_PIXEL_IN(524,660,835,686, $xodme1)// видим, что наш ход на нижней панельке
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "brosok.bmp", -1, 100)////видим кнопку бросить кубики
if (arrsize($proect)<1)//если нет фирм для постройки
if ($field!13)// если не в тюрьме
LCLICK($_return1, $_return2)// бросаем
MOVE(1365,290)
WAITMS(100)
END_IF
END_IF
END_IF
WAIT(3)//ждем 3 секунды. здесь самое интересное. ход может перейти сопернику, без совершнея мною действий. или нужно купить/продать.. и т.дт
switch($field)// соотносим местоположение и действия
CASE(0)//старт , ниче не делаем
CASE(1)
CASE(2)
CASE(3)
CASE(4)
CASE(5)
CASE(6)
CASE(7)
CASE(8)
CASE(9)
CASE(10)
CASE(11)
CASE(12)
CASE(13)
CASE(14)
CASE(15)
CASE(16)
CASE(17)
CASE(18)
CASE(19)
CASE(20)
CASE(21)
CASE(22)
CASE(23)
CASE(24)
CASE(25)
CASE(26)
CASE(27)
CASE(28)
CASE(29)
CASE(30)
CASE(31)
CASE(32)
CASE(33)
CASE(34)
CASE(35)
CASE(36)
CASE(37)
CASE(38)
CASE(39)
CASE(40)
CASE(41)
-
подпрограммы в подпрограмме - так можно делать или нет?))
переназначение через кейсы
sub(plata)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "oplata.bmp", -1, 100)
LCLICK($_return1, $_return2)
MOVE(1365,290)
WAITMS(100)
END_IF
end_sub
sub(pokupka)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "kupit.bmp", -1, 100)
LCLICK($_return1, $_return2)
MOVE(1365,290)
WAITMS(100)
END_IF
end_sub
sub(akcion)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "akcion.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
end_sub
switch($field)
CASE(0)//ñòàðò
CASE(1)
for($k=0, $k<arrsize($high))
if ($high[$k]=1)
pokupka()
$k=100
END_IF
end_cyc
for($k=0, $k<arrsize($low))
if ($low[$k]=1)
akcion()
$k=100
END_IF
end_cyc
for($k=0, $k<arrsize($arend))
if ($arend[$k]=1)
plata()
$k=100
END_IF
end_cyc
CASE(2)
plata()
CASE(3)
for($k=0, $k<arrsize($high))
if ($high[$k]=2)
pokupka()
$k=100
END_IF
end_cyc
for($k=0, $k<arrsize($low))
if ($low[$k]=2)
akcion()
$k=100
END_IF
end_cyc
for($k=0, $k<arrsize($arend))
if ($arend[$k]=2)
plata()
$k=100
END_IF
end_cyc
CASE(4)
for($k=0, $k<arrsize($high))
if ($high[$k]=3)
pokupka()
$k=100
END_IF
end_cyc
for($k=0, $k<arrsize($low))
if ($low[$k]=3)
akcion()
$k=100
END_IF
end_cyc
for($k=0, $k<arrsize($arend))
if ($arend[$k]=3)
plata()
$k=100
END_IF
end_cyc
CASE(5)
//ïðîïóñêàåì õîä
CASE(6)
pokupka()
CASE(7)
for($k=0, $k<arrsize($high))
if ($high[$k]=7)
pokupka()
$k=100
END_IF
end_cyc
CASE(8)
for($k=0, $k<arrsize($high))
if ($high[$k]=8)
pokupka()
$k=100
END_IF
end_cyc
CASE(9)
plata()
CASE(10) // òóðèì
for($k=0, $k<arrsize($high))
if ($high[$k]=9)
pokupka()
$k=100
END_IF
end_cyc
CASE(11) // ðàäèî
for($k=0, $k<arrsize($high))
if ($high[$k]=10 )
pokupka()
$k=100
END_IF
end_cyc
CASE(12) //òåëåö
for($k=0, $k<arrsize($high))
if ($high[$k]=11)
pokupka()
$k=100
END_IF
end_cyc
CASE(13) //òàìîæíÿ . ïîçæå íàïèøó
CASE(14) //òàáà÷
for($k=0, $k<arrsize($high))
if ($high[$k]=11)
pokupka()
$k=100
END_IF
end_cyc
CASE(15)//ïèâî
for($k=0, $k<arrsize($high))
if ($high[$k]=11)
pokupka()
$k=100
END_IF
end_cyc
CASE(16) //ñïèð
for($k=0, $k<arrsize($high))
if ($high[$k]=11)
pokupka()
$k=100
END_IF
end_cyc
CASE(17)//êèåâ// так далее вн4из
pokupka()
CASE(18)
CASE(19)
plata()
CASE(20)
CASE(21)
CASE(22)
CASE(23)
plata()
CASE(24)
CASE(25)
CASE(26)
CASE(27)
CASE(28)
CASE(29)
CASE(30)
plata()
CASE(31)
CASE(32)
CASE(33)
CASE(34)
CASE(35)
CASE(36)
CASE(37)
CASE(38)
CASE(39)
CASE(40)
plata()
CASE(41)
-
спасибо за ответ. просто думал, что нельзя вызывать одну в другой
-
А где завершение свитча?
DEFAULT
END_SWITCH