Wie geht das sparender?

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


    ich bin gerade dabei ein Script zu schreiben. Jedoch kommt mir diese Funktion etwas zu komplet vor.
    stock LoadFAutos()
    {
    for(new i;i<MAX_FRAKTION;i++)
    {
    for(new s;s<MAX_FRAK_VEHS;s++)
    {
    new query[298],data[128];
    format(query,sizeof(query),"SELECT * FROM "Tabelle_FrakAuto" WHERE Fraktion = %i AND FSlot = %i",i,s);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
    if(mysql_retrieve_row())
    {
    mysql_fetch_field_row(data,"Model");
    FraktionsAutoInfo[i][s][fModel] = strval(data);
    mysql_fetch_field_row(data,"AutoX");
    FraktionsAutoInfo[i][s][fAutoX] = floatstr(data);
    mysql_fetch_field_row(data,"AutoY");
    FraktionsAutoInfo[i][s][fAutoY] = floatstr(data);
    mysql_fetch_field_row(data,"AutoZ");
    FraktionsAutoInfo[i][s][fAutoZ] = floatstr(data);
    mysql_fetch_field_row(data,"AutoA");
    FraktionsAutoInfo[i][s][fAutoA] = floatstr(data);
    mysql_fetch_field_row(data,"Color1");
    FraktionsAutoInfo[i][s][fColor1] = strval(data);
    mysql_fetch_field_row(data,"Color2");
    }
    }
    mysql_free_result();
    }
    }
    return print("Fraktionsfahrzeuge geladen...");
    }
    z.B. wenn ich nur ein FrakAuto in der DB stehen habe, dann werden aber alle anderen auch überprüft, nur ich weiß grad nicht, wie man das einfacher und resorcenschonender schreiben kann
    Danke im Vorraus


    Helti

  • Ganz einfach: Du lädst ALLE Daten ein
    (Where weg machen)


    Dann eine Schleife, die durch jeden einzelnen datensatz geht
    Dann liest du fraktionsid und fahrzeug id aus.
    setzt die variablen der grad ausgelesenen werte auf die werte aus dem datensatz.

    ik bin der vito c:

  • Ich glaube was dir Dark_Shadow angedeutet hat ist folgendes:


    stock LoadFAutos()
    {
    new i, rows, query[64], data[64], frak[4], slot[4], dfrag, dslot;
    format(query, sizeof(query), "SELECT * FROM ´Tabelle_FrakAuto´"); // Erzeugt einen MySQL-Querry
    mysql_query(query); // Führt den MySQL-Querry aus
    mysql_store_result(); // Speichert die Daten im Arbeitsspeicher ab
    rows = mysql_num_rows();
    if(rows) { // Prüft, ob überhaupt eine Zeile ausgelesen wurde
    for(i = 0; i < rows; i++, mysql_retrieve_row()) { // geht das Ergebnis nun Zeile für Zeile durch

    mysql_fetch_field_row(frak, "Fraktion");
    mysql_fetch_field_row(slot, "FSlot");
    dfrak = strval(frak);
    dslot = strval(slot);

    mysql_fetch_field_row(data, "Model");
    FraktionsAutoInfo[dfrak][dslot][fModel] = strval(data);

    mysql_fetch_field_row(data, "AutoX");
    FraktionsAutoInfo[dfrak][dslotd][fAutoX] = floatstr(data);

    mysql_fetch_field_row(data, "AutoY");
    FraktionsAutoInfo[dfrak][dslot][fAutoY] = floatstr(data);

    mysql_fetch_field_row(data, "AutoZ");
    FraktionsAutoInfo[dfrak][dslot][fAutoZ] = floatstr(data);

    mysql_fetch_field_row(data, "AutoA");
    FraktionsAutoInfo[dfrak][dslot][fAutoA] = floatstr(data);

    mysql_fetch_field_row(data, "Color1");
    FraktionsAutoInfo[dfrak][dslot][fColor1] = strval(data);

    mysql_fetch_field_row(data, "Color2");
    FraktionsAutoInfo[dfrak][dslot][fColor2] = strval(data);
    }
    }
    mysql_free_result(); // Leert den Arbeitsspeicher
    print("Fraktionsfahrzeuge geladen");
    return 0;
    }


    Ich habe den Codeschnipsel nicht getestet, aber bin ziemlich sicher, dass er funktionieren sollte.
    Wenn du etwas nicht verstehst oder ein Fehler dort drinnen ist, dann melde dich. Vielleicht braucht es jemand anderes zu einem späterem Zeitpunkt.


    Gruß,
    Neo