Buying A Car - Doesn't Prevent The Player From It.
#1

Ok so we've located a bug and to an experienced developer, this might be a minor fix and I'm asking a stupid question.

Our script allows a player to own no more than 3 vehicles. However, when an Admin sets a car for sale, any player can purchase it, despite owning 3 cars. When purchasing it, it does display the message "Personal Vehicle: {FFFFFF}You reached the buyable vehicle number limit!", but still allows the player to purchase it. We need it to NOT allow the purchase if the player already owns three vehicles.
Any ideas?
Код:
 	if(strcmp(cmd, "/buycar", true) == 0)
	{
		for(new i = 0; i < MAX_BUYABLE_VEH; ++i)
		{
		    if(strmatch(vInfo[i][vOwner], pName(playerid)))
		    {
				Total_Player_Vehicles[playerid] = Total_Player_Vehicles[playerid] + 1;
			}
		}

		if(Total_Player_Vehicles[playerid] > MAX_OWNABLE_VEH) SendClientMessage(playerid, -1, "{DC0C0C}Personal Vehicle: {FFFFFF}You reached the buyable vehicle number limit!");

		if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You need to be in a buyable vehicle to purchase it!");

		new
			ivID = GetPlayerVehicleID(playerid);

		if(OwnedVeh(ivID) != 0)
		{
		    if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, COLOR_WHITE, "{DC0C0C}Personal Vehicle: {FFFFFF}You need level 3!");
			if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
			{
			    SendClientMessage(playerid, COLOR_RED, "{DC0C0C}Personal Vehicle: {FFFFFF}You can't buy this vehicle...");
			    return 1;
			}
			if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], "Unbought"))
			{
			    if(vInfo[OwnedVeh(ivID)][vPrice] < GetPlayerCash(playerid))
			    {
					strmid(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid), 0, 128, 128);

					new
					    Float:vPos[4];

					GetVehiclePos(ivID, vPos[0], vPos[1], vPos[2]);
					GetVehicleZAngle(ivID, vPos[3]);

					strmid(vInfo[OwnedVeh(ivID)][vPlate], pName(playerid), 0, 32, 32);
					vInfo[OwnedVeh(ivID)][vLocked] = 1;
					vInfo[OwnedVeh(ivID)][vTowed] = 0;
					vUpdate(OwnedVeh(ivID), vLockedx);
                    vUpdate(OwnedVeh(ivID), vTowedx);
                    vUpdate(OwnedVeh(ivID), vOwnerx);

					SetVehicleNumberPlate(ivID, pName(playerid));
					SetVehicleToRespawn(ivID);
					SetVehiclePos(ivID, vPos[0], vPos[1], vPos[2]);
					SetVehicleZAngle(ivID, vPos[3]);
					PutPlayerInVehicle(playerid, ivID, 0);
					new vehpricee = vInfo[OwnedVeh(ivID)][vPrice]/4;
			    	new finprice;
			    	if(PlayerInfo[playerid][pDonateRank] < 1) finprice= vInfo[OwnedVeh(ivID)][vPrice]; else finprice = vInfo[OwnedVeh(ivID)][vPrice] - vehpricee;

					GivePlayerCash(playerid, -finprice);

					SendClientMessage(playerid, -1, "{DC0C0C}Personal Vehicle: {FFFFFF}We thank you for your new acquisition!");
					SendClientMessage(playerid, -1, "{DC0C0C}Personal Vehicle: {FFFFFF}Your vehicle was closed automatically.");

					TogglePlayerControllable(playerid, true);

					//SavePrivVeh(OwnedVeh(ivID));

					printf("=- Vehicle id: %i has been bought by: %s -=", OwnedVeh(ivID), pName(playerid));
					return 1;
				}
				else return SendClientMessage(playerid, COLOR_RED, "{DC0C0C}Personal Vehicle: {FFFFFF}You can't afford this vehicle!");
			}
			else return SendClientMessage(playerid, COLOR_RED, "{DC0C0C}Personal Vehicle: {FFFFFF}This vehicle is not for sale!");
		}
		else return SendClientMessage(playerid, COLOR_RED, "{DC0C0C}Personal Vehicle: {FFFFFF}This vehicle is not for sale!");
	}
Reply
#2

Edited to be more clear.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)