Tipps: Scripting-Probleme richtig erklären
Hallo,
in diesem Thread erfährst Du, wie Du Dein Script(ing)-Problem richtig erklärst, darstellst und darlegst. Wir werden uns hier zum einen einige Gestaltungsmöglichkeiten anschauen, mit denen Du Deinen Thread ansprechender machen kannst und zum anderen schauen wir uns an wie Du Dein Problem sprachlich und sachlich korrekt schilderst. Außerdem findest Du in jedem Abschnitt ein Beispiel wie man es richtig macht und ein Beispiel, wie man es besser nicht machen sollte.
Es hat sich in der Vergangenheit herausgestellt, dass diejenigen, die diese Tipps befolgen, in der Regel schnellere und bessere Hilfe bekommen, als diejenigen, die diese Tipps als unnötig erachten. Es liegt somit in den meisten Fällen also ganz allein bei Dir, ob Dein Thread Beachtung findet und Dir geholfen werden kann.
Kapitel 1: Vor dem Posten
Wie bei vielem in der Welt gilt auch hier: Erst denken, dann machen.
1. Erstmal selbst suchen
Über die Suchfunktion bzw. über Suchmaschinen wie Google, Bing, etc. lassen sich viele Probleme und deren Lösungen schnell und einfach finden. Suche daher erst, ob Du zu Deinem Problem etwas findest, es kann ja sein, dass bereits jemand anderes genau dasselbe Problem hatte.
Schlecht:
ZitatHallo, ich suche ein Admin-System für SA-MP!
Gut:
ZitatIch suche selbst vor dem Posten, z.B.:
http://lmgtfy.com/?q=samp+admin+system
2. Der Fehlererklärbar
Falls Dein Code Errors bzw. Warnungen hat, schaue zuerst im Fehlerklärbär nach, was die jeweilige Warnung bzw. der Error bedeutet, vielleicht kannst Du das Problem dann schon selbst lösen.
Schlecht:
ZitatIch bekomme folgende Warnung, was soll ich tun??
Gut:
ZitatFehlererklärbar nutzen => https://ticket.breadfish.de/coding
3. Das Wiki
Im SA-MP Wiki befinden sich sehr viele Beispiele und Hilfestellungen, sowie nützliche Erklärungen zu Codes und Funktionen. Falls es ein kleines Problem oder eine kurze Frage ist, lohnt es sich oft, einen Blick ins Wiki zu werfen, um die Lösung zu finden.
Ehemals offizieller Link: http://wiki.sa-mp.com (Leider wurde das offizielle Wiki vom Netz genommen)
Neue Wiki's: https://team.sa-mp.com/wiki-archive.html bzw. https://sampwiki.blast.hk/wiki/Main_Page (Beides sind Kopien des ehemals offiziellen Wiki's).
Schlecht:
ZitatHallo Leute, wie erstelle ich ein Pickup??
Gut:
Zitathttps://team.sa-mp.com/wiki-archive.html => STRG+F => pickup
4. Bei MySQL-Problemen → Debug Modus nutzen
Fast immer findet sich das Problem bei MySQL-Problemen im MySQL-Log. Wenn Du also ein Problem mit einem MySQL-Code hast, dann schalte bitte den Debug-Modus an und führe den fehlerhaften Code aus. Den Log fügst du dann deinem Thread hinzu.
So schaltest du den MySQL-Debug Modus an (unter OnGameModeInit):
BlueG vor R33:
BlueG ab R33:
StrickenKid:
Die Logs findest Du dann entweder im server_log.txt oder in einer vom Plugin erstellten Textdatei (mysql_log.txt meistens).
Schlecht:
Zitat
Gut:
Zitat
5. Das Crashdetect Plugin
In vielen Fällen kann durch die Ausführung des Crashdetect-Plugins bereits eine mögliche Fehlerquelle gefunden werden. Es ist daher empfehlenswert, wenn man, vor allem bei Server-Abstürzen und Befehlen die "Unknown Command" zurück geben, zuvor dieses Plugin laufen lässt.
Das Crashdetect Plugin kann hier heruntergeladen werden: Crashdetect Plugin - Download (SA-MP Forum Thread)
Schlecht:
Zitat
Gut:
Zitat
[12:34:56] [debug] Server crashed while executing gamemode.amx
[12:34:56] [debug] AMX backtrace:
[12:34:56] [debug] #0 native SendClientMessageToAll () from samp-server.exe
[12:34:56] [debug] #1 00000c2c in public OnPlayerCommandText (0, 162072) from gamemode.amx
[12:34:56] [debug] Native backtrace:
[12:34:56] [debug] #0 0049dc0c in ?? () from samp-server.exe
Es besteht zudem, in den meisten Fällen, die Möglichkeit, sich die Fehlerzeile als Zahl direkt im Server Log mit ausgeben zu lassen. Dies ist extrem hilfreich, denn man weiß sofort, wo der Fehler liegt.
Hierfür muss allerdings folgendes gemacht werden:
- Im Ordner /pawno/ eine Datei "pawn.cfg" erstellen (Neues Textdokument -> Speichern unter -> pawn.cfg).
- Inhalt der pawn.cfg eintragen: -d3
- Die "pawno.exe" neu öffnen und den Gamemode über die Öffnen-Funktion auswählen.
- Den Code neu kompilieren.
- Den Fehler/Absturz erneut erzeugen, es steht nun die Zeile im Log dabei, in der der Fehler aufgetreten ist.
...
[12:34:56] [debug] #1 00000c2c in public OnPlayerCommandText (0, 162072) at C:\Users\Jeffry\Desktop\gamemode.pwn:1337
...
Hier wäre der Fehler in der Datei "gamemode.pwn" in der Zeile 1337.
Kapitel 2: Inhalt des Threads
Nein, der Thread sollte nicht nur aus 100 Zeilen Code bestehen! Folgende Dinge sollte der Thread enthalten:
1. Die Überschrift
Wähle eine aussagekräftige Überschrift. Überschriften die nichts zum Thema sagen machen keinen Sinn. Die Überschrift muss ansprechend und informativ sein. Schildere dazu Dein Problem oder Deine Frage in 3-5 Wörtern, kurz und knapp. Vermeide dabei Ketten von Ausrufezeichen, komplette Wörter in Großbuchstaben oder Hilferufe („HILFE!!! DRINGEND!"), bei denen man meint Du wärst in Lebensgefahr oder kurz vor einem Herzinfarkt.
Schlecht:
Zitat[DRINGEND] Ich brauche HILFE! ES GEHT NICHT?!
Gut:
ZitatFehler im MySQL Query
2. Problemschilderung
Schildere Dein Problem so genau wie möglich und so ausführlich wie nötig. Gebe dabei alle Informationen weiter, die Du hast, zum Beispiel welche Nachrichten kommen, was passiert und was passieren sollte. Grundsätzlich gilt: Je mehr Informationen, desto besser.
Schlecht:
ZitatEj Leute, der drecks Code geht nicht. Helft mir!!
Gut:
ZitatHallo, in meinem Befehl (siehe Code unten) ist ein Fehler. Ich kann die Autotüren nur abschließen wenn ich im Auto bin, eigentlich sollte es auch gehen, wenn ich neben dem Auto stehe.
3. Füge Code hinzu
In fast allen Fällen liegt das Problem am Code. Daher ist es, bis auf einige Ausnahmen, immer notwendig, dass Du Deinen Code postest. Nicht den ganzen Gamemode, sondern der Teil, in dem das Problem liegt, oder zumindest den Teil, in dem Du vermutest, dass dort das Problem ist, falls Du es nicht weißt. Übertreibe es aber nicht mit Code. Einen Code mit 700 Zeilen schaut sich keiner an.
Achte darauf, dass die Zeilen mit denen im Code übereinstimmen. Dies kannst du im C-Code-Tag steuern:
[code=1337,c][/code]
Code beginnt bei Zeile 1337.
Es gilt generell: Ohne Code nichts los!
4. Füge Logs und Compiler-Meldungen hinzu
Diese beiden Dinge sind für die Helfer extrem wichtig. Falls Du also Meldungen im Server Log stehen hast, oder Meldungen im Compiler (Errors/Warnungen) bekommst, füge diese deinem Thread hinzu.
5. Teile Vermutungen mit
Wenn Du bereits eine Vermutung hast, was das Problem sein könnte, dann teile dies den Lesern des Thread mit. Das spart Zeit und kann so zur schnelleren Lösung Deines Threads beitragen.
Schlecht:
ZitatIch hab einen Fehler im Login Code, kann mir zwar denken warum es nicht klappt, aber schaut mal: (…)
Gut:
ZitatHallo, mein Login Code gibt dem Spieler kein Geld mehr. Ich vermute, dass es an der nachfolgenden Berechnung liegt, bin mir aber nicht sicher: (…)
Kapitel 3: Die Gestaltung
In diesem Teil gehen wir auf die verschiedenen Gestaltungsmöglichkeiten ein, die eingehalten werden sollten um den Thread so darzustellen, dass es für jeden ein Leichtes ist, den Thread zu lesen, sonst kann es schnell dazu kommen, dass sich viele den Thread erst gar nicht durchlesen.
1. Die Schrift
Die Schrift ist wohl der wichtigste Aspekt bei der Darstellung Deines Threads. Es sollte hier darauf geachtet werden, dass die Schrift normal, nicht übertrieben und nicht in sonstiger Art und Weise vom Normal abweicht.
Deshalb gilt hier: Weniger ist mehr.
Vermieden werden sollte:
Riesige Buchstaben (wir sind nicht blind!)
Alles zentriert schreiben
Kunterbunte Texte
Vollständig fett geschriebene Texte
Schlecht:
ZitatHallo, ich bekomme hier einen Error: (…)
Gut:
ZitatHallo, ich bekomme hier einen Error: (…)
2. Codes
Codes sollten, bzw. müssen im C-Code-Tag stehen, nicht im php-, quote-, code- oder mysql-tag stehen.
Ebenso sollte die Zeilenangabe direkt über den C-Code-Tag geschehen.
3. Bilder
Das Problem sollte auf den Bildern klar erkennbar sein. Es macht keinen Sinn ein Bild hinzuzufügen, ohne dass man weiß wo der Fehler ist. Ist das Problem nicht sofort erkennbar, ist es gut, wenn man es markiert (rote Umrandung).
Schlecht:
ZitatWarum kein Label?
Gut:
ZitatWieso fehlt bei dem markierten Haus das Label? (Code unten...)
Kapitel 4: Sonstiges
Zum Schluss noch ein paar weitere Tipps, die die Lösung deines Threads zusätzlich beschleunigen können.
1. Antworten
Wenn Du auf eine oder mehrere Nachfragen antwortest, dann antworte bitte auf alle Fragen und nicht nur auf einen Teil der Fragen, da Du diese sonst nur wieder gestellt bekommst, das verzögert den ganzen Vorgang nur unnötig.
Schlecht:
ZitatEs kommt immer UNKONWN COMMAND! Helft mir?!
Gut:
Zitat
2. Geduldig sein
Nörgeln bringt nichts. Wenn Dir jemand in deinem Thread angefangen hat zu helfen und dann nicht mehr antwortet, bringt es nichts wenn Du ihn mit PNs zumüllst, oder alle 10 Minuten deinen Thread pushst. Das führt nur dazu, dass du keine Hilfe mehr bekommst.
Schlecht:
ZitatGeht immer noch nicht.
#push
#push2
#push3 HILFE!!!
Gut:
ZitatDas Problem besteht noch immer, der Spieler bekommt einfach kein Geld mehr wenn er sich einloggt. Weiß noch jemand etwas?
3. Freundlich sein
Beschimpfen, beleidigen oder den Besserwisser zu spielen solltest Du lassen, schließlich bist Du auf der Suche nach Hilfe.
Schlecht:
ZitatEj das geht immer noch net! Ihr habt doch alle keine Ahnung ihr Lappen. Helft mir endlich, ich kapier den Scheiß nicht!!!!!!!!!!!!!!!
Gut:
ZitatHallo, es geht leider immer noch nicht. Der Spieler bekommt immer noch kein Geld wenn er sich einloggt. Hat noch jemand einen Lösungsvorschlag? Danke.
Wenn Du diese Tipps & Tricks befolgst und einhältst, dann wird Dir ganz sicher ziemlich schnell und professionell geholfen.
Ich bedanke mich im Namen aller deren, die in der Scripting Base helfen.
Jeffry