Liste bekannter Fehler
Aus Mappedia
Inhaltsverzeichnis |
Spielabstürze
Hierbei handelt es sich um Fehler, die beim Auftreten in einer Karte zur Spielzeit Warcraft 3 mit einem Fatal-Error abstürzen lassen.
Auslöser/JASS
- Die Funktionen SetUnitX und SetUnitY führen zwar selbst zu keinem Fatal-Error; falls die Koordinaten allerdings außerhalb der Kartengrenze liegen und die übergebene Einheit verschiedene Befehle ausführt (mehrere Zauber, bewegen ...), entsteht ein Fatal-Error.
- Manche Funktionen führen zu einem Fatal-Error, wenn sie mit ungültigen Parametern aufgerufen werden (Bsp.: Player(-1) ).
- GetExpiredTimer führt zu einem Fatal-Error, wenn es keinen Timer gibt.
- ExecuteFunc führt zu einem Fatal-Error, wenn die angegebene Funktion nicht existiert.
- Wenn die Handler-Funktion eines Timers eine Funktion mit Parametern ist, stürzt das Spiel ab.
- Wird einer Multiboard-Variablen im globals-Block mit der Funktion CreateMultiboard() ein Wert zugewiesen, so stürzt Warcraft ab, wenn man auf die Karte klickt (dieser Bug tritt wahrscheinlich auch mit anderen erstellten Objekten im globals-Block auf)
- Endlosschleifen, etwa durch Auslöser, die sich selbst auslösen, führen in den meisten Fällen zu einer kurzen Verzögerung gefolgt von einem Spielabsturz, der manchmal keine Fehlermeldung erzeugt.
- Es kann maximal 255 Gamecaches und 255 Hash-Tabellen geben; weitere funktionieren nicht mehr.
Andere Fehler
- Wird der Zauber Luftfesseln zwei Mal auf das selbe Ziel gezaubert, kann es zu einem Fatal-Error kommen.
- Werte, die außerhalb der normalen Grenzen liegen ("Shift"-Klick im Objekt-Editor) können zu Abstürzen führen.
- In seltenen Fällen scheinen Fatal-Errors auch durch Überlastung der Hardware zu Stande zu kommen (siehe auch: Speicherleck)
- Nimmt eine normale Einheit, die im Editor mit dem Helden-Inventar versehen wurde, im Spiel einen Folianten auf, kommt es zu einem Fatal-Error.
- Gibt man einer Nicht-Helden-Einheit das Engineering Upgrade führt das zu einem fatalen Fehler.
- Zerstört man Blitz-Effekte mit GetLastCreatedLightningEffectBJ() (ohne vorher einen erzeugt zu haben), kann es zu einem fatal error kommen, wenn in dem Moment noch ein Kettenblitz umherspringt.
- Stattet man die Langsamkeitskugel-Fähigkeit mit exotischen Fähigkeiten aus (z.B. Leben absaugen), kann es zu Abstürzen kommen.
- Leben absaugen führt zu einem Fatal-Error, wenn das erste Intervall eine Einheit tötet und das Intervall sehr klein ist (im Bereich 0.01 sec).
- Ist das Minikarten-Bild fehlerhaft, stürzt Warcraft ab, wenn man die Karte anwählt.
- Verwandlungsfähigkeiten wie Illidans Metamorphose können zu einem Absturz führen, wenn sie in einem Zauberbuch benutzt werden.
- Wenn manamanipulierende/-regenerierende Fähigkeiten für eine tote Einheit per Auslöser erhöht werden, kommt es im Regelfall zu einem Fatal-Error.
- Wenn man im GUI auf Player(0) (Convert player index to player) zugreift.
Editorabstürze
Dies sind Fehler, die während der Arbeit mit dem World Editor den Editor selbst zum Absturz bringen.
JASS
- Der Editor stürzt ab, wenn "endif" oder "endloop" vergessen wurde. //gefixt in 1.24
- Der Editor stürzt bei ungültigen Integer-Werten ab (zum Beispiel: 'ÆØpo').
- Der Editor stürzt ab, wenn eine Funktion nichts zurückgibt, obwohl sie einen Rückgabewert haben sollte. //gefixt in 1.24
Andere Fehler
- Der Editor stürzt ab, wenn in einem Dateinamen nur "\" statt "\\" steht (siehe: Import-Manager).
- Der Editor kann unter Umständen abstürzen, wenn die "war3.mpq" oder "war3x.mpg" von anderen Programmen oder Tools geöffnet sind (Warcraft3-Viewer, MPQ-Editoren).
- Der Editor stürzt ab (Kartenstart), wenn im Objekt Editor Ausdrücke mit "<" und ">" unvervollständigt eingetragen gewerden.
Nichtkritische Fehler
Dies sind Fehler, die das Spiel oder den Editor nicht zum Absturz bringen und deshalb schwerer zu entdecken sind. Sie äußern sich darin, dass das Spiel anders verläuft als erwünscht. Dies kann durch Unachtsamkeit, Unkenntniss der Fehler oder sporadisch passieren.
JASS
- Zu lange Auslöser (die Auslöseraktion bzw. -bedingung enthält zu viele Anweisungen) werden nach einer bestimmten Zeit abgebrochen (maximale Ausführungszeit).
- Ereignisreaktionen werden nicht immer über Waits hinaus gespeichert und können überschrieben werden. Werden sie in Kombination unbedingt benötigt, sollte man Lokale Variablen verwenden.
- Waits haben eine Genauigkeit von nur 0,25 Sekunden.
- Gametime Wait ist sehr (+-5 sek) ungenau wenn ein Spieler lagt, bei wichtigen Dingen unbedingt Timer verwenden.
- Pick-Schleifen scheinen eine maximale Anzahl an Objekten zu haben.
- Strings dürfen nicht mehr als 860 Zeichen enthalten.
- Sounds weden beim ersten Aufruf nicht abgespielt.
- Timer, die zerstört wurden, können trotzdem noch zu Ende laufen (man sollte Timer vor dem Zerstören pausieren).
- Die Funktionen GroupEnumUnitsInRectCounted() und GroupEnumUnitsInRangeCounted() haben Probleme bei großen Einheitenmengen.
- Das null-Setzen von Timer-Variablen kann zu Problemen führen, wenn der Timer noch nicht zerstört wurde.
- Die Konstanten "ITEM_TYPE_UNKNOWN" und "ITEM_TYPE_MISCELLANEOUS" haben vertauschte Werte.
- Entfernt man eine Reihe aus einem Multiboard, wird der Inhalt weiterhin angezeigt.
- Der Return-Bug kann in Verbindung mit normalen Rechenoperationen zu unerwarteten Ergebnissen führen. (Beispiel : 4 + H2I(w) //w ist ein Wettereffekt)
- Ein Befehl an eine Einheit, eine Fähigkeit zu wirken, kann den Rückgabewert der Funktion GetSpellAbilityUnit noch im selben Auslöser auf null setzen.
- Beim Benutzen des Return-Bugs um einen Integer in einen Handle-Typ umzuwandeln kann es zu einer Korruption des Handle-Speichers führen.
- Das Zerstören von Auslösern kann zu einer Korruption des Handle-Speichers führen, insbesondere wenn der zerstörte Auslöser noch läuft.
Editor
- Die Zeilennummer wird bei einem Kompilierungsfehler manchmal um eins nach unten verschoben angezeigt.
- Wenn die Karte gespeichert wird, werden "%" aus dem Header gelöscht (man muss "%%" schreiben). Bei Jass in Auslösern ist dies nicht der Fall.
- Real-Angaben mit vielen Nachkommastellen können zu völlig anderen Werten führen
- Der Auslöser-Editor kann manche Ausdrücke nicht richtig verarbeiten (es kommt zu Kompilierungsfehlern beim Speichern der Karte). Abhilfe schafft es, große Ausdrücke in mehrere kleine zu unterteilen.
Anderes
- Ausbaustufen, die das Leben erhöhen sollten, verringern ab einer gewissen Höhe (Vermutung: Leben der Zieleinheit) das Leben, anstatt es zu erhöhen. Das kann dazu führen, dass Einheiten direkt nach ihrer Erstellung sterben.
Ausnutzbare Fehler
Dies sind Fehler, die sich zum Vorteil des Mappers einsetzen lassen.
- Der Return-Bug ermöglicht das Umwandeln von komplexen Datentypen ineinander (z.B. Item zu Unit), als auch das Zurückführen auf abstrakte Datentypen (z.B. Unit und Item in Widget oder Handle), und das Erhalten von Referenzen auf konkrete Objekte (Unit, Item, Timer etc. in Integer). Der Return-Bug kann allerdings seit Patch 1.24 nicht mehr benutzt werden. Daher sollte man auf Hash-Tabellen und GetHandleId zurückgreifen.
- Man kann die Flughöhe einer Einheit, deren Bewegungstyp nicht fliegen ist, erhöhen, wenn man ihr die Fähigkeit Krähengestalt gibt und wieder entfernt.
- Man kann einem Spieler mit der Fähigkeit Heuschrecke die Kontrolle über eine Einheit entziehen. Dann ist sie allerdings auch nicht mehr attackierbar. Wenn man ihr vorher die Chaos-Fähigkeit gibt, dann bleibt sie angreifbar.
- Wenn man einer Einheit eine Zauberbuchfähigkeit mit passiven Fähigkeiten gibt, wirken diese auch aus dem Zauberbuch heraus. Das funktioniert jedoch auch dann, wenn die Fähigkeit für einen Spieler deaktiviert wurde. So kann man für den Spieler nicht sichtbar einer Einheit oder einem Helden einige passive Fähigkeiten geben und auch deren Stufe einstellen. Erst durch ein "Remove ability" werden die passiven Fähigkeiten wieder entfernt.
- Besitzt eine Einheit mehrere Zauberbuchfähigkeiten mit derselben Id, so werden alle in den Zauberbüchern enthaltenen Fähigkeiten zusammen in der ersten Zauberbuchfähigkeit angezeigt, die der Einheit gegeben wurde.
Weblinks
- "Known bugs in JASS" auf WC3Campaigns.net (englisch)
- "Warcraft III Ability Guide" auf WC3Campaigns.net - Enthält einige Bugs bei Abilities, und wie man die ausnutzt. (z.B. HP Bonus und Engineering Upgrade verwenden, ohne sie auf der Einheit behalten zu müssen)








