Dynamischer GPS

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
  • Ich erstelle grade ein Dynamischer GPS System für mein Script, jedoch funktioniert das Laden nicht.




    mysql_pquery(dbhandle,"SELECT * FROM gps","gpsload","");






    public gpsload()
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)return 1;
    for(new i=0;i<sizeof(num_rows);i++)
    {
    cache_get_field_content(i,"Ort",gpsInfo[]i[gpse_ort],dbhandle);
    new x[128],y[128],z[128];
    cache_get_field_content(i,"X",x,dbhandle);
    cache_get_field_content(i,"Y",y,dbhandle);
    cache_get_field_content(i,"Z",z,dbhandle);
    gpsInfo[i][gpse_x]=floatstr(x);
    gpsInfo[i][gpse_y]=floatstr(y);
    gpsInfo[i][gpse_z]=floatstr(z);
    }
    return 1;
    }





    Jedoch funktioniert das Laden nicht, im mysql log sind keine Fehler, ich habe sogar schon einen Eintrag erstellt.
    Was mache ich falsch und wie behebe ich den Fehler?

    2 Mal editiert, zuletzt von DasWackeln ()

    • Offizieller Beitrag

    Liegt an der Editor-Ansicht, wenn du es in der Quellcodeansicht schreibst bleibts in der Formatierung


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Also ich hab das jetzt alles so



    Code:

    public gpsload()
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)return 1;
    for(new i=0;i<num_rows;i++)
    {
    cache_get_field_content(i,"Ort",gpsInfo[i][gpse_ort],dbhandle);
    new x[128],y[128],z[128];
    cache_get_field_content(i,"X",x,dbhandle);
    cache_get_field_content(i,"Y",y,dbhandle);
    cache_get_field_content(i,"Z",z,dbhandle);
    gpsInfo[i][gpse_x]=floatstr(x);
    gpsInfo[i][gpse_y]=floatstr(y);
    gpsInfo[i][gpse_z]=floatstr(z);
    }
    return 1;
    }


    Log:



    Screenshot:

  • Das stimmt doch dann.
    Der Ort Test ist an den Koordinaten 0/0/0 (laut Screenshot).


    Das wird auch geladen:


    Was genau ist das Problem jetzt? :huh:

  • Im Dialog für das gps wird nichts angezeigt


    Dialog Code:

    ocmd@3:gps,navi,navigation(playerid,params[])
    {
    new string[500];
    for(new i=0;i<sizeof(gpsInfo);i++)
    {
    format(string,sizeof(string),"%s%s\n",string,gpsInfo[i][gpse_ort]);
    }
    ShowPlayerDialog(playerid,DIALOG_GPS,DIALOG_STYLE_LIST,"Navigation",string,"Auswählen","Abbrechen");
    return 1;
    }

  • Ich schreib dort am besten einfach eine Hundert rein und und hab den Befehl gepostet




    ocmd@3:gps,navi,navigation(playerid,params[])
    {
    new string[500];
    for(new i=0;i<sizeof(gpsInfo);i++)
    {
    format(string,sizeof(string),"%s%s\n",string,gpsInfo[i][gpse_ort]);
    }
    ShowPlayerDialog(playerid,DIALOG_GPS,DIALOG_STYLE_LIST,"Navigation",string,"Auswählen","Abbrechen");
    return 1;
    }

  • Ah, das hast aber reineditiert, als ich gepostet habe war das noch nicht da. :D


    Schreibe das mal so:
    ocmd@3:gps,navi,navigation(playerid,params[])
    {
    new string[500];
    for(new i=0;i<sizeof(gpsInfo);i++)
    {
    if(strlen(gpsInfo[i][gpse_ort])) format(string,sizeof(string),"%s%s\n",string,gpsInfo[i][gpse_ort]);
    }
    ShowPlayerDialog(playerid,DIALOG_GPS,DIALOG_STYLE_LIST,"Navigation",string,"Auswählen","Abbrechen");
    return 1;
    }


    Und hast du
    new gpsInfo[][gpsEnum]={
    {}
    };
    zu
    new gpsInfo[100][gpsEnum];
    geändert? Sonst ist sizeof 1, sprich es zeigt dir nur den ersten Wert an.

  • Schreibe den Ladevorgang mal so:
    public gpsload()
    {
    new num_rows,num_fields, tmp[128];
    cache_get_data(num_rows,num_fields,dbhandle);
    for(new i=0;i<num_rows;i++)
    {
    cache_get_field_content(i,"Ort",tmp,dbhandle);
    printf("Lade: %d - Name: %s", i, tmp);
    format(gpsInfo[i][gpse_ort], 64, tmp);
    printf("Gespeichert: %s", gpsInfo[i][gpse_ort]);
    cache_get_field_content(i,"X",tmp,dbhandle);
    gpsInfo[i][gpse_x]=floatstr(tmp);
    cache_get_field_content(i,"Y",tmp,dbhandle);
    gpsInfo[i][gpse_y]=floatstr(tmp);
    cache_get_field_content(i,"Z",tmp,dbhandle);
    gpsInfo[i][gpse_z]=floatstr(tmp);
    }
    return 1;
    }


    Wenn es nicht klappt, was steht im server_log wenn du den Server startest?

  • Ok, hätte ich nicht erwartet. Öh, ja, eigentlich habe ich nicht wirklich was geändert, außer die drei Variablen raus geschmissen, aber das kann nicht der Grund sein.


    Und dann eben hier noch ein format eingefügt:
    cache_get_field_content(i,"Ort",tmp,dbhandle);
    format(gpsInfo[i][gpse_ort], 64, tmp);


    Ich tippe darauf, dass die cache Funktion nicht mit dem Array in enum klar kommt, vor allen weil auch im Log als max_len 1 steht.

    Zitat

    [13:48:53] [DEBUG] cache_get_field_content - row: 0, field_name: "Ort", connection: 1, max_len: 1

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen