Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Olegreus on February 20, 2015, 05:16:08 PM
-
Хочу сделать так например
Чтоб в появившемся окне можно было ввести число от 1 до 9, а в сценарии в зависимости от введенного числа присваивались бы числовые переменные с координатами. По X и Y для каждого числа. Список координат есть в нем 9 пар координат. Можно такое слепить?
-
///---------
if($trigger=0)
arrpush($arr, 1x100y100) // 1-это то что вводишь, х100-значение известных координат по "х", y100-соответственно по"y"
arrpush($arr, 2x200y200)
arrpush($arr, 3x300y300)
arrpush($arr, 4x400y400)
arrpush($arr, 5x500y500)
arrpush($arr, 6x600y600)
arrpush($arr, 7x700y700)
arrpush($arr, 8x800y800)
arrpush($arr, 9x900y900)
//...
arrpush($arr, 10x1000y1000)
//...
arrpush($arr, 1000x10000y10000)
$trigger=1
end_if
///---------
$vvod = int(inputbox("text",,10))
///---------
$SIZE=int(0)
while(($SIZE<ARRSIZE ($arr))&($vvod!0))
$mask=strcut($arr[$SIZE], 0, strpos($arr[$SIZE], "x")-1 )
if($mask=$vvod)
print(STRCUT2 ($arr[$SIZE],strpos($arr[$SIZE], "x")+1,strpos($arr[$SIZE], "y")-1),":",STRCUT2($arr[$SIZE],strpos($arr[$SIZE], "y")+1,STRLEN($arr[$SIZE]))
$SIZE=ARRSIZE ($arr)
end_if
inc($SIZE)
end_cyc
///---------
halt
можно если я правильно тебя понял. причем варианты зависят от фантазии...
-
///---------
if($trigger=0)
arrpush($arr, 1x100y100) // 1-это то что вводишь, х100-значение известных координат по "х", y100-соответственно по"y"
arrpush($arr, 2x200y200)
arrpush($arr, 3x300y300)
arrpush($arr, 4x400y400)
arrpush($arr, 5x500y500)
arrpush($arr, 6x600y600)
arrpush($arr, 7x700y700)
arrpush($arr, 8x800y800)
arrpush($arr, 9x900y900)
//...
arrpush($arr, 10x1000y1000)
//...
arrpush($arr, 1000x10000y10000)
$trigger=1
end_if
///---------
$vvod = int(inputbox("text",,10))
///---------
$SIZE=int(0)
while(($SIZE<ARRSIZE ($arr))&($vvod!0))
$mask=strcut($arr[$SIZE], 0, strpos($arr[$SIZE], "x")-1 )
if($mask=$vvod)
print(STRCUT2 ($arr[$SIZE],strpos($arr[$SIZE], "x")+1,strpos($arr[$SIZE], "y")-1),":",STRCUT2($arr[$SIZE],strpos($arr[$SIZE], "y")+1,STRLEN($arr[$SIZE]))
$SIZE=ARRSIZE ($arr)
end_if
inc($SIZE)
end_cyc
///---------
halt
можно если я правильно тебя понял. причем варианты зависят от фантазии...
Объясню проще. В игре куча разных петов. С собой можно брать только 9 из кучи. В Бою игра выстраивает их внизу эрана для выбора. В списке питомцев (где их статы, здоровье и прочее они расположены так - 5 в верхнем ряду, 4 в нижнем. Суть такая. Я написал скрипт на питомца например в седьмом слоте. Покачал его и захотел качнуть другого. Итого имеем 9 скриптов. Много. Причем подошел бы один скрипт в котором можно координаты (тыка мышковыбора питомца в бою и координаты выбора питомца в списке обозначить как X1 Y1 и x2 y2.
-
Поиск по картинке не подходит ввиду того что картинки одного и того же Пета в бою и в списке разного размера.. Да и около сотни их уже в игре. Хотелось бы чтоб нажал в окне например 1 и скрипт понял что он выполняется для Пета в 1 слоте с конкретными координатами слота в бою и конкретными в списке питомцев
-
Запутали сами человека. Он просто спрашивал про окно ввода.
В первом ответе 19 строка
$vvod = int(inputbox("text",,10))
-
SUB(poceball) //проверка на призовой покебол за каждые два часа нахождения в игре
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (819,237, 1245,586, "poceball.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(500)
END_IF
END_SUB
walk: //если после перезагрузки страницы выкинуло на вход в локацию и начальная прогулка до моба
WAIT(2)
GETSCREEN
COLORMODE(6)
poceball()
IF_PICTURE_IN (982,255, 1050,330, "trener.bmp", -1, 100) //если тренер на входе в локацию
LCLICK(1017,339)
WAIT(1)
$check_down = 0
WHILE($check_down = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (964,508, 1070,583, "trener1.bmp", -1, 100) //идем вниз до совпадения куска карты с частью тренера
$check_down = 1
WAIT(1)
ELSE
poceball()
KEYPRESS(#DOWN)
WAIT(1)
END_IF
END_CYC
$check_left = 0
WHILE($check_left = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (692,522, 756,588, "trener2.bmp", -1, 100) //идем влево до совпадения куска карты с частью тренера
$check_left = 1
WAIT(1)
ELSE
poceball()
KEYPRESS(#LEFT)
WAIT(1)
END_IF
END_CYC
$check_up = 0
WHILE($check_up = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (720,365, 757,411, "trener3.bmp", -1, 100) //идем вверх до совпадения куска карты с частью тренера
$check_up = 1
WAIT(1)
ELSE
poceball()
KEYPRESS(#UP)
WAIT(1)
END_IF
END_CYC
$check_right = 0
WHILE($check_right = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (762,328, 821,389, "trener4.bmp", -1, 100) //идем вправо до совпадения куска карты с частью тренера
$check_right = 1
WAIT(1)
ELSE
poceball()
KEYPRESS(#RIGHT)
WAIT(1)
END_IF
END_CYC
GOTO(heal) //дошли до нашего моба, переходим в проверку ХП пета
ELSE
GOTO(captcha)
END_IF
heal: //проверка ХП пета и отхил
poceball()
WAIT(1)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "skill.bmp") //закрываем всплывшее окно, если пет выучил новое умение
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAIT(1)
END_IF
LCLICK(729,199) //жмем "Питомцы"
WAITMS(600)
LCLICK(744,574) //открываем экран питомца
WAITMS(600)
LCLICK(1337,361) //обновляем его ХП
WAIT(3)
LCLICK(748,263) //к списку питомцев
WAITMS(500)
$check_hp = 0
$time = $_time_t + 20
WHILE(($check_hp = 0)&($time > $_time_t)) //проверка на ХП +таймер на 20 сек
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (690,625, 815,660, "fullHP.bmp", -1, 100)
$check_hp = 1
$time = 0
GOTO(fight)
ELSE
LCLICK(1180,200) //открываем рюкзак
WAITMS(500)
LCLICK(1160,355) //выбираем хилку
WAITMS(500)
LCLICK(1215,415) //нажимаем "съесть"
WAITMS(500)
LCLICK(1205,400) //выбираем раненного пета
WAIT(1)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (990,580, 1060,840, "close.bmp", -1, 100) //закрываем рюкзак
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
WAIT(4)
END_IF
END_CYC
fight: //нападение на моба
$time = 0
poceball()
LCLICK(823,201) //нажимаем вкладку "Мир"
WAITMS(400)
poceball()
LCLICK(795,416) //тыкаем на моба
WAITMS(600)
poceball()
LCLICK(1072,499) //нажимаем "поиск противника"
WAIT(1)
check: //проверка на капчу
$check_mob = 0
WHILE($check_mob = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (992,500, 1040,585, "field.bmp", -1, 100)
WAIT(2)
$check_mob = 1 //моб найден
MOVE(1136,658)
WAITMS(300)
poceball()
LCLICK(1136,658) //выбираем пета
WAITMS(300)
GOTO(attack)
ELSE //моб не найден
poceball()
WAITMS(500)
GOTO(captcha)
END_IF
END_CYC
captcha: //капча, будь она неладна
WAIT(1)
poceball()
LCLICK(960,317) //нажатие на экран игры, чтобы сделать его активным
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (787,273, 851,328, "captcha.bmp", -1, 100)
KEYPRESS(#F5)
WAIT(10) //ждем обновления страницы и прогрузки игры
GOTO(walk)
ELSE
GOTO(check)
END_IF
attack: //сам процесс боя
$check_death = 0 //проверяем убили ли моба
WHILE($check_death = 0)
poceball()
WAITMS(20)
LCLICK(915,650) //выставляем атаки
WAITMS(300)
LCLICK(915,650)
WAITMS(300)
LCLICK(915,650)
WAITMS(300)
LCLICK(990,602) //запускаем ход
WAIT(8)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "lvlup.bmp") //повышен уровень пета
$check_death = 1
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN
COLORMODE(6)
END_IF
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "win.bmp") //победа
$check_death = 1
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN
COLORMODE(6)
GOTO(heal)
END_IF
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "defeat.bmp") //поражение
$check_death = 1
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN
COLORMODE(6)
GOTO(heal)
END_IF
END_CYC
Вот собственно сам скрипт. Скрины нужных экранов во вложении. Винда 7 х64 максимальная, браузер мозилла, разрешение экрана 1920х1080 (эт так, на всякий случай)
чтоб не писать этот скрипт 9 раз на 100500 строк логически предположил что есть выход из ситуации. например вылезает окно с текстом "выберите в каком слоте пет для прокачки (1-9)?". введенное значение скрипт приписывает например в $slot. и в дальнейшем исходя из этого значения чтоб скрипт присвоил уже известные(!) координаты центра этого слота в онке списка питомцев и в выборе пета для боя.
-
Скрипт кстати еще сыроват. не могу понять где ошибка. то работает несколько часов кряду, то зависает на каком-либо месте... например всплывает окно после боя с результатами (получено опыта, полученный лут(хлам для крафта) с моба) с единственной кнопкой "закрыть", в скрипте участок:
attack: //сам процесс боя
$check_death = 0 //проверяем убили ли моба
WHILE($check_death = 0)
poceball()
WAITMS(20)
LCLICK(915,650) //выставляем атаки
WAITMS(300)
LCLICK(915,650)
WAITMS(300)
LCLICK(915,650)
WAITMS(300)
LCLICK(990,602) //запускаем ход
WAIT(8)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "lvlup.bmp") //повышен уровень пета
$check_death = 1
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN
COLORMODE(6)
END_IF
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "win.bmp") //победа
$check_death = 1
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN
COLORMODE(6)
GOTO(heal)
END_IF
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "defeat.bmp") //поражение
$check_death = 1
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN
COLORMODE(6)
GOTO(heal)
END_IF
END_CYC
и скрипт не видит "win.bmp". Тычет выбор атак до бесконечности.
если бы сразу вис то дело в нераспознавании "win.bmp", а если находит, находит и вдруг....не находит? На что грешить? Подскажите знающие люди.
-
Извините локацию не ту приложил.
метка walk: для другой локи. Во вложении.
-
Если находит, находит и вдруг не находит. Значит изменения в картинке. И в твоем случае они пробиваются через колормод. Добавь процент совпадения, только не увлекайся.
-
То есть добавить ..., -1, 95) после имени искомой картинки?
по поводу предыдущих вопросов нет предложений? :-[ неужто всего бота до "клик-клик" сводить...
-
зачем вы всё усложняете?
горячие клавиши и клмки по заранее известным координатам ещё никто не отменял.
Если же вы затрудняетесь с выражением своих мыслей, то советую, подумать что может ответить на ваш вопрос человек незнающий о какой игре речь и какие у вас причуды.
Возможно практически всё и указывать пета в переменной, перед завпуском скрипта и вызывать окно с кнопками или панелью ввода во время работы скрипта.
Предоставил на ваш суд максимум информации. Может так понятнее. Для каждого слота с петом получается по несколько пар координат. Вернее 4 пары.
1-я пара - центр слота на экране "список питомцев"
LCLICK(729,199) //жмем "Питомцы"
WAITMS(600)
LCLICK(744,574) //открываем экран питомца //[color=red]меняем конкретные значения на x1,y1[/color]
WAITMS(600)
LCLICK(1337,361) //обновляем его ХП
WAIT(3)
LCLICK(748,263) //к списку питомцев
2-я и 3-я пара - на том же экране. Координаты начала и конца области искомой картинки с ХП (красной полоской), в которой скрипт ищет картинку fullHP.bmp
WHILE(($check_hp = 0)&($time > $_time_t)) //проверка на ХП +таймер на 20 сек
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (690,625, 815,660, "fullHP.bmp", -1, 100) //тут получаем IF_PICTURE_IN (x2,y2,x3,y3, "fullHP.bmp", -1, 100)
$check_hp = 1
$time = 0
GOTO(fight)
ELSE
4-я пара уже на экране выбора пета для боя.
IF_PICTURE_IN (992,500, 1040,585, "field.bmp", -1, 100)
WAIT(2)
$check_mob = 1 //моб найден
MOVE(1136,658)
WAITMS(300)
poceball()
LCLICK(1136,658) //выбираем пета //тут получится LCLICK(x4,y4)
WAITMS(300)
GOTO(attack)
ELSE //моб не найден
poceball()
WAITMS(500)
GOTO(captcha)
END_IF
Вот как такое реализовать через :
Запутали сами человека. Он просто спрашивал про окно ввода.
В первом ответе 19 строка
$vvod = int(inputbox("text",,10))
-
прикольно - твой аватар в игре похож на нацу из хвоста феи, а петы на покемонов...
-
прикольно - твой аватар в игре похож на нацу из хвоста феи, а петы на покемонов...
там все аватары (в игре именуются обликами тренера) взяты из разных аниме, а сами поки тупо взяты из мульта.... пока идет бета версия игры и их пока около ста, но каждую неделю добавляют либо нового пета либо эволюцию уже введенного ранее. В общем общая атмосфера мира покемонов сохранена.
-
если я понял правильно:
1) тебе нужно заменить статические координаты на переменные (там где их нужно менять для петов (4 -пары))
2) в нужное место вставить вызов окна ввода
3) после ввода цифры (1...9) или через switch или через IF() изменить переменные координат на нужные - соответствующие введенной цифре
-
пример на SWITCH
sub(vvod)
$keys=48
while(ISKEYDOWN (48)!1)
if($keys=58)
$keys=49
end_if
if(ISKEYDOWN ($keys)=1)
SWITCH($keys)
CASE(49)
$text=1
CASE(50)
$text=2
CASE(51)
$text=3
CASE(52)
$text=4
CASE(53)
$text=5
CASE(54)
$text=6
CASE(55)
$text=7
CASE(56)
$text=8
CASE(57)
$text=9
END_SWITCH
$vvod = int(inputbox("text",$text,10))
SWITCH($vvod)
CASE(1)
print(1)
$x1=10
$y1=10
CASE(2)
print(2)
$x1=20
$y1=20
CASE(3)
print(3)
$x1=30
$y1=30
CASE(4)
print(4)
$x1=40
$y1=40
CASE(5)
print(5)
$x1=50
$y1=50
CASE(6)
print(6)
$x1=60
$y1=60
CASE(7)
print(7)
$x1=70
$y1=70
CASE(8)
print(8)
$x1=80
$y1=80
CASE(9)
print(9)
$x1=90
$y1=90
END_SWITCH
///
move($x1,$y1)
///
else
inc($keys)
waitms(5)
end_if
end_cyc
end_sub
vvod()
halt
запусти понажимай цифры над буквами 1...9 (0 - остановить)и следи за курсором
-
Шикарная идея!!!
Меня смутило что в справке написано что - inputbox строковая функция. Думал она будет ошибку выдавать воспринимая введенную цифру как текст. Этим думаю можно обойти. Спасибо! Попробую завтра и отпишусь!
-
while(ISKEYDOWN (48)!1)
if(ISKEYDOWN ($keys)=1)
SWITCH($keys)
CASE(49)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
CASE(50)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
CASE(51)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
CASE(52)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
CASE(53)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
CASE(54)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
CASE(55)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
CASE(56)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
CASE(57)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
DEFAULT
WAITMS(10)
END_SWITCH
END_IF
END_CYC
Такой скрипт подойдет чтоб без ввода в окно обойтись?
И будет ли основной скрипт бота принимать в себя значения присвоенных координат отсюда если запустить этот кусочек дочерним потоком?
-
Функция ISKEYDOWN только и всего делает что проверяет зажата указанная клавиша или нет. У тебя там какая то не рабочая ерунда.
И будет ли основной скрипт бота принимать в себя значения присвоенных координат отсюда если запустить этот кусочек дочерним потоком?
Переменные в потоках пока не изолированы. Поэтому конечно будет.
Вот верный рабочий скрипт
THREAD(keys, 1)
IF(iskeydown(#1)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
ELSE
IF(iskeydown(#2)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
ELSE
IF(iskeydown(#3)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
ELSE
IF(iskeydown(#4)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
ELSE
IF(iskeydown(#5)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
ELSE
IF(iskeydown(#6)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
ELSE
IF(iskeydown(#7)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
ELSE
IF(iskeydown(#8)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
ELSE
IF(iskeydown(#9)=1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
ELSE
WAITMS(20)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_THREAD
// здесь основной скрипт
-
в кликере все переменные глобальные и доступны в любом месте скрипта - ответ "принимать в себя значения присвоенных координат" - будет.
Oraven написал все верно (один из вариантов)
если хочешь понять почему твой не работает то:
while(ISKEYDOWN (48)!1) - обязательным условием для завершения цикла является нажатие цифры "0"
if(ISKEYDOWN ($keys)=1) - $keys если ей не присвоить значение оно будет =0
SWITCH($keys) - $keys=0
CASE(49) - $keys не равно 49 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
CASE(50) - $keys не равно 50 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
CASE(51) - $keys не равно 51 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
CASE(52) - $keys не равно 52 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
CASE(53) - $keys не равно 53 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
CASE(54) - $keys не равно 54 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
CASE(55) - $keys не равно 55 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
CASE(56) - $keys не равно 56 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
CASE(57) - $keys не равно 57 следовательно условие не верно и выполняться не будет
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
DEFAULT
WAITMS(10)
END_SWITCH
END_IF
END_CYC
в итоге этот скрипт можно только остановить нажав - "0"
чего не хватает:
1) $keys должна принимать значения от 49 по 57, удобно использовать последовательное увеличение на 1 (inc($keys)) эквивалентна записи $keys+1. Т.к значения от 0 до 47 нам не нужны $keys=48.
2) после того как значение переменной станет $keys= 58 нужно его вернуть $keys=49, иначе оно будет дальше увеличиваться.
итог:
$keys=48
while(ISKEYDOWN (48)!1)
if($keys=58)
$keys=49
end_if
if(ISKEYDOWN ($keys)=1)
SWITCH($keys)
CASE(49)
print(1)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 1-ого слота
CASE(50)
print(2)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 2-ого слота
CASE(51)
print(3)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 3-ого слота
CASE(52)
print(4)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 4-ого слота
CASE(53)
print(5)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 5-ого слота
CASE(54)
print(6)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 6-ого слота
CASE(55)
print(7)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 7-ого слота
CASE(56)
print(8)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 8-ого слота
CASE(57)
print(9)
//прописываем значения координат x1=,x2=,x3=,x4=,y1=,y2=,y3=,y4= для кача пета из 9-ого слота
DEFAULT
WAITMS(10)
END_SWITCH
else
inc($keys)
END_IF
END_CYC
halt
-
Loorik Зачем такие навороты? Твой скрипт сложнее для понимания, особенно нуба. Серия условий с ISKEYDOWN делает тоже самое, но выглядит гораздо проще. Эта часть кода может бесконечно крутиться в отдельном потоке и в любой момент можно нажать соответствующую цифру чтобы изменить координаты.
-
Loorik Зачем такие навороты?
Oraven Ты абсолютно прав.
3) после ввода цифры (1...9) или через switch или через IF() изменить переменные координат на нужные - соответствующие введенной цифре
это просто пример на switch
-
Loorik Зачем такие навороты?
Oraven Ты абсолютно прав.
3) после ввода цифры (1...9) или через switch или через IF() изменить переменные координат на нужные - соответствующие введенной цифре
это просто пример на switch
Все очень понятно в обоих примерах. Спасибо за помощь. Осталось только научить бота доходить по карте самостоятельно до заданного координатами моба и бот готов. К сожалению в этом мои познания почти нулевые. Есть поле 23х12 клеток, каждая по 37х37 пикселей. как можно научить бота идти к мобу кратчайшим путем обходя елки и прочие препятствия? ( карта полностью статична, персонаж имеет 4 отображения:вид спереди,сзади,слева,справа. Мобы анимированы, но стоят в своих клетках и не двигаются по карте)