Вопрос Каким образом можно реализовать бота в доте для фарма часов?

Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2019
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Всем привет! Недавно начал увлекаться программированием (на Python) и сразу поставил задачу, в которой мне было б интересно разобраться. Но не могу найти решения. Вопрос находится в шапке (Имеется в виду бот который будет играть в доту), пытался реализовать через cv2, хотел, разработать логику компьютерному зрению, но, на винде некоторые ее функции попросту не работают. Просерфил, как мне кажется весь интернет и есть вариант, реализовать его только следующим образом: посмотреть в памяти игры где находятся вражеские юниты (рисунок 1), нашел статью на хабре как человек делал подобное, но реализовывал возрождение рошана и его тайминг, но для меня реверс инжинеринг пока что сложный, да и в целом это уже получится не бот, а скорее чит + я не разбираюсь в том как скрыть от античита то, что я копаюсь в памяти игры и вряд-ли смогу написать свой лоадер. Хотел бы, чтоб человек, который хоть немного разбирается мог подсказать реализацию подобного софта\скрипта (Я разрабатываю его для себя, не для продаж!!!!)
 

Вложения

Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
324
Реакции[?]
24
Поинты[?]
12K
C++:
void RunMainScript()
{
 /// main logic of the bot

 /// if our hero is alive

 /// choose initial lane

 /// attack creep, hero

 /// run to fountain if has < 40% hp 
 
 /// print in chat "gg wp" if self + 4 ally's status is dead
 
}

void Update()
{
    while(true)
    {
        if(IsProcessOpen("dota2.exe"))
        {
            
            if(IsInMenu())
            {
                if(IsSearchingGame())
                {
                    TryAcceptGame();
                }
                else
                {
                    StartSearchingGame();
                }
            }
            else
            {
                // pick phase
                if(IsInPickPhase())
                {
                    if(!PickedLocalHero())
                    {
                        if(CanPickHero())
                        {
                            PickHero(pudge);
                        }
                    }
                }
                else
                {
                    // Probably game phase
                    RunMainScript();    
                }
                
            }
        }
        else
        {
            StartProcess("dota2.exe");
            Sleep(9000);
        }
        Sleep(100);
    }
}
 
Сверху Снизу