2 Schleifen ?(

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 zusammen,


    Und zwar kann man bei meinem haussystem den Häusern noch zusätzlich einen namen geben,allerdings ist bereits eine schleife vorhanden die das betreffende Haus sucht und aus dem grund weiß ich nun nicht so recht wo/wie ich jetzt eine weitere schleife einbauen soll um zu überprüfen ob der Hausname bereits vergeben ist.


    Wäre sehr erfreut wenn mir da jemand weiterhelfen könnte :)


    if(!strcmp(strget(cmdtext, 0), "/hausname"))
    {
    if(strlen(cmdtext[10]))
    {
    for(new i = 0;i<sizeof(hinfo);i++)
    {
    f(IsPlayerInRangeOfPoint(playerid,1.0,hinfo[i][e_haus_x],hinfo[i][e_haus_y],hinfo[i][e_haus_z]))
    {
    if(strcmp(hinfo[i][besitzer],playername[playerid],0) == 0)
    {
    strmid(hinfo[i][hausname],cmdtext[10],0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    format(updhini,sizeof updhini,"häuser/haus_%d.ini",i);
    format(chstr,sizeof chstr,"%s\nBesitzer : %s\nPreis : %d$",hinfo[i][hausname],hinfo[i][besitzer],hinfo[i][kosten]);
    Update3DTextLabelText(hinfo[i][hlabel],0x009900AA,chstr);
    dini_Set(updhini,"hausname",hinfo[i][hausname]);
    }
    else
    {
    SendClientMessage(playerid,COLOR_ROT,"Dieses Haus gehört nicht dir.");
    }
    return 1;
    }}
    return 1;
    }}


    Mit freundlichen Grüßen


    Anubis

  • Das problem ist das ich noch nie eine schleife in einer schleife erstellt habe und bevor ich wieder stundenlang learning by doing like rumfummel bis ichs endlich hinbekomme und weiß wie es funktioniert...frage ich diesmal lieber vorher ^^

    Einmal editiert, zuletzt von Anubis ()

  • Blöcke kann man in anderen Blöcken erstellen sprich ein kleines Layer System


    header0
    {
    ...variablen ... statements...


    header1 // Variablen die in header 0 Aktiv sind, sind auch hier noch da bis zum Ende von header0
    {
    ...variablen...
    ..statements...
    } // Variablen die hier erstellt wurden in diesem Bereich sind im nächster nicht mehr da


    }


    Ein ganz einfaches Prinzip & zudem sehr komplex

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Okay, das hilft mir schonmal weiter.Ist ja doch nicht so kompliziert wie ich dachte.


    Meine probleme mit schleifen basierten in der vegangenheit meistens darauf das ich sie an der falschen stelle zugemacht habe und dann endlos rumprobiert habe bis es funktionierte. Mittlerweile hab ichs begriffen aber bei 2 schleifen war ich mir doch etwas unsischer.


    Werds jetzt mal versuchen :)

  • Damit das mit dem falschen zumachen nicht passiert, musst du auf richtiges Einrücken achten.

    if()
    {
    if()
    {
    Funktion();
    }
    else
    {
    Funktion2();
    }
    return 1;
    }


    In der Spalte wo du die Klammer aufmachst, machst du sie auch wieder zu. Genauso wie diese if - Anweisungen kannst du die Schleifen verwenden. Musst bloss drauf achten, dass du dann eine andere Var. erstellst. Wenn du in der ersten new i; machst musst du in der anderen new j; oder so machen. Oder halt new playerid; dann new autoid; ..

  • Thx an alle, habe es hinbekommen.


    new namefound = 0;
    if(!strcmp(strget(cmdtext, 0), "/hausname"))
    {
    if(strlen(cmdtext[10]))
    {
    for(new c = 0;c<sizeof(hinfo);c++)
    {
    if(strcmp(hinfo[code=c][hausname],cmdtext[10],false) == 0)
    {
    namefound = 1;
    }}
    if(namefound == 1)return SendClientMessage(playerid,COLOR_ROT, "Dieser Hausname ist bereits vergeben.");
    {
    for(new i = 0;i<sizeof(hinfo);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.0,hinfo[i][e_haus_x],hinfo[i][e_haus_y],hinfo[i][e_haus_z]))
    {
    if(strcmp(hinfo[i][besitzer],playername[playerid],false) == 0)
    {
    strmid(hinfo[i][hausname],cmdtext[10],0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    format(updhini,sizeof updhini,"häuser/haus_%d.ini",i);
    format(chstr,sizeof chstr,"%s\nBesitzer : %s\nPreis : %d$",hinfo[i][hausname],hinfo[i][besitzer],hinfo[i][kosten]);
    Update3DTextLabelText(hinfo[i][hlabel],0x009900AA,chstr);
    dini_Set(updhini,"hausname",hinfo[i][hausname]);
    SendClientMessage(playerid,COLOR_HELLGRUEN,"Hausname geändert.");
    }
    else
    {
    SendClientMessage(playerid,COLOR_ROT,"Dieses Haus gehört nicht dir.");
    }}}}
    return 1;
    }
    return 1;
    }



    -CLOSED-

    Einmal editiert, zuletzt von Anubis ()