loop help ~ selects first on on the list
#1

I have a list of saved houses and I want it to when a player logs in it checks the list of houses to see if he owns one. But when I run the code I have it only checks the first house on the list when there is more to be checked. Please help me.

Here is what I have: (there are no spaces in the actual coding)
Код:
   			for(new idxx=1; idxx<MAX_HOUSE; idxx++)
			{
			    new name[MAX_PLAYER_NAME+1], string[24+MAX_PLAYER_NAME+1];
				GetPlayerName(playerid, name, sizeof(name));
				if(strcmp(HouseInfo[idxx][hOwner],name,true)!=0) //does not own
				{
				    SendClientMessage(playerid, COLOR_ORANGE, "YOUR HOUSE HAS BEEN SOLD DUE TO INACTIVITY");
				    PlayerInfo[playerid][Houses] = 0;
				    return 1;
				}
				else
				{
				    SendClientMessage(playerid, COLOR_ORANGE, "YOUR HOUSE AUTO-SELL TIME HAS BEEN SET TO 14 DAYS FROM NOW");
                                    ///code will soon be placed here
				    return 1;
				}

    		}
please help me
Reply
#2

arrays start with a zero!

HouseInfo[0][Owner] = FirstHouse

In your loop it starts to count from 1

Код:
for(new idxx=0; idxx<MAX_HOUSE; idxx++)
Reply
#3

it does start at one, this is not the problem
Reply
#4

Do not return inside a loop. How do you know a player doesn't own a house, before having gone through the entire list? You don't. That's why that part is supposed to be placed after and outside the loop.
Reply
#5

yes, but when I do that it displays the messages for each house on the list.
I need it to go down the list, when it finds a name match it does something. If it gets to the end of the list and it doesnt find a match. it also does something
Reply
#6

try this:
pawn Код:
for(new idxx=1; idxx<MAX_HOUSE; idxx++)
            {
                new name[MAX_PLAYER_NAME+1], string[24+MAX_PLAYER_NAME+1];
                GetPlayerName(playerid, name, sizeof(name));
                if(PlayerInfo[playerid][Houses] > 0)
                {
                    if(strcmp(HouseInfo[idxx][hOwner],name,true)!=0) //does not own
                    {
                        SendClientMessage(playerid, COLOR_ORANGE, "YOUR HOUSE HAS BEEN SOLD DUE TO INACTIVITY");
                        PlayerInfo[playerid][Houses] = 0;
                        return 1;
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_ORANGE, "YOUR HOUSE AUTO-SELL TIME HAS BEEN SET TO 14 DAYS FROM NOW");
                                        ///code will soon be placed here
                        return 1;
                    }
                }

            }
Reply
#7

Or just dont loop then
Код:
new name[MAX_PLAYER_NAME+1], string[24+MAX_PLAYER_NAME+1];
                GetPlayerName(playerid, name, sizeof(name));
                if(PlayerInfo[playerid][Houses] > 0)
                {
                    if(strcmp(HouseInfo[PlayerInfo[playerid][Houses]][hOwner],name,true)!=0) //does not own
                    {
                        SendClientMessage(playerid, COLOR_ORANGE, "YOUR HOUSE HAS BEEN SOLD DUE TO INACTIVITY");
                        PlayerInfo[playerid][Houses] = 0;
                        return 1;
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_ORANGE, "YOUR HOUSE AUTO-SELL TIME HAS BEEN SET TO 14 DAYS FROM NOW");
                                        ///code will soon be placed here
                        return 1;
                    }
                }
Reply


Forum Jump:


Users browsing this thread: 8 Guest(s)