/sellcartoplayer dont working properly[HELP]
#1

The Problem is when i want to sell the car by using /sellcartoplayer, the car it deletes from Seller's car slots but the Buyer is not recieving the car.. I really need help with this. I can not figure out the problem. Thank you

The command:
Код:
CMD:sellcartoplayer(playerid, params[])
{
	new playerb, price, Float:x, Float:y, Float:z;
	GetPlayerPos(playerid, x, y, z);
   	if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
	if(sscanf(params, "ui[128]", playerb, price)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /sellcartoplayer [playerid] [price]");
	if(!IsPlayerNearPlayer(playerid, playerb, 7)) return SendClientMessage(playerid, COLOR_GREY, "You are not near the other player.");
	if(!PlayerInfo[playerid][pVeh] && !PlayerInfo[playerid][pVVeh] && !PlayerInfo[playerid][pBVeh]) return SendClientMessage(playerid, COLOR_GREY, "You don't own a vehicle.");
	if(GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pVeh] && GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pVVeh] && GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pBVeh]) return SendClientMessage(playerid, COLOR_GREY, "You must be in the vehicle you wish to sell to another player.");
	if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pVeh])
	{
		// Give playerb the players vehicle (who bought the vehicle)
	    PlayerInfo[playerb][pVeh] = CreateVehicle(PlayerInfo[playerid][pVeh], x, y, z, 0,0, 0, 12000);
		SetVehicleParamsEx(PlayerInfo[playerb][pVeh], 0, 0, 0, 1, 0, 0, 0);
		PlayerInfo[playerb][vLocked] = 1;
		PlayerInfo[playerb][vModel] = PlayerInfo[playerid][pVeh];
		GetVehiclePos(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vX], PlayerInfo[playerid][vY], PlayerInfo[playerid][vZ]);
		GetVehicleZAngle(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vVA]);
		PlayerInfo[playerb][vC1] = 0;
		PlayerInfo[playerb][vC2] = 0;
		// Delete the players vehicle (who sold his vehicle)
		DestroyVehicle(PlayerInfo[playerid][pVeh]);
		PlayerInfo[playerid][pVeh] = 0;
	    PlayerInfo[playerid][vModel] = 0;
		PlayerInfo[playerid][vX] = 0;
		PlayerInfo[playerid][vY] = 0;
		PlayerInfo[playerid][vZ] = 0;
		PlayerInfo[playerid][vA] = 0;
		PlayerInfo[playerid][vC1] = 0;
		PlayerInfo[playerid][vC2] = 0;
 		PlayerInfo[playerid][pTWeed] = 0;
		SendClientMessage(playerid, COLOR_GREEN, " You have sold your vehicle to another player.");
		SendClientMessage(playerb, COLOR_GREEN, " You have bought a vehicle from another player.");
	}
	else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pVVeh])
	{
		DestroyVehicle(PlayerInfo[playerid][pVVeh]);
		PlayerInfo[playerid][pVVeh] = 0;
	    PlayerInfo[playerid][vVModel] = 0;
		PlayerInfo[playerid][vVX] = 0;
		PlayerInfo[playerid][vVY] = 0;
		PlayerInfo[playerid][vVZ] = 0;
		PlayerInfo[playerid][vVA] = 0;
		PlayerInfo[playerid][vVC1] = 0;
		PlayerInfo[playerid][vVC2] = 0;
		PlayerInfo[playerid][pvTWeed] = 0;
		SendClientMessage(playerid, COLOR_GREEN, " You have sold your vehicle to another player.");
	}
	else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pBVeh])
	{
		DestroyVehicle(PlayerInfo[playerid][pBVeh]);
		PlayerInfo[playerid][pBVeh] = 0;
	    PlayerInfo[playerid][vBModel] = 0;
		PlayerInfo[playerid][vBX] = 0;
		PlayerInfo[playerid][vBY] = 0;
		PlayerInfo[playerid][vBZ] = 0;
		PlayerInfo[playerid][vBA] = 0;
		PlayerInfo[playerid][vBC1] = 0;
		PlayerInfo[playerid][vBC2] = 0;
		SendClientMessage(playerid, COLOR_GREEN, " You have sold your vehicle to another player.");
	}
	return 1;
}
Reply
#2

What's the difference between pVeh, pVVeh and pBVeh?
I notice that the buyer gets the vehicle only in the first case ( if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pVeh]) )
Reply
#3

pVeh is for veh slot 1, pVVeh is for slot 2 and pBVeh is for slot 3. I tried with first slot of the car "pVeh" and didnt worked..
Reply
#4

Bump.
Reply
#5

Can anyone help me with that? To fix this command or crate another one with this one parameters?
Reply
#6

Found this command too. On which one can i recieve a hand of help? Really need to fix this please help.

Код:
CMD:sellcartoplayer(playerid, params[])
{
 	new string[128], playerb, price;
 	if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
	if(sscanf(params, "id", playerb, price)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /sellcartoplayer [playerid] [price]");
 	if(price < 1) return SendClientMessage(playerid, COLOR_GREY, "Price must be higher than 0.");
  	if(playerid == playerb) return SendClientMessage(playerid, COLOR_GREY, "You can not use this command on yourself.");
	if(GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pVeh] && GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pVVeh] && GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pBVeh]) return SendClientMessage(playerid, COLOR_GREY, "You must be in the vehicle you wish to sell to another player.");
	VehicleOffer[playerb] = playerid;
	//VehicleId[playerb] = d;
	VehiclePrice[playerb] = price;
	if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pVeh])
	{
			format(string, sizeof(string), "* You offered %s to buy this %s for $%d.", NORPN(playerb), RVN(GetVehicleModel(PlayerInfo[playerid][pVeh])), price);
			SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
			format(string, sizeof(string), "* %s has offered you their %s for $%d, (type /accept car) to buy.", RPN(playerid), RVN(GetVehicleModel(PlayerInfo[playerid][pVeh])), price);
			SendClientMessage(playerb, COLOR_LIGHTBLUE, string);
	}
	else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pVVeh])
	{
			format(string, sizeof(string), "* You offered %s to buy this %s for $%d.", NORPN(playerb), RVN(GetVehicleModel(PlayerInfo[playerid][pVVeh])), price);
			SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
			format(string, sizeof(string), "* %s has offered you their %s for $%d, (type /accept car) to buy.", RPN(playerid), RVN(GetVehicleModel(PlayerInfo[playerid][pVVeh])), price);
			SendClientMessage(playerb, COLOR_LIGHTBLUE, string);
	}
	else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pBVeh])
	{
			format(string, sizeof(string), "* You offered %s to buy this %s for $%d.", NORPN(playerb), RVN(GetVehicleModel(PlayerInfo[playerid][pBVeh])), price);
			SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
			format(string, sizeof(string), "* %s has offered you their %s for $%d, (type /accept car) to buy.", NORPN(playerid), RVN(GetVehicleModel(PlayerInfo[playerid][pBVeh])), price);
			SendClientMessage(playerb, COLOR_LIGHTBLUE, string);
	}
	else
	{
			SendClientMessage(playerid, COLOR_GREY, "You are not in a vehicle that you own.");
			return 1;
	}
    return 1;
}
Reply
#7

Tried a command with /givecarto is working. The seller recieve the car, it have access to all commands but when the seller wants to park the car it deletes from his car slots.
Reply
#8

This is the command with the problem:

Код:
 CMD:givecarto(playerid, params[])
{
	new playerb;
   	if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
	if(sscanf(params, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USE: /givecarto [playerid]");
	if(!PlayerInfo[playerid][pVeh]) return SendClientMessage(playerid, COLOR_GREY, "You dont own a car.");
	if(!IsPlayerLoggedIn(playerb) && !IsPlayerNPC(playerb)) return SendClientMessage(playerid, COLOR_GREY, "There a no such player.");
	if(PlayerInfo[playerb][pLevel] >= 2)
	{
		if(PlayerInfo[playerb][vModel])
		{
			SendClientMessage(playerid, COLOR_GREY, "* The player already owns a vehicle.");
		    return 1;
		}
	}
	if(PlayerInfo[playerb][vModel])
	{
		SendClientMessage(playerid, COLOR_GREY,"* The player already owns 2 vehicles.");
	    return 1;
	}
    if(PlayerInfo[playerid][vModel])
	{
		PlayerInfo[playerb][pVeh] = PlayerInfo[playerid][pVeh];
		SetVehicleParamsEx(PlayerInfo[playerb][pVeh], 0, 0, 0, 1, 0, 0, 0);
		PlayerInfo[playerb][vLocked] = 1;
		PlayerInfo[playerb][vModel] = PlayerInfo[playerid][pVeh];
		GetVehiclePos(PlayerInfo[playerb][pVeh], PlayerInfo[playerb][vVX], PlayerInfo[playerb][vVY], PlayerInfo[playerb][vVZ]);
		GetVehicleZAngle(PlayerInfo[playerb][pVeh], PlayerInfo[playerb][vA]);
		PlayerInfo[playerb][vVC1] = 0;
		PlayerInfo[playerb][vVC2] = 0;
 }
	PlayerInfo[playerid][pVeh] = 0;
	PlayerInfo[playerid][vModel] = 0;
	PlayerInfo[playerid][vX] = 0;
	PlayerInfo[playerid][vY] = 0;
	PlayerInfo[playerid][vZ] = 0;
	PlayerInfo[playerid][vA] = 0;
	PlayerInfo[playerid][vC1] = 0;
    PlayerInfo[playerid][vC2] = 0;
	SendClientMessage(playerid, COLOR_GREY, " You gave your car to the new owner.");
	return 1;
}
Reply
#9

Isn't that part when you're setting PlayerInfo[playerid] enums to zero supposed to be in the if(PlayerInfo[playerid][vModel])?
Also i don't understand your logic behind vModel so can you explain what it stores and how is it related to players level and number of his cars?
Reply
#10

I dont know i tried everything. I cannot figure out how can i solve this. Maybe if you got another idea for new command or something?
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)