Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 07:41

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

Advertisement



C++ Problem

Discussion on C++ Problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
C++ Problem

Hallo zusammen,

Ich möchte in C++ einen Befehl schreiben der wenn der Benutzer Numpad0 drückt, etwas ausgeführt wird. Wie heisst der Befehl dafür? Und braucht man dafür noch welche Include´s?
MungoMango is offline  
Old 06/13/2011, 20:17   #2
 
elite*gold: 0
Join Date: Apr 2011
Posts: 901
Received Thanks: 164
Normaler weise hat das eher nix mit Metin2 zu tun.
Es soll z.B. ein Bot für Metin2 werden aber sowas gehört glaube ich eher in die Coder Section
xAlbStaR™ is offline  
Old 06/13/2011, 20:19   #3
 
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
Nein es soll ein Hack werden, bitte um Antwort.
MungoMango is offline  
Old 06/13/2011, 20:29   #4
 
banjo1's Avatar
 
elite*gold: 1371
Join Date: Dec 2007
Posts: 14,904
Received Thanks: 19,354
*moved
in der M2 Sektion kenne sich doch die wenigsten damit aus.
banjo1 is offline  
Thanks
1 User
Old 06/13/2011, 20:32   #5
 
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
Ok danke
MungoMango is offline  
Old 06/13/2011, 20:48   #6
 
banjo1's Avatar
 
elite*gold: 1371
Join Date: Dec 2007
Posts: 14,904
Received Thanks: 19,354
Kannst dir ja mal das durchlesen:
banjo1 is offline  
Thanks
1 User
Old 06/13/2011, 20:49   #7
 
elite*gold: 0
Join Date: Feb 2011
Posts: 413
Received Thanks: 20
Kannst du überhaupt C++
Unbekannt~ is offline  
Old 06/13/2011, 20:53   #8
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471

xNopex is offline  
Old 06/13/2011, 21:01   #9
 
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
Kann mir jemand ein Beispiel geben? z.B. der code für ein Programm: Wenn Numpad0 gedrückt wird, beendet sich das Programm.
MungoMango is offline  
Old 06/13/2011, 21:36   #10
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
:-/

Code:
    while(true)
    {
        Sleep(250);
        short keyState = GetAsyncKeyState(VK_NUMPAD0);
        if((keyState & 1) == 1)
            std::cout << "Numpad0 wurde gedrueckt";
            
    }
xNopex is offline  
Thanks
2 Users
Old 06/14/2011, 13:55   #11
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
Irgendwie verstehe ich nicht folgenden Abschnitt, also ich verstehe ihn schon, nur nicht wieso das so angewandt wird.

Code:
if((keyState & 1) == 1)
Wenn die taste gedrückt worden ist, wird ja 1 wiedergegeben.
Deswegen hätte ich folgendes gemacht:

Code:
if(keyState == 1)
, das funktioniert soweit aber nicht.
Würdest du mir eklären wieso du
Code:
if((keyState & 1) == 1)
geschrieben hast?

Lg
.BritainAndy is offline  
Old 06/14/2011, 14:31   #12
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Quote:
Wenn die taste gedrückt worden ist, wird ja 1 wiedergegeben.
Nö.
Siehe MSDN:
Quote:
If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.
Da man keinen direkten Zugirff auf einzelne Bits hat, sondern immer nur auf eine bestimmte Anzahl gleichzeitig (vgl. Byte, Word, DWord, QWord), bedient man sich der Bit-Operatoren, um zu prüfen, welche Bits gesetzt sind und welche nicht.
Bit-Operatoren Siehe:

Nun ist das ganze auch kein Geheimnis mehr. Will man prüfen, ob das niedrigste Bit gesetzt ist, also das Bit an der Stelle 0, nimmt man den AND-Operator:

Code:
Wenn niedrigstes Bit gesetzt:
11001001 00010001 //Rückgabewert von GetAsyncKeyState [sizeof(short) = 16bit]
00000000 00000001 // (2^0)= 1 in dualer Schreibweise
-------------------
00000000 00000001 //Ergebnis nach der AND-Operation (=1)

Wenn niedrigstes Bit nicht gesetzt:
11001001 00010000 //Rückgabewert von GetAsyncKeyState
00000000 00000001 // (2^0)=1 in dualer Schreibweise
-------------------
00000000 00000000 //Ergebnis nach der AND-Operation (=0)
xNopex is offline  
Thanks
1 User
Old 06/14/2011, 14:52   #13
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
Ah, okay.

Also werden bei einem Tastenschlag bits gesetzt und mit dem bit operator & prüft man dies dann?

wenn ja, dann hab ich es glaub ich verstanden.
.BritainAndy is offline  
Old 06/14/2011, 15:26   #14
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Keine Ahnung, was genau intern passiert, wenn du eine Taste drückst. Da werden wahrscheinlich auch iwelche Bits gesetzt, verschickt, etc.
Für dich wichtig ist einfach nur, dass GetAsyncKeyState() eine Variable vom Typ "short" zurückgibt. Eine Variable vom Typ short ist 16bit lang, entspricht also einem WORD = 2Byte. Laut MSDN repräsentiert das niedrigste Bit, ob die Taste nach dem letzten Aufruf von GetAsyncKeyState() gedrückt wurde oder nicht. Da du aber nur auf die 16bit insgesamt Zugriff hast und nicht auf das einzelne Bit des Rückgabewerts, nimmst du eine AND-Maske, um das niedrigste Bit herauszufiltern. Das niedrigste Bit ist an der Stelle 0, d.h. du musst mit dem Wert 2^0 = 1 = 0000000000000001 vergleichen. Mehr steckt da nicht dahinter.
xNopex is offline  
Thanks
1 User
Old 06/14/2011, 16:44   #15
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
alles klar, habs dann verstanden, danke :-)
.BritainAndy is offline  
Reply


Similar Threads Similar Threads
[Hilfe]Ungelöstes Server Erstell Problem, ausführliche Problem Schilderung
09/15/2011 - Flyff Private Server - 8 Replies
Hey Com! Ich hoffe, dass dieser Thread nicht als Spamthread angesehen wird, da ich ja gestern schon einen zu diesem Thema eröffnet habe. Sorry wenn ich euch mit dem Thema nerve, aber ich sitze nun schon 4 Tage über dem Problem, und finde einfach keine Lösung. Nun werde ich hier allerdings eine ausführlichere Beschreibung des Problems geben. Mein Problem ist, dass ich den Windows Mssql Server 2008/2005 aus Sedrika's TuT nicht installieren kann, da sobald ich ihn immer installiere...



All times are GMT +2. The time now is 07:41.


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.