PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Die Anomalie des Makers 2k(3)



übelster Held
10.12.2006, 13:44
Die ANOMALIE des MAKERS 2K und 2K3

Vorwort:
ein junger mann namens olds hatte im quartier ein problem,
das nach dem speichern eine variable einen ganz anderen wert hatte,
als sie vor dem speichern gehabt hatte…
nachdem der nun sein projekt hochgeladen hatte, hat sich einer erbarmt,
den fehler zu suchen, hat aber keinen gefunden… o_O
das hat mich dazu bewogen den fehler zu suchen…

Der Fehler:
so… wie kommt dieser fehler zu stande…
eigendlich ganz einfach:
man braucht nur einen wartenden enter passwort befehl
(also ein enter passwort mit häckchen auf „wait until key hit“ und das in nen hübschen
parallel prozess verpackt)
und wenn man jetzt während des wartenden enter passwort ein spiel speichert
(ohne beim aufruf des menüs (oder save menüs) das enter passwort zu aktivieren, zb
wenn das enter passwort auf wait until key hit und nur auf esc steht, und man das menü
mit enter aufruft, tritt der fehler auf)
also wenn man jetzt noch das gespeicherte spiel ladet, dann wird als erstes eine bestimmte
variable auf null gesetzt (nämlich die variable die man bei dem wartenden parallel prozess
eingestellt hat – 768… bsp: man hat bei dem enter passwort die 769. variable gewählt,
also wird nach dem laden die 1. variable gelöscht…sollte man aber eine variable für das enter passwort nehmen,
die unter 769 ist, also wo die gelöschte variable 0 oder kleiner ist, tritt anscheinend kein fehler auf…)
damit noch nicht genug… als letztes wird noch der erste wert, den das enter passwort
NACH DEM LADEN annimmt in dieser einen variable gespeichert…

so jetzt mal nen beispiel:

ein map-event mit einen enter passwort, mit häckchen auf wait until key hit,
die pfeiltasten und enter… die 1000 variable wurde ausgewählt, um den wert des enter passwort zu speichern…
(der fehler tritt auch auf, wenn dieses event ein common event ist…)

wenn man jetzt mit esc das normale menü aufruft, speichert, und das spiel lädt,
dann ist erstmal die variable 232 auf null…
drückt man jetzt zb hoch, so nimmt die variable 232 den wert 4 an… und bleibt auf diesen wert…

für alle die es noch nicht verstanden haben: können es hier testen…:

http://www.megaupload.com/de/?d=E3AJYRWY

(zuerst den busch ansprechen, da werden alle variablen auf 1 gesetzt,
dann den mann anlabern, und speichern,
das spiel neu laden und f9 drücken….
das script muss aber im maker geöffnet werden,
da man nur mit f9 die variablenwerte angucken kann…)

so… jetzt werdet ihr denken… der hat doch keine hobbies, für was brauchen wir den scheiß?
naja… das problem kann durchaus zu fehlern führen, man denke nur mal an selbstgescriptete
menüs mit save funktion…
so.. vielen dank fürs zuhören…

mfg
üH

CapSeb
10.12.2006, 14:59
:eek: Genialst!!!!
:eek: Ultra!!!!!!!!
:eek: Unfassbar!
http://www.multimediaxis.de/images/smilies/old/1/respekt_2.gif

Ich brech zusammen... sowas hab ich schon seit Jahren gesucht. Damit lässt sich endlich erfassen, ob jemand beim Spielen geladen hat.
Jetzt braucht man nach dem Speichern nicht jedesmal den Zustand der Spielstandes einblenden, obwohl man garnicht das Spiel verlassen hat. Nur wenn man tatsächlich lädt, kommt es.


Wenn man jetzt noch das gespeicherte Spiel lädt, wird als erstes eine bestimmte Variable auf null gesetzt, nämlich die Variable, die man bei dem wartenden parallel prozess eingestellt hat, minus 768…
Beispiel: Man hat bei dem enter passwort die 769. Variable gewählt, also wird nach dem Laden die 1. Variable gelöscht
Das hatte ich erst nicht verstanden, da du das Minus als Strich geschrieben hast. Ich habs hier mal fett markiert.
Der Fehler macht also Folgendes: Der Enter-Password-Befehl wird nur ausgeführt, wenn man lädt. Allerdings falsch: Es wird erst nach dem Laden die erste gedrückte Taste in eine andere Variable (768 kleiner als die gewählte) gespeichert.

lokipoki
10.12.2006, 15:19
Die ANOMALIE des MAKERS 2K und 2K3

Vorwort:
ein junger mann namens olds hatte im quartier ein problem,
das nach dem speichern eine variable einen ganz anderen wert hatte,
als sie vor dem speichern gehabt hatte…
nachdem der nun sein projekt hochgeladen hatte, hat sich einer erbarmt,
den fehler zu suchen, hat aber keinen gefunden… o_O
das hat mich dazu bewogen den fehler zu suchen…

Der Fehler:
so… wie kommt dieser fehler zu stande…
eigendlich ganz einfach:
man braucht nur einen wartenden enter passwort befehl
(also ein enter passwort mit häckchen auf „wait until key hit“ und das in nen hübschen
parallel prozess verpackt)
und wenn man jetzt während des wartenden enter passwort ein spiel speichert
(ohne beim aufruf des menüs (oder save menüs) das enter passwort zu aktivieren, zb
wenn das enter passwort auf wait until key hit und nur auf esc steht, und man das menü
mit enter aufruft, tritt der fehler auf)
also wenn man jetzt noch das gespeicherte spiel ladet, dann wird als erstes eine bestimmte
variable auf null gesetzt (nämlich die variable die man bei dem wartenden parallel prozess
eingestellt hat – 768… bsp: man hat bei dem enter passwort die 769. variable gewählt,
also wird nach dem laden die 1. variable gelöscht…sollte man aber eine variable für das enter passwort nehmen,
die unter 769 ist, also wo die gelöschte variable 0 oder kleiner ist, tritt anscheinend kein fehler auf…)
damit noch nicht genug… als letztes wird noch der erste wert, den das enter passwort
annimmt in dieser einen variable gespeichert…

so jetzt mal nen beispiel:

ein map-event mit einen enter passwort, mit häckchen auf wait until key hit,
die pfeiltasten und enter… die 1000 variable wurde ausgewählt, um den wert des enter passwort zu speichern…
(der fehler tritt auch auf, wenn dieses event ein common event ist…)

wenn man jetzt mit esc das normale menü aufruft, speichert, und das spiel lädt,
dann ist erstmal die variable 232 auf null…
drückt man jetzt zb hoch, so nimmt die variable 232 den wert 4 an… und bleibt auf diesen wert…

für alle die es noch nicht verstanden haben: können es hier testen…:

http://www.megaupload.com/de/?d=E3AJYRWY

(zuerst den busch ansprechen, da werden alle variablen auf 1 gesetzt,
dann den mann anlabern, und speichern,
das spiel neu laden und f9 drücken….
das script muss aber im maker geöffnet werden,
da man nur mit f9 die variablenwerte angucken kann…)

so… jetzt werdet ihr denken… der hat doch keine hobbies, für was brauchen wir den scheiß?
naja… das problem kann durchaus zu fehlern führen, man denke nur mal an selbstgescriptete
menüs mit save funktion…
so.. vielen dank fürs zuhören…

mfg
üH

Also ich habe ein eigenes Menue, aber alle meine "Tasten Events" sind auf der Menü Map. Das heisst es dürfte keine Probleme geben ???

Wie umgehe ich das Problem wenn der Event ein CE ist (PP)? Im schön ausschwitchen. Oder?

Oder habe ich hier alles falsch verstanden?

mitaki
10.12.2006, 15:40
Nicht ganz, mein Ansatz war dieser:

Event: PP
Befehle:
Enter Password: Esc(6) und Wait until Key Hit
Teleport

Der Fehler des Makers ist nun dieser: Wenn man speichert verwechselt der Maker den Speicherort der Passworteingabe. Genauer gesagt VariablenNummer der PW Eingabe minus 768. Wenn man das Spiel ladet ist die falsche Variable zunächst 0 oder hat den Ursprungswert. Durch drücken einer Taste erhält sie aber den Wert der Passworteingabe (in meinem Fall war das 6 für Esc).

Danke nochmal an üH für das grandiose Bugfixing^_^

Ascare
10.12.2006, 15:56
Uhh, sechs Jahre hat es gedauert um diese Anomalie zu entdecken. Interessant ist es allemal. 8)

übelster Held
10.12.2006, 15:57
:eek: Genialst!!!!
:eek: Ultra!!!!!!!!
:eek: Unfassbar!
http://www.multimediaxis.de/images/smilies/old/1/respekt_2.gif

Ich brech zusammen... sowas hab ich schon seit Jahren gesucht. Damit lässt sich endlich erfassen, ob jemand beim Spielen geladen hat.
Jetzt braucht man nach dem Speichern nicht jedesmal den Zustand der Spielstandes einblenden, obwohl man garnicht das Spiel verlassen hat. Nur wenn man tatsächlich lädt, kommt es.



OMG O__O"
ich hätte ja eher mit sowas gerechnet: wtf? wer braucht das??
aber das man mit diesem bug auch noch was genitales
machen kann, soweit hab ich gar nicht gedacht...
XD"
letzten endes war dieser bug auch noch gewollt... XD
diese füchseln von entwickler...^^



Allerdings falsch: Es wird erst nach dem Laden die erste gedrückte Taste in eine andere Variable (768 kleiner als die gewählte) gespeichert.

türlich tuts erst nach dem laden den wert der ersten gedrückten taste in die andere variable speichern...
was anderes hab ich doch hoffentlich nicht geschrieben oder?^^

edit: ups.. hatte ich vergessen hinzuschreiben... hab nochmal hervorgehoben, dass es NACH dem laden geschieht...


@ lokipoki... ja, das aufrufen des eigenen menüs ist auf der map oder?
aber du muss ja auch im menü den courso oder sowas bewegen, indem
du enter pw verwendest... solange die variable, in dem du das pw
speicherst kleiner als 769 ist, macht das eigendlich nix...

mitaki
10.12.2006, 16:02
oder hab ich jetzt was falsch verstanden?^^
Ja, er meinte: Man muss erst neu laden, damit der Effekt auftritt. Wenn man nach dem Speichern nachsieht ist ja noch alles in Ordnung!

CapSeb
10.12.2006, 16:08
was soll daran falsch sein? bei mir speicherts den ersten wert, den enter passwort annimmt aber in diese passwort minus 768 variable... oO
oder hab ich jetzt was falsch verstanden?^^
...em, genau das wollte ich zum Ausdruck bringen. Hatte die Anomalie nur noch mal anders formuliert.
...ich find's einfach nur gigantisch.

übelster Held
10.12.2006, 16:10
jo.. habs auch gemerkt dass ich diesen zusatz vergessen hab...
habs auch oben nochmal editiert...(obwohl sich nur wenige
alles durchlesen werden..xD")

Blackadder
10.12.2006, 16:12
Ich brech zusammen... sowas hab ich schon seit Jahren gesucht. Damit lässt sich endlich erfassen, ob jemand beim Spielen geladen hat.
http://www.rpg-atelier.net/ressourcen.php?shGruppe=Skripte&ShowMax=61

Ein Script das zeigt wie man verschiedene Effekte vor, und nach dem Speichern, einbauen kann.
dabei hättest du einfach mal in die script-sektion schauen müssen. :/

nachtrag:
ich hab CapSeb geantwortet, nicht übelster Held. das OnLoadFX script funktioniert anders.

übelster Held
10.12.2006, 16:22
und wie ich gerade erfahren hab,
gibts diesen kniff auch schon länger...
nützlich isser aber allemal..^^

EDIT... ich meinte auch meinen trick.. der ist auch schon länger bekannt laut makenshi

mitaki
10.12.2006, 16:40
Ich glaube das war eher als Witz gemeint. Die Sache mit der TickPos klingt wesentlich logischer draufzukommen^^

makenshi
10.12.2006, 20:17
An sich gibt es den Miditick Vergleich schon länger. Der Fehler aus dem Quartier löst diesen Effekt zwar aus , jedoch auf eine etwas andere Art und Weise.
Vorallem auf eine schlechter kontrollierbare.

Es gab da noch 1 - 2 mögliche Konstellationen wo so ein "Bug" auftritt.
Den Trick gibt es nun doch schon länger. Darum findet man ihn hier auch in der Skriptsektion. Jedoch ist es interessant das es trotzdem nicht sehr vielen Leuten bekannt ist.

Wurde von daher schon oft als "Geheimkniff" gehandelt. Najo , wie dem auch sei.

Caine Luveno
11.12.2006, 18:58
Mit den Variablen hat der rM2k3 sowieso 'n paar Problemchen. Ich habe Velsarbor mal mit 'ner 2k3 EXE gestartet anstatt mit einer vom 2k weil mir das 2k RTP fehlte, alle meine Helden und Gegner hatten auf einmal vollkommen andere Werte als zuvor weil die Berechnung wohl irgendwie daneben gegangen ist -_- seiher war kein Kampf mehr zu gewinnen da meine Helden zu schwach waren.

CapSeb
14.12.2006, 12:51
Was mich nur wundert ist wie solche Fehler in den Maker kommen. Dass eine genau 768 kleinere Variablennummer verändert wird, ist doch schon sehr seltsam.

mitaki
14.12.2006, 13:31
Das ist gar nicht so unwahrscheinlich wie man denken möchte.

Wenn man im Maker mit Variablenreferenzen (VarNo) arbeitet und man mal versehentlich ein Plus statt ein (Set) gewählt hat treten ganz ähnliche Fehler auf.
Man darf ja nicht vergessen, dass der Maker auch programmiert ist und jede höhere Programmiersprache verfügt über Referenzen dieser Art (glaube man nennt sie Zeiger).

Dass der Fehler noch nicht behoben wurde liegt vermutlich daran, dass er noch nicht entdeckt wurde, oder, wenn Makis Behauptung stimmt (würde gerne Quellen sehen, wie dieser Fehler verlässlicher Ausgelöst wird), die Community daraus einen Nutzen gezogen hat, den man ihr nicht mehr Entziehen möchte.