Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars > GW Bots
You last visited: Today at 14:19

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Bot Problem C++

Discussion on Bot Problem C++ within the GW Bots forum part of the Guild Wars category.

Closed Thread
 
Old   #1
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
Question Bot Problem C++

Hey liebe Comunity,
ich bin neu hier in der GW Section und ich hab da ein Problem.
Und zwar hab ich mir mit etwas Hilfe mal einen kleinen Bot in C++ gebastelt,
der erstmal einfach ununterbrochen auf w drücken soll.
Deshalb wundert euch nicht über "while(wHandle > NULL)", das hab ich
einfach nur als Mittel benutzt, um w unendlich lange drücken zu lassen ^^

Nur mein Problem ist jetzt, dass egal welche Taste ich als "zu drückende Taste"
eingebe, der Bot drückt immer auf i.
Ist das ein Antibotsystem oder darf man nicht als Parameter "w" nehmen?

Als kleine Info/Vorbeugung von Flames:
#Ich bin C++ Anfänger, deshalb bitte nicht so hard zu mir sein
#Ich hab vorher noch nie nen Bot geschrieben und hab mir mein "Wissen"
größtenteils von msdn geholt^^

Btw:
Ich bin mir da echt nicht sicher mit dem "w" als Parameter.
Ich hab nämlich im Internet auch oft etwas wie 0x07500 oder so gesehen.
Hab auch gesagt bekommen, dass das Hexwerte für die Tasten sind,
aber gibts irgendwo ne Tabelle, wo man die Hex Werte nachgucken kann?

Ich hoffe ihr könnt mir helfen,
Thx schonmal im Voraus^^

€dit: Gott, bin ich blöd
Hier der Source^^
Code:
#include <iostream>
#include <windows.h>
#include <Winuser.h>

using namespace std;

int main()
{
    cout << "Starteee!!!!" << endl;

	HWND wHandle = FindWindow(0,L"Guild Wars");
		if(!wHandle)
		{
			cout << "Starte das verdammte Spiiiieeeelll!!!!" 
			<< " Errorcode: " << GetLastError() << '\n' << endl;
		}
	
		else
		{
			cout << "WindowHandle: " << wHandle << endl;

				while(wHandle > NULL)
				{
					SendMessage(wHandle, WM_KEYDOWN, NULL, (LPARAM) "w");
					SendMessage(wHandle, WM_KEYUP, NULL, (LPARAM) "w");

				}
		}
}
Σternαl. is offline  
Old 02/10/2010, 15:05   #2
 
elite*gold: 100
Join Date: Oct 2007
Posts: 738
Received Thanks: 485
ddl is offline  
Thanks
1 User
Old 02/10/2010, 15:07   #3
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
Und das jetzt anstelle von "w" einsetzen, oder soll ich damit ein anderes Parameter ersetzen?
Σternαl. is offline  
Old 02/10/2010, 15:14   #4
 
elite*gold: 100
Join Date: Oct 2007
Posts: 738
Received Thanks: 485
probiers mal über:

SendMessage(wHandle, WM_KEYDOWN, VK_KEY_W)

oder über den HEX Wert
ddl is offline  
Old 02/10/2010, 15:23   #5
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
Code:
while(wHandle > NULL)
				{
					SendMessage(wHandle, WM_KEYDOWN, NULL, 0x57);
					SendMessage(wHandle, WM_KEYUP, NULL, 0x57); 
				}
Da Macht er garnix

und bei

Code:
while(wHandle > NULL)
				{
					SendMessage(wHandle, WM_KEYDOWN, NULL, VK_KEY_W);
					SendMessage(wHandle, WM_KEYUP, NULL, VK_KEY_W); 
				}
sagt mir der Compiler: nichtdeklarierter Bezeichner.
Σternαl. is offline  
Old 02/10/2010, 15:49   #6
 
Valvepro's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 374
Received Thanks: 198
Hi - versuche mal dies! (Ist aber nicht für schreiben in den Chat!!!)
Erweitere sie dir wie DU willst.

PHP Code:
#include <iostream>
#include <windows.h>

void SendKey(charWindow,charKEY){
    
HWND hWND FindWindow(NULLWindow);int vKeySend;
    for(
int i=0;i<=0xFF;i++)if(MapVirtualKeyA(i,2) == toupper(*KEY))vKeySend i;
    
LPARAM pmLparam = (MapVirtualKey(vKeySend0) << 16);
    
PostMessage(hWNDWM_KEYDOWN0x0pmLparam);
    
PostMessage(hWNDWM_CHAR0x0pmLparam);
    
Sleep(100);
    
PostMessage(hWNDWM_KEYUP0x0pmLparam);


int main(){
do{
   
SendKey("Guild Wars","w");
}while(
1);
system("pause");
return 
0;

Falls du jedoch etwas in den Chat schreiben willst kannst du dies so machen:

PHP Code:
void WriteToChat(charWindow,charWrite){
    
HWND hwnd FindWindow(NULLWindow);long key;
    
PostMessage(hwndWM_KEYDOWN0x0000000D0x001C0001);
    
PostMessage(hwndWM_KEYUP0x0000000D0x001C0001);
    
Sleep(100);
    for(
unsigned int i=0;i<strlen(Write);i++){
        for(
int e=0;e<=0xFF;e++)if(MapVirtualKeyA(e,2) == toupper(Write[i]))key e;
        
PostMessage(hwndWM_KEYDOWNkeyNULL);
    }
    
Sleep(100);
    
PostMessage(hwndWM_KEYDOWN0x0000000D0x001C0001);
    
PostMessage(hwndWM_KEYUP0x0000000D0x001C0001);

Valvepro is offline  
Thanks
3 Users
Old 02/10/2010, 16:00   #7
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
Danke erstmal, aber ich bin ja noch Anfänger, vllt könntest du mir deine Funktionsweise
erklären, weil ich das auch lernen will und nicht nur copy & paste ^^

Btw hier mal der ganze Source:

PHP Code:
#include <iostream> 
#include <windows.h> 
#include <Winuser.h> 




using namespace std

int main() 

    
cout << "Starteee!!!!" << endl

    
HWND wHandle FindWindow(0,L"Guild Wars"); 
        if(!
wHandle
        { 
            
cout << "Starte das verdammte Spiiiieeeelll!!!!"  
            
<< " Errorcode: " << GetLastError() << '\n' << endl
        } 
     
        else 
        { 
            
cout << "WindowHandle: " << wHandle << endl

                while(
wHandle
                { 
                    
LPARAM lParam 0x57
                    
SendMessage(wHandleWM_KEYDOWNNULLlParam); 
                    
SendMessage(wHandleWM_KEYUPNULLlParam);  

                } 
        } 

Σternαl. is offline  
Old 02/11/2010, 18:54   #8
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
hm und ich dachte in dem anderen thread wurde dir alles 321324 fach erklärt.
kknb is offline  
Old 02/12/2010, 22:12   #9
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
Den Thread hier hab ich vor dem in der Coding Section erstellt.....
Und übrigens alles 321324 fach erklärt war das allemal nicht.
Hast du es verstanden?
Und nach 3 Tagen rumbetteln und rumflamen kam dann endlich ne Lösung,
die nicht geklappt hat, weil ich eine andere Funktion brauche.
Und das nennst du 32134whatever fach erklärt??
Σternαl. is offline  
Old 02/14/2010, 23:16   #10


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by FooFightah View Post
Den Thread hier hab ich vor dem in der Coding Section erstellt.....
Und übrigens alles 321324 fach erklärt war das allemal nicht.
Hast du es verstanden?
Und nach 3 Tagen rumbetteln und rumflamen kam dann endlich ne Lösung,
die nicht geklappt hat, weil ich eine andere Funktion brauche.
Und das nennst du 32134whatever fach erklärt??
ja, ich nenne das so
Du musst wie schon so oft gesagt, die Sprache erst lernen.
Und ganz ehrlich, wo ist bei DirectInput nun das Problem?
MrSm!th is offline  
Old 02/15/2010, 12:41   #11
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
Mein Problem liegt - wie schon mehrmals erklärt - darin,
dass ich nicht weiß, wie ich SendInput benutzen soll.
Also welche Syntax die Funktion hat, wie ich jetzt die Parameter
für die Strukturen etc hinbekomme und wie das ganze Grundchema überhaupt aussieht....
Σternαl. is offline  
Old 02/16/2010, 02:01   #12


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Meiiiiin Gott, dann lern endlich diese Sprache und wie man mit der MSDN umgeht.
Bist du echt zu faul, mal einmal dein Hirn und deine Augen zu nutzen?

So, 5 Minuten in der MSDN alles durchgelesen, 5min bisschen gegooglet und dabei ist dieses funktionierende C&P (C&P für dich; ich habe den Code selbst geschrieben versteht sich) Beispiel entstanden:
Code:
#include <windows.h>
#include <iostream>

int WINAPI WinMain(HINSTANCE hi,HINSTANCE hPrev,LPSTR Cmdline,int nShowCmd)
{
	HWND GW = NULL;
	do
	{
		GW = FindWindow(NULL,L"Guild Wars");
		Sleep(100);
	} while(!GW);
	SetForegroundWindow(GW);
	INPUT input;
	input.type = INPUT_KEYBOARD;
	input.ki.wVk =0x57;	//"W"   falls es nicht geht 0x77 für "w"
	input.ki.dwFlags = 0;
	input.ki.time = 0;
	input.ki.wScan = MapVirtualKey(0x57,0); // s.o.
	input.ki.dwExtraInfo = 0;
	SendInput(1,&input,sizeof(input));
	return 0;
}
oder das hier:

Code:
HWND GW = NULL;
do
{
	GW = FindWindow(NULL,L"Guild Wars");
	Sleep(100);
} while(!GW);
SetForegroundWindow(GW);
keybd_event(VkKeyScan('w'),MapVirtualKey(VkKeyScan('w'),0),0,0);
Sooo schwer, mal ein bisschen die MSDN zu durchstöbern
MrSm!th is offline  
Thanks
3 Users
Old 02/16/2010, 19:27   #13
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
VIIIELEN Dank dass du mir das gemacht hast^^
Aber irgendwie klappt es nicht, auch mit 0x77 nicht.
Btw warum hast du HWND GW = NULL geschrieben?
Und bei dem Code mit keybd_event zeigt gibt der Compiler Syntax Fehler und
zu viele Inistialisierungen aus.
Σternαl. is offline  
Old 02/16/2010, 23:37   #14


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Der Code geht so, wie er da steht; selbst getestet.

Also in S4 bin war ich ein Dauer-Gegen-Die-Wand-Läufer
Kann sein, dass GW irgendnen Schutz gegen sowas hat.
Obwohl, mit Autoit gehts ja auch, und Autoit übersetzt den Code ja nur in C++ Code, also muss es irgendwie gehen...
Das mit NULL schreibe ich einfach, weil eine Variable initialisiert wird, bevor sie verwendet wird ;D (ich weiß, ist da nicht unbedingt nötig, aber hab es mir so angewöhnt)

edit: Habs mit GW getestet; geht super.
MrSm!th is offline  
Old 02/17/2010, 14:27   #15
 
Σternαl.'s Avatar
 
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
Also nochmal zur Verständnis, soll ich bei dem obigen Code nur C&P, also nur diesen code?
Weil wenn ich das mache meckert der Compiler wegen:
"nicht aufgelöstes externes Symbol "_main" in Funktion "_tmainCRTStartup".
und
"nicht aufgelöste externe Verweise".

Aber beim 1. mal hab ich den Code nicht einfach nur eingefügt,
sondern noch ne main Funktion reingemacht, das brauch doch jedes C++ Programm oder?

Also meine main sah nur so aus, muss ja nix besonderes sein.

PHP Code:
int main()
{
       
std::cout << "Hallo" << std::endl;

Und vllt hilft es ja, ich denke SetForegroundWindow(Gw) bewirkt
wie in AutoIt WinActivate(), dass das Fenster in den Vordergrund (is ja klar, Foreground) kommt.
Jedoch hat das Programm mit keybd_event das nicht gemacht.
Also ich hab keine Ahnung, worans liegen kann.....

Wie gesagt mit AutoIt gehts super:


Und hier nochmal der Source in C++.
Also compiled ohne Probleme aber funktioniert halt nicht.

Und bitte nicht flamen, wenn der C++ Source falsch ist
Σternαl. is offline  
Closed Thread

Tags
bot, c++, guildwars, gw


Similar Threads Similar Threads
Metin 2 Pserver Problem/ Lösung für das Matrix Kartennummer Problem
01/04/2010 - Metin2 Private Server - 3 Replies
Hy Leute Wie in der Überschrift genannt, hab ich gerade ein Problem mit meinem Metin 2Server. Ich lasse ihn via Loopbackadapter laufen, funktioniert auch ganz gut. Ich hab aber jetzt das Poblem, das in meinem Account nur noch Krieger mit Level null stehen. Wie kann ich das Beheben??, das is auch manchmal da, wenn ich via Navicat n neuen Account mach. Hoffe einer hatt ne Lösung Hab n Screenshot im Anhang Aber ich hab ja auch ne Lösung für n anderes Problem. Gestern hatte ich beim...
[Problem] Problem with server starting - cannot find quest index for PaxHeader
12/22/2009 - Metin2 Private Server - 1 Replies
Hello! I have this same problem as here when i'm starting my server: http://www.elitepvpers.com/forum/metin2-pserver-di scussions-questions/307143-metin2-serverfiles-ques t-index-fehler.html But I didn't know the answer.. how to repair this? Greetings



All times are GMT +2. The time now is 14:19.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.