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

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

Вложения

  • изображение_2024-05-07_070402059.png
    изображение_2024-05-07_070402059.png
    2.9 MB · Просмотры: 75
C++:
Expand Collapse Copy
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);
    }
}
 
Назад
Сверху Снизу