|
You last visited: Today at 10:52
Advertisement
IngameForm für Wolfteam erstellen
Discussion on IngameForm für Wolfteam erstellen within the C/C++ forum part of the Coders Den category.
07/02/2012, 17:14
|
#1
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
IngameForm für Wolfteam erstellen
Hallo Coders ich wollte mal ein IngameFenster für Wolfteam erstellen und jetzt wollt ich mal fragen, wie ich das realisieren kann.
Ich hab schon davon gehört, dass man da eine DLL erstellen muss, aber ich kenn mich da gar nicht aus. ):
Habt ihr vielleicht schonmal mit sowas gearbeitet?
Ich selber habe wenig ahnung von c++, aber sagt mir bitte nicht, das ich was einfaches machen soll und nicht sowas.
Wenn es auch per code geht wäre es nett, wenn ihr mir einen geben könnt wäre echt nett.
|
|
|
07/02/2012, 20:49
|
#2
|
elite*gold: 0
Join Date: Jun 2012
Posts: 187
Received Thanks: 58
|
Kenne Wolfteam nicht und finde per google auch nichts, das darauf hindeutet, dass sowas gewollt ist.
Aber du kannst versuchen Wolfteam im Windowed Mode laufen zu lassen, sodass es zwar über den ganzen Screen geht aber kein FullScreen ist (bei WoW und vielen anderen Games heisst das in den Optionen FullScreen (run in Windowed Mode)). Dann kannst du ein Fenster von deinem eigenen Programm drüberlegen, das Fenster stellst du dann auf wsStayOnTop und schon hast du ein Fenster über das eigentliche Spiel. Das kannst du mittels windows-api auch noch halbtransparent machen.
Wenn Wolfteam dafür keine Option bietet, so kann man das zumindest mit ner nvidia GPU über das nvidia system-preferences Menü dazu zwingen, das ATI äquivalent müsste sowas auch können. Allerdings kann es dann sein, dass deine Maus (da es ein egoshooter ist) sich am Bildrand auffängt. Falls das so ist, bietet sich nurnoch die Option, dass du Wolfteam's Rendering funktionen hookst und detourst.
|
|
|
07/02/2012, 21:51
|
#3
|
elite*gold: 0
Join Date: Jun 2012
Posts: 9
Received Thanks: 2
|
Wenn du grundlegende direct3d kenntnisse besitzt, kannste eine .dll injecten, die alle zum zeichnen des fensters benötigten d3d funktionen hookt. (Wenn du die Funktionen nicht selber hooken willst kannste auch nach dem "D3D Starterkit" projekt suchen (dort sind bereits alle direct3d funktionen gehookt) und das dann weiterschreiben). Wenn du keine direct3d Kenntnisse besitzt und nicht weißt wie du so ein fenster generell zeichnest musst du dir entweder das wissen aneignen oder du kopierst nen paar code beispiele die man im internet findet und passt die an deine bedürfnisse an.
|
|
|
07/02/2012, 22:35
|
#4
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
Quote:
Originally Posted by atx3e
Wenn du grundlegende direct3d kenntnisse besitzt, kannste eine .dll injecten, die alle zum zeichnen des fensters benötigten d3d funktionen hookt. (Wenn du die Funktionen nicht selber hooken willst kannste auch nach dem "D3D Starterkit" projekt suchen (dort sind bereits alle direct3d funktionen gehookt) und das dann weiterschreiben). Wenn du keine direct3d Kenntnisse besitzt und nicht weißt wie du so ein fenster generell zeichnest musst du dir entweder das wissen aneignen oder du kopierst nen paar code beispiele die man im internet findet und passt die an deine bedürfnisse an.
|
Ok könntest du mir eventuell ein paar links geben??
wäre echt nice
|
|
|
07/02/2012, 23:08
|
#5
|
elite*gold: 93616
Join Date: Apr 2010
Posts: 13,737
Received Thanks: 14,990
|
Du könntest auch einfach eine Dialogbox benutzen, ist für den Anfang vielleicht etwas einfacher wenn du kein Directx Hook machen willst.
|
|
|
07/03/2012, 00:13
|
#6
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
Quote:
Originally Posted by tnd0
Kenne Wolfteam nicht und finde per google auch nichts, das darauf hindeutet, dass sowas gewollt ist.
Aber du kannst versuchen Wolfteam im Windowed Mode laufen zu lassen, sodass es zwar über den ganzen Screen geht aber kein FullScreen ist (bei WoW und vielen anderen Games heisst das in den Optionen FullScreen (run in Windowed Mode)). Dann kannst du ein Fenster von deinem eigenen Programm drüberlegen, das Fenster stellst du dann auf wsStayOnTop und schon hast du ein Fenster über das eigentliche Spiel. Das kannst du mittels windows-api auch noch halbtransparent machen.
Wenn Wolfteam dafür keine Option bietet, so kann man das zumindest mit ner nvidia GPU über das nvidia system-preferences Menü dazu zwingen, das ATI äquivalent müsste sowas auch können. Allerdings kann es dann sein, dass deine Maus (da es ein egoshooter ist) sich am Bildrand auffängt. Falls das so ist, bietet sich nurnoch die Option, dass du Wolfteam's Rendering funktionen hookst und detourst.
|
Ein D3D Hook wäre da eigentlich das sinnvollste.
Für eigene Fenster muss das Game übrigens nicht zwingend im Window Mode laufen.
|
|
|
07/03/2012, 01:26
|
#7
|
elite*gold: 0
Join Date: Jun 2012
Posts: 9
Received Thanks: 2
|
Naja du solltest dir wie schon gesagt erstmal das d3d starterkit (dafür hab ich leider keinen link) und eine library wie zum zeichnen deines Fensters downloaden (ist anfängerfreundlicher als alles selber zu schreiben und aufgrund der guten Dokumentation sollte es einigermaßen einfach sein die anttweakbar library in das starterkit zu integrieren). Wenn du dann in der Lage bist ein Fenster in deinem Spiel zu zeichnen musst du um Probleme zu vermeiden erstmal alle Eingaben an deine anttweakbar redirecten, bevor du dann die von der library übergangenen Eingaben an den Client übergibst (so schießt du z.B. nicht während du nur dein ingamemenu bedienen willst). Dafür kannste entweder DispatchMessage oder die beim aufrufen von RegisterClassEx übergebene lpfnWndProc Funktion detouren. (Getestet hab ich das noch nicht .. sollte aber funktionieren)
(Wenn deine d3d hooks vom anti hack (keine ahnung welcher von wolfteam genutzt wird) detectet werden könnte das projekt um einiges komplexer werden)
|
|
|
07/03/2012, 10:46
|
#8
|
elite*gold: 0
Join Date: Jun 2012
Posts: 187
Received Thanks: 58
|
Quote:
Für eigene Fenster muss das Game übrigens nicht zwingend im Window Mode laufen.
|
Wie meinen? Wenn ein Programm im echten FullScreenmode läuft, hat es ABSOLUTE priotität für den ms-displaydriver, da kann nichts und niemand drüberzeichnen (von dreckigen tricks die mindestens genauso kompliziert sind wie hooking mal abgesehen), du kannst nur via hooks das programm selbst dazu bringen, da etwas zu zeichnen. So zumindest habe ich es festgestellt, als ich für Rift ein Overlay machen wollte.
Was ich meine ist eben der 'Windowed-FullScreenMode', kann man sich als ganz normales windows-fenster vorstellen ohne Border und Titelleiste was über den gesamten Bildschirm geht, da kann man auch ohne probleme halbtransparente Fenster drüber legen. Nur fängt er dann die maus nicht, was für Egoshooter natürlich nicht sinnvoll ist. Den unterschied merkt man am einfachsten wenn man im spiel Alt-Tab oder Win-Tab drückt. Wird der Monitor kurz komplett schwarz beendet windows kurzzeitig den FullScreen mode um ins normale Windows zu wechseln, wenn aber direkt das alt/win-tab overlay eingeblendet wird, ist es nur der windowed-fscrn mode.
Edit: vergleichbar mit F11-mode vom FireFox/Chrome.
|
|
|
07/03/2012, 11:14
|
#9
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
mit aero (ab win vista) kann man auf fenster auch draufzeichnen.
mit nem hw overlay und nen paar dreckigen tricks, kann man tatsächlich ein fenster/beliebiges auf ein beliebiges vollbildspiel streamen/zeichnen, aber wie tnd0 schon gesagt hat ist das auch nicht minder komplex als nen dx hook (eher sogar mehr...).
Tastendrücke/maus fängt man dann mit nem windowshook ab.
|
|
|
07/03/2012, 21:08
|
#10
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
also nochmal was muss ich jetzt genau machen?
Mit einem bestimmten programm eine form zeichnen und wie bekomme ich die dann genau in mein programm??
Und noch was in C++ kenne ich mich nicht aus, wäre es dann möglich diese form auch in visual basic 2010 zu verwenden??
|
|
|
07/03/2012, 22:24
|
#11
|
elite*gold: 70
Join Date: Jul 2011
Posts: 496
Received Thanks: 194
|
Bei D3D Hacks laggt Wolfteam sehr. Ich würde eher für Wolfteam OpenGL empfehlen.
|
|
|
07/03/2012, 23:49
|
#12
|
elite*gold: 0
Join Date: Jun 2012
Posts: 9
Received Thanks: 2
|
(Weder hab ich die Überlegungen die ich hier poste getestet, noch sind die auf Wolfteam zugeschnitten und müssen dementsprechend nicht gezwungenermaßen funktionieren)
Wenn du anttweakbar benutzen willst, dann schreibste eine .dll, die eine detour bei CreateDevice installiert (ich geh einfach mal davon aus das d3d9 verwendet wird). Du kopierst das beim aufrufen der funktion übergene Argument ppReturnedDeviceInterface in irgendeine Variable und callst damit TwInit(TW_DIRECT3D9, ppReturnedDeviceInterface); (wie du anschließend ein fenster erstellst steht ). Um die bar zu zeichnen musst du nur noch TwDraw(); in deinem Endscene hook aufrufen.
Damit anttweakbar jetzt auch Eingaben verarbeiten kann und keine probleme zwischen client und anttweakbar auftreten, musst du alle Eingaben erstmal an anttweakbar redirecten (Nachrichten die für anttweakbar gedacht sind dürfen nicht an den client weitergeleitet werden).
Dazu detourst du die RegisterClassEx Funktion und installierst dann beim aufruf der funktion eine weitere detour an der Adresse, auf die lpfnWndProc zeigt ( lpfnWndProc ist ein teil der WNDCLASSEX struktur, die beim Aufruf an die RegisterClassEx übergeben wird. Der RegisterClassEx hook kann anschließend entfernt werden).
Die Funktion zu der dann gesprungen wird sollte ungefähr so aussehen (ich hab den code von der anttweakbar homepage ein bissn verändert):
Code:
LRESULT CALLBACK hkMessageProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if( TwEventWin(wnd, msg, wParam, lParam) ) // send event message to AntTweakBar
return 0; // event has been handled by AntTweakBar
return MessageProc(wnd, msg, wParam, lParam); // die nicht für anttweakbar bestimmte message an den client weiterleiten
}
Wenn dir das mit RegisterClassEx zu viel Arbeit ist kannste auch einfach eine detour bei DispatchMessage installieren.
Edit: Zu detours gibts ein Video tutorial falls du dich damit nicht auskennst
(ein paar detours müssen schon installiert sein bevor die funktionen aufgerufen werden, weil du ansonsten nicht an die Argumente kommst)
|
|
|
Similar Threads
|
Wolfteam Rekord erstellen / Create Wolfteam Record
03/20/2011 - Wolfteam - 37 Replies
Deutsch:
Hallo Forum,
Heute ist mir folgendes eingefallen, nämlich den Rekord in Wolfteam zu brechen d.h. mit einem Acc den höchsten Rang erreichen.
Den Acc. werde ich zur Verfügung stellen, jeder der will, darf mit diesem Account spielen.
Das darf man:
Waffen kaufen etc.
spielen bis der Artzt kommt ;)
|
All times are GMT +2. The time now is 10:52.
|
|