Automatisch Wanteds weg((settimerex)

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
  • So,
    ich hab einen Automatischen Wantedabzug für gf eingefügt
    SetTimer("WantedAutomatisch",1000,1); //wanted clear automatisch
    forward WantedAutomatisch(playerid);



    public WantedAutomatisch(playerid)
    {
    new wantedastring[128];
    new wanted = WantedLevel[playerid];


    if(WantedLevel[playerid] > 0)
    {


    new slrrrand = random(4);
    if(slrrrand == 0) format(wantedastring, sizeof(wantedastring), "Da du so lange Zeit dich vor den Cop´s verstecken konntest, hast du jetzt nur noch %d Wanteds.", wanted-1);
    else if(slrrrand == 1) format(wantedastring, sizeof(wantedastring), "Die Cops können dich einfach nicht finden, jetzt hast du noch %d Wanteds.", wanted-1);
    else if(slrrrand == 2) format(wantedastring, sizeof(wantedastring), "Du hast jetzt nur noch %d Wanteds, aber die Cops sind dir auf der Spur also versteck dich.", wanted-1);
    else format(wantedastring, sizeof(wantedastring), "Deine Fahndungs Priorität ist um 1 Wanted gesunken, da die Cops grade viel zu tun haben(Aktuelle Wanteds: %d).", wanted-1);
    SendClientMessage(playerid, COLOR_YELLOW, wantedastring);


    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)-1);
    WantedPoints[playerid] -= 1;
    WantedLevel[playerid]-=1;
    }
    return 1;
    }


    Ich möchte das ganze besser machen, da es immer noch buggt, wie kann man das ganze zu SetTimerEx umändern?


    @edit: fehler entfernt


    MfG. Cody09

  • Du willst das von SetTimer() auf SetTimerEx umrüsten hab ich das richtig verstanden?
    Das kommt natürlich drauf an, wo der Timer ist. Ob "playerid" in diesem Callback vorhanden ist.
    Wenn sie vorhanden ist dann:
    SetTimerEx("WantedAutomatisch", 1000, 1, "d", playerid);


    Also: Die ersten 3 Parameter sind dir ja klar hoffe ich. Zu "d": "d" legt den Datentyp fest, welche die Variable, die in den public, der aufgerufen wird, wenn der Timer abgelaufen ist, übermittelt wird. playerid ist die Variable, die übermittelt wird. bei nem String würde das so aussehen: SetTimerEx("WantedAutomatisch", 1000, 1, "s", string); Aber du hast ja hier mit playerid einen Integer Wert vorliegen =)
    Im public selbst muss nichts geändert werden. Nur denke dran, wenn du mehrere Variablen überliefern willst: z.B. ..., "dd", playerid, vehicleid); Dann ist der erste übermittelte Wert, der in SetTimerEx steht auch der erste in dem public. Also richtig ist das: public Publicname(playerid, vehicleid) und falsch: public Publicname (vehicleid, playerid).
    Ich hoffe, ich konnte dir helfen =)


    EvilToast

  • aha...naja weniger..wie würde ich das hier anwenden wenn der Player wenn er wanteds hat alle 10 minuten ein Wanted weg bekommt?
    So wie ich jetzt habe buggt es leider, user von mir sagen, das sie nur manchmal in unregelmäßigen 1 Wanted wegbekommen -.-

  • so scheint es aber auch nicht zu funktionieren:



    forward WantedAutomatisch(playerid);
    public WantedAutomatisch(playerid)
    {
    new wantedastring[128];
    new wanted = WantedLevel[playerid];
    //SetTimerEx("WantedAutomatisch",1000,1,"i",playerid);
    SetTimerEx("WantedAutomatisch", 600000, 1, "d", playerid);
    if(WantedLevel[playerid] > 0)
    {


    new slrrrand = random(4);
    if(slrrrand == 0) format(wantedastring, sizeof(wantedastring), "Da du so lange Zeit dich vor den Cop´s verstecken konntest, hast du jetzt nur noch %d Wanteds.", wanted-1);
    else if(slrrrand == 1) format(wantedastring, sizeof(wantedastring), "Die Cops können dich einfach nicht finden, jetzt hast du noch %d Wanteds.", wanted-1);
    else if(slrrrand == 2) format(wantedastring, sizeof(wantedastring), "Du hast jetzt nur noch %d Wanteds, aber die Cops sind dir auf der Spur also versteck dich.", wanted-1);
    else format(wantedastring, sizeof(wantedastring), "Deine Fahndungs Priorität ist um 1 Wanted gesunken, da die Cops grade viel zu tun haben(Aktuelle Wanteds: %d).", wanted-1);
    SendClientMessage(playerid, COLOR_YELLOW, wantedastring);


    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)-1);
    WantedPoints[playerid] -= 1;
    WantedLevel[playerid]-=1;
    }
    return 1;
    }

  • Zitat

    bau die ganze Funktion um so das alles in einer Schleife aufgerufen wird und dann einfach die Funktion per SetTimer aufrufen.


    Sinn? entweder steh ich total auf dem Schlauch oder du... Ich dachte er will das nur 1 best. User alle 10min 1 Wanted weg bekommt? Wenn nicht muss man nartürlich eine For-Schleife nehmen.


    Bestimmte User:
    SetTimerEx("WantedAutomatisch", 1000, 1, "i", playerid); //Ich habe bei mir für playerid immer i


    Alle User:
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    // Restlicher Code
    }

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • also?


    forward WantedAutomatisch(playerid);
    public WantedAutomatisch(playerid)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {


    new wantedastring[128];
    new wanted = WantedLevel[i];
    SetTimerEx("WantedAutomatisch", 600000, 1, "i", playerid);
    if(WantedLevel[i] > 0)
    {


    new slrrrand = random(4);
    if(slrrrand == 0) format(wantedastring, sizeof(wantedastring), "Da du so lange Zeit dich vor den Cop´s verstecken konntest, hast du jetzt nur noch %d Wanteds.", wanted-1);
    else if(slrrrand == 1) format(wantedastring, sizeof(wantedastring), "Die Cops können dich einfach nicht finden, jetzt hast du noch %d Wanteds.", wanted-1);
    else if(slrrrand == 2) format(wantedastring, sizeof(wantedastring), "Du hast jetzt nur noch %d Wanteds, aber die Cops sind dir auf der Spur also versteck dich.", wanted-1);
    else format(wantedastring, sizeof(wantedastring), "Deine Fahndungs Priorität ist um 1 Wanted gesunken, da die Cops grade viel zu tun haben(Aktuelle Wanteds: %d).", wanted-1);
    SendClientMessage(i, COLOR_YELLOW, wantedastring);


    SetPlayerWantedLevel(i,GetPlayerWantedLevel(i)-1);
    WantedPoints[i] -= 1;
    WantedLevel[i]-=1;
    }
    }
    return 1;
    }

  • Ja, genau richtig! Sorry dann hatte ich das wohl ursprünglich doch falsch verstanden.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • SetTimer("blah",1000*60,true);



    public blah()
    {
    for(new i;i<MAX_PLAYERS&&IsPlayerConnected(i);i++)
    {
    if(Wanteds[i] >= 1) //oder wie auch immer die wanteds gespeichert werden
    {
    //alles hier rein, texte, wanted weniger etc
    }
    }
    return 1;
    }
    So wird jede Minute von allen Spielern deren Wanted über 0 liegt, ihr Wanted um 1 veringert.
    Wenn du das nicht so meintest hab ich dich wohl falsch verstanden.

  • ah, und welches von beiden soll ich jetzt nehmen?


    das:
    forward WantedAutomatisch(playerid);
    public WantedAutomatisch(playerid)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {


    new wantedastring[128];
    new wanted = WantedLevel[i];
    SetTimerEx("WantedAutomatisch", 600000, 1, "i", playerid);
    if(WantedLevel[i] > 0)
    {


    new slrrrand = random(4);
    if(slrrrand == 0) format(wantedastring, sizeof(wantedastring), "Da du so lange Zeit dich vor den Cop´s verstecken konntest, hast du jetzt nur noch %d Wanteds.", wanted-1);
    else if(slrrrand == 1) format(wantedastring, sizeof(wantedastring), "Die Cops können dich einfach nicht finden, jetzt hast du noch %d Wanteds.", wanted-1);
    else if(slrrrand == 2) format(wantedastring, sizeof(wantedastring), "Du hast jetzt nur noch %d Wanteds, aber die Cops sind dir auf der Spur also versteck dich.", wanted-1);
    else format(wantedastring, sizeof(wantedastring), "Deine Fahndungs Priorität ist um 1 Wanted gesunken, da die Cops grade viel zu tun haben(Aktuelle Wanteds: %d).", wanted-1);
    SendClientMessage(i, COLOR_YELLOW, wantedastring);


    SetPlayerWantedLevel(i,GetPlayerWantedLevel(i)-1);
    WantedPoints[i] -= 1;
    WantedLevel[i]-=1;
    }
    }
    return 1;
    }


    oder das?
    SetTimer("WantedAutomatisch",1000*60,true);


    public WantedAutomatisch()
    {
    for(new i;i<MAX_PLAYERS&&IsPlayerConnected(i);i++)
    {
    if(WantedLevel[i] > 0)//oder wie auch immer die wanteds gespeichert werden
    {
    new slrrrand = random(4);
    if(slrrrand == 0) format(wantedastring, sizeof(wantedastring), "Da du so lange Zeit dich vor den Cop´s verstecken konntest, hast du jetzt nur noch %d Wanteds.", wanted-1);
    else if(slrrrand == 1) format(wantedastring, sizeof(wantedastring), "Die Cops können dich einfach nicht finden, jetzt hast du noch %d Wanteds.", wanted-1);
    else if(slrrrand == 2) format(wantedastring, sizeof(wantedastring), "Du hast jetzt nur noch %d Wanteds, aber die Cops sind dir auf der Spur also versteck dich.", wanted-1);
    else format(wantedastring, sizeof(wantedastring), "Deine Fahndungs Priorität ist um 1 Wanted gesunken, da die Cops grade viel zu tun haben(Aktuelle Wanteds: %d).", wanted-1);
    SendClientMessage(i, COLOR_YELLOW, wantedastring);


    SetPlayerWantedLevel(i,GetPlayerWantedLevel(i)-1);
    WantedPoints[i] -= 1;
    WantedLevel[i]-=1;


    }
    }
    return 1;
    }

    @edit: fehler ausgebessert