SSCANF Warning [Help] (sscanf warning: Invalid data length.)
#1

Can any One Help me with this...
Log Says:

Код:
[10:14:29] Loading Vehicles...
[10:14:29] Loading Vehicle No: 0
[10:14:29] sscanf warning: Invalid data length.
[10:14:29] sscanf warning: Invalid character in data length.
[10:14:29] Loaded Vehicle: ID: 0 Owner Proking, Vehicle ID: 522
[10:14:29] Loading Vehicle No: 1
[10:14:29] sscanf warning: Invalid data length.
[10:14:29] sscanf warning: Invalid character in data length.
[10:14:29] Loaded Vehicle: ID: 1 Owner Proking, Vehicle ID: 522
[10:14:29] Loading Vehicle No: 2
[10:14:29] sscanf warning: Invalid data length.
[10:14:29] sscanf warning: Invalid character in data length.
[10:14:29] Loaded Vehicle: ID: 2 Owner Proking, Vehicle ID: 522
[10:14:29] Loading Vehicle No: 3
[10:14:29] sscanf warning: Invalid data length.
[10:14:29] sscanf warning: Invalid character in data length.
[10:14:29] Loaded Vehicle: ID: 3 Owner Proking, Vehicle ID: 522
[10:14:29] Loading Vehicle No: 4
[10:14:29] sscanf warning: Invalid data length.
[10:14:29] sscanf warning: Invalid character in data length.
[10:14:29] Loaded Vehicle: ID: 4 Owner Proking, Vehicle ID: 522
[10:14:29] Vehicles Loaded...
And
My LoadVehicles Code
Код:
LoadVehicle() {

    print("Loading Vehicles...");
	if(!fexist("vehicles.cfg")) return 1;

	new
		szFileStr[1024],
		File: iFileHandle = fopen("vehicles.cfg", io_read),
		iIndex;
		
	while(iIndex < sizeof(VehicleInfo) && fread(iFileHandle, szFileStr))
	{
	    new string[128];
	    format(string, sizeof(string), "Loading Vehicle No: %d", iIndex);
	    print(string);
		sscanf(szFileStr, "p<|>is[MAX_PLAYER_NAME]ffffiiiiiiiiiiiiii",
			VehicleInfo[iIndex][pvId],
			VehicleInfo[iIndex][vOwner],
			VehicleInfo[iIndex][pvPosX],
			VehicleInfo[iIndex][pvPosY],
			VehicleInfo[iIndex][pvPosZ],
			VehicleInfo[iIndex][pvPosAngle],
			VehicleInfo[iIndex][pvModelId],
			VehicleInfo[iIndex][pvPaintJob],
			VehicleInfo[iIndex][pvColor1],
			VehicleInfo[iIndex][pvColor2],
			VehicleInfo[iIndex][pvMods1],
			VehicleInfo[iIndex][pvMods2],
			VehicleInfo[iIndex][pvMods3],
			VehicleInfo[iIndex][pvMods4],
			VehicleInfo[iIndex][pvMods5],
			VehicleInfo[iIndex][pvMods6],
			VehicleInfo[iIndex][pvMods7],
			VehicleInfo[iIndex][pvMods8],
			VehicleInfo[iIndex][pvMods9],
			VehicleInfo[iIndex][pvMods10]
		);
		format(string, sizeof(string), "Loaded Vehicle: ID: %d Owner %s, Vehicle ID: %d", iIndex, VehicleInfo[iIndex][vOwner], VehicleInfo[iIndex][pvModelId]);
	    print(string);
		if(VehicleInfo[iIndex][pvModelId] != 0)
		{
			PrivateCars[iIndex] = CreateVehicle(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvPosX], VehicleInfo[iIndex][pvPosY], VehicleInfo[iIndex][pvPosZ], VehicleInfo[iIndex][pvPosAngle],VehicleInfo[iIndex][pvColor1], VehicleInfo[iIndex][pvColor2], 20000);
		}
  		//========[MODS]=============//
  		if(VehicleInfo[iIndex][pvMods1] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods1]);
		}
		if(VehicleInfo[iIndex][pvMods2] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods2]);
		}
		if(VehicleInfo[iIndex][pvMods3] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods3]);
		}
		if(VehicleInfo[iIndex][pvMods4] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods4]);
		}
		if(VehicleInfo[iIndex][pvMods5] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods5]);
		}
		if(VehicleInfo[iIndex][pvMods6] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods6]);
		}
		if(VehicleInfo[iIndex][pvMods7] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods7]);
		}
        if(VehicleInfo[iIndex][pvMods8] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods8]);
		}
		if(VehicleInfo[iIndex][pvMods9] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods9]);
		}
		if(VehicleInfo[iIndex][pvMods10] != 0)
  		{
			AddVehicleComponent(VehicleInfo[iIndex][pvModelId], VehicleInfo[iIndex][pvMods10]);
		}
		//========[MODS]=============//
		++iIndex;
	}
    print("Vehicles Loaded...");
	return fclose(iFileHandle);
}
And a little Extra Help needed Because my Log Says
Код:
[10:50:31] [debug] Run time error 4: "Array index out of bounds"
[10:50:31] [debug]  Accessing element at negative index -255
[10:50:31] [debug] AMX backtrace:
[10:50:31] [debug] #0 00063a4c in public Itter_OnPlayerDisconnect (0, 1) from GW.amx
[10:50:31] [debug] #1 native CallLocalFunction () from samp03svr
[10:50:31] [debug] #2 00008b34 in public SSCANF_OnPlayerDisconnect (0, 1) from GW.amx
[10:50:31] [debug] #3 native CallLocalFunction () from samp03svr
[10:50:31] [debug] #4 00001ec4 in public OnPlayerDisconnect (0, 1) from GW.amx
[10:50:31] [part] Bilal_Raja has left the server (0:1)
What can cause this issue ?
Should I post my OnplayerDisconnect callback too ? It's very Long, and we don't have any spoilers her like a drop down for Code... xD
Reply
#2

pawn Код:
sscanf warning: Invalid data length.
sscanf warning: Invalid character in data length.
Код:
sscanf(szFileStr, "p<|>is[MAX_PLAYER_NAME]ffffiiiiiiiiiiiiii", ...);
If you want to insert the value of MAX_PLAYER_NAME, you'll have to do it like:
Код:
sscanf(szFileStr, "p<|>is["#MAX_PLAYER_NAME"]ffffiiiiiiiiiiiiii", ...);
BUT.. if you haven't re-defined MAX_PLAYER_NAME will give errors because in a_samp, it has parenthesis around the number and doesn't like that. If you have the default value of it as 24, just change it to:
pawn Код:
sscanf(szFileStr, "p<|>is[24]ffffiiiiiiiiiiiiii", ...);
If you re-defined it, make sure it doesn't have parenthesis.

After opening the file and before the while loop, make sure iFileHandle is not 0 otherwise using fread or any other file function will crash the server.

About OnPlayerDisconnect, compile with debug info: https://github.com/Zeex/samp-plugin-...ith-debug-info
Re-compile your scripts, start the server and when you disconnect if it gives anything from crashdetect post them here.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)