Beiträge von DJ 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.



    2 Einträge.


    Tabelle schon öfters neu gemacht.

    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

    mysql_query("SELECT * FROM `haeuser` WHERE gekauft = 1");


    Je nach dem wie die Spalte in deiner Tabelle aussieht.


    Also geht im Prinzip auch, dass ich die ID auslese?


    Dann noch eine formelle Frage:
    mysql_query("SELECT * FROM `haeuser`");
    mysql_store_result();
    new str[512], h;
    while(mysql_fetch_row(str))
    {
    LoadHouse(h, str);
    h++;
    }
    mysql_free_result();
    Woher weiß "h" denn, wie viele Einträge in der Tabelle sind?

    Minimassenzitat


    Ich denke mal das dass in diesem Falle die schleife übernimmt.
    while(mysql_fetch_row(str))


    mfg :thumbup:


    Nunja, ich habe es nun mal so unter OnGameModeInit geklatscht:
    mysql_query("SELECT * FROM `haeuser`");
    mysql_store_result();
    new str[512], h;
    h=mysql_num_rows();
    for(new j;j<h;j++) {
    while(mysql_fetch_row(str)) {
    LoadHouse(j, str);
    }
    }
    mysql_free_result();
    Und dann der große Moment............
    Die beiden Logdateien:


    Das scheint zu klappen :3

    Hm ich merke es grad..


    Ich weiß ja, dass ich mit "while(mysql_fetch_row())" arbeiten sollte. Leider bin ich grade total Braindead..
    Ich will ja jedes Haus einzeln laden.


    Kann mir jemand eine Hilfestellung geben (nicht unbedingt Code, sondern eher was der Code machen soll[Lerneffekt])

    Hi,


    ich habe mal ein altes Haussystem rausgekramt, welches BlackAce mir geschrieben hatte. Beim testen allerdings stellte ich fest, dass keine Häuser geladen werden.


    Die Häuser sind in der MySQL-Tabelle vorhanden (2 Stk).
    Hier der Code, wo sie geladen werden:
    //OnGameModeInit
    mysql_query("SELECT * FROM `haeuser`");
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    for(new h;h<rows;h++)
    {
    LoadHouse(h);
    }


    stock LoadHouse(HouseID)
    {
    new str[128];
    sscanf(str, "e<p<|>dfffdds[24]ddddfffdds[24]s[24]s[24]s[24]s[24]s[24]>",HausInfo[HouseID]);
    print("str:");
    printf("%s",str);
    print("enum:");
    printf("%d | %f | %f | %f | %d | %d | %s",HausInfo[HouseID][hID],HausInfo[HouseID][hPosX],HausInfo[HouseID][hPosY],HausInfo[HouseID][hPosZ],HausInfo[HouseID][hLevel],HausInfo[HouseID][hPreis],HausInfo[HouseID][hBesitzer]);
    return 1;
    }
    mein Print-Debugging hat folgendes ausgegeben:

    Code
    [01:56:49] str:
    [01:56:49] 
    [01:56:49] enum:
    [01:56:49] 0 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 
    [01:56:49] str:
    [01:56:49] 
    [01:56:49] enum:
    [01:56:49] 0 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 |


    Und hier ist die MySQL-Logdatei:


    Was genau klappt da ned?


    lg

    Hi,


    ich habe bei meinem Tacho ein Problem. Und zwar zieht sich der String der Tankanzeige (siehe Screen 1) über 2 anstatt der gewollten 1 Zeile (siehe Screen 2).



    Code
    Erstellung:
    Tacho0[playerid] = CreatePlayerTextDraw(playerid, 250.799835, 359.893280, "Geschwingidkeit: 100 km/h~n~Tankinhalt: ~g~I I I I I I I I I I~w~ (150/150L)~n~Zustand: 100%~n~Fahrzeug: Linerunner~n~Kilometer: 1.6 KM");
    PlayerTextDrawLetterSize(playerid, Tacho0[playerid], 0.242397, 1.057417);
    PlayerTextDrawTextSize(playerid, Tacho0[playerid], 407.600097, 19.911113);
    PlayerTextDrawAlignment(playerid, Tacho0[playerid], 1);
    PlayerTextDrawColor(playerid, Tacho0[playerid], -1);
    PlayerTextDrawSetShadow(playerid, Tacho0[playerid], 0);
    PlayerTextDrawSetOutline(playerid, Tacho0[playerid], 1);
    PlayerTextDrawBackgroundColor(playerid, Tacho0[playerid], 51);
    PlayerTextDrawFont(playerid, Tacho0[playerid], 1);
    PlayerTextDrawSetProportional(playerid, Tacho0[playerid], 1);
    Änderung des Strings:
    switch(Tank[veh]/(MaxTank[(modelid)-400]/10))
    {
    case 10,11: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I I I I I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 9: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I I I I I I I ~r~I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 8: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I I I I I I ~r~I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 7: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I I I I I ~r~I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 6: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I I I I ~r~I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 5: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I I I ~r~I I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 4: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I I ~r~I I I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 3: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I I ~r~I I I I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 2: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I I ~r~I I I I I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 1: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~g~I ~r~I I I I I I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    case 0: format(string,sizeof string,"Geschwingidkeit: %d km/h~n~Tankinhalt: ~r~I I I I I I I I I I~w~ (%d/%dL)~n~Zustand: %d%%~n~Fahrzeug: %s~n~Kilometer: %s",kmh,Tank[veh],MaxTank[(modelid)-400],chealth,PlayerVehicle[modelid - 400],string);
    }
    PlayerTextDrawSetString(i, Tacho0[i], string);

    Es ist ab 100 Liter aufwärts so.


    Woran liegts?


    lg
    Deagle