What is wrong with my house system! Please Help !
#4

Change your OnPlayerKeyStateChange to this.

What I've made to check the house entering is looping through all houses and checking if you're near the "HouseEnter" coordinates of any house.

What I've made to check the house exiting is looping through all houses, decide which house you're inside by comparing your virtual world to the house's virtual world then checking if you're by the exit checkpoint.

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{

    if(newkeys == KEY_CROUCH)
    {
    for(new i = 0; i < MAX_HOUSES;i++)//Looping threw all houses.
    {
        //new pickupid;
        //if(pickupid == HouseEnter[i])//Checking if the checkpoint id corresponds to one of the house interiors
        if(IsPlayerInRangeOfPoint(playerid, 2, HInfo[i][XPos],HInfo[i][YPos],HInfo[i][ZPos]))//Checking if the player is near any house
        {
            new pName[24];//Creating the new var for the players name
            GetPlayerName(playerid,pName,24);//Storing the players name
            if(HInfo[i][Owned] == 1 && strcmp(HInfo[i][Owner],pName) == 0)//String comparing between the players name and the house owners name, to check if they match.
            {
                SetPVarInt(playerid,"PlayersInteriorHouse",GetPlayerInterior(playerid));//Storing, so later we can reset it back
                SetPVarInt(playerid,"PlayerVirtualWorldHouse",GetPlayerVirtualWorld(playerid));//Storing, so later we can reset it back
                SetPlayerPos(playerid,446.7281,507.0475,1001.9195);//Setting the players position.
                SetPlayerInterior(playerid,12);//Setting the players interior.
                SetPlayerVirtualWorld(playerid,HInfo[i][VirtualWorld]);//Preventing players from different houses,
                PlayerInHouseID[playerid] = i;
            }
            if(HInfo[i][Owned] == 1 && strcmp(HInfo[i][Owner],pName) != 0)//Checking if the house is owned but the house owner and the players name don't match.
            {
                SendClientMessage(playerid,-1,"You don't own this house");
            }
            if(HInfo[i][Owned] == 0)//Simply checking if the house isn't owned.
            {
                SendClientMessage(playerid,-1,"/buy to buy this lovely house");
            }
        }
        //if(pickupid == HouseExit[i])//Checking if the checkpointid is an House exit
        if(GetPlayerVirtualWorld(playerid) == HInfo[i][VirtualWorld] && IsPlayerInRangeOfPoint(playerid, 1.5, 443.9237,509.4609,1001.4195)) //Checking which house is the player inside by comparing virutal worlds, also checking if he's near the exit checkpoint
        {
            SetPlayerPos(playerid,HInfo[i][XPos]+3,HInfo[i][YPos],HInfo[i][ZPos]);//Setting the players position to checkpoint position +3
            SetPlayerInterior(playerid,GetPVarInt(playerid,"PlayersInteriorHouse"));//Setting the players interior to the one we stored
            SetPlayerVirtualWorld(playerid,GetPVarInt(playerid,"PlayerVirtualWorldHouse"));//Setting the players virtual world to the one we stored.
        }
    }
 }
    return 1;
}
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)