Wantedverlust nach 15 Minuten

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,


    ich bräuchte Hilfe bei folgendem Problem:


    Ich möchte gerne das die Wanteds alle 15 Minuten um 1 heruntergesetzt werden.
    Bisher habe ich folgendes gescriptet:



    forward WantedLoss(playerid);public WantedLoss(playerid){ WantedLevel[playerid] --; new wlevel; wlevel = GetPlayerWantedLevel(playerid); new tmp[64]; format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i", wlevel-1); SendClientMessage(playerid, COLOR_GREEN,tmp); return 1;}



    SetTimer("WantedLoss",60000,1);



    Leider funktioniert das Ganze überhaupt nicht!
    Kann mir einer einen Tipp geben ?


    Vielen Dank im Voraus!

  • Machs mal so.
    forward WantedLoss(playerid);
    public WantedLoss(playerid)
    {
    WantedLevel[playerid] --;
    SetPlayerWantedLevel(playerid,WantedLevel[playerid]);
    new tmp[64];
    format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i", WantedLevel[playerid]);
    SendClientMessage(playerid, COLOR_GREEN,tmp);
    return 1;


    }

  • Beitrag von ohitsandrzej ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • forward WantedLoss();
    public WantedLoss()
    {
    for(new playerid=0; playerid<MAX_PLAYERS; playerid++)
    {
    if(WantedLevel[playerid] > 0)
    {
    WantedLevel[playerid] --;
    SetPlayerWantedLevel(playerid, WantedLevel[playerid]);
    new tmp[64];
    format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i", wlevel-1);
    SendClientMessage(playerid, COLOR_GREEN,tmp);
    }
    }
    return 1;
    }


    Der Timer unter OnGameModeInit:
    SetTimer("WantedLoss",15*60*1000,1);

  • Wenn du den Timer unter OnGameModeInit startest, ist das schonmal richtig :)


    60000 ist falsch..ersetze das mal durch 1000*60*15


    Und dann schreibe das mal so:


    forward WantedLoss();public WantedLoss() {
    for(new i,tmp[32]; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !WantedLevel[i]) continue;
    WantedLevel[i]--,SetPlayerWantedLevel(i,WantedLevel[i]);
    format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i",WantedLevel[i]);
    SendClientMessage(i, COLOR_GREEN,tmp);
    }
    return 1;
    }


    Damit würde jeder Spieler auf dem Server alle 15min 1 Wanted verlieren, solange er auch eins hat :)


    Nachteil
    Sagen wir mal, der Server startet um 14:00uhr...so und dann bekommt ein Spieler ein Wanted um 14:14...dann wird er um 14:15 1 Wanted abgezogen bekommen.

    Nachteil
    Wenn du das nicht haben möchtest, dann musst es spieler orientiert machen und zwar so:

    Nachteil
    new bool:s_Timer[MAX_PLAYERS char]; //Oben im Skript

    Nachteil
    //Unter OnPlayerConnect
    s_Timer{playerid}=false;

    Nachteil
    //in deinem Wantedbefehl
    if(!s_Timer{playerid}) s_Timer{playerid}=true,SetTimerEx("@w_loss",1000*60*15,0,"i",playerid);

    Nachteil
    //Außerhalb einer Funktion / Callbacks
    @w_loss(i);@w_loss(i) {
    if(!IsPlayerConnected(i) || WantedLevel[i] <= 0) return 0;
    new tmp[32];
    WantedLevel[i]--,SetPlayerWantedLevel(i,WantedLevel[i]);
    format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i",WantedLevel[i]);
    SendClientMessage(i, COLOR_GREEN,tmp);
    return (WantedLevel[i]) ? SetTimerEx("@w_loss",1000*60*15,0,"i",i) : 0;
    }


    mfg. :thumbup:


    //Edit: Ups..hatte noch playerid da stehen...

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()

  • Hallo eine kurze Frage zu deiner Lösung, Kaliber:

    //in deinem Wantedbefehl

    if(!s_Timer{playerid}) s_Timer{playerid}=true,SetTimerEx("@w_loss",1000*60*15,0,"i",playerid);




    Meinst du damit, dass ich das unter public Wantedloss einfügen soll ?
    Oder unter einen Befehl der an die Spieler Wanteds verteilt ?