Script erstellt 2 Autohäuser?

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
  • Hi,


    ich habe mir folgenden Code zusammengebastelt:
    ocmd:ccd(playerid,params[])
    {
    new name[32],price,level,Float:xPos[3];
    if(pInfo[playerid][pAdmin] != 5)return 1;
    if(sscanf(params,"dds[32]",price,level,name))return SendClientMessage(playerid,COLOR_GREY,"Benutze: /ccd [Preis] [Level] [Name]");
    for(new i;i<MAX_AUTOHAUS;i++) {
    if(AHInfo[i][zCreated])continue;
    new str[256];
    GetPlayerPos(playerid,xPos[0],xPos[1],xPos[2]);
    format(str,sizeof str,"INSERT INTO `Cardealers` (`PosX`, `PosY`, `PosZ`, `Name`, `Price`, `Level`) VALUES ('%f', '%f', '%f', '%s', '%d', '%d')",xPos[0],xPos[1],xPos[2],name,price,level);
    mysql_query(str);
    LoadCarDealer(i);
    }
    return 1;
    }
    So weit, so gut.
    Leider schreibt der Server 2 Einträge in die Datenbank, obwohl ich den Befehl nur 1x ausführe.


    Hier der Log des MySQL-Log:


    Hier noch der LoadCarDealer-Stock:
    stock LoadCarDealer(id)
    {
    new q[256];
    format(q,256,"SELECT * FROM `Cardealers` WHERE `ID` = '%d'",id);
    mysql_query(q);
    mysql_store_result();
    if(mysql_num_rows() == 1) {
    new str[512];
    while(mysql_fetch_row(str)) {
    for(new i;i<MAX_AUTOHAUS;i++) {
    if(AHInfo[i][zCreated])continue;
    new string[256];
    sscanf(str, "e<p<|>ds[32]fffds[24]dd>",AHInfo[i]);
    if((!strcmp(AHInfo[i][zOwner],"Niemand",true))) {
    AHInfo[i][zPickup]=CreatePickup(1273,1,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],0);
    format(string,128,"** %s **\nDieses Autohaus ist zu verkaufen!\nPreis: %s€\nLevel: %d\nAutohaus kaufen: /buybiz",AHInfo[i][zName],inspoints(AHInfo[i][zPrice]),AHInfo[i][zLevel]);
    AHInfo[i][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],10,0,0);
    AHInfo[i][zCreated] = true;
    } else {
    AHInfo[i][zPickup]=CreatePickup(1272,1,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],0);
    format(string,128,"** %s **\nBesitzer: %s",AHInfo[i][zName],AHInfo[i][zOwner]);
    AHInfo[i][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],10,0,0);
    AHInfo[i][zCreated] = true;
    }
    }
    }
    mysql_free_result();
    }
    return 1;
    }


    Warum schreibt er 2 Einträge in die Datenbank?


    lg
    Deagle

  • Wenn im Log nur ein INSERT steht, dann wird auch nur eins gemacht. Hast du schonmal versucht, die Datenbank bzw die Tabelle neu zu erstellen?


    Wie sieht denn die Tabelle aus, wenn die Daten gespeichert worden sind?
    Leere zuvor auch noch den Log, damit du da nichts durcheinander bringst, sondern alles auf einmal hast und poste ihn dann gegebenenfalls nochmal.

  • Wenn im Log nur ein INSERT steht, dann wird auch nur eins gemacht. Hast du schonmal versucht, die Datenbank bzw die Tabelle neu zu erstellen?


    Wie sieht denn die Tabelle aus, wenn die Daten gespeichert worden sind?
    Leere zuvor auch noch den Log, damit du da nichts durcheinander bringst, sondern alles auf einmal hast und poste ihn dann gegebenenfalls nochmal.



    2 Einträge.


    Tabelle schon öfters neu gemacht.

  • Ja, dann muss mach der strcmp Abfrage (die nach sscanf) auch ein return 1 hin (also nach dem else Teil). Dann dürfte das auch gehen.


    Es muss so sein, weil wenn das Objekt geladen ist, muss der Loop ja nicht weiter laufen, es ist ja erstellt. Sonst wird es nur nochmal erstellt.

  • Ja, dann muss mach der strcmp Abfrage (die nach sscanf) auch ein return 1 hin (also nach dem else Teil). Dann dürfte das auch gehen.
    Es muss so sein, weil wenn das Objekt geladen ist, muss der Loop ja nicht weiter laufen, es ist ja erstellt. Sonst wird es nur nochmal erstellt.


    Habe jetzt folgenden Code:
    stock SaveCarDealer(id)
    {
    new query[512];
    format(query,sizeof query,"UPDATE `Cardealers` SET `Owner` = '%s', `Name` = '%s', `Bank` = '%d' WHERE `ID` = '%d'",AHInfo[id][zOwner],AHInfo[id][zName],AHInfo[id][zBank],AHInfo[id][zID]);
    mysql_query(query);
    return 1;
    }


    stock KillCarDealer(id)
    {
    printf("KillDealer ID: %d",id);
    SaveCarDealer(id);
    DestroyPickup(AHInfo[id][zPickup]);
    Delete3DTextLabel(AHInfo[id][zLabel]);
    AHInfo[id][zCreated] = false;
    return 1;
    }


    stock LoadCarDealer(id)
    {
    new q[256];
    format(q,256,"SELECT * FROM `Cardealers` WHERE `ID` = '%d'",id+1);
    mysql_query(q);
    mysql_store_result();
    if(mysql_num_rows() == 1) {
    new str[512];
    while(mysql_fetch_row(str)) {
    for(new i;i<MAX_AUTOHAUS;i++) {
    if(AHInfo[i][zCreated])continue;
    new string[256];
    sscanf(str, "e<p<|>ds[32]fffds[24]dd>",AHInfo[i]);
    if((!strcmp(AHInfo[i][zOwner],"Niemand",true))) {
    AHInfo[i][zPickup]=CreatePickup(1273,1,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],0);
    format(string,128,"** %s **\nDieses Autohaus ist zu verkaufen!\nPreis: %s€\nLevel: %d\nAutohaus kaufen: /buybiz",AHInfo[i][zName],inspoints(AHInfo[i][zPrice]),AHInfo[i][zLevel]);
    AHInfo[i][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],10,0,0);
    AHInfo[i][zCreated] = true;
    } else {
    AHInfo[i][zPickup]=CreatePickup(1272,1,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],0);
    format(string,128,"** %s **\nBesitzer: %s",AHInfo[i][zName],AHInfo[i][zOwner]);
    AHInfo[i][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],10,0,0);
    AHInfo[i][zCreated] = true;
    }
    }
    }
    mysql_free_result();
    }
    return 1;
    }


    ocmd:ccd(playerid,params[])
    {
    new name[32],price,level,Float:xPos[3];
    if(pInfo[playerid][pAdmin] != 5)return 1;
    if(sscanf(params,"dds[32]",price,level,name))return SendClientMessage(playerid,COLOR_GREY,"Benutze: /ccd [Preis] [Level] [Name]");
    for(new i;i<MAX_AUTOHAUS;i++) {
    if(AHInfo[i][zCreated])continue;
    new str[256];
    GetPlayerPos(playerid,xPos[0],xPos[1],xPos[2]);
    format(str,sizeof str,"INSERT INTO `Cardealers` (`Owner`, `PosX`, `PosY`, `PosZ`, `Name`, `Price`, `Level`) VALUES ('Niemand', '%f', '%f', '%f', '%s', '%d', '%d')",xPos[0],xPos[1],xPos[2],name,price,level);
    mysql_query(str);
    return LoadCarDealer(i);
    }
    return 1;
    }


    ocmd:buybiz(playerid,params[])
    {
    for(new i;i<MAX_AUTOHAUS;i++) {
    if(!AHInfo[i][zCreated])continue;
    if(IsPlayerInRangeOfPoint(playerid,3,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ])) {
    if((!strcmp(AHInfo[i][zOwner],"Niemand",true))) {
    if(pInfo[playerid][pMoney] >= AHInfo[i][zPrice]) {
    if(GetPlayerScore(playerid) >= AHInfo[i][zLevel]) {
    GetPlayerName(playerid,sendername,sizeof sendername);
    pInfo[playerid][pMoney] -= AHInfo[i][zPrice];
    pInfo[playerid][pBiz] = i;
    format(AHInfo[i][zOwner],24,"%s",sendername);
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Du hast dir das Autohaus erfolgreich gekauft!");
    SavePlayer(playerid);
    KillCarDealer(i);
    return LoadCarDealer(i);
    } else {
    return SendClientMessage(playerid,COLOR_LIGHTRED,"Dein Level reicht nicht aus, um dieses Autohaus zu kaufen!");
    }
    } else {
    return SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast nicht genug Geld, um dieses Autohaus zu kaufen!");
    }
    } else {
    return SendClientMessage(playerid,COLOR_LIGHTRED,"Dieses Autohaus ist nicht zu verkaufen!");
    }
    }
    }
    return 1;
    }
    Leider wird nun nur noch 1 Autohaus erstellt.
    Beim Ersten Autohaus werden nach dem Kauf das alte Pickup+Label nicht entfernt.


    Ich habe an dem Code rumgewerkelt wie ein bekloppter, doch nix ist rausgekommen :/


    /e: KillDealer (was geprintet wurde) war immer 0.

  • stock LoadCarDealer(id)
    {
    new q[256];
    format(q,256,"SELECT * FROM `Cardealers` WHERE `ID` = '%d'",id+1);
    mysql_query(q);
    mysql_store_result();
    if(mysql_num_rows() == 1) {
    new str[512];
    while(mysql_fetch_row(str)) {
    for(new i;i<MAX_AUTOHAUS;i++) {
    if(AHInfo[i][zCreated])continue;
    new string[256];
    sscanf(str, "e<p<|>ds[32]fffds[24]dd>",AHInfo[i]);
    if((!strcmp(AHInfo[i][zOwner],"Niemand",true))) {
    AHInfo[i][zPickup]=CreatePickup(1273,1,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],0);
    format(string,128,"** %s **\nDieses Autohaus ist zu verkaufen!\nPreis: %s€\nLevel: %d\nAutohaus kaufen: /buybiz",AHInfo[i][zName],inspoints(AHInfo[i][zPrice]),AHInfo[i][zLevel]);
    AHInfo[i][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],10,0,0);
    AHInfo[i][zCreated] = true;
    } else {
    AHInfo[i][zPickup]=CreatePickup(1272,1,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],0);
    format(string,128,"** %s **\nBesitzer: %s",AHInfo[i][zName],AHInfo[i][zOwner]);
    AHInfo[i][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[i][zPosX],AHInfo[i][zPosY],AHInfo[i][zPosZ],10,0,0);
    AHInfo[i][zCreated] = true;
    }
    return 1; //Hat gefehlt, wie gesagt.
    }
    }
    mysql_free_result();
    }
    return 1;
    }


  • Jetzt erstellt er das Autohaus erst, wenn ich ein 2. erstelle (Ich gehe an Pos 1, mache ccd [...], dann gehe ich an Pos 2 mache ccd [...] => da wird 1 geladen und nicht 2)
    Anstatt das neu erstellte zu laden lädt er da das Autohaus was in der Datenbank war und am start nicht geladen wurde.


    Folgende Funktion wird am start aufgerufen:
    stock LoadCarDealers()
    {
    mysql_query("SELECT * FORM `Cardealers`");
    mysql_store_result();
    if(mysql_num_rows() != 0 && mysql_num_rows() <= 5) {
    new str[1024],idx=0;
    while(mysql_fetch_row(str)) {
    new string[256];
    sscanf(str, "e<p<|>ds[32]fffds[24]dd>",AHInfo[idx]);
    if((!strcmp(AHInfo[idx][zOwner],"Niemand",true))) {
    AHInfo[idx][zPickup]=CreatePickup(1273,1,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],0);
    format(string,128,"** %s **\nDieses Autohaus ist zu verkaufen!\nPreis: %s€\nLevel: %d\nAutohaus kaufen: /buybiz",AHInfo[idx][zName],inspoints(AHInfo[idx][zPrice]),AHInfo[idx][zLevel]);
    AHInfo[idx][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],10,0,0);
    AHInfo[idx][zCreated] = true;
    } else {
    AHInfo[idx][zPickup]=CreatePickup(1272,1,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],0);
    format(string,128,"** %s **\nBesitzer: %s",AHInfo[idx][zName],AHInfo[idx][zOwner]);
    AHInfo[idx][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],10,0,0);
    AHInfo[idx][zCreated] = true;
    }
    idx++;
    }
    mysql_free_result();
    }
    return 1;
    }

  • Fängt dein AUTO_INCREMENT bei 0 an?
    Wenn ja:
    format(q,256,"SELECT * FROM `Cardealers` WHERE `ID` = '%d'",id+1);


    zu:
    format(q,256,"SELECT * FROM `Cardealers` WHERE `ID` = '%d'",id);


    Ich hatte dir das geändert, weil eigentlich bei allen die ID bei 1 anfängt, wenn sie was mit MySQL machen.

  • Kannst du nochmal deine Datenbank und deinen Log leeren und den Befehl nochmal eingeben, bzw. zweimal? Und wenn möglich auch nochmal den Befehl und die zwei stocks dazu, wie sie momentan sind?
    Das ist so durcheinander hier, etwas Ordnung wäre gut. Den Log brauche ich um die Vorgänge zu verfolgen, warum es "verzögert" erstellt wird.

  • Kannst du nochmal deine Datenbank und deinen Log leeren und den Befehl nochmal eingeben, bzw. zweimal? Und wenn möglich auch nochmal den Befehl und die zwei stocks dazu, wie sie momentan sind?
    Das ist so durcheinander hier, etwas Ordnung wäre gut. Den Log brauche ich um die Vorgänge zu verfolgen, warum es "verzögert" erstellt wird.


    Okay. Ich habe jetzt grade die Datenbank geleert, und dann alles neu gestartet und 5 neue Autohäuser erstellt. Es hat alles geklappt wie gewollt.
    Doch beim Neustart des Servers wurden die Autohäuser nicht richtig geladen. Dazu wird unter OnGameModeInit der Befehl "LoadCarDealers();" ausgeführt.
    Erst als ich den Command "ccd" wieder ausgeführt habe (um ein Autohaus zu erstellen) wurde das erste Autohaus aus der DB geladen.
    Hier der dazugehörige stock:
    stock LoadCarDealers()
    {
    mysql_query("SELECT * FORM `Cardealers`");
    mysql_store_result();
    if(mysql_num_rows() != 0 && mysql_num_rows() <= 5) {
    new str[1024],idx=0;
    while(mysql_fetch_row(str)) {
    new string[256];
    sscanf(str, "e<p<|>ds[32]fffds[24]dd>",AHInfo[idx]);
    if((!strcmp(AHInfo[idx][zOwner],"Niemand",true))) {
    AHInfo[idx][zPickup]=CreatePickup(1273,1,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],0);
    format(string,128,"** %s **\nDieses Autohaus ist zu verkaufen!\nPreis: %s€\nLevel: %d\nAutohaus kaufen: /buybiz",AHInfo[idx][zName],inspoints(AHInfo[idx][zPrice]),AHInfo[idx][zLevel]);
    AHInfo[idx][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],10,0,0);
    AHInfo[idx][zCreated] = true;
    } else {
    AHInfo[idx][zPickup]=CreatePickup(1272,1,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],0);
    format(string,128,"** %s **\nBesitzer: %s",AHInfo[idx][zName],AHInfo[idx][zOwner]);
    AHInfo[idx][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],10,0,0);
    AHInfo[idx][zCreated] = true;
    }
    idx++;
    }
    mysql_free_result();
    }
    return 1;
    }


    Und weil ich dich kenne Jeffry, hier die MySQL-Log:


    Woran liegts mit dem OnQueryError()?


    lg
    Deagle


    /e: Außerdem schreibt er dann beim ccd-Befehl wieder was neues in die Tabelle.

  • stock LoadCarDealers()
    {
    print("LoadCarDealers");
    mysql_query("SELECT * FORM `Cardealers`");
    mysql_store_result();
    new rows = mysql_num_rows();
    printf("rows: %d", rows);
    if(rows != 0 && rows <= 5) {
    new str[1024],idx=0;
    while(mysql_fetch_row(str)) {
    print(str);
    new string[256];
    sscanf(str, "e<p<|>ds[32]fffds[24]dd>",AHInfo[idx]);
    if((!strcmp(AHInfo[idx][zOwner],"Niemand",true))) {
    AHInfo[idx][zPickup]=CreatePickup(1273,1,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],0);
    format(string,128,"** %s **\nDieses Autohaus ist zu verkaufen!\nPreis: %s€\nLevel: %d\nAutohaus kaufen: /buybiz",AHInfo[idx][zName],inspoints(AHInfo[idx][zPrice]),AHInfo[idx][zLevel]);
    AHInfo[idx][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],10,0,0);
    AHInfo[idx][zCreated] = true;
    } else {
    AHInfo[idx][zPickup]=CreatePickup(1272,1,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],0);
    format(string,128,"** %s **\nBesitzer: %s",AHInfo[idx][zName],AHInfo[idx][zOwner]);
    AHInfo[idx][zLabel]=Create3DTextLabel(string,COLOR_AHLABEL,AHInfo[idx][zPosX],AHInfo[idx][zPosY],AHInfo[idx][zPosZ],10,0,0);
    AHInfo[idx][zCreated] = true;
    }
    printf("%d: %s", idx, string);
    idx++;
    }
    mysql_free_result();
    }
    return 1;
    }
    Lass es mal so laufen und poste dann was im Server Log steht.

  • Füge das OnQueryError mal in deinen Code ein und lasse dir die Werte der Parameter mit Print alle ausgeben. Dann poste was bei Aufruf (wird es ja offensichtlich) geprintet wird.
    Irgendwas geht da nämlich schief.


    http://wiki.sa-mp.com/wiki/MySQL#OnQueryError


    Berechtigungen in der Datenbank hast du aber schon alle, oder?



    Edit:
    DJ Deagle: Das schaue ich mir morgen Nachmittag genau an. Wegen dem FORM: Manchmal sieht man bekanntlich den Wald vor lauter Bäumen nicht mehr, hab ich nicht bemerkt, aber dafür gibt es ja Logs. ^^


    Edit2:
    DJ Deagle: Super! :thumbup: Da hätten wir sonst wohl noch etwas gesucht. Gut, dass du es gefunden hast.

    3HZXdYd.png

    3 Mal editiert, zuletzt von Jeffry ()

  • Füge das OnQueryError mal in deinen Code ein und lasse dir die Werte der Parameter mit Print alle ausgeben. Dann poste was bei Aufruf (wird es ja offensichtlich) geprintet wird.
    Irgendwas geht da nämlich schief.


    http://wiki.sa-mp.com/wiki/MySQL#OnQueryError


    Berechtigungen in der Datenbank hast du aber schon alle, oder?


    Berechtigungen? Ja. Du hattest außerdem einen SyntaxError (SELECT * FORM) anstatt (SELECT * FROM). Das habe ich geändert, trotzdem noch 3x OnQueryError (er lädt trzdem die Autohäuser ohne probleme).
    Hier die Server-Log:

    Code
    ----------------------v0.3z-R4, (C)2005-2014 SA-MP Team[22:50:23] [22:50:23] Server Plugins[22:50:23] --------------[22:50:23]  Loading plugin: mysql.so[22:50:23]   > MySQL plugin R5 successfully loaded.[22:50:23]   Loaded.[22:50:23]  Loading plugin: streamer.so[22:50:23]   Loaded.[22:50:23]  Loading plugin: sscanf.so[22:50:23] [22:50:23]  ===============================[22:50:23]       sscanf plugin loaded.     [22:50:23]          Version:  2.8.1        [22:50:23]    (c) 2012 Alex "Y_Less" Cole  [22:50:23]  ===============================[22:50:23]   Loaded.[22:50:23]  Loading plugin: audio.so[22:50:23] *** Audio Plugin v0.5 R2 by Incognito loaded ***[22:50:23]   Loaded.[22:50:23]  Loading plugin: SyncHTTP.so[22:50:23] SyncHTTP got loaded.[22:50:23]   Loaded.[22:50:23]  Loaded 5 plugins.[22:50:23] [22:50:23] Filterscripts[22:50:23] ---------------[22:50:23]   Loaded 0 filterscripts.[22:50:23] *** Audio Plugin: Started TCP server on port 9853[22:50:23] <-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt![22:50:23] Setting server password to: "shanfjdshfjsdhfjkdshfsd"[22:50:23]  [22:50:23]  Alle Maps wurden erfolgreich geladen![22:50:23]  [22:50:23]   Filterscript 'Maps.amx' loaded.[22:50:23]   Filterscript 'AudioHide.amx' loaded.[22:50:23] === WBB_Connect ===Successfully initialized!===================[22:50:23] LoadCarDealers[22:50:23] rows: 5[22:50:23] 1|test1|-306.352|828.016|13.391|0|Zinne|100|1[22:50:23] 0: ** test1 **Besitzer: Zinne[22:50:23] 2|test2|-308.212|823.644|14.0029|0|Niemand|100|1[22:50:23] 1: ** test2 **Dieses Autohaus ist zu verkaufen!Preis: 100€Level: 1Autohaus kaufen: /buybiz[22:50:23] 3|test3|-304.661|824.035|13.7237|0|Niemand|100|1[22:50:23] 2: ** test3 **Dieses Autohaus ist zu verkaufen!Preis: 100€Level: 1Autohaus kaufen: /buybiz[22:50:23] 4|test4|-301.582|822.909|13.8331|0|Niemand|100|1[22:50:23] 3: ** test4 **Dieses Autohaus ist zu verkaufen!Preis: 100€Level: 1Autohaus kaufen: /buybiz[22:50:23] 5|test5|-300.424|824.921|13.6326|0|Niemand|100|1[22:50:23] 4: ** test5 **Dieses Autohaus ist zu verkaufen!Preis: 100€Level: 1Autohaus kaufen: /buybiz[22:50:23]  [22:50:23]  SCRIPT - (c) by Deagle[22:50:23]  [22:50:23] Number of vehicle models: 2[22:50:23] Incoming connection: 127.0.0.1:51358[22:50:23] Incoming connection: 127.0.0.1:34883[22:50:23] [npc:join] Joe has joined the server (0:127.0.0.1)[22:50:23] [npc:join] Jose has joined the server (1:127.0.0.1)


    MySQL Log:

    SQL
    [22:50:23]  [22:50:23] ---------------------------[22:50:23] MySQL Debugging activated (09/30/14)[22:50:23] ---------------------------[22:50:23]  [22:50:23] >> mysql_query( Connection handle: 1 )[22:50:23] CMySQLHandler::Query(SELECT * FROM `haeuser`) - Successfully executed.[22:50:23] >> mysql_store_result( Connection handle: 1 )[22:50:23] CMySQLHandler::StoreResult() - Result was stored.[22:50:23] >> mysql_fetch_row_format( Connection handle: 1 )[22:50:23] >> mysql_free_result( Connection handle: 1 )[22:50:23] CMySQLHandler::FreeResult() - Result was successfully free'd.[22:50:23] OnQueryError() - Called.[22:50:23] OnQueryError() - Called.[22:50:23] OnQueryError() - Called.


    Callback im Script:

    Spoiler anzeigen
    public OnQueryError(errorid, error[], resultid, extraid, callback[], query[], connectionHandle)
    {
    switch(errorid) {
    case CR_COMMAND_OUT_OF_SYNC: { printf("Commands out of sync for thread ID: %d",resultid); }
    case ER_SYNTAX_ERROR: { printf("Something is wrong in your syntax, query: %s",query); }
    }
    return 1;
    }


    hm.. was is da los? :o


    /e: Hab das Callback in deinen Wunsch abgeändert:
    public OnQueryError(errorid, error[], resultid, extraid, callback[], query[], connectionHandle)
    {
    printf("ErrorID: %d",errorid);
    printf("Error: %s",error);
    printf("ResultID: %d",resultid);
    printf("ExtraID: %d",extraid);
    printf("Callback: %s",callback);
    printf("Query: %s",query);
    printf("ConnectionHandle: %d",connectionHandle);
    return 1;
    }


    ServerLOG:



    edit: Mir ist aufgefallen, dass diese Fehler in einem anderen stock liegen, der auch unter OnGameModeInit aufgerufen wird.
    Dort wurden die ganzen formatierten strings vor dem strcat nicht auf 0 Zeichen formatiert. Dieses ist nun behoben.
    Jetzt klappt alles reibungslos und ohne Errors (weder im Compiler, noch in den Logs). :)
    Danke Jeffry, du hast dir wirklich ein Lob verdient :love: