Pawn like PHP?

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
  • Hallo,
    wollte mich mal erkundigen ... Hauke hatte mal ein Screenshot gezeigt, auf welchem zu sehen ist, dass er in Pawn quasi mit Klassen arbeitet.


    Das hätte ich nun auch gerne, um die verschiedenen Dinge einfach zu trennen (User, Admin, System, ...)


    Wollte Fragen, ob es möglich ist, folgendes zu machen?:
    User::create(name[], password[], ...)


    Sprich, dass das User dafür steht, dass er die Include "User.inc" nutzen soll, und daraus die Funktion "create" - geht das? Wenn ja, ich wäre sehr dankbar, wenn man mir Codeschnipsel geben könnte - denn so, denke ich, kann Pawn wieder ein wenig Spaß machen! :)


    Grüße.

    Einmal editiert, zuletzt von TutNichts ()

  • Ja, in der Tat, das ist möglich :D


    Das basiert auf einem System von Makros :)


    Hier mal ein Beispiel:


    #define User::%0(%1,%2,%3) \
    (%0(%1,%2,%3))


    //Hier mal aufgerufen:
    main() {
    User::create("Kaliber", "123", 1234);
    }


    stock create(name[],pw[],...) {
    printf("%s | %s",name,pw); //printet->Kaliber|123
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Du machst es auch kompliziert für die parameter da reicht
    #define USER::%0(%1) %0(%1)


    Aber das ist nicht mal nötig Slice nimmt dazu immer die ersten zwei buchstaben


    #define USER:: U_
    stock U_create(name[],pw[],...)


    du kannst auch abfragen ob ein define definiert wurde und darauf hin die include hinzufügen also
    beispiel


    #define USER:: U_


    #if defined USER::
    #tryinclude "User.inc"
    #endif

  • Ganz einfach, wirklich. ^^
    dead hat mich größtenteils auf die Idee gebracht.


    In den jeweiligen Includes einfach nur, z.B. in der User.inc:
    stock User_Name() { ... }


    Im Script:
    #define User::%1(%2) User_%1(%2)
    #define Database::%1(%2) mysql_%1(%2)
    #define Admin::%1(%2) Admin_%1(%2)


    Und Anwendung:
    User::Name(playerid);


    Funktioniert 1a und ist viel, viel cooler. :P :D :)

  • Achso, ja auf die Idee bin ich auch gekommen, nur muss man dann den Funktionen den entsprechenden Präfix verpassen.
    Meine Überlegung war, dass die Funktionen direkt aus den includes gesucht werden. Aber für den Aufwand hat es dann doch relativ wenig Nutzen, also egal :D

    Professioneller Webentwickler.