Timer iwi nur für ID 0?

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
  • Hi,


    hab das Problem das mein Timer den Public nur für ID 0 Funktionieren lässt.
    So sieht das ganze aus:
    Unter OnGameModeinit:
    SetTimer("UserCp",5000,1);

    public UserCp()
    {
    for(new i = 0;i<MAX_PLAYERS;i++){
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    new jtext[30];
    usw....



    Sobald ID 0 offline geht, funktioniert es für ID 1 .
    Woran liegt es?

  • also ich mache das so:
    public UserCp()
    {
    for(new i = 0;i<MAX_PLAYERS;i++){
    if(IsPlayerConnected(i) || !IsPlayerNPC(i))
    {
    new jtext[30];
    usw....
    }

    I'm Sorry For Your Mistake!
    but it's yours

  • Returns sind so einige drinne.
    Aber warum sollen sie raus?
    Bei ID 0 Funktioniert ja alles, und bei ID 1+ nicht mehr.
    Sobald ID 0 aber Offline geht, funktioniert der Timer sofort für
    ID 1. dh. Der Timer funktioniert immer nur für einen Spieler.
    Komisch?

  • Das ist die gesamte Funktion:

    public UserCp()
    {
    for(new i = 0;i<MAX_PLAYERS;i++){
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue; // wird übersprungen sobald nicht da oder Bot
    new jtext[30];
    if(PlayerInfo[i][pJob] == 1) { jtext = "Dedektiv"; }
    else if(PlayerInfo[i][pJob] == 2) { jtext = "Anwalt"; }
    else if(PlayerInfo[i][pJob] == 3) { jtext = "Hure"; }
    else if(PlayerInfo[i][pJob] == 4) { jtext = "Drogen Dealer"; }
    else if(PlayerInfo[i][pJob] == 5) { jtext = "Auto Dieb"; }
    else if(PlayerInfo[i][pJob] == 6) { jtext = "News Reporter"; }
    else if(PlayerInfo[i][pJob] == 7) { jtext = "Auto Mechaniker"; }
    else if(PlayerInfo[i][pJob] == 8) { jtext = "Bodyguard"; }
    else if(PlayerInfo[i][pJob] == 9) { jtext = "Waffen Dealer"; }
    else if(PlayerInfo[i][pJob] == 10) { jtext = "Auto Haendler"; }
    else if(PlayerInfo[i][pJob] == 12) { jtext = "Boxer"; }
    else if(PlayerInfo[i][pJob] == 14) { jtext = "Bus Fahrer"; }
    else if(PlayerInfo[i][pJob] == 15) { jtext = "Zeitungs Junge"; }
    else if(PlayerInfo[i][pJob] == 16) { jtext = "Trucker"; }
    else if(PlayerInfo[i][pJob] == 17) { jtext = "Pizza Service"; }
    else if(PlayerInfo[i][pJob] == 18) { jtext = "Farmer"; }
    else if(PlayerInfo[i][pJob] == 19) { jtext = "Drogen Farmer"; }
    else if(PlayerInfo[i][pJob] == 20) { jtext = "Drogen Schmuggler"; }
    else if(PlayerInfo[i][pJob] == 21) { jtext = "Strassen Reiniger"; }
    else if(PlayerInfo[i][pJob] == 22) { jtext = "Mats Schmuggler"; }
    else if(PlayerInfo[i][pJob] == 23) { jtext = "Waffen Hersteller"; }
    else { jtext = "Arbeitslos"; }
    new HungerString[MAX_PLAYERS],OtherString[MAX_PLAYERS];
    new exp = PlayerInfo[i][pExp];
    new pnumber = PlayerInfo[i][pPnumber];
    new nxtlevel = PlayerInfo[i][pLevel]+1;
    new expamount = nxtlevel*levelexp;
    new drugs = PlayerInfo[i][pDrugs];
    new mats = PlayerInfo[i][pMats];
    format(OtherString, sizeof(OtherString), "Respekt: ~r~%d/%d~n~~w~Ph: ~r~%d~n~~w~Beruf: ~r~%s~n~~w~Drogen: ~r~%d~n~~w~Materialien: ~r~%d",exp,expamount,pnumber,jtext,drugs,mats);
    TextDrawSetString(Other[i], OtherString);
    if(PlayerInfo[i][pHunger] >= 100)
    {
    format(HungerString, sizeof(HungerString), "~r~----------");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 90)
    {
    format(HungerString, sizeof(HungerString), "~r~---------~g~-");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 80)
    {
    format(HungerString, sizeof(HungerString), "~r~--------~g~--");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 70)
    {
    format(HungerString, sizeof(HungerString), "~r~-------~g~---");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 60)
    {
    format(HungerString, sizeof(HungerString), "~r~------~g~----");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 50)
    {
    format(HungerString, sizeof(HungerString), "~r~-----~g~-----");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 40)
    {
    format(HungerString, sizeof(HungerString), "~r~----~g~------");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 30)
    {
    format(HungerString, sizeof(HungerString), "~r~---~g~-------");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 20)
    {
    format(HungerString, sizeof(HungerString), "~r~--~g~--------");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] >= 10)
    {
    format(HungerString, sizeof(HungerString), "~r~-~g~---------");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }
    if(PlayerInfo[i][pHunger] <= 3)
    {
    format(HungerString, sizeof(HungerString), "~g~----------");
    TextDrawSetString(Hunger[i], HungerString);
    return 1;
    }

    Wer findet den Fehler?

  • Ne, hab ich schonmal.
    Dann Spielt die ganze Funktion verrückt,, und zeigt nur die Schleife wo er 0 abfragt an.
    Also alles Grün.

  • Du brichst dadurch aber die Forschleife ab xD keinwunder das es dann zu dem kommt was du gesagt hast,
    ID 0 da geht für id 1 nicht weil die schleife abgebrochen wird, id 0 nicht da geht für id wird aber dann abgebrochen...
    Mach es lieber mit SetTimerEx für einen Spieler und zwar so z.B
    forward Test(playerid);
    public Test(playerid)
    //Ganzen Funktionen normal mit playerid
    Und
    SetTimerEx , mehr zudem steht in der Wiki

  • Ich check das gerade nicht.
    Könntest du mir das so umbauen das es Funktioniert?
    Wäre echt nett.

    Einmal editiert, zuletzt von DaN ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • mach 1. die return 1;'s weg
    2. aus
    if(PlayerInfo[i][pHunger] >= blabla)immerelse if(PlayerInfo[i][pHunger] >= blabla(nur nicht beim 1. mal)
    3. sollte gehen

  • also nix groß verändern außer returns entfernen und
    else vor if setzen?


    scheint mir logisch^^.

  • Ist das so nun korrekt?

    if(PlayerInfo[i][pHunger] >= 100 && PlayerInfo[i][pHunger] <= 90)
    {
    format(HungerString, sizeof(HungerString), "~r~----------");
    TextDrawSetString(Hunger[i], HungerString);


    }
    else if(PlayerInfo[i][pHunger] >= 90 && PlayerInfo[i][pHunger] <= 80)
    {
    format(HungerString, sizeof(HungerString), "~r~---------~g~-");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 80 && PlayerInfo[i][pHunger] <= 70)
    {
    format(HungerString, sizeof(HungerString), "~r~--------~g~--");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 70 && PlayerInfo[i][pHunger] <= 60)
    {
    format(HungerString, sizeof(HungerString), "~r~-------~g~---");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 60 && PlayerInfo[i][pHunger] <= 50)
    {
    format(HungerString, sizeof(HungerString), "~r~------~g~----");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 50 && PlayerInfo[i][pHunger] <= 40)
    {
    format(HungerString, sizeof(HungerString), "~r~-----~g~-----");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 40 && PlayerInfo[i][pHunger] <= 30)
    {
    format(HungerString, sizeof(HungerString), "~r~----~g~------");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 30 && PlayerInfo[i][pHunger] <= 20)
    {
    format(HungerString, sizeof(HungerString), "~r~---~g~-------");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 20 && PlayerInfo[i][pHunger] <= 10)
    {
    format(HungerString, sizeof(HungerString), "~r~--~g~--------");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 10 && PlayerInfo[i][pHunger] <= 3)
    {
    format(HungerString, sizeof(HungerString), "~r~-~g~---------");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 3 && PlayerInfo[i][pHunger] <= 0)
    {
    format(HungerString, sizeof(HungerString), "~g~----------");
    TextDrawSetString(Hunger[i], HungerString);
    }

  • Jo fast aber du fragst mehrmals >= & <= ab & das zweimal bei jeder Zahl also stimmen die Abfragen auch in 2 Fällen , da du abfragst Größer & Gleich zudem Kleiner & Gleich
    sorry war zum Teil auch mein verdienst hätte es genauer darstellen sollen ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Du verwirsst mich.
    Kannst du mir bitte mal sagen wie es jetzt korrekt wäre ^^?.
    Bin man gerade 2 Tage mit dem Script Kram zugange und setz mich an
    nem Bedürfniss System dran. Aber was du mir da erzählst Check ich nicht ^^.

    2 Mal editiert, zuletzt von DaN ()

  • if(PlayerInfo[i][pHunger] >= 100 && PlayerInfo[i][pHunger] <= 90)
    {
    format(HungerString, sizeof(HungerString), "~r~----------");
    TextDrawSetString(Hunger[i], HungerString);


    }
    else if(PlayerInfo[i][pHunger] >= 90 && PlayerInfo[i][pHunger] <= 80)
    {


    schau dir diesen Abschnitt an & achte auf >=90 & <= 90, du fragst also bei beidem Größer/Kleiner Gleich ab sprich stimmt beides


    also müsste es nur Größer / Kleiner heißen


    Beispiel
    if(wert > 90 && wert < 80)
    else if(wert > 80 && wert < 90)


    hat ja nicht Direkt was mit dem Code selber zu tun sondern eher mit den Mathematik Regeln

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • sry ich check das immer noch nicht.
    Kannst du mir nicht die 1. 4 abfragen von meinem code machen?
    Den rest bekomm ich dann sicherlich selber hin.
    Wäre echt nett.
    //edit
    oder ist das so korrekt:
    if(PlayerInfo[i][pHunger] >= 100 && PlayerInfo[i][pHunger] <= 90)
    {
    format(HungerString, sizeof(HungerString), "~r~----------");
    TextDrawSetString(Hunger[i], HungerString);


    }
    else if(PlayerInfo[i][pHunger] >= 80 && PlayerInfo[i][pHunger] <= 90)
    {
    format(HungerString, sizeof(HungerString), "~r~---------~g~-");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 70 && PlayerInfo[i][pHunger] <= 80)
    {
    format(HungerString, sizeof(HungerString), "~r~--------~g~--");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 60 && PlayerInfo[i][pHunger] <= 70)
    {
    format(HungerString, sizeof(HungerString), "~r~-------~g~---");
    TextDrawSetString(Hunger[i], HungerString);
    }

    Einmal editiert, zuletzt von DaN ()

  • So wäre es korrekt:

    if(PlayerInfo[i][pHunger] >= 100 && PlayerInfo[i][pHunger] <= 90)
    {
    format(HungerString, sizeof(HungerString), "~r~----------");
    TextDrawSetString(Hunger[i], HungerString);


    }
    else if(PlayerInfo[i][pHunger] >= 80 && PlayerInfo[i][pHunger] <= 89)
    {
    format(HungerString, sizeof(HungerString), "~r~---------~g~-");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 70 && PlayerInfo[i][pHunger] <= 79)
    {
    format(HungerString, sizeof(HungerString), "~r~--------~g~--");
    TextDrawSetString(Hunger[i], HungerString);
    }
    else if(PlayerInfo[i][pHunger] >= 60 && PlayerInfo[i][pHunger] <= 69)
    {
    format(HungerString, sizeof(HungerString), "~r~-------~g~---");
    TextDrawSetString(Hunger[i], HungerString);
    }


    Am besten noch else am Schluss was alles andere Anzeigen soll, etwa Error oder sonstiges.

  • Funktioniert immer noch nicht.
    Das gibs doch nicht.
    Kann mir das nicht einer via Teamviewer machen?
    oder hier vernümpftig eine Lösung posten?



    Danke ^^.