Befehl einmalig benutzbar

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 Abend Zusammen,


    kleine Frage bei der ich nicht ganz weiter weiß. ^^
    Ich möchte ein Befehl (z.B. /test) erstellen, der für ein Spieler nur einmalig benutzbar ist.
    Danke euch im Voraus!

  • Mach doch einfach wenn er /test oder so macht das SendClientMessage oder was du willst und vorher abfragen welchen score der spieler hat und wenn er z:b. Score 1 hat dann wenn er den befehl benutzt hat dann einstellen das er score 2 hat und dann kann er den befehl nicht mehr benutzen weil es nur für leute ist die einen score von 1 haben.

  • Beim nächsten mal bitte die Groß- und Kleinschreibung und . und , beachten. Es ist schwer dein Text zu lesen.


    Ich habs mir so gedacht als Beispiel...


    if (strcmp(cmdtext,"/godmode",true,10)==0)
    {
    SetPlayerHealth(playerid,100);
    SetPlayerArmour(playerid,100);
    GivePlayerWeapon(playerid,24,500);
    GivePlayerWeapon(playerid,29,500);
    GivePlayerWeapon(playerid,31,500);
    GivePlayerWeapon(playerid,16,50);
    GivePlayerWeapon(playerid,46,1);
    return 1;
    }
    }


    Das dieser Befehl nur einmalig für ein User benutzbar ist.

  • if (strcmp(cmdtext,"/godmode",true,10)==0)
    {
    SetPlayerHealth(playerid,100);
    SetPlayerArmour(playerid,100);
    GivePlayerWeapon(playerid,24,500);
    GivePlayerWeapon(playerid,29,500);
    GivePlayerWeapon(playerid,31,500);
    GivePlayerWeapon(playerid,16,50);
    GivePlayerWeapon(playerid,46,1);SetPlayerScore(playerid, 2);
    return 1;
    }
    }


    Versuch mal das mit SetPlayerScore.

  • Damit würde reintheoretisch den Score des Spielers ändern, was ich eigentlich nicht möchte.

  • hey mach es am besten so


    stock ABefehl(playerid)
    {
    if(GetPVarInt(playerid,"EinmalNutzbar")>=1)return 1;
    return 0;
    }
    if (strcmp(cmdtext,"/godmode",true,10)==0)
    {
    if(ABefehl(playerid))
    {
    SetPlayerHealth(playerid,100);
    SetPlayerArmour(playerid,100);
    GivePlayerWeapon(playerid,24,500);
    GivePlayerWeapon(playerid,29,500);
    GivePlayerWeapon(playerid,31,500);
    GivePlayerWeapon(playerid,16,50);
    GivePlayerWeapon(playerid,46,1);
    SetPVarInt(playerid,"EinmalNutzbar",0);
    return 1;


    }
    else
    {
    SendClientMessage(playerid,ROT,"Du dafst den Befehl nicht mehr Nutzen!");
    }
    }
    und in den Register System mit einbauen das er es Speichert
    dini_IntSet(Spielerdatei,"EinmalNutzbar",GetPVarInt(playerid,"EinmalNutzbar"));
    Und beim Laden
    SetPVarInt(playerid,"EinmalNutzbar",dini_Int(Spielerdatei,"EinmalNutzbar"));//EinmalNutzbar

  • erstelle einfach ne normal variable die abgefragt wird.



    new WurdeEsSchonGefragt;




    if(WurdeEsSchonGefragt == 0)
    {
    Was du machen willst
    }
    else if(WurdeEsSchonGefragt == 1)
    {
    Wenn es schon benutzt wurde.
    }

  • Das kann ja wohl nicht so schwer sein.
    Ihr macht da alle Umstände raus.:



    if (strcmp(cmdtext,"/godmode",true,10)==0)
    {
    if(GetPVarInt(playerid, "Einmalig") == 0)
    {
    SetPlayerHealth(playerid,100);
    SetPlayerArmour(playerid,100);
    GivePlayerWeapon(playerid,24,500);
    GivePlayerWeapon(playerid,29,500);
    GivePlayerWeapon(playerid,31,500);
    GivePlayerWeapon(playerid,16,50);
    GivePlayerWeapon(playerid,46,1);
    SetPlayerScore(playerid, 2);
    SetPVarInt(playerid, "Einmalig", 1);
    }
    else
    {
    SendClientMessage(playerid, DEINE_FARBE, "Du hast den Befehl bereits einmal genutzt.
    }
    return 1;


    }


    Nichts von wegen Stock oder extra eine neue Variable definieren.


    edit:


    @ iSpeed: Wenn du eine globale Variable erstellen willst, ist es wenn schon WurdeEsSchonGefragt[MAX_PLAYERS]; , da sonst, sobald irgendjemand den Befehl nutzt, der Befehl für alle Spieler unmöglich ist.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • wenn das für ein Spieler sein soll mit pVar oder MAX_PLAYERS Arbeiten. ;)

  • wie speicherst du deine Spieler?
    Schließlich ist dieser Befehl nur einmalig nutzbar und soll nach einem Relog oder Serverneustart nicht wieder benutzbar sein...



    OnPlayerAsks(playerid,text)
    {
    new needhelp[192];
    format(needhelp,sizeof(needhelp),"%s",text);
    if(playerid == needhelp)
    {
    SendPrivateMessage(a6150,0xF0F0F0FF,text);
    }
    return 1;
    }