SScanf oder MySQL funktioniert nicht =/ (Server chrasht)

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 hatte gestern so ein Ähnliches Thema, nur jetzt liegt ein fehler an MySQL:
    Wenn ich /createhouse eingeben kommt nichts zurück, auch beim Printen, wird es nur vor sscanf ausgegeben (in diesem Fall "Test 1")
    Gebe ich alles ein, so erstellt sich das Haus mit einer komischen Hausid, welche auch nicht in die Datenbank geschrieben wird...
    Hier mein Befehl:
    ocmd:createhouse(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 5)
    {
    print("Test 1");
    new preis,level,Float:i[3],Float:Pos[3],iID,wID, query[250];
    if(sscanf(params,"ddfffdd",preis,level,i[0],i[1],i[2],iID,wID))return SendInfo(playerid, "/createhouse [PREIS] [Level] [Interior:X] [Interior:Y] [Interior:Z] [INTERIORID] [VirtuelleWelt (Mindestens 1 sonst überlappt sich alles) ]");
    print("Test 2");
    GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    print("Test 3");
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(HausInfo[haus][erstellt]==true)continue;
    format(query, sizeof(query), "INSERT INTO `haus` (`hid`,`x`,`y`,`z`,`ix`,`iy`,`iz`,`miete`,`interior`,`w`,`preis`,`level`,`besitzer`) VALUES ('%d','%f','%f','%f','%f','%f','%f','0','%d','%d','%d','%d','Keiner')",haus,Pos[0],Pos[1],Pos[2],i[0],i[1],i[2],iID,wID,preis,level);
    mysql_query(query);


    HausInfo[haus][haus_x]=Pos[0];
    HausInfo[haus][haus_y]=Pos[1];
    HausInfo[haus][haus_z]=Pos[2];
    HausInfo[haus][haus_ix]=i[0];
    HausInfo[haus][haus_iy]=i[1];
    HausInfo[haus][haus_iz]=i[2];
    HausInfo[haus][haus_interior]=iID;
    HausInfo[haus][haus_w]=wID;
    HausInfo[haus][haus_preis]=preis;
    HausInfo[haus][haus_level]=level;
    HausInfo[haus][miete]=0;
    format(HausInfo[haus][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
    HausInfo[haus][erstellt]=true;


    new hausstring[100];
    HausInfo[haus][haus_pickup] = CreatePickup(1273 ,23,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z],0); //erstellt ein Pickup an den Hauskoordinaten
    HausInfo[haus][haus_pickup1] = CreatePickup(1239 ,23,HausInfo[haus][haus_ix],HausInfo[haus][haus_iy],HausInfo[haus][haus_iz],HausInfo[haus][haus_w]); //erstellt ein Pickup an den Hauskoordinaten
    format(hausstring,sizeof(hausstring),"== Haus %d zu verkaufen ==\nBesitzer: %s\nPreis: %d$\nLevel: %d",i,HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][haus_level]);
    HausInfo[haus][haus_label] = Create3DTextLabel(hausstring, COLOR_YELLOW, HausInfo[haus][haus_x], HausInfo[haus][haus_y], HausInfo[haus][haus_z], 12.0, 0, 0);
    return 1;
    }
    }
    else return SendFail(playerid, "Du bist nicht befugt!");
    return 1;
    }


    Hier ein Screen, wenn ich alles angeben....:


    Es kommt alles in der Datenbank an, bis auf die Hausid, hier der Log:


    Ich verzweifle :wacko: ?( :(
    Ich hoffe mir kann wer helfen
    L.G.
    heyho


    //edit: Code geändert, alles kommt jetzt an, nur wieso bekomm ich immer noch keine Message von sscanf?
    bzw: -> Wieso ist es NUR ingame so eine Komische nummer? =/

    3 Mal editiert, zuletzt von heyhooo ()

  • Habs jetzt xD


    mach
    format(hausstring,sizeof(hausstring),"== Haus %d zu verkaufen ==\nBesitzer: %s\nPreis: %d$\nLevel: %d",i,HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][haus_level]);
    zu
    format(hausstring,sizeof(hausstring),"== Haus %d zu verkaufen ==\nBesitzer: %s\nPreis: %d$\nLevel: %d",haus,HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][haus_level]);


    denn i ist bei dir ein Float!


    //edit

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx


  • Funkt schnmal danke ^^ (billiger Fehler von mir =/)
    Aber es kommt immer noch keine Rückmeldung von sscanf...


    L.G.
    heyho


    //Edit: Mein server crasht jetzt beim Laden =/

    Code
    [11:23:41] [debug] #1 00015eac in LoadHaus (hausid=1) at C:\Users\user\Desktop\MySELFMADE\gamemodes\myselfmade.pwn:1630


    Betreffende Zeile:
    stock LoadHaus(hausid)
    {
    new query[128],data[64];
    format(query,sizeof(query),"SELECT * FROM `haus` WHERE `hid`='%d'", hausid);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
    if(mysql_retrieve_row())
    {
    mysql_fetch_field_row(data,"x"); //Diese Zeile
    HausInfo[hausid][haus_x]=floatstr(data);
    mysql_fetch_field_row(data,"y");
    HausInfo[hausid][haus_y]=floatstr(data);
    mysql_fetch_field_row(data,"z");
    HausInfo[hausid][haus_z]=floatstr(data);
    mysql_fetch_field_row(data,"ix");
    HausInfo[hausid][haus_ix]=floatstr(data);
    mysql_fetch_field_row(data,"iy");
    HausInfo[hausid][haus_iy]=floatstr(data);
    mysql_fetch_field_row(data,"iz");
    HausInfo[hausid][haus_iz]=floatstr(data);
    mysql_fetch_field_row(data,"interior");
    HausInfo[hausid][haus_interior]=strval(data);
    mysql_fetch_field_row(data,"w");
    HausInfo[hausid][haus_w]=strval(data);
    mysql_fetch_field_row(data,"preis");
    HausInfo[hausid][haus_preis]=strval(data);
    mysql_fetch_field_row(data,"level");
    HausInfo[hausid][haus_level]=strval(data);
    mysql_fetch_field_row(data,"miete");
    HausInfo[hausid][miete]=strval(data);
    mysql_fetch_field_row(data,"besitzer");
    format(HausInfo[hausid][haus_besitzer],MAX_PLAYER_NAME,"%s",data);
    HausInfo[hausid][erstellt] = true;
    }
    }
    mysql_free_result(); new hausstring[100];
    return 1;
    }

    Einmal editiert, zuletzt von heyhooo ()

  • Also, beim Lade code sehe kein Fehler, welches sccanf plugin verwendest du?


    //edit:
    Fals Sscanf2 verwende mal diesen Lade Code:
    sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid]);

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx

  • Ich verwende 2.8.1, habe mir mal die rar datei geholt.
    Was muss ich mit dem Ordner sscanf machen? =/
    (Denkfehler von mir =/ gestern geupdated und vergessen das auch mit dem Plugin zu machen
    -> Jetzt aber gemacht funkt nicht)...

    Also, beim Lade code sehe kein Fehler, welches sccanf plugin verwendest du?


    //edit:
    Fals Sscanf2 verwende mal diesen Lade Code:
    sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid]);



    Wäre nett, wenn du mir das in meinen LoadHaus stock mit einbinden würdest....

  • stock LoadHaus(hausid)
    {
    new query[128],data[64];
    format(query,sizeof(query),"SELECT * FROM `haus` WHERE `hid`='%d'", hausid);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
    if(mysql_retrieve_row())
    {
    sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid]);
    HausInfo[hausid][erstellt] = true;
    }
    }
    mysql_free_result(); new hausstring[100];
    return 1;
    }

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx

  • sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid]);


    Meinst du nicht eher so? :
    sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid],HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],HausInfo[hausid][haus_ix],HausInfo[hausid][haus_iy],HausInfo[hausid][haus_iz],HausInfo[hausid][haus_interior],HausInfo[hausid][haus_w],HausInfo[hausid][haus_preis],HausInfo[hausid][haus_level],HausInfo[hausid][miete],HausInfo[hausid][haus_besitzer]);
    HausInfo[hausid][erstellt] = true;

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

  • Nein, es muss so heißen:
    sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid]);


    Aso, ich brauche auch mal dein Stock
    //Edit


    Ist da doch^^
    Außerdem steht im Mysql Log:


    Das geht weiter bis 60 Also MAX_HAUS....

  • stock LoadHaus(hausid)
    {
    new query[128],data[64];
    format(query,sizeof(query),"SELECT * FROM `haus` WHERE `hid`='%d'", hausid);
    mysql_query(query);
    mysql_store_result();
    new count = mysql_num_rows();
    printf("Gezählt: %d", count);
    if(count > 0)
    {
    sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid]);
    HausInfo[hausid][erstellt] = true;
    }
    mysql_free_result(); new hausstring[100];
    return 1;
    }



    Meine Enum
    //edit

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx

  • Ich verwende R5.
    Mysql log:

    Code
    [12:14:17] CMySQLHandler::Query(SELECT * FROM `haus` WHERE `hid`='1') - Successfully executed.
    [12:14:17] >> mysql_store_result( Connection handle: 1 )
    [12:14:17] CMySQLHandler::StoreResult() - Result was stored.
    [12:14:17] >> mysql_num_rows( Connection handle: 1 )
    [12:14:17] CMySQLHandler::NumRows() - Returned 1 row(s)
    [12:14:17] >> mysql_free_result( Connection handle: 1 )
    [12:14:17] CMySQLHandler::FreeResult() - Result was successfully free'd.


    Da geht wd bis 59....


    ServerLog:


    L.G.
    heyho

  • This callback was added in version R5 and will not work in earlier versions!


    //Edit
    Habe den Code überarbeitet:


    stock LoadHaus(hausid)
    {
    new query[128],data[64];
    format(query,sizeof(query),"SELECT * FROM `haus` WHERE `hid`='%d'", hausid);
    mysql_query(query);
    mysql_store_result();
    new count = mysql_num_rows();
    printf("Gezählt: %d", count);
    if(count > 0)
    {
    if(mysql_fetch_row(query))
    {
    sscanf(query, "e<p<|>ffffffddddds[128]>", HausInfo[hausid]);
    HausInfo[hausid][erstellt] = true;
    }
    }
    mysql_free_result(); new hausstring[100];
    return 1;
    }

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx