Problem with y_iterate -
DovydasB - 26.08.2014
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;
}
Re: Problem with y_iterate -
DovydasB - 26.08.2014
Help somebody!
Re: Problem with y_iterate -
DovydasB - 27.08.2014
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:
After:
Does it make any sense?