Hello.
If you want all players to be able to enter, then you don't need to check what businesses the player owns.
pawn Код:
COMMAND:enter(playerid, params[])
{
// If a player hasn't logged in properly, he cannot use this command
if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
// Setup local variables
new BusID, BusType;
// Make sure the player isn't inside a vehicle
if (GetPlayerVehicleSeat(playerid) == -1)
//end of start
First off, I'd recommend using "if(! GetPlayerVehicleID(playerid) )" to check if the player is in a vehicle.
This basically checks if the vehicle ID for that player is 0 (the ! means the condition after it must be FALSE or 0).
Now.
pawn Код:
//continued from above
// Loop through all player-owned businesses
for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
{
// Get the business-id at the selected slot from the player
BusID = APlayerData[playerid][Business][BusSlot];
// Check if the player has a business in this slot
if (BusID != 0)
{
Here you should instead be looping through all the businesses on the server, rather than every business slot the player has.
Example:
pawn Код:
for(new BID; BID < sizeof(ABusinessData); BID++)
Here, we will use:
"BID" for the ID of the business that the loop is on
"sizeof(ABusinessData)" to work out how many businesses the loop will need to go through (if you have a function/variable that can find the exact number of businesses in the server, use that instead)
And then basically you can continue with the code:
pawn Код:
//continue from "end of start" above
for(new BID; BID < sizeof(ABusinessData); BID++)
{
if (IsPlayerInRangeOfPoint(playerid, 2.5, ABusinessData[BID][BusinessX], ABusinessData[BID][BusinessY], ABusinessData[BID][BusinessZ]))
{
// Get the business-type
BusType = ABusinessData[BID][BusinessType];
// Set the worldid so other players cannot see him anymore
SetPlayerVirtualWorld(playerid, 2000 + BID);
// Set the player inside the interior of the business
SetPlayerInterior(playerid, ABusinessInteriors[BusType][InteriorID]);
// Set the position of the player at the spawn-location of the business's interior
SetPlayerPos(playerid, ABusinessInteriors[BusType][IntX], ABusinessInteriors[BusType][IntY], ABusinessInteriors[BusType][IntZ]);
// Also set a tracking-variable to enable /busmenu to track in which business the player is
APlayerData[playerid][CurrentBusiness] = BID;
// Also let the player know he can use /busmenu to control his business
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Use {FFFF00}/busmenu{00FF00} to change options for your business");
// Exit the function
return 1;
}
}
Now I did fragment your code a lot, so here is the final outcome (make sure to read everything above so you can understand the errors I have pointed out):
pawn Код:
COMMAND:enter(playerid, params[])
{
// If a player hasn't logged in properly, he cannot use this command
if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
// Setup local variables
new BusType;//Removed BusID
// Make sure the player isn't inside a vehicle
if (! GetPlayerVehicleID(playerid) )
{
// Loop through all player-owned businesses
for(new BID; BID < sizeof(ABusinessData); BID++)
{
if (IsPlayerInRangeOfPoint(playerid, 2.5, ABusinessData[BusID][BusinessX], ABusinessData[BusID][BusinessY], ABusinessData[BusID][BusinessZ]))
{
// Get the business-type
BusType = ABusinessData[BusID][BusinessType];
// Set the worldid so other players cannot see him anymore
SetPlayerVirtualWorld(playerid, 2000 + BusID);
// Set the player inside the interior of the business
SetPlayerInterior(playerid, ABusinessInteriors[BusType][InteriorID]);
// Set the position of the player at the spawn-location of the business's interior
SetPlayerPos(playerid, ABusinessInteriors[BusType][IntX], ABusinessInteriors[BusType][IntY], ABusinessInteriors[BusType][IntZ]);
// Also set a tracking-variable to enable /busmenu to track in which business the player is
APlayerData[playerid][CurrentBusiness] = BusID;
// Also let the player know he can use /busmenu to control his business
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Use {FFFF00}/busmenu{00FF00} to change options for your business");
// Exit the function
return 1;
}
}
}
// If no business was in range, allow other scripts to use the same command (like the housing-script)
return 0;
}