Wo gehört break; hin (For-Schleife abbrechen)?

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
  • Yoa abend,
    ich habe da ein Probelm undzwar.
    Es wird nur das angezeigt was da ist wenn man nicht in der nähe von einem Haus ist.
    Es kommen keine Errors oder sowas.
    Hier der Code:
    public HelpdeskUp(playerid)
    {
    new hour,minute,second;
    gettime(hour,minute,second);
    new day,month,year;
    getdate(year,month,day);
    new plname[MAX_PLAYER_NAME],astring[50];
    GetPlayerName(playerid, plname, sizeof(plname));
    if(pInfo[playerid][admin] == 0){ format(astring,80,"Normal"); }
    if(pInfo[playerid][admin] == 1) { format(astring,80,"Supporter"); }
    else if(pInfo[playerid][admin] == 2) { format(astring,80,"Moderator"); }
    else if(pInfo[playerid][admin] == 3) { format(astring,80,"Suprt Moderator"); }
    else if(pInfo[playerid][admin] == 4) { format(astring,80,"Administrator"); }
    else if(pInfo[playerid][admin] == 5) { format(astring,80,"Serverletiung"); }
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d",astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang]);
    TextDrawSetString(Helpdesk, hdesk);
    }
    else if(IsPlayerInRangeOfPoint(playerid,2,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d~n~~n~~w~.::Hausinfo::..~n~~n~~w~Besitzer: %s ~n~Preis: %d$~n~Miete: %d$~n~Mieter 1: %s~n~Mieter 2: %s~n~Mieter 3: %s~n~Mieter 4: %s~n~Mieter 5: %s",
    astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang],HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][Mieter1],HausInfo[haus][Mieter2],HausInfo[haus][Mieter3],HausInfo[haus][Mieter4],HausInfo[haus][Mieter5]);
    TextDrawSetString(Helpdesk, hdesk);
    }
    }
    SetWorldTime(hour);
    return 1;
    }
    mfg
    //edit Überschrift
    //Edit2 erneut Überschrift
    //Edit 3 Überschrift von: "Pickup einsammeln=Report Crash In der Abfrage break;" nach: "For-Schleife abbrechen geht nicht(Report-Crash)" geändert
    //Edit 4 Überschrift


    Bewerte mich und meine Transaktionen als Mittelsmann

    4 Mal editiert, zuletzt von lollipop ()

  • Der Timer Updated es alle 1 sec normal solte es doch gehn oder nicht?
    Naja ich probier es mal aus melde mich dann nochma aber schonma danke.
    mfg
    //Edit Grade getestet ne geht nicht Geupdated wurde es ja bevor ich das mim Haus eingefügt habe.
    Ich weis net woran das jetzt liegt naja egal hier der neue Code:
    public HelpdeskUp(playerid)
    {
    new hour,minute,second;
    gettime(hour,minute,second);
    new day,month,year;
    getdate(year,month,day);
    new plname[MAX_PLAYER_NAME],astring[50];
    GetPlayerName(playerid, plname, sizeof(plname));
    if(pInfo[playerid][admin] == 0){ format(astring,80,"Normal"); }
    if(pInfo[playerid][admin] == 1) { format(astring,80,"Supporter"); }
    else if(pInfo[playerid][admin] == 2) { format(astring,80,"Moderator"); }
    else if(pInfo[playerid][admin] == 3) { format(astring,80,"Suprt Moderator"); }
    else if(pInfo[playerid][admin] == 4) { format(astring,80,"Administrator"); }
    else if(pInfo[playerid][admin] == 5) { format(astring,80,"Serverletiung"); }
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d",astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang]);
    TextDrawSetString(Helpdesk, hdesk);
    TextDrawShowForPlayer(playerid,Helpdesk);
    }
    else if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d~n~~n~~w~.::Hausinfo::..~n~~n~~w~Besitzer: %s ~n~Preis: %d$~n~Miete: %d$~n~Mieter 1: %s~n~Mieter 2: %s~n~Mieter 3: %s~n~Mieter 4: %s~n~Mieter 5: %s",
    astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang],HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][Mieter1],HausInfo[haus][Mieter2],HausInfo[haus][Mieter3],HausInfo[haus][Mieter4],HausInfo[haus][Mieter5]);
    TextDrawSetString(Helpdesk, hdesk);
    TextDrawShowForPlayer(playerid,Helpdesk);
    }
    }
    SetWorldTime(hour);
    return 1;
    }
    Im Grunde braucht man das TextDrawShowForPlayer nicht im public.
    mfg


    Bewerte mich und meine Transaktionen als Mittelsmann

  • Ach, jetzt seh ichs etwas besser,
    meine Diagnose bezog sich eher auf den Titel ;)


    Da du alle Häuser durchgehst,
    wird optisch immer nur das letzte Haus in der Tabelle berechnet -
    stehst du also vor einem Haus (bspw ID 6/100), findet er das zwar,
    geht aber die schleife weiter durch und pberschreibt den wert.


    Also unter das Haus-gefunden ein break;

  • So habs jetzt mit continue so:
    public HelpdeskUp(playerid)
    {
    new hour,minute,second;
    gettime(hour,minute,second);
    new day,month,year;
    getdate(year,month,day);
    new plname[MAX_PLAYER_NAME],astring[50];
    GetPlayerName(playerid, plname, sizeof(plname));
    if(pInfo[playerid][admin] == 0){ format(astring,80,"Normal"); }
    if(pInfo[playerid][admin] == 1) { format(astring,80,"Supporter"); }
    else if(pInfo[playerid][admin] == 2) { format(astring,80,"Moderator"); }
    else if(pInfo[playerid][admin] == 3) { format(astring,80,"Suprt Moderator"); }
    else if(pInfo[playerid][admin] == 4) { format(astring,80,"Administrator"); }
    else if(pInfo[playerid][admin] == 5) { format(astring,80,"Serverletiung"); }
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d",astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang]);
    TextDrawSetString(Helpdesk, hdesk);
    TextDrawShowForPlayer(playerid,Helpdesk);
    }
    else if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z])) continue;
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d~n~~n~~w~.::Hausinfo::..~n~~n~~w~Besitzer: %s ~n~Preis: %d$~n~Miete: %d$~n~Mieter 1: %s~n~Mieter 2: %s~n~Mieter 3: %s~n~Mieter 4: %s~n~Mieter 5: %s",
    astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang],HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][Mieter1],HausInfo[haus][Mieter2],HausInfo[haus][Mieter3],HausInfo[haus][Mieter4],HausInfo[haus][Mieter5]);
    TextDrawSetString(Helpdesk, hdesk);
    TextDrawShowForPlayer(playerid,Helpdesk);
    }
    }
    SetWorldTime(hour);
    return 1;
    }
    Jetzt stürtzt das Game ab sobald ich auf den Server Connecte und mich eingeloggt habe.
    mfg
    //edit Er stürtzt nicht direkt ab man kriegt ne Crashwarnung der Server belibt aber on.
    mfg


    Bewerte mich und meine Transaktionen als Mittelsmann

    Einmal editiert, zuletzt von lollipop ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kannste mir des in den Code einfügen?
    Dann erklären dann versteh ich es villeicht auch.
    Ich habe keine Ahnung wie es gehen soll.
    Ich weis nicht wie du jetzt meinst ich soll die Schleife stoppen.
    mfg
    //edit
    Habs jetzt so dann bekomme ich nen Report Crash:
    public HelpdeskUp(playerid)
    {
    new hour,minute,second;
    gettime(hour,minute,second);
    new day,month,year;
    getdate(year,month,day);
    new plname[MAX_PLAYER_NAME],astring[50];
    GetPlayerName(playerid, plname, sizeof(plname));
    if(pInfo[playerid][admin] == 0){ format(astring,80,"Normal"); }
    if(pInfo[playerid][admin] == 1) { format(astring,80,"Supporter"); }
    else if(pInfo[playerid][admin] == 2) { format(astring,80,"Moderator"); }
    else if(pInfo[playerid][admin] == 3) { format(astring,80,"Suprt Moderator"); }
    else if(pInfo[playerid][admin] == 4) { format(astring,80,"Administrator"); }
    else if(pInfo[playerid][admin] == 5) { format(astring,80,"Serverletiung"); }
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d",astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang]);
    TextDrawSetString(Helpdesk, hdesk);
    }
    else if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    format(hdesk,sizeof(hdesk)," ~w~.::Hilfeleiste::.~n~~n~~w~Rang:~r~%s~n~~w~Uhrzeit: ~g~%d:%d %d ~n~~w~Datum: ~g~%d.%d.%d~n~~w~Dein Nickname: ~g~%s~n~~w~Dein ID:%d~n~~w~Kontostand: ~y~%d$ ~n~~w~Hunger/Durst: ~g~%d~n~~w~Energie: ~g~%d~n~~w~Harndrang: ~g~%d~n~~n~~w~.::Hausinfo::..~n~~n~~w~Besitzer: %s ~n~Preis: %d$~n~Miete: %d$~n~Mieter 1: %s~n~Mieter 2: %s~n~Mieter 3: %s~n~Mieter 4: %s~n~Mieter 5: %s",
    astring,hour,minute,second,day,month,year,plname,playerid,pInfo[playerid][pBank],pInfo[playerid][hunger],pInfo[playerid][energie],pInfo[playerid][harndrang],HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][Mieter1],HausInfo[haus][Mieter2],HausInfo[haus][Mieter3],HausInfo[haus][Mieter4],HausInfo[haus][Mieter5]);
    TextDrawSetString(Helpdesk, hdesk);
    break;
    }
    }
    SetWorldTime(hour);
    return 1;
    }
    mfg


    Bewerte mich und meine Transaktionen als Mittelsmann

    Einmal editiert, zuletzt von lollipop ()

  • Ich geh mal davon aus, dass der hdesk String zu klein ist.
    Wenn ein Textdraw mit einem String erstellt wird, der einen fehlerhaften "Code" mit den Wellenlinien enthält, wird entweder dein Bildschirm komisch oder du crashst.


    Und wenn der String zu klein ist, wird der Text für den Textdraw abgeschnitten, in dem Fall hier wohl an einer Stelle mit den Farbcodes/Zeilenumbrüchen.

  • //edit 5
    So erstmal sobald ich in der nähe eines Haus bin wird trotzdem der Teil wo eigentlich die Information sein sollte nicht angezeigt.
    Das heß0t irgendwo muss ein break; hin das weis ich das die Schleife gestoppt wird aber wohin? Es muss so sein das ich kein ReportCrash mehr bekomme
    aber das es funktioniert.
    Also wo muss den jez das break; hin? Sobald er abfragt ob ich in der nähe bin,nach dem string oder nach dem SetString?
    Mit freundlichen Grüßen
    Sven
    //Edit 6: alles vor edit 5 gelöscht und ein Rechtschreibfehler


    Gelöscht
    //Edit 2 So ich habe jetzt nochmal nachgefroscht.
    gelöscht
    //Edit 3 PWN Code bei //edit 2 ^^ Ist ja dann erledigt da gelöscht
    //edit 4
    gelöscht


    Bewerte mich und meine Transaktionen als Mittelsmann

    4 Mal editiert, zuletzt von lollipop ()