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.


Topics - sektant23tm

Pages: [1]
1
Предложения / Потоки
« on: January 30, 2019, 08:13:30 PM »
Потоки - вещь очень удобна,но слишком ограниченная.У потоков есть свои подпрограммы,но почему нет своего гетскрина и своего колормода?Я написал неплохого бота по EVE Online ,но половину функционала можно было бы значительно ускорить и упростить если бы некоторые вещи выполнялись параллельно,например проверка на дроп интернета,проверка на суицидников в гриде,проверка на размеры окон,не закрылись или не переместились ли они из-за миссклика.Бот состоит из кучи подпрограмм,и теперь эти проверки приходится пихать по ходу дела,последовательно,затормаживая работу.Сделайте,пожалуйста,такой функционал в следующем обновлении(надеюсь оно выйдет пораньше чем прошлое и уверен,многие скажут за него вам отдельное СПАСИБО)  :D

2
Общие вопросы / Вопрос про потоки
« on: January 26, 2019, 11:58:59 PM »
Добрый день товарищи,имеется к вам такой вот интересный вопрос.

Есть скрипт,вот его суть :

Code: [Select]
Поток

getscreen

colormode(5,$x_sys_info-780,$y_sys_info+9,$x_sys_info-30,$y_sys_info+80)          //Таргеты

colormode(7,$x_obz_panel-21,$y_obz_panel+79+($vsegogaits*19),$x_obz_panel+2,$y_obz_panel+400)     //Полоска неписи   //

colormode(7,$x_name-7, $y_name+13,$x_type-9, $y_type+335) //Фракционник + суицидник

colormode(6,$x_sys_info-780,$y_sys_info+110,$x_sys_info-30,$y_sys_info+190)

waitms(500)
end_поток


Так же имеется цикл,для которого этот поток работает

Code: [Select]
вайл($что-то там=0)

подпрограмма 1

подпрограмма 2

подпрограмма 3

end_цикл

Поток делает анализ снимка экрана,а вайл,работая с потоком параллельно,берет этот анализ снимка и ищет последовательно подпрограммами свои цели.
Проблема в том,что иногда(8 из 10) случаем вайл берет информацию когда поток успел сделать гетскрин и 1 -2 колормода обработать(они ведь работают параллельно) и получается что все трещит по швам т.к подпрограммы думают что заданных целей для них нет.На скриншотах видно что я имею ввиду.Так вот,как это можно решить?Может как-то можно все колормоды одной программой задать вместе с гетскрином?Тогда либо новый отфильтрованный снимок уже есть,либо если программа не успела сделать новый - в буфере должен был остаться старый отфильтрованный.Можно конечно выкинуть поток в помойку и просто сделать это подпрограммой,но прелесть потока именно в параллельности,бот сможет гораздо быстрее отреагировать на всяких неожиданных гостей ,поскольку каждые полсекунды он сканирует наличие этих самых незваных гостей,в то время как подпрограмме пришлось бы ждать своей очереди на выполнение.Надеюсь кто-то с таким сталкивался и решение лежит на поверхности ,а я еще слишком зелен чтобы его самостоятельно увидеть)

3
Общие вопросы / Переменные
« on: December 27, 2018, 04:51:38 PM »
Добрый день знатоки кликермана! :)

Сразу к делу:

Я написал бота под игру,он прекрасно работает и выполняет все что мне от него нужно.Время от времени я стараюсь его улучшить,чтобы он работал точнее и быстрее.Сейчас при запуске бот около 30 секунд гетскринит,считывает существующие координаты всех нужных в игре окон(через IF_PICTURES_IN) и запоминает координаты и в дальнейшем ему не приходится при обращении к ним искать их заново по всему экрану,он уже имеет их координаты.Захотел я сделать это считывание координат более быстрым и интереесным.
Я решил переделать скрипт,чтобы он прежде чем искать картинку по всему экрану обращался в config.ini для поиска координаты этого окна с предыдущего прогона.Тоесть например кликер ищет окно склада,обращается к INI файлу,находит там $xsklad и $ysklad(стартовые координаты картинки) ,проверяет условие IF_PICTURE_IN ($xsklad, $ysklad, $x_max,$y_max, "img/sklad.bmp", -1, 90) .Если скрипт срабатывает - бот переходит к поиску следующей картинки,если не срабатывает,то $xsklad и $ysklad делает равным 0,ищет еще раз и ,обнаружив,перезаписывает координаты в INI файл.Все это я сделал,все это легко


Код имеет примерно такой вид

Code: [Select]

//----------------SKLAD---------------------------//
$analiz="0"
WHILE($analiz < 1)

$xsklad=INIREAD("config.ini", "$xsklad","Analizsystem")
$ysklad=INIREAD("config.ini", "$ysklad","Analizsystem")

IF_PICTURE_IN ($xsklad, $ysklad, $x_max,$y_max, "img/sklad.bmp", -1, 90)

print("SKLAD..ОК")

$xsklad=$_return1
$ysklad=$_return2

$analiz="1"

print("Перезаписываю координаты")
INIWRITE("config.ini", "$xsklad", $xsklad ,"Analizsystem")
INIWRITE("config.ini", "$ysklad", $ysklad ,"Analizsystem")


ELSE

$xsklad="0"
$ysklad="0"
$record="1"

END_IF

END_CYC
//=======================================================//



Так вот,перед тем как основной скрипт приступит к работе ему надо найти около 30 таких картинок на экране.Я как нубас могу написать просто 30 раз кусок этого кода каждый раз меняя переменные $xsklad и $ysklad на другие,но я хочу сделать это красиво через WHILE чтобы при каждом новом цикле этого оператора у меня из INI файла брались значения трех переменных (картинка,х,у),подставлялись в cкрипт и отрабатывали ,после чего по новой до тех пор пока while не закроется.Но я столкнулся с проблемой,что я не могу заменить одну переменную на другую.Например у нас есть кусочек кода


Code: [Select]
$xnn=INIREAD("config.ini", "$xnn","Analizsystem")

В нем я хочу заменить $xnn на $xdps.Я пробовал через все что нашел в справке,особенно близок был STRREPLACE,но все мои усилия привели лишь к тому,что $xdps воспринимался программой не как переменная при подобного рода замене,а как просто текст.По сути мне нужно понять как именно заменить одну переменную на другую,не приравнять их ,а именно  заменить.


Я очень надеюсь что решение очень простое,но я по неопытности и невнимательности его каким-то образом обошел.



Pages: [1]