housing system returns fault information
#1

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:
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;
}
House_IsOwner:
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;
}
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.
Reply
#2

pawn Code:
// his function returns "1" if the given player is the owner of the given house
stock 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;
    }
    return 0;
}
Reply
#3

Still the same error. And the stock u use, is no need for.
Reply
#4

Anyone?
Reply
#5

You cannot compare arrays.

A string is an array.

pawn Code:
if(array == someotherarray)

// is wrong! In order to compare an array you'll have to use strcmp

if(!strcmp(array, someotherarray, false))
Check this post:

EDIT: sorry wrong post, this one haha:
http://forum.sa-mp.com/showpost.php?...57&postcount=6
Reply
#6

Haha, that's some pretty advanced pawno scripting, can't really make out what you're telling there.
Maybe you can make an example with mine?
Reply
#7

pawn Code:
if(strcmp(AHouseData[HouseID][Owner], APlayerData[playerid][PlayerName] ) == 0)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)