leertaste im hintergrund laufen lassen

10/28/2008 18:05 [PixeL]#1
hallo,
ich brauche ein bot der im hinter grund die leertaste drückt ich würde das selber machen nur bei nostale geht controlsend nicht mehr :mad: also bitte ich jemanden ein bot zu scripten der im hintergrund die leertaste drückt mehr auch nicht


danke
10/29/2008 14:40 €RRoRS#2
geht nicht "nur" Send("{SPACE}") ??? =/
10/30/2008 11:30 °Remus°#3
Quote:
Originally Posted by €RRoRS View Post
geht nicht "nur" Send("{SPACE}") ??? =/
er will das der tastendruck an ein minimiertes fenster gesendet wird, was mit dem normale send befehl nicht möglich ist
11/01/2008 18:09 neji#4
Programmier schon länger nicht mehr aktiv aber so wie ich das behalten habe, hast du 3 Möglichkeiten.

a) Du injizierst eine Funktion in das andere Programm startest dort nen timer der dann von sich aus die Leertaste "drückt"

b) KeybdEvent / SendInput

c) SendMessage / PostMessage

für b) muss das Fenster allerdings sichtbar sein, c) sollte auch gehen wenn es Minimiert ist....du musst allerdings dazu das Fensterhandle haben (FindWindow())
11/04/2008 13:45 [PixeL]#5
das verstehe ich nciht kanst du mir vll ein bot machen der das macht?
11/05/2008 00:03 wurstbrot123#6
wenn du willst kann ich dir nen Programm schreiben das immer die Leertaste drückt nur nicht minimiert halt mit keybd_event naja...also falls es noch brauchst schreib mir ne PN
11/05/2008 04:47 scbiz#7
Hi,

ich finde, dass das eine Frechheit von dir ist. neji opfert dir etwas von seiner Zeit und bemüht sich dir eine möglichst hilfreiche Antwort zu geben, aber von deiner Seite kommt rein gar nichts. Bist du nicht fähig eine Suchmaske zu benutzen und dir so Informationen über die Schlagwörter aus neji's Beitrag zu beschaffen?

So lernst du doch nie etwas und wirst ewig auf die Hilfe anderer angewiesen sein. Wenn dir die Tatsache, dass du somit auf Lebenszeit ein Noob bleibst, nichts ausmacht, dann kann ich dir mal schnell ein Beispiel in C++ dahinscheißen...


Edit: Nice! Nun ist es 04:49, ergo habe ich für diesen Source nur 2 Minuten gebraucht. Das auch nur, weil ich langsam tippe. Giev mii cookiez pleez?
Code:
#include <windows.h> 
#include <stdio.h> 

int main(int argc, char** argv)
{
	HWND hFenster, hFeld;
	BOOL bPunkt = false;
	char* caPfad;

	if(caPfad = getenv("windir"))
	{
		printf("Starte Notepad (minimiert)\n");

		sprintf(caPfad, "%s\\system32\\notepad.exe", caPfad);

		ShellExecute(NULL, NULL, (LPCSTR) caPfad, NULL, NULL, SW_MINIMIZE);
	}

	printf("Warte auf das Notepad");

	while(!(hFenster = FindWindow("Notepad", NULL)))
		Sleep(5);

	printf("\r%s\n\n %s\n %s\n  0x%X%s\n",
		   "Das Notepad ist bereit     ",
		   "  Handle  |  Beschreibung  ",
		   "----------|----------------",
		   hFenster," |  Hauptfenster  ");

	if(hFeld = FindWindowEx(hFenster, NULL, "Edit", NULL))
	{
		printf("  0x%X%s\n\n%s\n\n",
			   hFeld," |    Edit Box   ",
			   "Starte Schleife, F9 = beenden");
		
		while(!(GetAsyncKeyState(VK_F9) & 1))
		{
			printf("\r%c", (char) ((bPunkt) ? 1 : 2));

			bPunkt = !bPunkt;

			PostMessage(hFeld, WM_KEYDOWN, VK_SPACE, NULL);
			
			Sleep(750);
		}

		printf("\n");
	}
	else
		printf("Feld wurde nicht gefunden\n");

	printf("\nDr\x81 \bcke eine Taste um zu schlie\xE1 \ben...");

	getchar();

	return 0;
}

Edit2: Vielleicht lade ich mir später sogar noch NosTale herunter und wende das Beispiel dann darauf an. Bin ich heute sozial gelaunt oder was...

Edit3: Inzwischen habe ich mir NosTale heruntergeladen, angeschaut, den Quelltext angepasst und für dich kompiliert. Das Spiel ist ja wie geschaffen für Bots.
11/08/2008 00:21 neji#8
danke Nop0x90 für diese Antwort.....der Schönheit wegen, würd ich noch ein WM_KEYUP senden.

LG
11/08/2008 02:58 scbiz#9
Quote:
Originally Posted by neji View Post
danke Nop0x90 für diese Antwort.....der Schönheit wegen, würd ich noch ein WM_KEYUP senden.

LG
WM_KEYUP führt beim Notepad nicht zum gewünschten Ziel, im "Bot" jedoch verwende ich auch WM_KEYUP.
11/08/2008 12:37 syntex#10
Quote:
a) Du injizierst eine Funktion in das andere Programm startest dort nen timer der dann von sich aus die Leertaste "drückt"
Das ist genau das was ich machen würde, aber dazu noch mit dem Mob Check.

z.B.

mob = Adresse für Monster ( hp usw )

Quote:
switch(mob)
{
case 0: // Kein Monster aktiv
SendKey(VK_KEY32); // Leertaste
break;
case 1: // Monster angeklickt.
SendKey(VK_KEY49); // 1 - Evlt belegt mit Skill
break;
}
11/08/2008 13:16 Atheuz#11
Quote:
Originally Posted by syntex View Post
Das ist genau das was ich machen würde, aber dazu noch mit dem Mob Check.

z.B.

mob = Adresse für Monster ( hp usw )
Dito, allerdings benutzt NosTale ein System das nicht das nahste Monster auswählt, sondern das mit der niedrigsten MonsterID in der Zelle. Sofern sollte es eigentlich egal sein für ~System~, da immer das gleiche Monster angegriffen und ausgewählt wird mit Leertaste. Ich machs aber auch so, mit ausnahme das ich in meiner Angriffschleife i hochzählen lasse und jenachdem wann i welchen Wert hat kann ich auch einen anderen Mob suchen, oder eben einen Skill der nur am anfang oder ende benutzt wird.
11/08/2008 14:02 syntex#12
Quote:
Originally Posted by Atheuz View Post
Dito, allerdings benutzt NosTale ein System das nicht das nahste Monster auswählt, sondern das mit der niedrigsten MonsterID in der Zelle. Sofern sollte es eigentlich egal sein für ~System~, da immer das gleiche Monster angegriffen und ausgewählt wird mit Leertaste. Ich machs aber auch so, mit ausnahme das ich in meiner Angriffschleife i hochzählen lasse und jenachdem wann i welchen Wert hat kann ich auch einen anderen Mob suchen, oder eben einen Skill der nur am anfang oder ende benutzt wird.
Habs gerade mal installiert, und lade mir gerade die Updates runter.

Werde gleich mal schauen, was ich machen kann.

Wenn es mit so einer MobID geregelt ist. Und wie das ganze aussieht (vom gameplay her) damit ich mir en bild machen kann , wie der bot attacken muss u.s.w.

@@@ Edit @@@
Das Game ist ja ein bot paradise eh :)

Würde gerne mit GUIs arbeiten , hab aber kaum erfahrung mit guis in c++ die auf spiele zu greifen :P .. wollte es eh mal lernen bzw. anfangen.

Hooke lieber die Leertaste vom Spiel, ist einfacherer.
11/09/2008 12:58 uni3#13
Quote:
Originally Posted by ~System~ View Post
hallo,
ich brauche ein bot der im hinter grund die leertaste drückt ich würde das selber machen nur bei nostale geht controlsend nicht mehr :mad: also bitte ich jemanden ein bot zu scripten der im hintergrund die leertaste drückt mehr auch nicht


danke
leider nicht mehr möglch seit den letzten updates von nostale:mofo:
11/09/2008 16:37 syntex#14
für jeden der sich dafür intressiert.

Aus Nostale:
Quote:
00495B28 |. 6A 00 PUSH 0 ; /ExtraInfo = 0
00495B2A |. 6A 00 PUSH 0 ; |Flags = 0
00495B2C |. 6A 00 PUSH 0 ; |/Action = 0
00495B2E |. 6A 20 PUSH 20 ; ||Key = 20
00495B30 |. E8 EF21F7FF CALL <JMP.&user32.MapVirtualKeyA> ; |\MapVirtualKeyA
00495B35 |. 50 PUSH EAX ; |ScanCode
00495B36 |. 6A 20 PUSH 20 ; |Key = VK_SPACE
00495B38 |. E8 AF23F7FF CALL <JMP.&user32.keybd_event> ; \keybd_event
00495B3D |. 6A 00 PUSH 0 ; /ExtraInfo = 0
00495B3F |. 6A 02 PUSH 2 ; |Flags = KEYEVENTF_KEYUP
00495B41 |. 6A 00 PUSH 0 ; |/Action = 0
00495B43 |. 6A 20 PUSH 20 ; ||Key = 20
00495B45 |. E8 DA21F7FF CALL <JMP.&user32.MapVirtualKeyA> ; |\MapVirtualKeyA
00495B4A |. 50 PUSH EAX ; |ScanCode
00495B4B |. 6A 20 PUSH 20 ; |Key = VK_SPACE
00495B4D |. E8 9A23F7FF CALL <JMP.&user32.keybd_event> ; \keybd_event
11/09/2008 16:57 Atheuz#15
Quote:
Originally Posted by uni3 View Post
leider nicht mehr möglch seit den letzten updates von nostale:mofo:
lol @ Leute die PostMessage nicht kennen.

Syntex, du machst aber ganz schön viele Lieder bei Osu ;O