Problem with y_iterate
#1

Hello,

I have a problem with y_iterate. I thing something wrong is with Iter_Add.
I'am loading vehicles and add it to variable "new IteratorArray:PlayerVehicles[MAX_PLAYERS]<MAX_VEHICLES>;"
Then I'am call command:

Код:
CMD:carcontrol(playerid)
{
	printf("%i\n%i %i %i", Iter_Count(PlayerVehicles[playerid]), Iter_First(PlayerVehicles[playerid]), Iter_End(PlayerVehicles[playerid]), Iter_Next(PlayerVehicles[playerid], Iter_First(PlayerVehicles[playerid])));
	if(Iter_Count(PlayerVehicles[playerid]) != 0)
	{
		new 
			vehicles,
			string[ 200 ]
		;
		strcat(string, "Press on vehicle for more info\n");
		for (new i = Iter_First(PlayerVehicles[playerid]); i != Iter_End(PlayerVehicles[playerid]); i = Iter_Next(PlayerVehicles[playerid], i))
		{
			vehicles++;
			format(string, sizeof(string), "%s%i. %s\n",string, vehicles, aVehicleNames[ Vehicle[ i ][ vModel ] - 400 ]);
		}
		//if(vehicles == 0) return SendClientMessage(playerid, -1, "You don't have any vehicle!");
		ShowPlayerDialog(playerid, DIALOG_CARSLIST, DIALOG_STYLE_LIST, "Car control", string, "Select", "Abort");
	}
	return 1;
}
Everything ok, BUT when I buy vehicle and do same to add vehicleid to iterate, it's show nothing.
Yes, first I've used " foreach(new vehicleid : PlayerVehicles[playerid])" but it's same

And strange is it show normal Iter_Count, but doesn't show vehicles.

Sorry for my bad english.

Код:
case DIALOG_CARBUY:
		{
			Iter_Init(PlayerVehicles);
			new car = GetPVarInt(playerid, "viewingcar");
			if(response)
			{
				if( Player[ playerid ][ pMoney ] < carShopInfo[ car ][ csPrice ] ) return SendClientMessage(playerid, -1, "Tiek pinigų neturite!");

				new rand = random(sizeof(randCarShopSpawn));
				new tmp = CreateVehicle(carShopInfo[ car ][ csModel ], randCarShopSpawn[ rand ][ 0 ], randCarShopSpawn[ rand ][ 1 ], randCarShopSpawn[ rand ][ 2 ], randCarShopSpawn[ rand ][ 3 ], carShopInfo[ car ][ csColor1 ],carShopInfo[ car ][ csColor2 ], -1);
				Iter_Add(PlayerVehicles[ playerid ], tmp);

				TogglePlayerSpectating( playerid, false );
				PutPlayerInVehicle(playerid, tmp, 0);

				SetPVarInt(playerid, "carshoptd", 0);
					
				for(new i = 10; i <= 16; i++)
					TextDrawHideForPlayer(playerid, Textdraw[ i ]);

				PlayerTextDrawHide(playerid, pTextdraw[ playerid ][ 2 ]);
				CancelSelectTextDraw(playerid);

				Player[ playerid ][ pMoney ] -= carShopInfo[ car ][ csPrice ];
				GivePlayerMoney(playerid, -carShopInfo[ car ][ csPrice ]);

				new query[ 130 ];
				inline vehiclebuy(vehicleid){
					Vehicle[ vehicleid ][ vID ] = cache_insert_id();
					Vehicle[ vehicleid ][ vOwnerType ] = true;
					Vehicle[ vehicleid ][ vOwnerID ] = Player[ playerid ][ pID ];
					Vehicle[ vehicleid ][ vLocked ] = true;
					Vehicle[ vehicleid ][ vColor ][ 0 ] = carShopInfo[ car ][ csColor1 ];
					Vehicle[ vehicleid ][ vColor ][ 1 ] = carShopInfo[ car ][ csColor2 ];
					Vehicle[ vehicleid ][ vKeysOwnerID ] = Player[ playerid ][ pID ];
				}
				mysql_format(SQL, query, sizeof(query), "INSERT INTO vehicles (vOwnerID, vModel, vLocked, vColor1, vColor2, vKeysOwnerID) VALUES ('%i','%i', '1','%i','%i','%i')", Player[ playerid ][ pID ], carShopInfo[ car ][ csModel ], carShopInfo[ car ][ csColor1 ],carShopInfo[ car ][ csColor2 ], Player[ playerid ][ pID ]);
				mysql_tquery_inline(SQL, query, using inline vehiclebuy, "i", tmp);
			}
		}
Код:
stock LoadPlayerVehicles( playerid )
{
	new query[ 50 ];

	inline vehicleload(pid){
		#pragma unused pid
		if(cache_num_rows())
		{
			Iter_Init(PlayerVehicles);
			for(new i = 0; i < cache_get_row_count(); i++){
				new vehicleid = CreateVehicle(cache_get_field_content_int(i, "vModel"), 
					cache_get_field_content_float(i, "vPosX"), 
					cache_get_field_content_float(i, "vPosY"), 
					cache_get_field_content_float(i, "vPosZ"), 
					cache_get_field_content_float(i, "vPosA"), 
					cache_get_field_content_int(i, "vColor1"),
					cache_get_field_content_int(i, "vColor2"), -1);

				Vehicle[ vehicleid ][ vOwnerType ] = true;
				Vehicle[ vehicleid ][ vID ] = cache_get_field_content_int(i, "vID");
				Vehicle[ vehicleid ][ vOwnerID ] = Player[ playerid ][ pID ];
				Vehicle[ vehicleid ][ vModel ] = GetVehicleModel(vehicleid);
				Vehicle[ vehicleid ][ vLocked ] = !!cache_get_field_content_int(i, "vLocked");
				Vehicle[ vehicleid ][ vColor ][ 0 ] = cache_get_field_content_int(i, "vColor1");
				Vehicle[ vehicleid ][ vColor ][ 1 ] = cache_get_field_content_int(i, "vColor2");
				Vehicle[ vehicleid ][ vColor ][ 2 ] = cache_get_field_content_int(i, "vPaintjob");
				Vehicle[ vehicleid ][ vKeysOwnerID ] = cache_get_field_content_int(i, "vKeysOwnerID");

				Iter_Add(PlayerVehicles[ playerid ], vehicleid);
			}
			return 1;
		}
	}

	mysql_format(SQL, query, sizeof(query), "SELECT * FROM vehicles WHERE vOwnerID='%i'", Player[ playerid ][ pID ] );
	mysql_tquery_inline(SQL, query, using inline vehicleload, "i", playerid);
	return 1;
}
Reply
#2

Help somebody!
Reply
#3

Ok, I did that, but it is same.

I'm debuging it and what I saw:

Code:
Код:
printf("%i\n%i %i %i", Iter_Count(PlayerVehicles[playerid]), Iter_First(PlayerVehicles[playerid]), Iter_End(PlayerVehicles[playerid]), Iter_Next(PlayerVehicles[playerid], Iter_First(PlayerVehicles[playerid])));
Before vehicle buy:
Код:
3
10 2000 11
After:
Код:
4
10 2000 11
Does it make any sense?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)