wie funtzt STROK?

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
  • Les es dir doch einmal genau durch. Am Anfang erscheint alles schwer. Aber sobald es *Klick* gemacht hat kann man Commands mit 3 Parametern mit Leichtigkeit in nichtmal 2 Minuten schreiben.

    Help dcmd & sscanf to their way to Pawn domination. Read the tutorial below, and use it.
    dcmd & sscanf

  • new cmd[256],tmp[128],idx;
    cmd = strtok(cmdtext, idx); // cmdtext + den Index also z.b. /meinwert ist der cmd und der index ist die Leerstelle und dein Wert dahinter
    if (strcmp(cmd, "/meinwert", true) ==0 )
    {
    tmp = strtok(cmdtext,idx); // tmp gibt den Index wieder
    if(!strlen(tmp)){ return 1} // Entspricht der wert also einem Leerem also nix beendet er die Funktion
    new wert[64];
    format(wert,sizeof(wert),"Dein Wert %s",tmp);
    GameTextForPlayer(playerid,wert,2000,1);
    return 1;
    }


    mehr kann ich eig. nicht sagen ausser das du wenn du mehrere Index haben willst
    den wert zwischen Speichern musst da er Später verwendet werden soll und danach nochmal tmp = strtok(cmdtext,idx); hin muss
    aber ich empfehle dir die von Klinsen vorgeschlagene Methode

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Also:


    Als allererstes brauchst du das dcmd Makro. Das fügst du einfach ganz oben ins Script ein, und vergisst es.
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    Dann schreibst du unter das Callback "OnPlayerCommandText(playerid, cmdtext[])" deinen Command in dieser Form:


    dcmd(mycommand, 9, cmdtext);
    "mycommand" ist dein Command. Die 9 signalisiert die Länge des Commands ohne Parameter. cmdtext zeigt nur an wo der Command erstellt wird.


    So, dann fügst du, außerhalb eines jeden Callbacks das hier in dein Script ein:
    dcmd_mycommand(playerid,params[])


    Der erste Parameter, "playerid", ist der User der den Command ausführt. Der zweite Parameter enthält das was der Spieler eingibt wenn er den Command ausführt. Z.B. /mycommand 123. Dann enthält "params" 123.


    Dann erstellen wir einfach einmal einen simplen Kick Command.


    Als erstes erstellen wir das Grundgerüst des Commands: In diesem Fall: dcmd(kick,4,cmdtext);.
    Als nächstes erstellen wir den eigentlichen Command.
    Der würde so aussehen:
    dcmd_kick(playerid, params[]) {
    new target = strval(params); // Zeigt an dass "target" ein Wert ist
    if(!strlen(params)) {// Was passiert wenn wir nichts eingeben nach dem /kick, also "params" leer lassen:
    return SendClientMessage(playerid, 0xFF0000FF, "Benutze /kick [PlayerID].");
    }
    if(!IsPlayerConnected(target)) { // Wenn "target" nicht online ist.
    return SendClientMessage(playerid, 0xFF0000FF, "Angegebener User ist nicht online!");
    }
    Kick(target); // Hier kicken wir "target".
    SendClientMessage(playerid, 0xFF0000FF, "Ziel wurde gekickt.");
    return 1;
    }


    So, jetzt haben wir einen simplen, aber effektiven Kick-Command.


    sscanf erkläre ich dir entweder morgen oder du schaust dir Goldkillers Tutorial nochmal an.

    Help dcmd & sscanf to their way to Pawn domination. Read the tutorial below, and use it.
    dcmd & sscanf