Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Kommunikation zw. Spiel (LUA) und C#
Attrachii
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

Kommunikation zw. Spiel (LUA) und C#

beantworten | zitieren | melden

Hallo Community,

und zwar bin ich gerade dabei ein HilfeTool für ein Computerspiel zu programmieren. Das Spiel besitzt keine externe API mit welcher ich von außen Daten abfragen kann. Dafür besitzt es aber eine Möglichkeit mit LUA-Addons zu programmieren, mit welchen dann über unzählige Methoden auf alle Spielinfos zugegriffen werden kann. Da das HilfeTool zu komplex ist um als LUA-Addon zu fungieren habe ich mich entschlossen das ganze in C# zu programmieren.


Nun brauche ich aber eine Möglichkeit um auf die Spieledaten zu zugreifen:

Als erstes habe ich an eine Textdatei gedacht, in welche das C# Programm einen Befehl schreibt z.B. "GETHEALTH" und das Lua-Addon loopt permanent über diese Datei und schreibt danach die Antwort hinein (währenddessen loopt das C# Programm).
-> Performance = 0

Dann habe ich an MemoryReading gedacht: Das Lua-Addon legt eine Variable mit dem Inhalt "INITIALIZEADDON" an. Das C# Programm durchsucht den Arbeitsspeicher nach dieser Zeichenkette und merkt sich die Speicheradresse. Ab diesem Zeitpunkt würde es wie bei der Methode mit den Textdateien weiter gehen. Blos wie suche ich mit C# den Arbeitsspeicher nach einer Zeichenkette ab? Bestimmte Adressen lesen ist kein Problem aber zu suchen. Keine Ahnung...


Könnt ihr mir bitte einen kleinen Gedächtnisanstoß geben? Andere Möglichkeiten sind auch gerne gesehen :)


Grüße
Steve
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Attrachii am .
private Nachricht | Beiträge des Benutzers
Scavanger
myCSharp.de - Member

Avatar #avatar-3209.jpg


Dabei seit:
Beiträge: 323

beantworten | zitieren | melden

Hat LUA nicht eine C-API mit der C-Funktionen aufgerufen werden können?
Damit könntest du dir eine Wrapper-DLL in C schreiben und mit den Interop-Funktionen von C# kannst du dann auf die DLL zugreifen.

Also: LUA <-> C-DLL <-> C# Program

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
private Nachricht | Beiträge des Benutzers
Attrachii
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

Hey,

habe vergessen zu schreiben, dass Blizzard (World of Warcraft) alle LUA-Funktionen die zur Kommunikation verwendet werden können deaktiviert hat. Darunter auch die IO-Funktionen. Deshalb scheidet mein erster Vorschlag mit der Textdatei aus.

Hat noch jemand Ideen? Bzw. weiß jemand wie ich alle Speicheradressen die zur Wow.exe gehören nach einem bestimmten String durchsuche?

Danke!
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat von Attrachii
habe vergessen zu schreiben, dass Blizzard (World of Warcraft) alle LUA-Funktionen die zur Kommunikation verwendet werden können deaktiviert hat.
Das wird seinen Grund haben.
Vermutlich zählt das als Cheating und ist daher wahrscheinlich auch anhand der Nutzungsbedingungen verboten.
Zitat
Bzw. weiß jemand wie ich alle Speicheradressen die zur Wow.exe gehören nach einem bestimmten String durchsuche?
... und das wird erst recht nicht erlaubt sein. Wenn so etwas aufliegt, kann mit etwas Pech wohl auch dein Account gesperrt werden.
private Nachricht | Beiträge des Benutzers
Marsti
myCSharp.de - Member



Dabei seit:
Beiträge: 124

beantworten | zitieren | melden

Das was du vorhast verstößt gegen die Nutzungsbedingungen, und somit riskierst du und die Benutzer deines Programms einen Account-Ban.

Die Lua-Schnittstelle von WoW stellt Addons alle Funktionen zur Verfügung, die im Rahmen der Nutzungsbedingungen erlaubt sind, bzw. umgekehrt: Was damit nicht möglich ist, ist auch nicht erlaubt. Insbesondere kein (Live-)Zugriff auf das Spiel durch andere Prozesse.

Zum einen gibt es SavedVariables, mit der man z.B. Questdatenbanken ins Spiel bekommt. Das sind Textdateien die beliebig Einstellungen u.ä. speichern können, jedoch immer nur beim Laden des UI ausgelesen werden (und vor dem UI-Neuladen/Logout gespeichert werden).

Zum anderen können Addons über spezielle versteckte Addon-Channel im Spiel miteinander kommunizieren.
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (10.04.2011 - 08:26:54):

Zitat
Das was du vorhast verstößt gegen die Nutzungsbedingungen
Ich kann das zwar nicht abschließend beurteilen, aber die Vermutung halte ich für plausibel. Bittet das Forum nicht um Unterstützung für rechts- bzw vertragswidrige Taten. Sollte dein Vorhaben legal und legitim sein, kannst du das natürlich in einer PM ans Team darlegen.