Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: putman on November 27, 2016, 10:28:46 AM
-
Здравствуйте.
В игре есть карта, малая часть которой отображается в соответствующей области экрана.
Мне нужно понимать в каких координатах я нахожусь.
Т.е. стандартными методами я делаю 100500 скринов кусочков отображаемой в данный момент карты и производя среди них поиск на соответствие с тем, что сейчас на экране, вычисляю местоположение.
Т.к. карта немаленькая, таких скринов получится очень много. Я хочу склеить из отображаемых кусочков единое поле которое и запишу допустим в map.bmp.
Будет всего один файл, и уже внутри него я бы хотел указывать сектор (координаты левого верхнего угла, координаты правого нижнего угла) и с этим извлечённым кусочком сравнивать то, что в данный момент на дисплее.
Согласитесь, это намного проще, чем иметь сотни отдельных кусочков *.bmp.
Внимание, вопрос: такое реально средствами Кликермана ?
-
Конечно же нет.
Кстати в место картинок ты можешь снимать хеш. Если конечно графика не меняется.
Вот набросал на вскидку
Скрипт для создания базы данных:
GETSCREEN
$hash = PXLCRC(10,10, 100,100) // область снятия хеша
$inp = INPUTBOX("Введите инфу", "", 999)
IF($inp = "")
HALT
END_IF
$str = STRCONCAT($hash, "|", $inp) // строка (Хеш, разделитель |, Координата)
$check = 0
FOR($a=1,$a<TFCOUNT("Hash.txt")+1) // проверка на дубликаты
IF(STRPOS(TFREAD("Hash.txt", $a), $hash) > 0)
$check = 1
END_IF
END_CYC
IF($check = 0)
TFWRITE("Hash.txt", $str) // запись хеша в базу данных
END_IF
HALT
Скрипт идентификации:
GETSCREEN
$hash = PXLCRC(10,10, 100,100) // область снятия хеша
$count_Hash = TFCOUNT("Hash.txt")+1
FOR($a=1,$a<$count_Hash)
STRSEPARATE(TFREAD("Hash.txt", $a), "|", $arr)
IF($hash = $arr[0])
// Если верно
$a=$count_Hash // прерываем цикл
LOGWRITE ("Найден хеш: ", $arr[0], " В: ", $arr[1]) // вывод инфы в лог
END_IF
UNDEFINE($arr)
END_CYC
HALT
-
Кто-то здесь уже клеил карту и насколько мне помнится успешно.
Но зачем идти таким сложным путём, вся графическая игровая информация обычно хранится в браузере или игровом клиенте, взять от туда готовую карту проще чем клеить самоделку.
-
Кстати в место картинок ты можешь снимать хеш.
Спасибо.
А почему хеш, а не картинка ? Быстрее что ли ?
Мне картинки понятнее.
---
UPD: вник, да, хешем лучше.
Спасибо за идею.
-
Кто-то здесь уже клеил карту и насколько мне помнится успешно.
Но зачем идти таким сложным путём, вся графическая игровая информация обычно хранится в браузере или игровом клиенте, взять от туда готовую карту проще чем клеить самоделку.
С хешем сделаю, вроде устраивает.
-
Ну хотя бы потому что тебе не придется клепать картинки. Кроме того область хеша может быть большой, хоть весь экран, с картинками такое не прокатит. Ну и конечно быстрее.
Чуток дополнил первый скрипт. Вставил инпутбокс для удобства.
-
вот например сейчас взял из памяти браузера двумерное игровое поле размеры 4000: 3600 , по факту на экране отображается малая часть остальное в игре доступно после перетаскиваний. Весит более 1мб поэтому картинка здесь не принимается. :-[
Ничего ты хешем не сделаешь. ибо не для карт это предназначено. 8)
-
ключевая фраза ...Если конечно графика не меняется.
любой сдвиг игрового поля хоть на пиксель, любая пробегающая зверюшка на которые ты не обращаешь в игре ни какого внимания, любая анимация и до свидания любимый хеш - здравствуй вторая смена!
-
Чуток дополнил первый скрипт. Вставил инпутбокс для удобства.
Cпасибо, инпут как раз пригодился, обзывать клетки карты.
-
ключевая фраза ...Если конечно графика не меняется.
любой сдвиг игрового поля хоть на пиксель, любая пробегающая зверюшка на которые ты не обращаешь в игре ни какого внимания, любая анимация и до свидания любимый хеш - здравствуй вторая смена!
У меня только карта, посторонних спрайтов нет.
-
Oraven, как автоматически установить фокус на окно инпута ?
---
Сам нашел, Вы мне уже подсказывали ранее.
-
Здравствуйте.
Тут понадобилось сравнивать ХЕШ с маской.
Т.е. в центре прямоугольной области есть еще прямоугольник, хеш в котором нужно игнорировать.
Существует такое или нужно составлять картину из нескольких прямоугольников хеша, таким образом не затрагивая центральной части ?
-
Тут понадобилось сравнивать ХЕШ с маской.
Т.е. в центре прямоугольной области есть еще прямоугольник, хеш в котором нужно игнорировать.
Существует такое или нужно составлять картину из нескольких прямоугольников хеша, таким образом не затрагивая центральной части ?
Такого нет.
Нужно делить на области. Брать 4 прямоугольника "вокруг" и для каждой считать хэш.