Vehicle Spawning Not Working
#1

Here's my command:
Код:
	if (strcmp("/buyvehicle", cmdtext, true, 10) == 0)
	{
	    if(IsPlayerInRangeOfPoint(playerid, 1, 542.2538, -1293.2178, 17.2422)) {
			if(!IsAnyVehicleInRange(3, 563.0516, -1282.9344, 17.2482)) {
			    CreateVehicle(586, 563.0516, -1282.9344, 17.2482, 180, -1, -1, 0);
			    return 1;
			} else if(!IsAnyVehicleInRange(3, 556.5441, -1283.1685, 17.2482)) {
			    CreateVehicle(586, 556.5441, -1283.1685, 17.2482, 180, -1, -1, 0);
			    return 1;
			} else if(!IsAnyVehicleInRange(3, 549.0734, -1283.2427, 17.2482)) {
			    CreateVehicle(586, 549.0734, -1283.2427, 17.2482, 180, -1, -1, 0);
			    return 1;
			} else if(!IsAnyVehicleInRange(3, 535.5510, -1283.3774, 17.2422)) {
			    CreateVehicle(586, 535.5510, -1283.3774, 17.2422, 180, -1, -1, 0);
			    return 1;
			} else if(!IsAnyVehicleInRange(3, 528.6564, -1283.4464, 17.2422)) {
			    CreateVehicle(586, 528.6564, -1283.4464, 17.2422, 180, -1, -1, 0);
			    return 1;
			} else if(!IsAnyVehicleInRange(3, 520.9333, -1288.3192, 17.2422)) {
			    CreateVehicle(586, 520.9333, -1288.3192, 17.2422, 180, -1, -1, 0);
			    return 1;
			} else {
				SendClientMessage(playerid, 0xFFFFFFFF, "There is no space - try another dealership.");
				return 1;
			}
		}
		return 1;
	}
And here's IsAnyVehicleInRange:
Код:
stock IsAnyVehicleInRange(Float:range, Float:x, Float:y, Float:z) {
	for(new v=0;v<MAX_VEHICLES; v++) {
		if(IsVehicleInRangeOfPoint(v,range,x,y,z)) //xyz location wherever you want
		{
			return true;
		}
	}
 	return 1;
}
stock IsVehicleInRangeOfPoint(vehicleid, Float:range, Float:x, Float:y, Float:z)
{
	new Float:px, Float:py, Float:pz;
	GetVehiclePos(vehicleid, px, py, pz);
	px -= x;   py -= y;   pz -= z;
	return ((px * px) + (py * py) + (pz * pz)) < (range * range);
}
However, doing /buyvehicle gives me the message "There is no space - try another dealership."
What's wrong?
Reply
#2

because your stock always return that there is some car try this
pawn Код:
stock IsAnyVehicleInRange(Float:range, Float:x, Float:y, Float:z)
{
    for(new v=0;v<MAX_VEHICLES; v++)
    {
        if(IsVehicleInRangeOfPoint(v,range,x,y,z)) //xyz location wherever you want
        {
            return 1;
        }
    }
    return 0;
}
and also cmd by self looks better as this
pawn Код:
if (strcmp("/buyvehicle", cmdtext, true, 10) == 0)
{
    if(IsPlayerInRangeOfPoint(playerid, 1, 542.2538, -1293.2178, 17.2422))
    {
        if(!IsAnyVehicleInRange(3, 563.0516, -1282.9344, 17.2482))
        {
            CreateVehicle(586, 563.0516, -1282.9344, 17.2482, 180, -1, -1, 0);
        }
        else if(!IsAnyVehicleInRange(3, 556.5441, -1283.1685, 17.2482))
        {
            CreateVehicle(586, 556.5441, -1283.1685, 17.2482, 180, -1, -1, 0);
        }
        else if(!IsAnyVehicleInRange(3, 549.0734, -1283.2427, 17.2482))
        {
            CreateVehicle(586, 549.0734, -1283.2427, 17.2482, 180, -1, -1, 0);
        }
        else if(!IsAnyVehicleInRange(3, 535.5510, -1283.3774, 17.2422))
        {
            CreateVehicle(586, 535.5510, -1283.3774, 17.2422, 180, -1, -1, 0);
        }
        else if(!IsAnyVehicleInRange(3, 528.6564, -1283.4464, 17.2422))
        {
            CreateVehicle(586, 528.6564, -1283.4464, 17.2422, 180, -1, -1, 0);
        }
        else if(!IsAnyVehicleInRange(3, 520.9333, -1288.3192, 17.2422))
        {
            CreateVehicle(586, 520.9333, -1288.3192, 17.2422, 180, -1, -1, 0);
        }
        else
        {
            SendClientMessage(playerid, 0xFFFFFFFF, "There is no space - try another dealership.");
        }
    }
    return 1;
}
Dont use return, if you use else if thing
Reply
#3

Thankyou so much!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)