Abfrage, ob ein Befehl benutzt wurde

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
  • Wie kann man im Script Abfragen, ob ein Befehl schon mal seit dem Connecten vom Player schonmal benutzt wurde?
    Zum Beispiel:
    if (strcmp("/back", cmdtext, true, 10) == 0)
    {
    {
    if (IsPlayerInAnyVehicle(playerid)) SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    else SendClientMessage(playerid, COLOR_ROT, "Bla, blub, NÖ!");
    }
    return 1;
    }
    Wie kann man da Abfragen, ob der Befehl schonmal benutzt wurde und ihn ggf. sperren oder Teile davon sperren?


    Thx im vorraus :D

  • So ungefähr:


    //oben in dein Script:
    new vari[MAX_PLAYERS];


    //dein Befehl:
    if (strcmp("/back", cmdtext, true, 10) == 0)
    {
    if(vari[playerid] == 1) return SendClientMessage(playerid, rot,"Du darfst diesen Befehl nicht mehr verwenden !");
    if (IsPlayerInAnyVehicle(playerid)) SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    else SendClientMessage(playerid, COLOR_ROT, "Bla, blub, NÖ!");
    vari[playerid] = 1;
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • // Edit: Kleines ; vergessen & Kaliber war schneller; Edit2: kleinerer Fail
    // oben im Script: new Genutzt[MAX_PLAYERS];


    // Bei OnPlayerConnect: Genutzt[playerid] = 0;


    if (strcmp("/back", cmdtext, true, 10) == 0)
    {
    if(Genutzt[playerid] == 0)
    {
    if (IsPlayerInAnyVehicle(playerid)) SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    else SendClientMessage(playerid, COLOR_ROT, "Bla, blub, NÖ!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_ROT, "Bla, blub, NÖ!");
    Genutzt[playerid] = 1;
    return 1;
    }


    MfG

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Edit: Meins ist Ressourcen schonender als das von dem über mir :D (nichts gegen dich xD)
    new bool:UsedBack[MAX_PLAYERS]; // Oben bei deinen new's
    public OnPlayerConnect(playerid) { // Wichtig: In deinen public einbauen und ihn nicht doppelt erstellen :D
    UsedBack = false; // setzt den Wert auf "nicht genutzt" wenn der Spieler connected
    return 1;
    }

    Dann in deinen Befehl:
    UsedBack = true; // Setzt den Wert auf "schon genutzt"


    Außerdem dann noch ganz als erstes in deinem Befehl:
    if(UsedBack[playerid]==true) return 1; // Beendet den Befehl, falls die Variable auf "schon genutzt" ist