OldSchoolHack

Register / Login English

Form bei einer .dll?


icon Form bei einer .dll? #1

Join Date: May 2011

Posts: 6

Ich arbeite zurzeit an einer art Gui menü, ich machs mit Boxne die ich zeichnen lasse und halt dann abfrage ob die Maus sich auf der Box befindet und man einen Mausklick ausübt. Was nach ner zeit echt nervig wird 100te von Boxen zu machen für paar funktionen. Meine Frage nun, ist es eigendlich möglich eine Windows Form in einer .dll einzufügen die halt mit F12 geöffnet und geschlossen wird? Ich denke nicht das Coder wie bei x22 oder dem OldSchoolHack Injected z.b immer ne Box zeichnet und abfragen ob die Maus drauf ist, währe doch bei vielen Funktionen echt nervig.

greetz.

icon #2

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Windows Forms kann man nicht benutzen, weil das Spiel an sich schon eine Form ist und man die neue Form nicht einfach vornedran anzeigen lassen kann.
"Die anderen Coder" zeichnen aber Kästchen und fragen ab ob sich die Maus dadrüber befindet. Allerdings zeichne ich zB alles nur einmal in einer Klasse und erzeuge dann neue Instanzen von der Klasse. Google @ Klassen C++

greetz KN4CK3R

__________________

Hallo
icon #3

Join Date: May 2011

Posts: 6

CPP Code:
  1. typedef void (*OnClick)();
  2.  
  3. class cButton
  4. {
  5.  
  6. public:
  7. cButton(int x, int y, bool checked, char *text, OnClick click);
  8. ~cButton(void);
  9.  
  10. int X;
  11. int Y;
  12. bool Checked;
  13. OnClick Clicked;
  14. };
  15.  
  16. cButton::cButton(int x, int y, bool checked, char *text, OnClick click)
  17. {
  18. X = x;
  19. Y = y;
  20. Checked = checked;
  21. Clicked = click;
  22. text;
  23. }

soweit bin ich nun, jedoch verstehe ich nicht wie ich diese Instanzen machen soll? also das der nun erkennt ob ich nun den Button 1 oder Button 2 gedrückt habe.
icon #4

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
du könntest dort zB eine Funktion bool checkIn(int x, int y) machen die überprüft, ob x und y innerhalb des Bereichs des Buttons liegen

greetz KN4CK3R

__________________

Hallo
icon #5

Join Date: May 2011

Posts: 6

CPP Code:
  1. cCheckBox::cCheckBox(int x, int y, bool checked, char *text, OnClick click)
  2. {
  3. X = x;
  4. Y = y;
  5. Checked = checked;
  6. Clicked = click;
  7. text;
  8. bool checkIn(int x, int y);
  9. }

so? Wenn ja weiß die funktion doch immernoch nicht welche Box es nun ist? Also als Beispiel nun Disable Spread und Disable Recoil? Wie würde die Box erkennen das diese nun auch die richtige Funktion Aktiviert / Deaktiviert?
icon #6

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
dazu würdest du ein cButton Objekt anlegen und das wüsste ja dann zu welchem Bereich es gehört

greetz KN4CK3R

__________________

Hallo
icon #7

Join Date: May 2011

Posts: 6

das ist ja das gleiche wie das hier dann oder?
CPP Code:
  1.  
  2. void cMenu::SetBox( int x, int y,int ColorType, char *text, IDirect3DDevice9* pDevice )
  3. {
  4. DrawBox(x, y, 75, 20, 1, D3DCOLOR_ARGB(255,ColorType, ColorType, ColorType), D3DCOLOR_ARGB(255,0, 0, 0) ,pDevice);
  5. DrawGameTextPixel( x+5, y, D3DCOLOR_ARGB(255,255,255,255) , text );
  6. }

und dann halt immer ne Box machen und dies mit ner MouseOver funktion auslesen und dann halt den Int von der funktion auf 1 oder 0 setzen, das ist doch ne heiden arbeit bei ca 50 funktionen oder ähnliches, irgentwie muss es doch da ne vereinfachung geben oder?
icon #8

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
dass man die Logik in Klassen kapselt ist doch eine Vereinfachung? Braucht man doch alles nur noch einmal machen.

greetz KN4CK3R

__________________

Hallo
icon #9

Join Date: May 2011

Posts: 6

Mmh ist doch dann das gleiche wie das mit der SetBox, man muss mit der Klasse doch auch immer eine neue Box machen und diese erneut abfragen, oder verstehe ich das irgentwie falsch?


Ich habe z.b für die Funktion No Spread es so gemacht:
CPP Code:
  1. SetBox(x+60, y+150, SpreadColor, "No Spread", pDevice );
Dabei wird nun der Text und die Box gesetzt. SpreadColor habe ich oben im script mit int definiert und es auf 20 gesetzt, so ist die Box dunkel. Nun aktiviere ich die Funktion mit der Mouse:

CPP Code:
  1. if(IsMouse( x+60, y+150, 75, 20 ) && m_lm)
  2. {
  3. if(sNoSpread == 0)
  4. {
  5. SpreadColor = 50; //Damit die Box nun hell wird.
  6. sNoSpread = 1;
  7. }
  8. if(sNoSpread == 1)
  9. {
  10. SpreadColor = 20; //Damit die Box wieder dunkel wird.
  11. sNoSpread = 0;
  12. }
  13. }

Es funktioniert auch Top, nur es ist sehr aufwendig für viele funktionien immer das selbe zu machen oder machst du z.b das auch so?
icon #10

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
das muss man so machen, aber der Code ist ja nicht in der Button Klasse dann.

greetz KN4CK3R

__________________

Hallo
icon #11

Join Date: May 2011

Posts: 6

CPP Code:
  1. void cMenu::SetBox( int x, int y,int ColorType, char *text, IDirect3DDevice9* pDevice )
  2. {
  3. DrawBox(x, y, 75, 20, 1, D3DCOLOR_ARGB(255,ColorType, ColorType, ColorType), D3DCOLOR_ARGB(255,0, 0, 0) ,pDevice);
  4. DrawGameTextPixel( x+5, y, D3DCOLOR_ARGB(255,255,255,255) , text );
  5. }

Habe den SetBox code definiert. D.h nun anders geht es nicht? also muss ich nun immer diese Funktion neu machen. mmh ich dachte das geht auch irgentwie einfacher :3 Das gibt doch bestimmt nen starken FPS drop oder?