Angepinnt Tipps: Scripting-Probleme richtig erklären

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Tipps: Scripting-Probleme richtig erklären

    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.
    Beispiel
    Schlecht:
    Hallo, ich suche ein Admin-System für SA-MP!
    Gut:
    Ich suche selbst vor dem Posten, z.B.:
    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.
    Beispiel
    Schlecht:
    Ich bekomme folgende Warnung, was soll ich tun??
    Gut:
    Fehlererklärbar nutzen => 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.
    Link: wiki.sa-mp.com
    Beispiel
    Schlecht:
    Hallo Leute, wie erstelle ich ein Pickup??
    Gut:
    wiki.sa-mp.com => 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:
    Code

    C-Quellcode

    1. mysql_debug(1);

    BlueG ab R33:
    Code

    C-Quellcode

    1. mysql_log(LOG_ALL);

    StrickenKid:
    Code

    C-Quellcode

    1. mysql_init(LOG_ALL, 1);


    Die Logs findest Du dann entweder im server_log.txt oder in einer vom Plugin erstellten Textdatei (mysql_log.txt meistens).
    Beispiel
    Schlecht:
    Hallo, das query geht nicht:

    C-Quellcode

    1. mysql_query("UPDATE table SET level = 1 WHERE = 10");
    WARUM!?!?
    Gut:
    Hallo, das query geht nicht:

    C-Quellcode

    1. mysql_query("UPDATE table SET level = 1 WHERE = 10");
    Hier der Log:

    Quellcode

    1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE =' at line 1


    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)
    Beispiel
    Schlecht:
    Warum stürzt mein Server bei dem Befehl ab?

    C-Quellcode

    1. if(!strcmp(cmdtext, "/test", true))
    2. {
    3. SendClientMessageToAll(0xFF0000FF, "Ich habe %s eingegeben.", cmdtext);
    4. }
    Gut:
    Folgender Code erzeugt im Server Log diese Meldung:

    C-Quellcode

    1. if(!strcmp(cmdtext, "/test", true))
    2. {
    3. SendClientMessageToAll(0xFF0000FF, "Ich habe %s eingegeben.", cmdtext);
    4. }

    Quellcode

    1. [12:34:56] [debug] Server crashed while executing gamemode.amx
    2. [12:34:56] [debug] AMX backtrace:
    3. [12:34:56] [debug] #0 native SendClientMessageToAll () from samp-server.exe
    4. [12:34:56] [debug] #1 00000c2c in public OnPlayerCommandText (0, 162072) from gamemode.amx
    5. [12:34:56] [debug] Native backtrace:
    6. [12:34:56] [debug] #0 0049dc0c in ?? () from samp-server.exe

    Ausgabe mit Zeilenangabe

    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:
    1. Im Ordner /pawno/ eine Datei "pawn.cfg" erstellen (Neues Textdokument -> Speichern unter -> pawn.cfg).
    2. Inhalt der pawn.cfg eintragen: -d3
    3. Die "pawno.exe" neu öffnen und den Gamemode über die Öffnen-Funktion auswählen.
    4. Den Code neu kompilieren.
    5. Den Fehler/Absturz erneut erzeugen, es steht nun die Zeile im Log dabei, in der der Fehler aufgetreten ist.

    Quellcode

    1. ...
    2. [12:34:56] [debug] #1 00000c2c in public OnPlayerCommandText (0, 162072) at C:\Users\Jeffry\Desktop\gamemode.pwn:1337
    3. ...
    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.
    Beispiel
    Schlecht:
    [DRINGEND] Ich brauche HILFE! ES GEHT NICHT?!
    Gut:
    Fehler 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.
    Beispiel
    Schlecht:
    Ej Leute, der drecks Code geht nicht. Helft mir!!
    Gut:
    Hallo, 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!
    Beispiel
    Schlecht:
    In Zeile 542 hab ich einen Error. Warum?
    Gut:
    Hallo, wieso bekomme ich diesen Error?

    Quellcode

    1. C:\...\test.pwn(542) : error 017: undefined symbol "geld"
    2. C:\...\test.pwn(542) : warning 215: expression has no effect

    C-Quellcode

    1. if(listitem == 1)
    2. {
    3. geld = 100;
    4. }


    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.
    Beispiel
    Schlecht:
    He Leute mein Code geht nicht?

    C-Quellcode

    1. SendClientMessage(playerid, ROT, "Hallo Welt!");
    Gut:
    Ich bekomme hier einen Error:

    C-Quellcode

    1. SendClientMessage(playerid, ROT, "Hallo Welt!");

    Quellcode

    1. C:\...\test.pwn(108) : error 017: undefined symbol "ROT"


    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.
    Beispiel
    Schlecht:
    Ich hab einen Fehler im Login Code, kann mir zwar denken warum es nicht klappt, aber schaut mal: (…)
    Gut:
    Hallo, 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
    Beispiel
    Schlecht:
    Hallo, ich bekomme hier einen Error: (…)
    Gut:
    Hallo, 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.
    Beispiel
    Schlecht:
    if(listitem == 1)
    {
    new geld = 10;
    if(geld > 9) GivePlayerMoney(playerid, geld);
    }
    Gut:

    C-Quellcode

    1. if(listitem == 1)
    2. {
    3. new geld = 10;
    4. if(geld > 9) GivePlayerMoney(playerid, geld);
    5. }


    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).
    Beispiel
    Schlecht:
    Warum kein Label?

    Gut:
    Wieso 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.
    Beispiel
    Schlecht:
    Hallo, kannst Du bitte Deinen MySQL-Log posten und uns sagen was passiert, wenn Du den Befehl eingibst?
    Es kommt immer UNKONWN COMMAND! Helft mir?!
    Gut:
    Hallo, kannst Du bitte Deinen MySQL-Log posten und uns sagen was passiert, wenn Du den Befehl eingibst?

    Quellcode

    1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE =' at line 1
    Wenn ich den Befehl eingebe bekomme ich nur die Meldung, dass der Befehl nicht exisitiert.

    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.
    Beispiel
    Schlecht:
    Geht immer noch nicht.

    #push
    #push2
    #push3 HILFE!!!
    Gut:
    Das 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.
    Beispiel
    Schlecht:
    Ej das geht immer noch net! Ihr habt doch alle keine Ahnung ihr Lappen. Helft mir endlich, ich kapier den Scheiß nicht!!!!!!!!!!!!!!!
    Gut:
    Hallo, 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 8)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Jeffry () aus folgendem Grund: 14.11.2015: Code-Formatierung an WBB4 angepasst | 03.08.2016: Crashdetect Plugin hinzugefügt (1.5)

  • thetvMt2 schrieb:

    Da ja der Thread "Wie erkläre ich mein Scripting-Problem richtig ?..." veraltet ist bzw. du vorhin gelöscht hast, kann man ja den Thread hier anpinnen, da es jetzt aktuell und informativ ist.

    angepinnt + closed sollte was weiteres Hinzugefügt werden PN


    //Edit by shoxinat0r: Push
    Ich habe aufgehört aktiv zu scripten.


    DT_DynamicCar V 1.3.7 - Autohaussystem mit vielen Extras
    DT_SaveBox V 1.0.1 - Savebox-System zum abspeichern von Drogen/Materialien für Fraktionen


    Euer eigener Fortschrittanzeiger? Hier Klicken!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von shoxinat0r () aus folgendem Grund: Beitragspush