Enumerator - Namen Indizes Erweiterung

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 liebe Brotfische, ich stelle euch nun mal eine kleine, aber evtl nützliche Include vor.


    Also es geht um folgendes, stellt euch vor ihr habt ein Enum:


    enum Hust
    {
    Name[MAX_PLAYER_NAME],
    Level,
    Geld,
    bool:Erstellt,
    Float:p_x,
    Float:p_y
    };


    new pInfo[MAX_PLAYERS][Hust];


    So, dies ist nun ein einfacher Enumerator.


    Man kann über Pawn ja ganz einfach auf die einzelnen Indizes zugreifen: pInfo[playerid][Level] = 1; //usw


    Alles schön und gut.


    Was diese Include bietet ist eine Funktion um die einzelnen Namen im Enum auszulesen:


    const id = 0;
    for(new i; i<GetStruct(id); i++)
    {
    printf("index: %d | Name: %s",i,heap[id][i]);
    }


    /*
    Dieser Code gibt in dem Beispiel also aus:
    index: 0 | Name: Name
    index: 1 | Name: Level
    index: 2 | Name: Geld
    index: 3 | Name: Erstellt
    index: 4 | Name: p_x
    index: 5 | Name: p_y
    */


    Dies bietet neue Möglichkeiten, z.B. beim Debugging oder einfachere Handhabung der Variablen für Speicherungs-Systeme, damit könnte man z.B. das einfach per Schleife alles speichern (mit MySQL).


    Ich wollte es euch einfach mal nur Vorstellen das System, falls es jemand benötigt (habe schon mehrmals gelesen, wo sowas gewünscht wurde).


    Probleme:


    Ihr könnt maximal 8 Indizes in einer Struktur benutzen. Grund dafür ist, dass es maximal nur %0-%9 Unbekannte in einem Makro geben kann.
    Desweiteren, dürfen die Variablen Namen nicht solang sein und ihr solltet keine weiteren Makro-Namen in dem Makro selbst nutzen :D (Also schreibt anstatt MAX_PLAYER_NAME, direkt 24 einfach.)
    Falls ihr zu lange Namen o.ä. verwendet...stürzt euer Compiler ab :S


    Da alles an Makros gebunden ist, muss man leider syntaktisch etwas umdenken.


    //Allgemeine Struktur:
    struct@anzahl_der_Indizes: Enum_Name { a,b,c,d,e,f } (id);


    //Beispiele:
    struct@1: p_INFO { a } (0); //Es gibt 1nen Index und da es die erste Struktur ist (0) am Ende.


    struct@2: p_INFO { pMember,pLeader } (1);


    struct@5: p_INFO { a,b,c,d,e } (2);


    //Weitere Funktionen
    GetStruct(id); //Gibt die Anzahl der Indizes wieder
    //Bei den Strukturen hier z.B.:
    const indizes = GetStruct(2); //würde z.B. hier 5 enthalten


    const id = 1;
    //In dieser Variable sind alle Namen gespeichert
    heap[id][0]; //Das würde ein "pLeader" ausgeben
    heap[id][1]; //das gibt ein "pMember" aus


    //Oben gezeigtes Beispiel sieht also so aus:
    struct@6: Hust { Name[24],Level,Geld,bool:Erstellt,Float:p_x,Float:p_y } (0);


    Es ist leider sehr stark durch Pawn eingegrenzt inwieweit man sowas nutzen kann.
    Ich wollte lediglich mal zeigen, dass es in kleinem Maße funktioniert so etwas zu erstellen.


    Download:
    Source-Code: PasteBin
    Direkter-Download: MediaFire


    Schlusswort:
    Ich würde mich über ein paar Rückmeldungen freuen, falls ihr Verbesserungs-Vorschläge habt oder sonst irgendwas einfach, einfach schreiben :)


    mfg. :thumbup:


    //Edit: Ich hatte das Beispiel angepasst.
    //Edit²: Ich habe das Edit eingefügt.

    ast2ufdyxkb1.png


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

    2 Mal editiert, zuletzt von Kaliber ()

  • Eine sehr schöne und vorteilhafte Include.

    Server Leiter - Projektleiter
    __________________________________________________


    Hostingpartner: simple-servers.de - So einfach wie noch nie!
    nImage - Free and fast picture upload!
    nImage - Picture upload
    __________________________________________________


    Server IP: server.nemesus-roleplay.net
    Teamspeak IP: ts3.nemesus-roleplay.net
    __________________________________________________


  • Könntest du mal einen Vergleich zwischen dem normalen Umgang mit Enums und dem Enumerator machen ?


    Was? :huh:


    Ein Enum ist ein Enumerator :D Das "Enum" ist eine Abkürzung für Enumerator...sowie bool eine Abkürzung für Boolean ist...usw


    Und Beispiele wie man das struct Makro nutzt habe ich doch gemacht...es ist nichts anderes als ein Enum, nur dass man die Namen auslesen kann.


    mfg. :thumbup:

    ast2ufdyxkb1.png


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