Befehl nur einmal Nutzbar?!

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
  • Guten Mittag,
    Ich möchte das Folgender Befehl für jeden User nur >Einmal< Nutzbar ist:



    ocmd:startbonus(playerid,params[])
    {
    SendClientMessage(playerid,ROT,"Staat: Du erhälst 200.000$ und Level 4 von uns.");
    SendClientMessage(playerid,ROT,"Staat: Teil es dir gut ein, du bekommst es nur einmal!");
    SetPlayerScore(playerid,4);
    GivePlayerMoney(playerid, 200000);
    return 1;
    }



    Meine Frage:
    Wie mache ich das? Der Spieler soll das wirklich nur einmal machen können. Egal wie spät oder wie das Wetter ist, nur einmal :D

  • Mach es in deine RegisterFunktion, sodass er das automatisch bekommt.

  • Ansonsten Variable setzen.
    Variable beim registrieren auf 1 setzen.
    Beim ausführen vom Befehl auf 0 setzen.
    Eine Abfrage setzen ob die Variable auf 1 ist.
    Allerdings können die Spieler es nur nach dem registrieren nutzen wenn sie dann den Server Verlassen und dann erneut betreten geht dieser CMD nicht mehr.


    LG RFT

    RFT

  • Jaa ..
    Aber ich habe es mal auf einem Server so gesehen.
    Die haben das aber i.wie anders gemacht. Sonst, danke. Ich mache es als Admin befehl!


    /Closed! Danke °_°

  • Hier hast du es als Admin befehl:


    if(strcmp(cmd, "/startbonus", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 1332)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /startbonus [playerid/PartOfName]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[giveplayerid][pLevel] != 1)
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Dieser Spieler ist kein Anfänger mehr!");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast Spieler %s den Startbonus gegeben (Level: 3, Geld: +$100.000). *",giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Admin %s hat dir einen Startbonus gegeben. (Level: 3, Geld: +$100.000).",sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    PlayerMoney[giveplayerid] = PlayerMoney[giveplayerid] += 100000;
    PlayerInfo[giveplayerid][pLevel] = 3;
    PlayerInfo[giveplayerid][gPupgrade] += 3;
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist nicht berechtigt, diesen Befehl zu benutzen !");
    return 1;
    }
    }
    return 1;
    }

  • Wen der Befehl doch das score auf 4 sezt, warum machst du es dann nicht so das men es nur mit score 0 oder ein wie auch immer nutzen kann,
    if(GetPlayerScore =<0) so zum beispiel


    ocmd:startbonus(playerid,params[])
    {
    if(GetPlayerScore(playerid) = 0)
    {
    SendClientMessage(playerid,ROT,"Staat: Du erhälst 200.000$ und Level 4 von uns.");
    SendClientMessage(playerid,ROT,"Staat: Teil es dir gut ein, du bekommst es nur einmal!");
    SetPlayerScore(playerid,4);
    GivePlayerMoney(playerid, 200000);
    }
    return 1;
    }

    So müsste es klappen (ungetestet )