Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Befehl an programm schickn - Ultima Online

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
01.05.2003, 15:31 Uhr
~Fierstorm
Gast


Also ich habe mir überlegt ein Programm wie Axis zu baun. Dieses programm ist für ein Online spiel - Ultima Online.
Das Tool schickt befehle am Clienten von UO und gibt automatisch Moderatoren Befehle ab wie zb: .Invisible - dann ist man für Spieler unsichtbar.
Nun meine Frage: wie kann man das mit MFC Anwendungen hinbekommen das die Anwendung nen Command am Client schickt.

PS: Ich komme nicht mit Axis OpenSource oder so fertig
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.05.2003, 22:09 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Es kommt drauf an wie dus machen willst. Du kannst eine CAsyncSocket Verbindung aufbauen bzw. einen Server programmieren, wenns ein Multigamer ist oder ne fertige Schnittstelle von DirectX (DirectPlay) verwenden. Wenn du ein "Onlinespiel" proggen willst, wäre glob ich DirectX besser, da du da auch eine grafische Schnittstelle (Direct3D) und ne "akustische" Schnittstelle (DirectSound) erhältst.

Ein MFC Sample
Client:

C++:
char szBuffer[8192];

CAsyncSocket::OnReceive(nErrorCode);

// Daten vom anderen Rechner empfangen
Receive(szBuffer, sizeof szBuffer);
if(!strnicmp(szBuffer, ".Invisible", strlen(".Invisible")))
{
   // Funktion für "Invisible" ausführen

}



Server

C++:
char  szSendData[512];
strcpy(szSendData, ".Invisible");
((MyParentDialog *)m_pdlgClient)->m_sckClient.Send(szSendData, strlen(szSendData)+1);



mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.05.2003, 09:37 Uhr
~Fierstorm
Gast


WOW Danke *gg*
Was soll das^^
Also


// Daten vom anderen Rechner empfangen
Receive(szBuffer, sizeof szBuffer);
if(!strnicmp(szBuffer, ".Invisible", strlen(".Invisible")))
{
// Funktion für "Invisible" ausführen

}


das kapier ich alles aber:

char szBuffer[8192];
CAsyncSocket::OnReceive(nErrorCode); // Wozu(nErrorCode)?? daraus versteh ich falls ein Error kommt soll er das machn
das nicht.
Außerdem gibts son nen server www.sphereserver.com

Also nen Server brauch ich nit coden und das Spiel gibts auch schon das brauch ich auch nicht coden
Nur wie schicke ich den Befehl an sonen Programm.
Ich hatte mir auch mal gestern nen OpenSource runtergeladen und da mal nachgeguckt stand aber nix drin
Außerdem kamen folgende Fehlermeldungen dazu:

...include\wincon.h(2) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'PURE'

...include\wincon.h(2) : error C2501: 'ppresult' : Fehlende Speicherklasse oder Typbezeichner

...include\wincon.h(2) : fatal error C1004: Unerwartetes Dateiende gefunden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.05.2003, 10:26 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!

Zitat:

Nur wie schicke ich den Befehl an sonen Programm.



Also wenn du den Server mit dem Programm meinst, dann einfach, wie oben gezeigt, eine Verbindung auf dem entsprechenden Prot aufnehmen und Senden. Einziges Problem wird sein, dass du das während dem Spielbetrieb nicht machen kannst - was meiner Meinung aber erwünscht ist
Ob du Zugriff auf eine Membervariable von deinem UO (in diesem Fall wahrscheinlich CAsncSocket oder CSocket) bekommst, wäre einen Versuch Wert.
Trotzdem würde ich vorher noch probieren, was passiert, wenn das Game und du den gleichen Port connecten.

mfg mike
--

Dieser Post wurde am 02.05.2003 um 10:27 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.05.2003, 12:15 Uhr
~Fierstorm
Gast


*gg* ne du verstehst es falsch.
Der Server läuft.
Das Spiel läuft.
Mein Tool was sich Necro nennt läuft [wenn ich es fertisch hab ]

Ich connecte mit meinen Spiel zum Server.Dieser Server sagt das der Account vorhanden ist und ich los zockn kann.

Mein Necro tool soll nur im UO Fenster .invisible ausgebn wenn ich aufm knopf drück.

Der soll nix mitm Server machn nur mitm Client Fenster.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.05.2003, 13:15 Uhr
mike
Pinguinhüpfer
(Operator)


Ich kenn UO leider nicht Also kein NT - oki doki
Prinzipiell gehts so: Angenommen du hast nen Dialog mit einem Edit. Dann gehst du ins Spy++ und schaust unter Steuerelemnt ID nach
z.B.

C++:
CWnd* pWnd = FindWindow(NULL, "test1");
if(pWnd) {
  CEdit* pEdit = (CEdit*)pWnd->GetDlgItem(0x3E8);
  pEdit->ShowWindow(SW_HIDE);
}


Leider funtzen direkte Befehle wie SetWindowText net. Also

C++:
CWnd* pWnd = FindWindow(NULL, "test1");
CString s = "Das ist ei Test";
if(pWnd) {
   CEdit* pEdit = (CEdit*)pWnd->GetDlgItem(0x3E8);
   pEdit->SendMessage(EM_REPLACESEL, 0, (LPARAM)s.GetBuffer(s.GetLength()));
}


Wenns noch fragen gibt, einfach melden

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.05.2003, 14:30 Uhr
~Fierstorm
Gast


ok ich hab noch sehr viele Fragen.

Kann ich nit einfach nen Dialogbasiernde Nehmen und dann einfach ein Button erstellen [erstmal einer damits leicht zu verstehn ist - für mich]
Und dieser Button bekommt den namen Invisible.
Wenn ich dadrauf drück soll meine Figur im spiel das commando .invisible abgebn.
Aber wie kann ich das am client.exe abgebn.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.05.2003, 14:45 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!

Zitat:

Wenn ich dadrauf drück soll meine Figur im spiel das commando .invisible abgebn.


Das ist der Kick am Programmieren
Du musst mal im Spy++ schaun wie der Programmierer von UO vorgegangen ist. Wenn er ein Edit gemacht hat - ok. Wenn er die Windows Ebene verlassen hat (GDI, DirectX, OpenGL) wirds kompliziert.
Jetzt erstell einfach mal ne dialogbasieredne Anwenung, für nen Button ein, klick doppelt drauf, akzeptiere den vorgeschlagenen Namen.

Zitat:

Aber wie kann ich das am client.exe abgebn.


Definiere client.exe. Ist das UO?
Wenns den Proggi ist musst du, wie bereits gesagt, wissen, wie UP aufgebaut ist. Du kannst in C++ nicht sagen "He Programm, gib mal .Invisible aus"


mfg mike
--

Dieser Post wurde am 02.05.2003 um 14:48 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.05.2003, 13:20 Uhr
~Fierstorm
Gast


Client.exe ist die exe Datei vom Spiel "UO"
Also halt das spiel *gg*

Zitat:

Aber man sagt nit dazu UO sondern halt client.
Du musst mal im Spy++ schaun wie der Programmierer von UO vorgegangen ist. Wenn er ein Edit gemacht hat - ok. Wenn er die Windows Ebene verlassen hat (GDI, DirectX, OpenGL) wirds kompliziert.
Jetzt erstell einfach mal ne dialogbasieredne Anwenung, für nen Button ein, klick doppelt drauf, akzeptiere den vorgeschlagenen Namen.



Wie meinste das mit Spy???
Ich habe das gestartet und paar fenster damit egöffnet
Also alle die es gibt *gg*
Da gibts eins was die ganzen prozesse aufzeichnet also mausposition usw
Jedoch wenn ich das Command eingeben sagt der nix wohin der das schickt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.05.2003, 16:26 Uhr
mike
Pinguinhüpfer
(Operator)


Also ich glaube wir reden an uns vorbei
Also wenn ich dich richtig verstanden habe, hast du UO (client) und möchtest in dieses Fenster einen Eintrag machen.
Wenn das stimmt, dann geh einfach ins Spy++, Such im Tree das Fenster von UO, klick auf "+" Dort stehen dann normalerweise eine Menge Steuerelemente. Wenn der Autor des Programmes UO einen Edit verwendet hat, steht dort "Edit" und die ZUgriffsnummer. Das mit dem Edit war nur ein Bsp.!!! Du musst jetzt schauen, in welchen Typ von Steuerelement du ".Invisible" eintragen willst. Also wenn wir mal den Typ des Steuerelemnt haben, sollte der Rest normalerweis eleicht gehen

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: