PAWN Syntax & Keywords

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Prolog:
    Dieses Tutorial ist nur für Fortgeschrittene gedacht.
    Mir viel schon immer auf, daß viele nicht genau die Syntax möglichkeiten von PAWN kennen.
    Wer will schon if und else, wenn es auch kürzer geht?


    Constanten und Arrays:
    Const Variablen haben bekanntlich keinen veränderlichen Wert und können zur Array Initalisierung genutzt werden.
    Dazu wird beim erstellen der Wert hinzugefügt.
    Allerdings meckern ältere PAWNCC's auch bei späterer Wertvergabe und nur erstellung nicht.
    new c;
    read(c); // Diese Funktion existiert nicht wirklich
    const b = c; // Nun ist b für immer c und unveränderlich!
    new a[code=c]; // Solange c > 0 ist, funktioniert dies prächtig!


    Enum Struktur:
    Der Vorteil eines Enums liegt auf der Hand.
    Namen anstatt Zahlen.
    Es gibt zwei Anwendungsbereiche.
    Einmal als Type und einmal als Array Zelle.
    Ersteres ist dies:
    enum a {
    test,
    ja
    }
    b(a:arg)
    return (arg == test) ? (-1) : (-2);
    Aufgerufen wie folgend:
    a(test);
    Zweiteres:
    enum a {
    test,
    test2
    }
    new b[a];
    Aufgerufen wie folgend:
    b[test]; // oder b[test2];


    Vordefinierte Werte/Default Value bei Funktionen:
    Der gebrauch ist vielfälltig, und wenn öfters eine Funktion als Parameter den selben Wert besitzt, liegt es nahe, den faulen Default Weg zu nutzten.
    a(b, c=1) { // default value c welches bei nicht setzten 1 ist!
    printf("%d und %d", b, c);
    }
    a(2); // möglich
    a(2, _); // genauso möglich _ ist ein Platzhalter und ruft dementsprechend den Default Value auf.
    a(2, 2); // geht auch
    a(2, 3); // und dies ebenso


    Unbestimmte Argumenten-Anzahl:
    Immer gut zu gebrauchen.
    Z.b. möchte man gerne sich tausend Addierungsoperatoren sparen und es lieber in eine Funktion packen.
    Nun weiß man die Parameter Anzahl leider nicht.
    Macht nichts, wir lassen PAWN einfach zählen.
    FastAdd(&a, ...) { // ... sind die unbekannten Parameter!
    for(new i = 0; i < numargs(); i++) {
    a += getarg(i);
    }
    return a;
    }
    Aufzurufen:
    new b = 0;
    FastAdd(33, 22, 11, 23);
    FastAdd(99, 25); // Auch möglich


    Vordefinieren einer Funktion:
    Da hat man den Salat, man ruft eine Funktion auf die es noch nicht gibt, oder man erstellt eine Public function.
    Viele nutzten dann "forward", aber das braucht man garnicht.
    Genauso wie das Keyword "public".
    Es geht kürzer (Vordefinieren):
    a(b);
    // Viel Quellcode
    a(b) {
    // code
    }
    Und nun eine kurze public:
    @a(); // Unsere Public wir kennzeichnen durch das '@' das wir die Funktion Publik nutzten.
    @a() {
    // code
    }
    Kürzer oder? :>


    Eigene Operatoren:
    Hier keinen heißen Brei, wird jeder schonmal gehört haben. ;x
    enum bad {
    god = 3,
    halfgod = 2,
    user = 1
    }
    stock bad:operator+(bad:a, bad:b) {
    return (a!=god&&b!=god) ? (a+b) : (god);
    }
    MEHR FOLGT SPÄTER! (MORGEN :X)


    Einmal editiert, zuletzt von DMA ()

  • Finde ich auch ein sehr nützliches Tutorial.
    Hoffe das du das noch fortsetzt.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kann es sein das du überlesen hast das der Bezeichner ,,c´´ größer als 0 sein muss und
    read nicht wirklich existiert , außerdem kann man Konstante Werte nicht verändern wie der Begriff sagt bleiben sie fest und
    können nicht per Code Handlung verändert werden

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • sagt das alles


    return (arg == test) ? (-1) : (-2);



    dies gibt je nach Übereinstimmung eine Zahl zurück , Falsch = -1 und Richtig = -2


    //EDIT: Ich drücke es mal so aus , es ist eine gekürzte Abfrage

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


    Einmal editiert, zuletzt von BlackFoX ()