Privatautohaus Speicherung

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
  • Was wird dir so im Server Log ausgegeben?
    public PlayerCarConnect(playerid)
    {
    printf("Starte PlayerCarConnect für %d (MySQL = %d)", playerid, SaveServerMySQL);
    if(IsPlayerNPC(playerid))
    {
    printf("NPC");
    return 1;
    }
    new string[128],
    playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    for(new h = 0; h < MaxVeh[playerid]; h++)
    {
    printf("h: %d", h);
    if(SaveServerMySQL==0)
    {
    format(string, sizeof(string), "cars/%dAutoNR%d.ini", PlayerInfo[playerid][pSQLID], h);
    if(fexist(string))
    {
    new data[256];
    data = dini_Get(string,"AH_Typ"); Carlist[playerid][h][Typ] = strval( data );
    data = dini_Get(string,"AH_X"); Carlist[playerid][h][pos_x] = floatstr( data );
    data = dini_Get(string,"AH_Y"); Carlist[playerid][h][pos_y] = floatstr( data );
    data = dini_Get(string,"AH_Z"); Carlist[playerid][h][pos_z] = floatstr( data );
    data = dini_Get(string,"AH_Rot"); Carlist[playerid][h][z_angle] = floatstr( data );
    data = dini_Get(string,"AH_Status"); Carlist[playerid][h][Status] = strval( data );
    data = dini_Get(string,"AH_Lock"); Carlist[playerid][h][Lock] = strval( data );
    data = dini_Get(string,"AH_Paintjob"); Carlist[playerid][h][Paintjob] = strval( data );
    data = dini_Get(string,"AH_Farbe1"); Carlist[playerid][h][Farbe1] = strval( data );
    data = dini_Get(string,"AH_Farbe2"); Carlist[playerid][h][Farbe2] = strval( data );
    data = dini_Get(string,"AH_mod1"); Carlist[playerid][h][mod1] = strval( data );
    data = dini_Get(string,"AH_mod2"); Carlist[playerid][h][mod2] = strval( data );
    data = dini_Get(string,"AH_mod3"); Carlist[playerid][h][mod3] = strval( data );
    data = dini_Get(string,"AH_mod4"); Carlist[playerid][h][mod4] = strval( data );
    data = dini_Get(string,"AH_mod5"); Carlist[playerid][h][mod5] = strval( data );
    data = dini_Get(string,"AH_mod6"); Carlist[playerid][h][mod6] = strval( data );
    data = dini_Get(string,"AH_mod7"); Carlist[playerid][h][mod7] = strval( data );
    data = dini_Get(string,"AH_mod8"); Carlist[playerid][h][mod8] = strval( data );
    data = dini_Get(string,"AH_mod9"); Carlist[playerid][h][mod9] = strval( data );
    data = dini_Get(string,"AH_mod10"); Carlist[playerid][h][mod10] = strval( data );
    data = dini_Get(string,"AH_mod11"); Carlist[playerid][h][mod11] = strval( data );
    data = dini_Get(string,"AH_mod12"); Carlist[playerid][h][mod12] = strval( data );
    data = dini_Get(string,"AH_mod13"); Carlist[playerid][h][mod13] = strval( data );
    data = dini_Get(string,"AH_mod14"); Carlist[playerid][h][mod14] = strval( data );
    data = dini_Get(string,"AH_mod15"); Carlist[playerid][h][mod15] = strval( data );
    data = dini_Get(string,"AH_mod16"); Carlist[playerid][h][mod16] = strval( data );
    data = dini_Get(string,"AH_mod17"); Carlist[playerid][h][mod17] = strval( data );
    data = dini_Get(string,"AH_SpawnSaveX"); Carlist[playerid][h][SpawnSaveX] = floatstr( data );
    data = dini_Get(string,"AH_SpawnSaveY"); Carlist[playerid][h][SpawnSaveY] = floatstr( data );
    data = dini_Get(string,"AH_SpawnSaveZ"); Carlist[playerid][h][SpawnSaveZ] = floatstr( data );
    data = dini_Get(string,"AH_SpawnSaveRot"); Carlist[playerid][h][SpawnSaveRot] = floatstr( data );
    data = dini_Get(string,"AH_TankVolumen"); Carlist[playerid][h][TankVolumen] = strval( data );
    data = dini_Get(string,"AH_RepairTime"); Carlist[playerid][h][RepairTime] = strval(data);
    data = dini_Get(string,"AH_Versicherung"); Carlist[playerid][h][Versicherung] = strval(data);
    data = dini_Get(string,"AH_StandTime"); Carlist[playerid][h][StandTime] = strval(data);
    data = dini_Get(string,"AH_Meter"); Carlist[playerid][h][Meter] = strval(data);
    }
    }
    else
    {
    format(string, sizeof(string),"SELECT * FROM `usercars` WHERE `Name` = '%dAutoNR%d'",PlayerInfo[playerid][pSQLID], h);
    printf("string = %s", string);
    self_mysql_queryEx(string);
    mysql_store_result(MySQLConnection);
    printf("rows: %d", mysql_num_rows(MySQLConnection));
    if(mysql_num_rows(MySQLConnection) != 0)
    {
    printf("Starte Laden der Daten...");
    mysql_fetch_row_format(string);
    new val[ 256 ];
    self_mysql_get_field("AH_Typ", val); Carlist[playerid][h][Typ] = strval( val );
    self_mysql_get_field("AH_X", val); Carlist[playerid][h][pos_x] = floatstr( val );
    self_mysql_get_field("AH_Y", val); Carlist[playerid][h][pos_y] = floatstr( val );
    self_mysql_get_field("AH_Z", val); Carlist[playerid][h][pos_z] = floatstr( val );
    self_mysql_get_field("AH_Rot", val); Carlist[playerid][h][z_angle] = floatstr( val );
    self_mysql_get_field("AH_Status", val); Carlist[playerid][h][Status] = strval( val );
    self_mysql_get_field("AH_Lock", val); Carlist[playerid][h][Lock] = strval( val );
    self_mysql_get_field("AH_Paintjob", val); Carlist[playerid][h][Paintjob] = strval( val );
    self_mysql_get_field("AH_Farbe1", val); Carlist[playerid][h][Farbe1] = strval( val );
    self_mysql_get_field("AH_Farbe2", val); Carlist[playerid][h][Farbe2] = strval( val );
    self_mysql_get_field("AH_mod1", val); Carlist[playerid][h][mod1] = strval( val );
    self_mysql_get_field("AH_mod2", val); Carlist[playerid][h][mod2] = strval( val );
    self_mysql_get_field("AH_mod3", val); Carlist[playerid][h][mod3] = strval( val );
    self_mysql_get_field("AH_mod4", val); Carlist[playerid][h][mod4] = strval( val );
    self_mysql_get_field("AH_mod5", val); Carlist[playerid][h][mod5] = strval( val );
    self_mysql_get_field("AH_mod6", val); Carlist[playerid][h][mod6] = strval( val );
    self_mysql_get_field("AH_mod7", val); Carlist[playerid][h][mod7] = strval( val );
    self_mysql_get_field("AH_mod8", val); Carlist[playerid][h][mod8] = strval( val );
    self_mysql_get_field("AH_mod9", val); Carlist[playerid][h][mod9] = strval( val );
    self_mysql_get_field("AH_mod10", val); Carlist[playerid][h][mod10] = strval( val );
    self_mysql_get_field("AH_mod11", val); Carlist[playerid][h][mod11] = strval( val );
    self_mysql_get_field("AH_mod12", val); Carlist[playerid][h][mod12] = strval( val );
    self_mysql_get_field("AH_mod13", val); Carlist[playerid][h][mod13] = strval( val );
    self_mysql_get_field("AH_mod14", val); Carlist[playerid][h][mod14] = strval( val );
    self_mysql_get_field("AH_mod15", val); Carlist[playerid][h][mod15] = strval( val );
    self_mysql_get_field("AH_mod16", val); Carlist[playerid][h][mod16] = strval( val );
    self_mysql_get_field("AH_mod17", val); Carlist[playerid][h][mod17] = strval( val );
    self_mysql_get_field("AH_SpawnSaveX", val); Carlist[playerid][h][SpawnSaveX] = floatstr( val );
    self_mysql_get_field("AH_SpawnSaveY", val); Carlist[playerid][h][SpawnSaveY] = floatstr( val );
    self_mysql_get_field("AH_SpawnSaveZ", val); Carlist[playerid][h][SpawnSaveZ] = floatstr( val );
    self_mysql_get_field("AH_SpawnSaveRot", val); Carlist[playerid][h][SpawnSaveRot] = floatstr( val );
    self_mysql_get_field("AH_TankVolumen", val); Carlist[playerid][h][TankVolumen] = strval( val );
    self_mysql_get_field("AH_RepairTime", val); Carlist[playerid][h][RepairTime] = strval( val );
    self_mysql_get_field("AH_Versicherung", val); Carlist[playerid][h][Versicherung] = strval( val );
    self_mysql_get_field("AH_StandTime", val); Carlist[playerid][h][StandTime] = strval( val );
    self_mysql_get_field("AH_Meter", val); Carlist[playerid][h][Meter] = strval( val );
    printf("Laden der Daten beendet.");
    }
    mysql_free_result(MySQLConnection);
    printf("Result frei.");
    }
    if(Carlist[playerid][h][Typ] != -1 && Carlist[playerid][h][Status] == 0)
    {
    printf("Fahrzeugspeicherung: Beginning Spawn.");
    Carlist[playerid][h][Carid] = CreateTunedCar(playerid, h);
    printf("Fahrzeugspeicherung: End Spawn (%d).", Carlist[playerid][h][Carid]);
    }
    printf("Durch.");
    }
    printf("Alle Fahrzeuge wurden erfolgreich geladen. Beende Funktion.");
    return 1;
    }

  • Das spuckt die Log aus:


    [19:26:48] [join] JasoN.DINO has joined the server (7:87.158.226.232)
    [19:27:00] Starte PlayerCarConnect für 7 (MySQL = 1)
    [19:27:00] h: 0
    [19:27:00] string = SELECT * FROM `usercars` WHERE `Name` = '111AutoNR0'
    [19:27:00] rows: 1
    [19:27:00] Starte Laden der Daten...
    [19:27:00] Laden der Daten beendet.
    [19:27:00] Result frei.
    [19:27:00] Fahrzeugspeicherung: Beginning Spawn.
    [19:27:00] Fahrzeugspeicherung: End Spawn (-1).
    [19:27:00] Durch.
    [19:27:00] Alle Fahrzeuge wurden erfolgreich geladen. Beende Funktion.
    [19:27:00] [debug] Run time error 5: "Invalid memory access"
    [19:27:00] [debug] AMX backtrace:
    [19:27:00] [debug] #0 00000074 in public OnDialogResponse () from revolution.amx

  • Füge bitte beim Login vor und nach der Erstellung der Fahrzeuge einen print ein:
    printf("Im Login vor PlayerCarConnect");
    PlayerCarConnect(playerid);
    printf("Im Login nach PlayerCarConnect");
    SpawnPlayer(playerid);
    printf("Nach SpawnPlayer");


    Was wird dann geprintet?

  • Daran sieht man das nach OnPlayerConnectCar nichts mehr passiert.


  • Interessant. Erklären kann ich mir den Fehler nicht, aber versuche mal folgendes:
    PlayerCarConnect(playerid);
    zu:
    SetTimerEx("PlayerCarConnect", 100, false, "d", playerid);


    Geht es dann?
    Das würde möglicherweise das Problem mit dem Memory Access umgehen.

  • Ich spawne jetzt zwar nun jedoch lädt das Auto nicht:
    Schau mal was die Log ausgibt: (



    Im Login vor PlayerCarConnect
    [00:36:13] Im Login nach PlayerCarConnect
    [00:36:13] Nach SpawnPlayer
    [00:36:13] BlabLa hat sich eingeloggt. [ID: 7]
    [00:36:13] Starte PlayerCarConnect für 7 (MySQL = 1)
    [00:36:13] h: 0
    [00:36:13] string = SELECT * FROM `usercars` WHERE `Name` = '111AutoNR0'
    [00:36:13] rows: 1
    [00:36:13] Starte Laden der Daten...
    [00:36:13] Laden der Daten beendet.
    [00:36:13] Result frei.
    [00:36:13] Fahrzeugspeicherung: Beginning Spawn.
    [00:36:13] Fahrzeugspeicherung: End Spawn (-1).
    [00:36:13] Durch.
    [00:36:13] Alle Fahrzeuge wurden erfolgreich geladen. Beende Funktion.
    [00:36:13] [debug] Run time error 7: "Stack underflow"
    [00:36:13] [debug] Stack pointer (STK) is 0x57A22C, stack top (STP) is 0x57A200
    [00:36:13] [debug] AMX backtrace:
    [00:36:13] [debug] #0 00000000 in public PlayerCarConnect () from revolution.amx

  • Zwecks der Fehlermeldung:
    Versuche mal, das "return 1;" nach dieser Zeile zu entfernen:
    printf("Alle Fahrzeuge wurden erfolgreich geladen. Beende Funktion.");
    Zu den Fahrzeugen:
    Das erkennt man auch daran, dass dein CreateTunedCar -1 zurück gibt, sprich es wurde kein Fahrzeug erstellt.
    Poste die CreateTunedCar Funktion bitte mal und prüfe, wie viele Fahrzeuge du insgesamt im Server hast, nicht dass da das Limit erreicht ist.

  • So wenn ich das return entferne dannn bekomm ich ein warning erstensmal und zweitens funktioniert es trotzdem nicht.
    Ich habe hier mal den CreateTunedCar public für euch.


    wenn ich return -1 auf return 1 setze geht es auch nicht.
    mido: sqlid ist richtig.

  • Ändere mal:
    if(IsPlayerConnected(playerid) && Carlist[playerid][CarKey1][Typ] != -1)
    zu:
    printf("CreateTunedCar: Typ: %d", Carlist[playerid][CarKey1][Typ]);
    if(IsPlayerConnected(playerid) && Carlist[playerid][CarKey1][Typ] != -1)
    {
    printf("Model: %d", Kaufliste[Carlist[playerid][CarKey1][Typ]][Modelid]);


    Was wird dir dann in dem ganzen Vorgang geprintet?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • So jetzt wird es interessant:



    Mode: %d fehlt.
    Die ausgegebene Typ ID stimmt.

  • Führt nichts davon zur Problembehebung, Ich spawn zwar weil wir ja den public über ein Timer aufrufen aber laden tut mein Auto nicht.
    Hier nochmal paar publics:


  • Ok, das ist schonmal gut.


    Wenn du das hier:
    printf("CreateTunedCar: Typ: %d", Carlist[playerid][CarKey1][Typ]);
    if(IsPlayerConnected(playerid) && Carlist[playerid][CarKey1][Typ] != -1)
    {
    printf("Model: %d", Kaufliste[Carlist[playerid][CarKey1][Typ]][Modelid]);


    änderst zu:
    printf("CreateTunedCar: Typ: %d", Carlist[playerid][CarKey1][Typ]);
    printf("CreateTunedCar: Kaufliste0: %d", Kaufliste[0][Modelid]);
    printf("CreateTunedCar: Kaufliste10: %d", Kaufliste[10][Modelid]);
    if(IsPlayerConnected(playerid) && Carlist[playerid][CarKey1][Typ] != -1)
    {
    printf("Model: %d", Kaufliste[Carlist[playerid][CarKey1][Typ]][Modelid]);


    Was wird dann geprintet?

  • So mal ganz kurz ich habe nun bisschen ausprobiert,
    Ich habe nun statt SetTimerEx("PlayerCarConnect", 100, false, "d", playerid);


    PlayerCarConnect(playerid);


    So nun schaltet der Server 1. nicht ab und 2. kann ich mich einloggen und ich Spawne.
    Nun ladet das Auto jedoch nicht steht aber in der MySQL Datenbank.