16.07.2013, 18:45
(
Последний раз редактировалось thimo; 16.07.2013 в 19:57.
)
Hello i want to make a car system and i have come a far way with it with the help from _Zeus but now he is making his own GM so i need help from someone else now So this is my car loading system:
Now the _carid is the problem. The _carid does NOT represent vehicle id it represents an ID in the database. Wich should be saved for EVERY vehicle.
Now here is House_AddVehicle:
It should save the id per vehicle but now i have a park command that needs to use the ID to save it. Now here is the CMDark
Now the AVehicleData[vid][SaveID] always gives back 0 why does it do that?
Hope anyone can help me! +REP!
I found out cache_get_row doesnt get it already the query gets 0 back...
pawn Код:
forward OnPlayerHousesVehiclesLoad(playerid, houseid_);
public OnPlayerHousesVehiclesLoad(playerid, houseid_)
{
printf( "OnPlayerHousesVehiclesLoad::houseid_ = %d", houseid_ );
new rows, fields;
cache_get_data( rows, fields, Handle );
if( rows )
{
print("There are rows - Vehicles");
new
idx = 0,
cmodel2, Float: cx2, Float: cy2, Float: cz2, Float: crot2, ccol1, ccol2, _carid
;
while( rows > idx )
{
_carid = cache_get_row_int(idx, 2);
cmodel2 = cache_get_row_int( idx, 3 );
cx2 = cache_get_row_float( idx, 4 );
cy2 = cache_get_row_float( idx, 5 );
cz2 = cache_get_row_float( idx, 6 );
crot2 = cache_get_row_float( idx, 7 );
ccol1 = cache_get_row_int( idx, 8 );
ccol2 = cache_get_row_int( idx, 9 );
printf("House_AddVehicle(%d,%d,%f,%f,%f,%f,%d,%d);", houseid_, cmodel2, cx2, cy2, cz2, crot2, ccol1, ccol2);
House_AddVehicle(houseid_, cmodel2, cx2, cy2, cz2, crot2, ccol1, ccol2, _carid);
print("Car loaded");
idx++;
}
}
return 1;
}
Now here is House_AddVehicle:
pawn Код:
House_AddVehicle(HouseID, cModel, Float:cx, Float:cy, Float:cz, Float:crot, Col1, Col2, CarID)
{
// Setup local variables
new vid, CarSlot;//, string2[128];
// Get a free carslot from the house
CarSlot = House_GetFreeCarSlot(HouseID);
printf("House_AddVehicle::CarSlot = %d", CarSlot);
// Check if there is a free carslot
if (CarSlot != -1)
{
vid = Vehicle_Create(cModel, cx, cy, cz, crot, Col1, Col2, 600);
printf("House_AddVehicle::vid= %d", vid);
AHouseData[HouseID][VehicleIDs][CarSlot] = vid;
printf("House_AddVehicle::AHouseData[%d][VehicleIDs][%d]= %d", HouseID, CarSlot, AHouseData[HouseID][VehicleIDs][CarSlot]);
AVehicleData[vid][CarModel] = cModel;
AVehicleData[vid][SaveID] = CarID;
// Save the spawn-data of the vehicle
AVehicleData[vid][SpawnX] = cx;
AVehicleData[vid][SpawnY] = cy;
AVehicleData[vid][SpawnZ] = cz;
AVehicleData[vid][SpawnRot] = crot;
// Also set the fuel to maximum
AVehicleData[vid][FuelData] = MaxFuel;
// Also set the owner
AVehicleData[vid][Owned] = true;
format(AVehicleData[vid][Owner], 24, AHouseData[HouseID][Owner]);
// Save the HouseID for the vehicle
AVehicleData[vid][BelongsToHouse] = HouseID;
print("Vehicle loaded");
}
else
{
print ("No free carslot");// No free carslot was found, return 0
return 0;
}
// Exit the function and return the vehicle-id
return vid;
}
pawn Код:
CMD:park(playerid, params[])
{
new Float:x, Float:y, Float:z, Float:rot, vid, HouseID;
new engine,lights,alarm,doors,bonnet,boot,objective, string[128];
if (GetPlayerVehicleSeat(playerid) == 0)
{
vid = GetPlayerVehicleID(playerid);
HouseID = AVehicleData[vid][BelongsToHouse];
if ((AVehicleData[vid][Owned] == true) && (HouseID != 0))
{
GetVehiclePos(vid, x, y, z);
GetVehicleZAngle(vid, rot);
AVehicleData[vid][SpawnX] = x;
AVehicleData[vid][SpawnY] = y;
AVehicleData[vid][SpawnZ] = z;
AVehicleData[vid][SpawnRot] = rot;
format(string, sizeof(string), "UPDATE Vehicles SET X = %f, Y = %f, Z = %f, Rot = %f WHERE ID = %d", x, y, z, rot, AVehicleData[vid][SaveID]);
mysql_function_query( Handle, string, false, "", "" );
for (new i; i < MAX_HOUSESPERPLAYER; i++)
{
HouseID = APlayerData[playerid][Houses][i];
for (new CarSlot; CarSlot < 20; CarSlot++)
{
if (AHouseData[HouseID][VehicleIDs][CarSlot] == vid)
{
House_ReplaceVehicle(HouseID, CarSlot);
PutPlayerInVehicle(playerid, AHouseData[HouseID][VehicleIDs][CarSlot], 0);
GetVehicleParamsEx(AHouseData[HouseID][VehicleIDs][CarSlot], engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(AHouseData[HouseID][VehicleIDs][CarSlot], 1, lights, alarm, doors, bonnet, boot, objective);
break;
}
}
}
SendClientMessage(playerid, 0x00FF00FF, "You've parked your vehicle");
}
else
SendClientMessage(playerid, 0xFF0000FF, "You cannot park a vehicle that's not owned by you");
}
else
SendClientMessage(playerid, 0xFF0000FF, "You are not in a vehicle!");
return 1;
}
Hope anyone can help me! +REP!
I found out cache_get_row doesnt get it already the query gets 0 back...