Irgendwie kommt da Grütze raus ...

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
  • Aloha,
    hab mich heute Nacht nach'm Auftrag mal wieder auf Pawn eingelassen ... ja, das mit mir und ihm is' 'ne langjährige Affäre. :D


    So, nu' hab ich mir gedacht, dann ich mein Script mal schön ressourcendschonend umgestalte, da mir die Funktionen von Maddin (umgeschrieben) einfach zu viele Querys, vorallem bei Schleifen o.ä., durchhauen.


    Klappt auch alles soweit, wirklich toll, a-a-aber:
    Ich lade mir Fraktionsfahrzeuge aus'er Datenbank und wenn ich nu' das Kennzeichen an den Fahrzeugen platzieren will, macht er, im groben, auch vieles richtig, a-a-aber, bei einem Fahrzeug kommt (siehe Dialog):


    Das komische aber: Der Comet hat auf dem Kennzeichen zu stehen: "SF-FS-01" und der Sultan eben "SF-FS-02" - ganz richtig also - nur versteh' ich nicht recht, warum er das im Dialog nicht macht. :-/

  • Da-dong, natürlich, nicht dran gedacht ...
    ocmd:listfactioncars(playerid, params[]) {
    new factionID;
    if(Spieler[playerid][sLogged] == 0)
    return SendClientMessage(playerid, COLOR_RED, " [Fehler] Du bist nicht eingeloggt!");
    if(Spieler[playerid][sAdmin] < 5)
    return SendClientMessage(playerid, COLOR_RED, " [Fehler] Du bist kein Admin!");
    if(sscanf(params, "d", factionID))
    return SendClientMessage(playerid, COLOR_RED, " [Fehler] /listfactioncars [fraktionsID]");
    new strDialog[400],
    strDialogTeil[100];
    for(new c; c < MAX_VEHICLES; c++) {
    if(Auto[code=c][cFaction] == factionID) {
    format(strDialogTeil, 100, "Fahrzeugtyp: %s | Kennzeichen: %s | CarID: %d\n", VehicleNames[(GetVehicleModel(c) - 400)], Auto[code=c][cKennzeichen], c);
    strcat(strDialog, strDialogTeil);
    }
    }
    if(strlen(strDialog) == 0) {
    format(strDialog, 400, "Es sind keine Fraktionsfahrzeuge vorhanden.\nRespawnen Sie die Fahrzeuge ggf.!");
    }
    ShowPlayerDialog(playerid, Dialog_ListFactionCars, DIALOG_STYLE_LIST, Fraktion[factionID][fName], strDialog, "Ok", "");
    return 1;
    }
    Das ist der Befehl zum auflisten, relativ unsauber, aber ich hab da auch 1000x dran rumgeschraubt... ^^
    eigtl. MUSS da der Fehler drin sein, denn die Funktion (loadFactionCars) gibt mir auch in der Konsole alle richtig aus...

  • printf:
    [12:11:38] 1|1|SF-FS-01|480|1|-2068.57|-84.1964|34.937|180.423
    [12:11:38] SF-FS-01
    [12:11:38] 2|1|SF-FS-02|560|2|-2064.24|-84.1127|34.8687|180.108
    [12:11:38] SF-FS-02
    Einmal eben die DB-Zeile und dann lass ich mir immer das Kennzeichen nochmal ausgeben, da macht er's ja, wie man sieht, richtig.


    stock loadFactionsCars(factionID) {
    new Getted[200],
    query[300];
    for(new x; x <= countFactionCars(factionID); x++) {
    new thisCar,
    data[8][30];
    format(query, 300, "SELECT * FROM `factioncars` WHERE `factionID` = %d AND `carSlotID` = %d", factionID, x);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Getted);
    printf("%s", Getted);
    if(mysql_num_rows() > 0) {
    mysql_fetch_field_row(data[0], "id");
    mysql_fetch_field_row(data[1], "carModelID");
    mysql_fetch_field_row(data[2], "carSlotID");
    mysql_fetch_field_row(data[3], "carKennzeichen");
    printf("%s", data[3]);
    mysql_fetch_field_row(data[4], "carX");
    mysql_fetch_field_row(data[5], "carY");
    mysql_fetch_field_row(data[6], "carZ");
    mysql_fetch_field_row(data[7], "carAngle");
    thisCar = CreateVehicle(strval(data[1]), floatstr(data[4]), floatstr(data[5]), floatstr(data[6]), floatstr(data[7]), Fraktion[factionID][fCar1], Fraktion[factionID][fCar2], -1);
    SetVehicleNumberPlate(thisCar, data[3]);
    Auto[thisCar][cFaction] = factionID;
    Auto[thisCar][cFactionSlot] = strval(data[2]);
    Auto[thisCar][cID] = strval(data[0]);
    format(Auto[thisCar][cKennzeichen], 50, "%s", data[3]);
    }
    mysql_free_result();
    }
    return 1;
    }
    Die Funktion sollt' ich mal überarbeiten, seh' ich gerade, geht ja gar nicht. :D


    #e: funktion eben umgeschrieben.
    #e: funktion updated.

    2 Mal editiert, zuletzt von TutNichts ()

  • Lass dir nochmal
    Auto[thisCar][cKennzeichen]
    nach
    format(Auto[thisCar][cKennzeichen], 50, "%s", data[3]);
    ausgeben.


    BTW, wieso machst du nicht direkt
    mysql_fetch_field_row(Auto[thisCar][cKennzeichen], "carKennzeichen");?

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Ich denke eher das ist ein Problem mit der Array Ansteurung, so sieht das jedenfalls aus.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Hab mir das mal ausgeben lassen, wenn ich das direkt per mysql_fetch_field_row() löse, gibt er inGame sowie in der Konsole nichts aus.


    Ich denke eher das ist ein Problem mit der Array Ansteurung, so sieht das jedenfalls aus.


    Was meinst'n du bitte? :-/


    #e:
    Ok, habe jetzt ein wenig mehr debugged und bin einfach nur "fassungslos" bzw. "ahnungslos" oder einfach nur verwirrt.
    Ich habe mir nun mal:
    printf("%s", mysql_fetch_field_row(data[3], "carKennzeichen"));
    ausgeben lassen, warum auch immer.


    Dann kommt aber eigenartiger Weise aus einer ganz anderen Funktion Text in die Konsole, schaut dann wie folgt aus:
    [21:07:27]
    [21:07:27] 1|1|SF-FS-01|480|1|-2065.74|-91.1539|34.9337|251.079
    [21:07:27] r 00min 03sec
    [21:07:27] 2|1|SF-FS-02|560|2|-2060.25|-95.3942|34.8735|193.263
    [21:07:27] r 00min 03sec
    [21:07:27] 3|1|SF-FS-03|451|3|-2064.24|-84.1127|34.8687|180.108
    [21:07:27] r 00min 03sec


    Er gibt mir was aus der Funktion aus:
    stock getFormatedTime(minutes, secondsVariiertToMinutes) {
    new returnVal[20];
    format(returnVal, 20, "vor %02dmin %02dsec", minutes, secondsVariiertToMinutes);
    return returnVal;
    }
    Die ich aber, wie man auch weiter oben sieht, gar nicht irgendwie in der Funktion verwende.


    Denke mal, dass das daher kommt, weiß aber nicht, wie es dazu kommt. :-/

    Einmal editiert, zuletzt von TutNichts ()