Nach Schleife wird nichts mehr geladen

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 liebe Community,


    ich habe ein kleines Problem mit einer Schleife, die eine Funktion abruft.
    Unzwar, wenn ich unter
    OnGameModeInit()


    das hier eintrage

    for(new i = 1; i!=MAX_BIZ; i++){
    LoadBiz(i);
    }


    Lädt nichts mehr, was unter der Schleife steht.
    Die Funktion "LoadBiz" so wie folgt aus:



    stock LoadBiz(bID)
    {
    new str[5],str1[256];
    format(str,5,"%d",bID);
    if(mysql_CheckBiz(bID)){
    BizInfo[bID][ID] = mysql_GetInt("Business", "ID", "ID", str);
    BizInfo[bID][Owner] = mysql_GetString("Business", "Owner", "ID", str);
    BizInfo[bID][Bizname] = mysql_GetString("Business", "Bizname", "ID", str);
    BizInfo[bID][Kasse] = mysql_GetInt("Business", "Kasse", "ID", str);
    BizInfo[bID][Kaufpreis] = mysql_GetInt("Business", "Kaufpreis", "ID", str);
    BizInfo[bID][Produkte] = mysql_GetInt("Business", "Produkte", "ID", str);
    BizInfo[bID][MaxProds] = mysql_GetInt("Business", "MaxProds", "ID", str);
    BizInfo[bID][ProdPreis] = mysql_GetInt("Business", "ProdPreis", "ID", str);
    BizInfo[bID][Open] = mysql_GetInt("Business", "Open", "ID", str);
    BizInfo[bID][bPreis] = mysql_GetInt("Business", "Preis", "ID", str);
    BizInfo[bID][bEnterX] = mysql_GetFloat("Business", "EnterX", "ID", str);
    BizInfo[bID][bEnterY] = mysql_GetFloat("Business", "EnterY", "ID", str);
    BizInfo[bID][bEnterZ] = mysql_GetFloat("Business", "EnterZ", "ID", str);
    BizInfo[bID][PickupID] = mysql_GetInt("Business", "PickupID", "ID", str);
    BizInfo[bID][Owned] = mysql_GetInt("Business", "Owned", "ID", str);
    BizInfo[bID][AltName] = mysql_GetString("Business", "OldName", "ID", str);
    }
    if(BizInfo[bID][Owned] == 0)
    {
    format(str1,256,"%s\nBesitzer: %s\nDieses Geschäft steht zum Verkauf!\n\nPreis: %d$",BizInfo[bID][AltName],BizInfo[bID][Owner],BizInfo[bID][Kaufpreis]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_WHITE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    BizPickup[bID] = CreatePickup(1239,32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    }
    else if(BizInfo[bID][Owned] == 1)
    {
    format(str1,256,"%s\nBesitzer: %s\nProdukte: %d/%d\nPreis: %d$",BizInfo[bID][Bizname],BizInfo[bID][Owner],BizInfo[bID][Produkte],BizInfo[bID][MaxProds],BizInfo[bID][bPreis]);
    BizPickup[bID] = CreatePickup(BizInfo[bID][PickupID],32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_LIGHTBLUE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    }
    //return printf("Biz %d wurde geladen.Position: %f,%f,%f - Besitzer: %s Name: %s",BizInfo[bID][ID],BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],BizInfo[bID][Owner],BizInfo[bID][Bizname]);
    return 1;
    }


    Wo ist dort der Fehler, das nach der o.g Schleife nichts weiter lädt?


    Ich hoffe ihr versteht was ich meine und könnt mir evtl. helfen.


    Freundliche Grüße
    Hardcore



  • "return 1"



    MfG
    Gero

  • Wie ebend schon erwähnt, auch wenn kein


    return


    drinne ist, lädt nach der Funktion nichts weiteres.


    Habe es gerade nochmal getestet um Missverständnisse auszuschliessen.
    So sieht die Funktion gerade aus:



    stock LoadBiz(bID)
    {
    new str[5],str1[256];
    format(str,5,"%d",bID);
    if(mysql_CheckBiz(bID)){
    BizInfo[bID][ID] = mysql_GetInt("Business", "ID", "ID", str);
    BizInfo[bID][Owner] = mysql_GetString("Business", "Owner", "ID", str);
    BizInfo[bID][Bizname] = mysql_GetString("Business", "Bizname", "ID", str);
    BizInfo[bID][Kasse] = mysql_GetInt("Business", "Kasse", "ID", str);
    BizInfo[bID][Kaufpreis] = mysql_GetInt("Business", "Kaufpreis", "ID", str);
    BizInfo[bID][Produkte] = mysql_GetInt("Business", "Produkte", "ID", str);
    BizInfo[bID][MaxProds] = mysql_GetInt("Business", "MaxProds", "ID", str);
    BizInfo[bID][ProdPreis] = mysql_GetInt("Business", "ProdPreis", "ID", str);
    BizInfo[bID][Open] = mysql_GetInt("Business", "Open", "ID", str);
    BizInfo[bID][bPreis] = mysql_GetInt("Business", "Preis", "ID", str);
    BizInfo[bID][bEnterX] = mysql_GetFloat("Business", "EnterX", "ID", str);
    BizInfo[bID][bEnterY] = mysql_GetFloat("Business", "EnterY", "ID", str);
    BizInfo[bID][bEnterZ] = mysql_GetFloat("Business", "EnterZ", "ID", str);
    BizInfo[bID][PickupID] = mysql_GetInt("Business", "PickupID", "ID", str);
    BizInfo[bID][Owned] = mysql_GetInt("Business", "Owned", "ID", str);
    BizInfo[bID][AltName] = mysql_GetString("Business", "OldName", "ID", str);
    }
    if(BizInfo[bID][Owned] == 0)
    {
    format(str1,256,"%s\nBesitzer: %s\nDieses Geschäft steht zum Verkauf!\n\nPreis: %d$",BizInfo[bID][AltName],BizInfo[bID][Owner],BizInfo[bID][Kaufpreis]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_WHITE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    BizPickup[bID] = CreatePickup(1239,32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    }
    else if(BizInfo[bID][Owned] == 1)
    {
    format(str1,256,"%s\nBesitzer: %s\nProdukte: %d/%d\nPreis: %d$",BizInfo[bID][Bizname],BizInfo[bID][Owner],BizInfo[bID][Produkte],BizInfo[bID][MaxProds],BizInfo[bID][bPreis]);
    BizPickup[bID] = CreatePickup(BizInfo[bID][PickupID],32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_LIGHTBLUE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    }
    }

  • Return = Beenden also


    return wenn überhaupt abbrechen der aktuellen funktion.
    Das ist nichts übergreifendes ;)


    @[FoR]Hardcore:
    Lad dir mal das crashedetect Plugin.
    Das wird dir schon den Fehler sagen.


    Am besten mit -d3 -r compilen ;)
    https://www.gta-servers.de/kom…n-gamemode-im-debug-modus

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

    Margarete Stokowski

  • Probiers mal so:



    stock LoadBiz(bID)
    {
    new str[5],str1[256];
    format(str,5,"%d",bID);
    if(mysql_CheckBiz(bID)){
    BizInfo[bID][ID] = mysql_GetInt("Business", "ID", "ID", str);
    BizInfo[bID][Owner] = mysql_GetString("Business", "Owner", "ID", str);
    BizInfo[bID][Bizname] = mysql_GetString("Business", "Bizname", "ID", str);
    BizInfo[bID][Kasse] = mysql_GetInt("Business", "Kasse", "ID", str);
    BizInfo[bID][Kaufpreis] = mysql_GetInt("Business", "Kaufpreis", "ID", str);
    BizInfo[bID][Produkte] = mysql_GetInt("Business", "Produkte", "ID", str);
    BizInfo[bID][MaxProds] = mysql_GetInt("Business", "MaxProds", "ID", str);
    BizInfo[bID][ProdPreis] = mysql_GetInt("Business", "ProdPreis", "ID", str);
    BizInfo[bID][Open] = mysql_GetInt("Business", "Open", "ID", str);
    BizInfo[bID][bPreis] = mysql_GetInt("Business", "Preis", "ID", str);
    BizInfo[bID][bEnterX] = mysql_GetFloat("Business", "EnterX", "ID", str);
    BizInfo[bID][bEnterY] = mysql_GetFloat("Business", "EnterY", "ID", str);
    BizInfo[bID][bEnterZ] = mysql_GetFloat("Business", "EnterZ", "ID", str);
    BizInfo[bID][PickupID] = mysql_GetInt("Business", "PickupID", "ID", str);
    BizInfo[bID][Owned] = mysql_GetInt("Business", "Owned", "ID", str);
    BizInfo[bID][AltName] = mysql_GetString("Business", "OldName", "ID", str);
    if(BizInfo[bID][Owned] == 0)
    {
    format(str1,256,"%s\nBesitzer: %s\nDieses Geschäft steht zum Verkauf!\n\nPreis: %d$",BizInfo[bID][AltName],BizInfo[bID][Owner],BizInfo[bID][Kaufpreis]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_WHITE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    BizPickup[bID] = CreatePickup(1239,32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    }
    else if(BizInfo[bID][Owned] == 1)
    {
    format(str1,256,"%s\nBesitzer: %s\nProdukte: %d/%d\nPreis: %d$",BizInfo[bID][Bizname],BizInfo[bID][Owner],BizInfo[bID][Produkte],BizInfo[bID][MaxProds],BizInfo[bID][bPreis]);
    BizPickup[bID] = CreatePickup(BizInfo[bID][PickupID],32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_LIGHTBLUE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    }
    }
    return 1;
    }


    sag obs geklappt hat.


    We are Anonymous.


    We are Legion.


    We do not forgive.


    We do not forget.


    Expect us.

  • Devel: Nein, leider nicht.


    @BlackAce:
    Ich kann der Serverlog nach dem starten mit dem Plugin nichts negatives entnehmen....
    Hier mal der Auszug:


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Schau mal welches Printf nicht mehr angezeigt wird:


    stock LoadBiz(bID)
    {
    printf("Die Funktion LoadBiz wurde mit der ID %i geöffnet", bID); // Damit siehst du ob deine Schleife was bewirkt
    new str[5],str1[256];
    format(str,5,"%d",bID);
    if(mysql_CheckBiz(bID)){
    BizInfo[bID][ID] = mysql_GetInt("Business", "ID", "ID", str);
    BizInfo[bID][Owner] = mysql_GetString("Business", "Owner", "ID", str);
    BizInfo[bID][Bizname] = mysql_GetString("Business", "Bizname", "ID", str);
    BizInfo[bID][Kasse] = mysql_GetInt("Business", "Kasse", "ID", str);
    BizInfo[bID][Kaufpreis] = mysql_GetInt("Business", "Kaufpreis", "ID", str);
    BizInfo[bID][Produkte] = mysql_GetInt("Business", "Produkte", "ID", str);
    BizInfo[bID][MaxProds] = mysql_GetInt("Business", "MaxProds", "ID", str);
    BizInfo[bID][ProdPreis] = mysql_GetInt("Business", "ProdPreis", "ID", str);
    BizInfo[bID][Open] = mysql_GetInt("Business", "Open", "ID", str);
    BizInfo[bID][bPreis] = mysql_GetInt("Business", "Preis", "ID", str);
    BizInfo[bID][bEnterX] = mysql_GetFloat("Business", "EnterX", "ID", str);
    BizInfo[bID][bEnterY] = mysql_GetFloat("Business", "EnterY", "ID", str);
    BizInfo[bID][bEnterZ] = mysql_GetFloat("Business", "EnterZ", "ID", str);
    BizInfo[bID][PickupID] = mysql_GetInt("Business", "PickupID", "ID", str);
    BizInfo[bID][Owned] = mysql_GetInt("Business", "Owned", "ID", str);
    BizInfo[bID][AltName] = mysql_GetString("Business", "OldName", "ID", str);
    printf("Erste Abfrage hat geklappt"); // Deine erste Abfrage klappt
    if(BizInfo[bID][Owned] == 0)
    {
    format(str1,256,"%s\nBesitzer: %s\nDieses Geschäft steht zum Verkauf!\n\nPreis: %d$",BizInfo[bID][AltName],BizInfo[bID][Owner],BizInfo[bID][Kaufpreis]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_WHITE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    BizPickup[bID] = CreatePickup(1239,32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    printf("BizID %i hat keinen Owner!", bID);
    }
    else if(BizInfo[bID][Owned] == 1)
    {
    format(str1,256,"%s\nBesitzer: %s\nProdukte: %d/%d\nPreis: %d$",BizInfo[bID][Bizname],BizInfo[bID][Owner],BizInfo[bID][Produkte],BizInfo[bID][MaxProds],BizInfo[bID][bPreis]);
    BizPickup[bID] = CreatePickup(BizInfo[bID][PickupID],32,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ]);
    BizLabel[bID] = Create3DTextLabel(str1,COLOR_LIGHTBLUE,BizInfo[bID][bEnterX],BizInfo[bID][bEnterY],BizInfo[bID][bEnterZ],20.0,0,1);
    printf("BizID %i hat einen Owner!", bID); // Die Zuweisung BizInfo[bID][Owned]... hat geklappt
    }
    }
    return 1;
    }


    We are Anonymous.


    We are Legion.


    We do not forgive.


    We do not forget.


    Expect us.

  • Alle anderen Systeme lade ich nach dem gleichen Prinzip, bei allen anderen funktioniert es auch einwandfrei..


    Nur weil eins geht, muss es nicht beim anderen auch funktionieren.


    Du hast das Problem, wenn du wirkliche alles nach dem verfahren lädst, das der Server andauernd auf die Antwort vom MySQL Server warten muss.
    Möglich das das Plugin dann irgendwann nicht mehr mit spielt, weil du zuviele Querys auf einem Haufen hast.


    Insgesammt reicht da einer.

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

    Margarete Stokowski

  • Ich kann es mir zwar nicht erklären, aber ich habe die Schleife mal geändert...


    Anstatt new i = 1; habe ich new i = 0; gemacht.. Komischerweise funktioniert es nun...
    Finde den Fehler? 8|


    Merkwürdig, meint ihr nicht?

  • Wenn du nur ein Biz mit id 0 hast nein :whistling:
    Sonst kann ich nicht viel dazu sagen ohne den tabellen aufbau zu kennen,
    Du Solltest allerdings überlegen, ob dieser Methode wirklich verwendet werden soll
    So weit ich es hier in den kommentaren gelesen habe 17 einzelnte Querys, Hast du z.B 40 Biz´s:


    17*40 = 680(Query´s)


    Womit das Plugin zugebombt wird.



    MFG Arendium


    //Edit Kleiner Fehler

  • Sorry das ich das jetzt nochmal aufwühle hier..


    Ehm.. Kann mir evtl. jemand ein kleines Beispiel geben, wie ich solche Funktionen mit nur einem Query laden kann?
    Wäre sehr dankbar.


    Freundliche Grüße
    Hardcore


    //Edit:
    Danke Arendium, Du hast mich da auf eine kleine idee gebracht gehabt.
    Ich habe einfach ein weiteres Biz in die Tabelle eingefügt und woila, das System lädt nun auch wenn die Schleif über den anderen unter OnGameModeinit steht. =))


    Fehlt nurnoch das ich weis, wie man das ganze mit nur einem Query laden kann.

  • SELECT Wer1,Wer2,Wert3,Wert4 FROM Tabellenname WHERE ID = 1
    // Einzelne Werte aus der zweiten Reihe herauslesen


    Oder:


    SELECT * FROM Tabellenname WHERE ID = 1
    // ALle Werte aus der zweiten Reihe herauslesen


    Oder:


    SELECT * FROM Tabellenname
    //Alles aus der Tabelle herauslesen


    Am besten machst du das dann mit Threaded Querys und dem neuen Plugin von BlueG.
    Dann kannst du nämlich cache verwenden, was das Auslesen und Speichern in Werte erleichtert.