Client Crasht beim lesen einer Datei

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
  • Hey,
    habe eine Funktion die Autos direkt nach dem Spawnen speichert und beim nächsten Server start wieder lädt.
    Wenn die Datei (cars.cfg) leer ist, kann ich ganz normal joinen.
    Wenn ich allerdings ein Auto spawne, und danach den Server neustarte und wieder joine.
    Dann crasht mein Client.
    Hier der Code:


    public LoadVehicles()
    {
    new
    INFO[128];
    new File: CarFile = fopen("cars.cfg", io_read);
    if ( CarFile )
    {
    new key[ 256 ], val[ 256 ];
    new Data[ 256 ];
    while ( fread( CarFile , Data , sizeof( Data ) ) )
    {
    for(new v=0;v<MAX_VEHICLES;v++)
    {
    key = ini_GetKey( Data );
    format(INFO, sizeof(INFO), "Owner[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vOwner] = strval( val ); }
    else { return 1; }
    format(INFO, sizeof(INFO), "Color1[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vColor1] = strval( val ); }
    format(INFO, sizeof(INFO), "Color2[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vColor2] = strval( val ); }
    format(INFO, sizeof(INFO), "Number[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vNumber] = strval( val ); }
    format(INFO, sizeof(INFO), "Health[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vHealth] = strval( val ); }
    format(INFO, sizeof(INFO), "Model[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vModel] = strval( val ); }
    format(INFO, sizeof(INFO), "X[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vX] = strval( val ); }
    format(INFO, sizeof(INFO), "Y[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vY] = strval( val ); }
    format(INFO, sizeof(INFO), "Z[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue(Data); Vehicle[v][vZ] = strval(val);}
    format(INFO, sizeof(INFO), "A[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue(Data); Vehicle[v][vA] = strval(val);}
    format(INFO, sizeof(INFO), "Locked[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue(Data); Vehicle[v][vLocked] = strval(val);}
    format(INFO, sizeof(INFO), "ID[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue(Data); Vehicle[v][vID] = strval(val);}
    Vehicle[v][vID] = CreateVehicle(Vehicle[v][vModel],Vehicle[v][vX],Vehicle[v][vY],Vehicle[v][vZ],Vehicle[v][vA],Vehicle[v][vColor1],Vehicle[v][vColor2],-1);
    SpawnedVehicles ++;
    }
    }
    fclose(CarFile);
    }
    return 1;
    }


    Und so sieht meine cars.cfg zZ. aus:

  • ICh glaube deine cars.cfg daran liegt es da müssen die koordinaten ganz anderster aussehen =)
    mom ich such ein beispiel:


    422,2135.418701,-1128.477294,25.593200,110.959999,1,1,Dealership,Bobcat,50000,,0,0
    543,2136.328613,-1132.250976,25.511566,110.258712,1,1,Dealership,Sadler,50000,,0,0
    554,2135.458496,-1136.625488,25.735660,107.892265,1,1,Dealership,Yosemite,50000,,0,0
    579,2135.744140,-1140.979614,25.173116,111.251762,1,1,Dealership,Huntley,50000,,0,0
    400,2136.281738,-1144.528686,24.955900,109.024398,1,1,Dealership,Landstalker,50000,,0,0
    500,2136.882568,-1147.977294,24.593900,104.355201,1,1,Dealership,Mesa,50000,,0,0
    489,2122.037597,-1157.092285,24.256799,356.001007,1,1,Dealership,Rancher,50000,,0,0
    445,2117.238281,-1156.901367,24.194599,337.440185,1,1,Dealership,Admiral,50000,,0,0
    492,2117.775146,-1148.868041,24.202800,331.458801,1,1,Dealership,Greenwood,50000,,0,0
    410,2117.998535,-1141.823730,24.537799,325.724914,1,1,Dealership,Manana,50000,,0,0
    600,2118.116210,-1135.639526,24.913400,326.202606,1,1,Dealership,Picador,50000,,0,0
    496,2118.714111,-1129.351440,25.015199,318.569488,1,1,Dealership,Blista Compact,50000,,0,0

  • jo is iwie so kannst glaub ich nur als fs im godfather benutzen
    ich krieg auch immer exe bei meinem carsys wenn ichs im gm drin hab

  • Vehicle[v][vOwner] = strval( val );
    Eventuell könnte es daran liegen, dass der Owner kein Integer sondern eben ein Name => String ist.
    Dann sollte das so aussehen:


    key = ini_GetKey( Data );
    format(INFO, sizeof(INFO), "Owner[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); strmid(Vehicle[v][vOwner], val, 0, strlen(val)-1, 255); }
    else { return 1; }


    Ebenso müssen die Koordinaten Floats sein:
    format(INFO, sizeof(INFO), "X[%d]",v);
    if( strcmp( key , INFO, true ) == 0 ) { val = ini_GetValue( Data ); Vehicle[v][vX] = floatstr( val ); }
    Also bei vY, vZ und vA auch floatstr benutzen.


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!