Thread Query wird nicht aufgerufen....

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
  • Hey, habe ein kleines Problem:
    public OnGameModeInit()
    {
    new query[70];
    format(query,sizeof(query),"SELECT * FROM `fautos`");
    mysql_tquery(mysql,query,"OnLoadVehicle","");
    }
    forward OnLoadVehicle();
    public OnLoadVehicle()
    {
    return print("wird aufgrufen");
    }
    Crashdetect sagt:

    Code
    [12:37:44] [debug] Run time error 4: "Array index out of bounds"
    [12:37:44] [debug]  Accessing element at index 50 past array upper bound 49
    [12:37:44] [debug] AMX backtrace:
    [12:37:44] [debug] #0 000140d0 in public OnLoadVehicle () at C:\Users\user\Desktop\MySELFMADE - R34\gamemodes\myselfmade.pwn:1263


    Zeile 1263 (mit drüber und drunter):
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    FCarInfo[i][dbid] = cache_get_field_content_int(0, "id", mysql);
    FCarInfo[i][model] = cache_get_field_content_int(0, "model", mysql);
    }


    Hoffe ihr könnt mir helfen..
    L.G.
    heyho ;)

  • Was verstehst du denn daran nicht ?
    Wenn du mehr als 50 Ergebnisse zurück bekommst aus der Datenbank dann ist doch klar,dass du irgendwann das Array überläufst.


    Du könntest ein LIMIT im SQL Statement verwenden, um nicht mehr als 50 Einträge zurück zu bekommen.

  • Ich weiß nicht was das für ein Sinn hat:


    Zitat

    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    FCarInfo[i][dbid] = cache_get_field_content_int(0, "id", mysql);
    FCarInfo[i][model] = cache_get_field_content_int(0, "model", mysql);
    }


    Da gehst du 2000 mal den Code durch und und lässt in alle 2000 Variablen die gleichen Daten eintragen, so würde ich denke es richtig aussehen:


    new Rows, Fields, r, car;
    cache_get_data(Rows, Fields);
    for(r=0; r < Rows; ++r)
    {
    car = CreateVehicleEx(cache_get_field_content_int(r, "model", mysql), 0, 0, 0, 0, -1, -1, -1);
    FCarInfo[car][dbid] = cache_get_field_content_int(r, "id", mysql);
    FCarInfo[car][model] = cache_get_field_content_int(r, "model", mysql);
    }


    Hiermit lässt du in FCarInfo (vom erstellten Fahrzeug) bei model die model id eintragen und bei dbid die id.


    Du hast es fast richtig gemacht leider ein paar denk Fehler, einmal holst du alle Daten aus der Tabelle, in Rows steht drin wie viele Einträge in der Tabelle vorhanden sind, dann geht er alle Einträge mit der Schleife durch und (wahrscheinlich willst du damit Autos aus der Datenbank laden) du musst dann als erstes ein Fahrzeug erstellen damit du ein Fahrzeug eine variable zuordnen kannst, ich hoffe du verstehst was ich versuche zu erklären.


    In meinem Beispiel müsste es eigentlich so wie du in deinem Code es willst funktionieren.

  • Gut, nur ich möchte natürlich, dass der Index der Array bzw. des Autos, der vehicleid auf dem Server entspricht um es leicht abfragen zu können.
    /e:
    Auch wenn du dein Beitrag gerade gelöscht hast,
    danke erstmal an alle, ich war zu dämlich; Habe statt MAX_VEHICLES MAX_PLAYERS angegeben X(
    Ne kleine Frage...
    Geprintet wird trotzdem nichts :/
    Zudem steigt meine CPU von 8 auf 45%...
    Wie kann ich das beheben?
    Bluescreen:
    Goldkiller:

    2 Mal editiert, zuletzt von heyhooo ()

  • Ich möchte ein Dynamische Fraktionscarsystem machen.
    Man soll als Admin eine Klassen Angabe machen, wie zb Sultan.
    Alle Autos die die Gruppe Sultan in der Datenbank haben, sollen aber nur 1 mal beim Leader im Controlpanal auftauchen.
    Da ich als Index gerne vehicleid zum Abfragen verwenden möchte, muss ich das iregndwie so hinbekommen :p
    Wie gesgat meine CPU steigt, wenn ich den Code drin habe auf 50% (von 8%).


    L.G. ;)

  • Ich möchte ein Dynamische Fraktionscarsystem machen.
    Man soll als Admin eine Klassen Angabe machen, wie zb Sultan.
    Alle Autos die die Gruppe Sultan in der Datenbank haben, sollen aber nur 1 mal beim Leader im Controlpanal auftauchen.
    Da ich als Index gerne vehicleid zum Abfragen verwenden möchte, muss ich das iregndwie so hinbekommen :p
    Wie gesgat meine CPU steigt, wenn ich den Code drin habe auf 50% (von 8%).


    L.G. ;)


    Wenn ich es richtig verstehe möchtest du das Sultan dann eine bestimmte Zahl hat oder wie? Sorry, aber wirklich verstehen tue ich das nicht so.


    Aber ich versuche es mal:


    1. Du möchtest das jedes Auto seine eigene Klasse hat, wie meinst du das genau?
    2. Du möchtest das jedes Fahrzeug in der Datenbank die Vehicle ID auf dem Server eingetragen hat oder wie?


    Wenn du mir die Zwei Sachen etwas ausführlicher erklären könntest kann ich dir bestimmt helfen, ist halt schwer zu helfen wenn man das genaue vorhaben nicht kennt, falls du das nicht hier öffentlich schreiben willst, dann schreib es per PN. Auf den Teamspeak kann ich leider nicht kommen.