Frage zu /god [AN/AUS]

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
  • Erstmal brauchst du die strtok Funktion:


    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    Diese fügst du am besten ganz unten im Script ein.


    Unter OnPlayerCommandText schreibst du folgendes:


    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);


    if(!strcmp("/god", cmdtext, true))
    {
    new param[256];
    param = strtok(cmdtext, idx);
    if(!strlen(param))
    {
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /God[an|aus]");
    return 1;
    }
    if(!strcmp("an", param, true))
    {
    // Code
    }
    else if(!strcmp("aus", param, true))
    {
    // Code
    }
    else
    {
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /God[an|aus]");
    return 1;
    }


    }


    BlackLegend

  • Hallo BlackLegend,


    Ich hab den Script jetzt mal angeguckt und in mein
    GameMode rein getan und die entsprechene Codes
    rein gemacht.


    Wenn ich den command /god an oder aus eintippe
    taucht im chat SERVER:Unknown Command.
    Code wird auch nicht bei if(!strcmp("an", param, true))und
    else if(!strcmp("aus", param, true)) benutzt.


    Der Code:
    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);


    if(!strcmp("/god", cmdtext, true))
    {
    new param[256];
    param = strtok(cmdtext, idx);
    if(!strlen(param))
    {
    SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
    return 1;
    }
    if(!strcmp("an", param, true))
    {
    SendClientMessage(playerid,GRÜN,"Dein God Modus wurde Aktiviert.");
    SetPlayerHealth(playerid,99999999999999);
    // Code
    }
    else if(!strcmp("aus", param, true))
    {
    SendClientMessage(playerid,ROT,"Dein God Modus wurde Deaktiviert.");
    SetPlayerHealth(playerid,100);
    // Code
    }
    else
    {
    SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
    return 1;
    }


    }


    return 0;
    }

  • if(!strcmp("/god", cmd, true))
    {
    new param[256];//Der 1. Parameter, einfach ein String
    param = strtok(cmdtext, idx);//Splittet den eingegebenen Befehl nach Leerzeichen und deklariert param als 1. Parameter, idx ist der aktuelle Parameter (1, 2, 3, etc.)
    if(!strlen(param))//strlen liest aus, aus wievielen Zeichen der String (param) besteht, wenn das Ergebnis 0 ist, wurde kein Parameter übergeben.
    {
    SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
    return 1;
    }
    if(!strcmp("an", param, true))//Vergleicht zwei strings, param und "an", Groß- und Kleinschreibung wird ignoriert. Wenn also der 1. Parameter (param) gleich "an" ist, wird der Godmode aktiviert.
    {
    SendClientMessage(playerid,GRÜN,"Dein God Modus wurde Aktiviert.");
    SetPlayerHealth(playerid,99999999999999);
    // Code
    }
    else if(!strcmp("aus", param, true))//Fals nicht "an" sondern "aus" als Parameter gewählt wurde, wird der Godmode deaktiviert
    {
    SendClientMessage(playerid,ROT,"Dein God Modus wurde Deaktiviert.");
    SetPlayerHealth(playerid,100);
    // Code
    }
    else//Wenn weder "an" noch "aus" als Parameter gewählt wurden, wird eine Infonachricht ausgegeben.
    {
    SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
    return 1;
    }
    return 1;


    }


    So, jetzt sollte es eigentlich funktionieren.
    Hat nur ein return 1; gefehlt und die erste Abfrage war falsch.


    //Edit: Erklärungen hinzugefügt.


    BlackLegend