Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ Prosty anti-afk bot


Rekomendowane odpowiedzi

Opublikowano

Witam,

uczę się programowania w języku C++, jestem początkujący. Chce napisać prostego anti-afk bota. Widziałem, że mogę symulować klawisze przy pomocy takiego kodu (sprawdziłem i działa wypisywanie liter na czacie):

#include <iostream>
#include <chrono>
#include <thread>
#include <Windows.h>


using namespace std;




HWND hWnd = FindWindowA(0, "Tibia - nickpostaci");


void GenerateKey(BYTE k)
{
INPUT Input;
ZeroMemory(&Input, sizeof(Input));
Input.type = INPUT_KEYBOARD;
Input.ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
Input.ki.wVk = k;
SendInput(1, &Input, sizeof(INPUT));
}


int main()
{
SetForegroundWindow(hWnd);
GenerateKey((UCHAR)VkKeyScan('klawisz'));


this_thread::sleep_for(chrono::seconds(10));
return 0;
}

Teraz dwa pytania:
- czy to jest wykrywalne?

- czy mogę z tego korzystać, czy znacie może jednak lepsze rozwiązania?

 

Co do sekwencji klawiszy CTRL + strzałki to pewnie coś w necie o tym jest.

Opublikowano
HWND hWnd = FindWindowA("TibiaClass", NULL);

spróbuj czy tak będzie działało

 

co do wykrywalnosci - raczej nie, ( nie ingerujemy tym programikiem w pamiec tibii )

 

@dratewka

Tak, żeby było Ci wygodniej go używać.

 

try

 

HWND hWnd = FindWindow("TibiaClient", 0);
Opublikowano

Niestety nie działa. Chcesz zrobić tak, aby bot był dynamiczny i działał na każdej postaci, tak?

 

@EDIT: Teraz działa, jak natura chciała. Dzięki.

 

@EDIT2: Znalazłem inną funkcję w internecie, na której się wzorowałem. Wiem, że kod wygląda na prawdę źle, ale jestem początkujący, dlatego proszę o wskazówki/rady jak go mogę poprawić.

 

#include <iostream>
#include <chrono>
#include <thread>
#include <Windows.h>
#include <time.h>

using namespace std;


HWND hWnd = FindWindowA("TibiaClient", NULL);

void ArrowRight()
{
	int delay_turn;
	srand(time(NULL));
	delay_turn = rand() % 1200 + 800;
	keybd_event(VK_RIGHT, 0, 0, 0);
	keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0);
	this_thread::sleep_for(chrono::milliseconds(delay_turn));
}

void ArrowLeft()
{
	int delay_turn;
	srand(time(NULL));
	delay_turn = rand() % 1200 + 800;
	keybd_event(VK_LEFT, 0, 0, 0);
	keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);
	this_thread::sleep_for(chrono::milliseconds(delay_turn));
}

void ArrowUp()
{
	keybd_event(VK_UP, 0, 0, 0);
	keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
}

void TurnAround()
{
	keybd_event(VK_CONTROL, 0x9d, 0, 0);
	ArrowRight();
	ArrowLeft();
	ArrowUp();
	keybd_event(VK_CONTROL, 0x9d, KEYEVENTF_KEYUP, 0);
}

int main()
{
	int delay_loop;
	srand(time(NULL));

	SetForegroundWindow(hWnd);
	if (hWnd != 0)
	{
		cout << "Tibia was found!" << endl;
		while (true)
		{
			delay_loop = rand() % 260 + 120;
			cout << delay_loop << endl;
			TurnAround();
			this_thread::sleep_for(chrono::seconds(delay_loop));
		}
	}
	else
	{
		cout << "Tibia wasn't found!" << endl;
	}

	this_thread::sleep_for(chrono::seconds(10));
	return 0;
}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...