Quote:
Ok.
Wie wäre es, wenn du deine NOPs, die du zwischen die Instruktionen schreibst, einfach mit Int03s austauschst oder überhaupt den Code durchsuchst und alle NOPs damit ersetzt, wenn du merkst, ein Debugger wurde rangehängt? (hier wäre ein Length Disassembler oder sogar ein Disassembler sicherlich von Vorteil) Wäre doch eine schöne Ergänzung ;-)
|
Der Name scheint irreführend zu sein. Er bedeutet nicht das er eine zufällige Anzahl nops einfügt. Der Name und die Grundidee kommen aus der der StarForce VM. Welche Code Instructions die sie nicht als VM Opcodes interpretieren kann einfach in einen Random erstellen Speicherbereich kopiert, direkt ausführt, Resultat in den VM RAM kopiert und Speicherbreich wieder freigibt. Damit es keine Crashs gibt wird der Speicherbreich vorher logisch mit 90h Bytes ausgefüllt und daher der Name. Keine Sorge sind genug kleine Gemeinheiten drin ; )
Quote:
Wenn das nicht so ist, dürfte das bei einer scheiss Leitung mit einem schlechten Ping zu einem Frust kommen, wenn GW wirklich auf jede Bewegung die Antwort des Servers erwartet, bevor der Charakter irgendwohin bewegt wird.
|
Man schickt nur eine Anfrage "Möchte zu Punkt x/y laufen" oder "Möchte zu Objekt o laufen" und der Rest macht der Server. Er bestimmt wann man anfängt zu laufen, wann man die Route ändern muß weil ein Hindernis im Weg ist und wann man aufhören muß weil man gegen eine Wand/Objekt gelaufen ist.
Ja in einem Spiel wie WoW/RFO/VG/EQ würde es nicht funktionieren aber GW basiert vom Aufbau auf einee 2D Engine und der RunSpeed selber ist sehr "langsam" deswegen warpt man erst wenn der Lag sehr groß wird. Man kann es auch ganz einfach testen indem man RunSpeed im Client erhöht. Dadurch wird Client und Server nicht mehr syncron sein. Folge man kann durch alles durchlaufen, warpt aber zurück wenn er serverseitig auf das Objekt aufläuft.
Quote:
|
Und nochwas - da krieg ich schlechte Laune - das AutoIt-Script funktioniert, es sei denn man ist nicht in der Lage ein paar simple Dinge zu beachten <.<
|
wieso denkst du das ich deins meine hehe
<hr>
Append on Jan 30 2007, 17:06<hr>
Quote:
|
EAX is the internal registar used by the proc/call instructions. I.E. if I call void foo(){/*do some chit*/} the address/offset of foo is pushed to EAX. Depending of the type of call convection used by the compiler some othe stuff happens.
|
you should really read "Assembler for beginners"
1. the sentence as a whole doesn't make sense
2. you can't push an address to a register, push/pop are stack manipulating operations, between the stack and the register or the stack and the memory address
3. eax (extended accumulator register) will never, and I mean never, be used function overlapping. ECX is used for class object pointers but never, ever EAX. EAX in for normal c++ compiler is always a short term register which value doesn't matter anymore after a few instructions. ; ) Mostly used for function return values, pointers and simple counters in loops. So sorry your text doesn't make any sense.
Good try but as you said "some other stuff happens" hehe
Quote:
|
Let's just make a new better one.
|
you said this 4 month ago already. I am still waiting : )
Quote:
|
Added note. You do know I have written several code gen's and am writing a new as we speak.... sounds neat
|
nice I am proud of you :p