Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

TcH

Frischling

  • »TcH« ist der Autor dieses Themas

Beiträge: 25

Beruf: Abiturient & Nebenberuflich Softwareentwickler

  • Private Nachricht senden

21

19.05.2008, 17:10

Soweit ich das mitbekommen habe, ist eine Anwendung auch in der Lage Arbeitspeicher quasi für andere Anwendungen zu schützen. Schönes Beispiel ist hierfür die Bitdefender Firewall. Ich habe mal mit meinem Tool versuch nach irgendwelchen willkürlichen Werten zu suchen und diese zu überschreiben - Es kam aber eine Fehlermeldung, dass der Schreibvorgang nicht möglich ist. Eine andere Möglichkeit besteht darin (wie unsigned long bereits erwähnt hat) zu den Werten im Spiel zahlen zu addieren bzw. zu subtrahieren, somit wäre es dann sinnlos im Speicher nach 2000 $ zu suchen, dann dann z.b.: tatsächlich 2200 drinne stehen würden.
Ich habe heute mein Tool außerdem mal im CS Source Singleplayer getestet - funktioniert prima. Bei Stronghold Crusader bin ich aber mit meinem Tool gescheitert.
Dummheit, die sich mit Arroganz und Besserwisserei profilieren will.

22

19.05.2008, 17:51

gibt dazu aber auch nen trainier ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

23

22.02.2009, 11:15

Echt cooles Tutorial :) .

Eine Frage noch:
Gibt es eine Funktion, mit der man den Name der Exe
rausbekommt, anstatt dem Fenstertitel???
void CreateComputerGame (int Quality);

Anonymous

unregistriert

24

22.02.2009, 12:03

Naja du brauchst ja irgendeinen Ausgangspunkt, woran du erkennst, ob es dein gewünschtes Programm ist. Das geht am einfachsten über den Fenstertitel.

Andere Möglichkeit ist, wenn man den Namen der exe bereits kennt, alle Prozesse durchenumerieren und dir die Prozess-ID holen.

25

22.02.2009, 12:16

Könnte GetProcessImageFileName (oder QueryFullProcessImageName) da nicht behilflich sein?
Sorry, falls ich total daneben liegen sollte, hab den Code nur überflogen.

http://msdn.microsoft.com/en-us/library/ms683217(VS.85).aspx
fka tm

Anonymous

unregistriert

26

22.02.2009, 12:35

TrikkieMikkie
Das ist eine Möglichkeit. Ich würde hier dennoch eher auf die normale Prozessstruktur-Variante zurück greifen, da der Lerneffekt erstens höher ist und man keine zusätzlichen Abhängigkeiten benötigt.

Habe eben mal nachgesehen, diese komplette PSAPI ist wieder VC++ only und nicht bei anderen Compilern zu finden. Also eine Portierung des Sources wäre so nicht möglich. Alternativ könnte er jedoch die Funktion aus DLLs dynamisch laden. :)

27

22.02.2009, 12:47

Vieln Dank, es geht :) .
void CreateComputerGame (int Quality);

28

22.02.2009, 12:50

Was geht? Hast du den Namen der Exe ermittelt?
fka tm

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

29

22.02.2009, 13:01

Zitat von »"unsigned long"«

Jonathan_Klein
Bitte lass einmal diese 08/15 postings ohne tiefgründigen Inhalt. Es nervt. Ich frag mich wieviel du schon mit Netzwerk gebastelt hast, ein "unsychrones Spiel" gibt es meiner Erfahrung nach nicht, da die Datenpakete die orginalwerte auf Client-Seite überschreiben.

Halt dich mal was zurück. Es gibt keinen Grund, hier so feindselig zu werden.
Jonathan hat recht. Angenommen, du möchtest dir in einem Multiplayer-Spiel mehr Munition verschaffen. Du kannst mit dem Trainer den lokalen Munitionszähler verändern. Dann sieht es für dich so aus, als ob du z.B. 999 Schuss hättest. Das wird auch erst einmal so bleiben, denn schließlich sendet der Server nicht andauernd den Munitionsstand an alle Clients - das wäre Verschwendung von Bandbreite. Erst nach dem nächsten Schuss, oder wenn der Server bemerkt, dass die Munition eigentlich aufgebraucht ist, wirst du es merken.
Und die Daten des Servers überschreiben nicht immer einfach blind die des Clients (nur bei "wichtigen" Dingen, wie z.B. "du bist tot"). Wenn das so wäre, könntest du dich bei einem etwas höheren Ping nicht mehr richtig bewegen, da der Client immer erst warten müsste, bis die Antwort vom Server kommt. Stattdessen berechnet er für sich schon einmal die Auswirkungen einer Aktion. Und diesen Teil kann man mit solchen Tools manipulieren. Dann läuft die Welt für dich anders als für den Server (mehr als das normalerweise schon der Fall ist, durch Latenz), also ist es nicht mehr synchron.

Anonymous

unregistriert

30

22.02.2009, 13:13

guck mal aufs Datum -.-

Werbeanzeige