Warum benutzt man ocmd ? | Was ist ein string, wie macht man ihn?

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 Leute!


    Wie im Titel schon zu erkennen ist, habe ich 2 kleinere Fragen. Ich bin gerade dabei,
    ein bisschen was zu lernen. Ich muss mich einfach in den Ferien mit irgendwas
    mehr oder weniger sinnvollem beschäftigen. ( Ja, ich gehe auch raus^^ ). Jedenfalls
    habe ich mir dazu American Streets Life von Azure runtergeladen:




    Ich sehe er benutzt ocmd um Befehle zu erstellen.
    Warum macht er das?


    Meine zweite Frage ist:


    Was ist ein String? Wie macht man ihn?


    Ich hoffe ihr könnt mir helfen! :)

  • OCMD Splittet einen Command "vor" so kannst du leichter Commandos mit Params erstellen und aus dem string
    params[] Auch noch die Paramenter mit sscanf "rauslesen".


    zu 2.



    new string[128];//Währ ein 128 Zeichen langer string

  • Einen String kannst du zum Beispiel formatieren und somit Variablen mit reinbringen.


    z.B: format(string,sizeof(string),"%s sagt hallo.",SpielerName(playerid));


    Das könnte im ganzen im Befehl mit ocmd und sscanf so aussehen:
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    ocmd:saghallo(playerid,params[])
    {
    new string[128];//<-- Hier wird der String mit der Länge von 128 Zeichen erstellt.
    format(string,sizeof(string),"%s sagt Hallo.",SpielerName(playerid))//<-- Hier wird der String formatiert. Das %s steht für einen String. Ingame würde es zum Beispiel so aussehen: "Peter sagt Hallo."
    SendClientMessageToAll(-1,string);//<---- Der String wird abgeschickt an alle
    return 1;
    }

  • new string[128]
    Das ist ein Array, kein String.
    Ein String ist eine Zeichenkette - ein Array mit einzelnen Zeichen.
    Jeder Index in diesem Array verbraucht ein Zeichen, z. B. 'c'.


    Zeichen - kette

  • Ein String ist ( in Pawn zumindest ) eine mehr dimensionale Variable, bei der "jede Dimension" ( in dem Fall 128 ) ein Zeichen zugewiesen bekommt. Die Variable als ganze gesehen ergibt somit einen Text, welchen man String nennt.


    Er benutzt OCMD, weil, wie ich übrigens auch empfinde, es einfach und bequem ist. Der Vorteil bzw das bequeme hierbei ist, man kann die Parameter ( ein Parameter ist eine 2. Angabe, in dem Fall bei einem Befehl. Bsp. /kick [player] -> player = parameter ) sehr leicht behandeln und ( oft in Verbindung mit SSCANF -> ein Plugin oder Include beides vorhanden ) splitten.


    Hoffe ich konnte dir Helfen, bei weiter Fragen kannst du hier posten oder mir eine PM schreiben. :)

  • Bekomme jetzt diesen Error:


    error 017: undefined symbol "SpielerName"



    Muss ich noch irgendwas mit #define machen? Wenn nicht, wo muss denn dann der stock hin?


    //Edit:


    Hat sich erledigt!