Befehl nur alle 10 min ?

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 Morgen Liebe Breadfish Community.



    Ich habe eine frage zu meinem Befehl den ich gemacht habe.
    Also ich habe ein befehl für einer meiner Neben Jobs gemacht wenn er "/fare [SUMME] " eingibt Also wenn er z.B: " /fare 50 Macht ", und er es aber nochmal Eingibt soll eine Nachricht an den Spieler kommen das er es in 10 minuten wieder Versuchen soll..



    also in grunde genommen soll er den Befehl nur alle 10 min nutzen Können ?..



    Hier der Befehl:



    ocmd:fare(playerid,params[])
    {
    new string[128],geldinfo;
    if(!isPlayerJob(playerid,3))return SendClientMessage(playerid,DUNKELROT,"Info: Du hasst den Neben Job Taxifahrer nicht !");
    if(sscanf(params,"d",geldinfo))return SendClientMessage(playerid,DUNKELGRAU,"/fare [Preis]");
    if(geldinfo<1||geldinfo>500)return SendClientMessage(playerid,DUNKELROT,"Du kannst nicht mehr Als 500€ Angeben");
    format(string,sizeof(string),"{FAE200}Taxifahrer: {DCDCDC} %s steht nun als Taxifahrer zu Diensten Preis: %i €",SpielerName(playerid),geldinfo);
    SendClientMessageToAll(GELB,string);
    return 1;
    }

  • Eine Variable in dem Befehl auf 1 setzen , zB. Test[playerid]=1;


    Dann fragst du aber vorher ab , ob die Variable auf 0 ist , wenn ja , soll dass passieren was du hast , wenn nein , zB. eine Nachricht , dass es nicht geht :D


    Dann mit einem TimerEx der 10 Minuten geht die Variable auf 0 setzen.

  • new bereit[MAX_PLAYERS]; forward bbereit(playerid);
    ocmd:fare(playerid,params[])
    {
    new string[128],geldinfo;
    if(!isPlayerJob(playerid,3))return SendClientMessage(playerid,DUNKELROT,"Info: Du hasst den Neben Job Taxifahrer nicht !");
    if(sscanf(params,"d",geldinfo))return SendClientMessage(playerid,DUNKELGRAU,"/fare [Preis]");
    if(geldinfo<1||geldinfo>500)return SendClientMessage(playerid,DUNKELROT,"Du kannst nicht mehr Als 500€ Angeben");
    format(string,sizeof(string),"{FAE200}Taxifahrer: {DCDCDC} %s steht nun als Taxifahrer zu Diensten Preis: %i €",SpielerName(playerid),geldinfo);
    SendClientMessageToAll(GELB,string);
    bereit[playerid] = 1;
    SetTimerEx("bbereit",600000,"i",playerid);
    return 1;
    }
    public bbereit(playerid)
    {
    if(bereit[playerid] == 1)
    {
    bereit[playerid] = 0;
    SendClientMessage(playerid,farbe,"Du kannst den Befehl nun wieder benutzen !");
    }
    else { SendClientMessage(playerid,farbe,"Nö !"); }
    return 1;
    }
    Versuchs so ;).vergessen :D.


  • Er muss ja auch abfragen , ob die Variable auf 1 ist , sonst kann er den Befehl jedes mal ausführen ^^

  • new wert[MAX_PLAYERS];


    dann wenn du den befehl eingibst das amchen
    wert[playerid]=gettime()+(60*10);
    dann hast du schonmal das


    bei der abfrage dann so:
    if(gettime()<wert[playerid])
    {
    //Hier der Error
    }
    else
    {
    //das was passieren soll
    }


    lass es dir nicht mit nen Timer einwürgen da die variante viel schonender für den server ist

  • So ?

    ocmd:fare(playerid,params[])
    {
    new string[128],geldinfo;
    new wert[MAX_PLAYERS];
    if(!isPlayerJob(playerid,3))return SendClientMessage(playerid,DUNKELROT,"Info: Du hasst den Neben Job Taxifahrer nicht !");
    if(sscanf(params,"d",geldinfo))return SendClientMessage(playerid,DUNKELGRAU,"/fare [Preis]");
    wert[playerid]=gettime()+(60*10);
    if(gettime()<wert[playerid])
    {
    SendClientMessage(playerid,ROT,"Nur alle 10mins");
    }
    if(geldinfo<1||geldinfo>500)return SendClientMessage(playerid,DUNKELROT,"Du kannst nicht mehr Als 500€ Angeben");
    format(string,sizeof(string),"{FAE200}Taxifahrer: {DCDCDC} %s steht nun als Taxifahrer zu Diensten Preis: %i €",SpielerName(playerid),geldinfo);
    SendClientMessageToAll(GELB,string);
    return 1;
    }

  • mach es mal so


  • Kirege Warning



    C:\Users\Equ\Desktop\samp Server 0.3e\gamemodes\LoC.pwn(1487) : warning 219: local variable "wert" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.




    In diesen Befehl Hier:

    ocmd:timeban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2000))return SendClientMessage(playerid,ROT,"Dein Rang ist zu.");
    new pID, time, grund[128];
    if(sscanf(params,"uis",pID,time,grund))return SendClientMessage(playerid,ORANGE,"/timeban [Name/ID] [Zeit in Minuten] [Grund]");
    else
    if(playerid == pID) return SendClientMessage(playerid,DUNKELROT,"Du kannst dich nicht selber Timebannen geben !");
    if(IsPlayerConnected(playerid))return SendClientMessage(playerid,GRUN,"Der User ist nicht Online");
    {
    if(time>0||time<1000)
    {
    new string[128];
    format(string,sizeof(string),"INFO: %s wurde vom Admin %s für %i Minuten gebannt. [Grund: %s]",SpielerName(pID),SpielerName(playerid),time,grund);
    SendClientMessageToAll(ROT,string);
    new wert; // In Dieser Zeile ist der Warning
    wert=gettime()+(60*time);
    SetPVarInt(pID,"timeban",wert);
    Kick(pID);
    return 1;
    }
    SendClientMessage(playerid,ROT,"Ungültige Zeit!");
    return 1;
    }


    }

  • die Zeile löschen da wir die oben definiert haben für alle


    //edit


    nein nicht löschen nenn den neuen wert um auf was weiß ich wasdas war nur nen muster von mir

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kriege dann Errors

    C:\Users\Equ\Desktop\samp Server 0.3e\gamemodes\LoC.pwn(1487) : error 033: array must be indexed (variable "wert")
    C:\Users\Equ\Desktop\samp Server 0.3e\gamemodes\LoC.pwn(1488) : error 035: argument type mismatch (argument 3)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.




    ocmd:timeban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2000))return SendClientMessage(playerid,ROT,"Dein Rang ist zu.");
    new pID, time, grund[128];
    if(sscanf(params,"uis",pID,time,grund))return SendClientMessage(playerid,ORANGE,"/timeban [Name/ID] [Zeit in Minuten] [Grund]");
    else
    if(playerid == pID) return SendClientMessage(playerid,DUNKELROT,"Du kannst dich nicht selber Timebannen geben !");
    if(IsPlayerConnected(playerid))return SendClientMessage(playerid,GRUN,"Der User ist nicht Online");
    {
    if(time>0||time<1000)
    {
    new string[128];
    format(string,sizeof(string),"INFO: %s wurde vom Admin %s für %i Minuten gebannt. [Grund: %s]",SpielerName(pID),SpielerName(playerid),time,grund);
    SendClientMessageToAll(ROT,string);
    wert=gettime()+(60*time); // HIER 1 ERROR
    SetPVarInt(pID,"timeban",wert); // HIER 2 Error
    Kick(pID);
    return 1;
    }
    SendClientMessage(playerid,ROT,"Ungültige Zeit!");
    return 1;
    }


    }

  • les nochmal den Post über dir ich hab mich vertan nenn das neue wert um auf zeitcheck oder so

  • ja das 60 ist eine Minute * bedeutet mal 10 halt die Minuten da er sonst in millisekunden rechnet

  • Wenn du nicht mal Grundwissen in PAWN besitzt, warum sollten wir dir dann helfen?
    Jeder weiß dass man mithilfe einer Variable bzw. Deklaration , eine Abfrage starten kann... hierbei kannst du auch "Bool" benutzen.


    Bool: Bool ist eine Eigenschaft die entweder 'true' oder 'false' ist.

    /*Benutzung:*/
    new bool:blaaaa[MAX_PLAYERS];


    blaaaa[playerid] = true; oder false;


    1000 = 1 sek *60 = 1 Min *60 = 1 Std.

    Roleplay Network | Dᴇᴀᴅ.Nᴇᴛ