10.06.2012, 20:16
In my opinion the code below, should be working, instead, it says I'm not the owner of the house, and I can't enter the house.
/enter:
House_IsOwner:
So the House_IsOwner returns that I'm not the owner of the house. What I actually really am.
What is wrong with the code?
Many thanks if you could help me this solved.
/enter:
pawn Code:
COMMAND:enter(playerid, params[])
{
// Setup local variables
new HouseID, hLevel, BusID, BusType;
// Send the command to all admins so they can see it
SendAdminText(playerid, "/enter", params);
// Check if the player has logged in
if (APlayerData[playerid][LoggedIn] == true)
{
// Make sure the player isn't inside a vehicle
if (GetPlayerVehicleID(playerid) == 0)
{
// Loop through all houses
for (HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
{
// Check if this house exists
if (AHouseData[HouseID][PickupID] != 0)
{
// Check if the player is in range of the house-pickup
if (IsPlayerInRangeOfPoint(playerid, 2.5, AHouseData[HouseID][HouseX], AHouseData[HouseID][HouseY], AHouseData[HouseID][HouseZ]))
{
// Check if the house is closed to the public
if (AHouseData[HouseID][HouseOpened] == false)
{
// The house isn't open to the public, so keep anyone out who isn't the owner of the house
if (House_PlayerIsOwner(playerid, HouseID) == 0)
{
// Let the player know that this house isn't open to the public and he can't enter it
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}This house isn't open to the public, you can't enter it");
return 1;
}
}
// The house is open to the public, or the player trying to enter is the owner, so let the player inside the house
// Get the level of the house
hLevel = AHouseData[HouseID][HouseLevel];
// Set the worldid so other players cannot see him anymore
SetPlayerVirtualWorld(playerid, 5000 + HouseID);
// Set the player inside the interior of the house
SetPlayerInterior(playerid, AHouseInteriors[hLevel][InteriorID]);
// Set the position of the player at the spawn-location of the house's interior
SetPlayerPos(playerid, AHouseInteriors[hLevel][IntX], AHouseInteriors[hLevel][IntY], AHouseInteriors[hLevel][IntZ]);
// Also set a tracking-variable to enable /housemenu to track in which house the player is
APlayerData[playerid][CurrentHouse] = HouseID;
// Also let the player know he can use /housemenu to upgrade/exit his house
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Use {FFFF00}/housemenu{00FF00} to change options for your house");
// Exit the function
return 1;
}
}
}
// Loop through all player-owned businesses
for (new i; i < MAX_BUSINESSPERPLAYER; i++)
{
// Get the business-id at the selected slot from the player
BusID = APlayerData[playerid][Business][i];
// Check if the player has owned a business in this slot
if (BusID != 0)
{
// Check if the player is in range of the business-pickup
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, 1000 + playerid);
// 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 upgrade/exit his business
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Use {FFFF00}/busmenu{00FF00} to change options for your business");
// Exit the function
return 1;
}
}
}
}
}
else
return 0;
// Let the server know that this was a valid command
return 1;
}
pawn Code:
// his function returns "1" if the given player is the owner of the given house
House_PlayerIsOwner(playerid, HouseID)
{
// Check if the player owns the house in any of his house-slots
if (AHouseData[HouseID][Owner] == APlayerData[playerid][PlayerName])
{
return 1;
}
else
return 0;
}
What is wrong with the code?
Many thanks if you could help me this solved.