loop not working properly?Again...
#1

Hello guys!

I have a command:

pawn Код:
CMD:npirkti(playerid,params[])
{
    for(new h; h < MAX_HOUSES; h++)
    {
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        if(strcmp(HouseInfo[h][hOwnerName], pName, false ) == 0)
        {
            if(IsPlayerInRangeOfPoint(playerid, 5, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY] , HouseInfo[h][hEnterZ]))
            {
                if(HouseInfo[h][hOwned] == 0)
                {
                    if(GetPlayerMoney(playerid) > HouseInfo[h][hPrice])
                    {
                        strmid(HouseInfo[h][hOwnerName], pName, 0, strlen(pName),MAX_PLAYER_NAME);
                        HouseInfo[h][hOwned] = 1;
                        GivePlayerMoney(playerid,-HouseInfo[h][hPrice]);
                        SendClientMessage(playerid, COL_RED,"Sveikiname, nusipirkote nama! Visas komandas rasite /namai.");
                        HouseInfo[h][hIsRented] = 0;
                        new labelstring[500];
                        DestroyDynamic3DTextLabel(HouseInfo[h][hLabel]);
                        DestroyDynamicMapIcon(HouseInfo[h][hIcon]);
                        DestroyDynamicPickup(HouseInfo[h][hPickup]);

                        format(labelstring, sizeof(labelstring),""TCCYAN"Savininkas: "TCRED"%s\n"TCCYAN"Nuoma: "TCRED"%s\n"TCCYAN"Nuomos kaina: "TCRED"%d\n"TCCYAN"Adresas: "TCRED"%s", HouseInfo[h][hOwnerName],HouseInfo[h][hRenter],HouseInfo[h][hRentPrice],HouseInfo[h][hAddress]);
                        HouseInfo[h][hLabel] = CreateDynamic3DTextLabel(labelstring, COL_GREEN, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 20);
                        HouseInfo[h][hPickup] = CreateDynamicPickup(1272, 1, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]);
                        HouseInfo[h][hIcon] = CreateDynamicMapIcon(HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 32, 0,0);
                        SaveHouseData(h);
                        return 1;
                    }
                    else SendClientMessage(playerid, COL_RED, "Jums neuztenka pinigu ipirkti siam namui!");
                }
                else SendClientMessage(playerid, COL_RED, "Sis namas jau nupirktas!Jei jis nuomuojamas gali ji nuomuoti.");  
            }
            else SendClientMessage(playerid, COL_RED, "Jus nesate prie parduodamo namo!");
        }
        else SendClientMessage(playerid, COL_RED, "Tu jau turi namus!");
    }
    return 1;
}
And i cant buy houses with it it just spams :
Код:
[15:42:38] Tu jau turi namus!

[15:42:38] Tu jau turi namus!

[15:42:38] Tu jau turi namus!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!

[15:42:38] Jus nesate prie parduodamo namo!
Whats wrong?
Reply
#2

Yes.
Reply
#3

can u convert in english ?
Reply
#4

okay.Please wait.
Reply
#5

pawn Код:
CMD:npirkti(playerid,params[])
{
    for(new h; h < MAX_HOUSES; h++)
    {
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        if(strcmp(HouseInfo[h][hOwnerName], pName, false ) == 0)
        {
            if(IsPlayerInRangeOfPoint(playerid, 5, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY] , HouseInfo[h][hEnterZ]))
            {
                if(HouseInfo[h][hOwned] == 0)
                {
                    if(GetPlayerMoney(playerid) > HouseInfo[h][hPrice])
                    {
                        strmid(HouseInfo[h][hOwnerName], pName, 0, strlen(pName),MAX_PLAYER_NAME);
                        HouseInfo[h][hOwned] = 1;
                        GivePlayerMoney(playerid,-HouseInfo[h][hPrice]);
                        SendClientMessage(playerid, COL_RED,"Sveikiname, nusipirkote nama! Visas komandas rasite /namai."); // Congratz you bought the house!
                        HouseInfo[h][hIsRented] = 0;
                        new labelstring[500];
                        DestroyDynamic3DTextLabel(HouseInfo[h][hLabel]);
                        DestroyDynamicMapIcon(HouseInfo[h][hIcon]);
                        DestroyDynamicPickup(HouseInfo[h][hPickup]);

                        format(labelstring, sizeof(labelstring),""TCCYAN"Savininkas: "TCRED"%s\n"TCCYAN"Nuoma: "TCRED"%s\n"TCCYAN"Nuomos kaina: "TCRED"%d\n"TCCYAN"Adresas: "TCRED"%s", HouseInfo[h][hOwnerName],HouseInfo[h][hRenter],HouseInfo[h][hRentPrice],HouseInfo[h][hAddress]);
                        HouseInfo[h][hLabel] = CreateDynamic3DTextLabel(labelstring, COL_GREEN, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 20);
                        HouseInfo[h][hPickup] = CreateDynamicPickup(1272, 1, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]);
                        HouseInfo[h][hIcon] = CreateDynamicMapIcon(HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 32, 0,0);
                        SaveHouseData(h);
                        return 1;
                    }
                    else SendClientMessage(playerid, COL_RED, "Jums neuztenka pinigu ipirkti siam namui!"); //You dont have enough money to buy this house
                }
                else SendClientMessage(playerid, COL_RED, "Sis namas jau nupirktas!Jei jis nuomuojamas gali ji nuomuoti.");  //This house is already bought , yuo can rent it if its rentable
            }
            else SendClientMessage(playerid, COL_RED, "Jus nesate prie parduodamo namo!"); // You're not a near house that is sellable
        }
        else SendClientMessage(playerid, COL_RED, "Tu jau turi namus!"); // You already have house
    }
    return 1;
}
Okay?
Reply
#6

Save the index to the house the player is near in, make "h" variable local to the whole command, not just the "for" loop,
that way you break out of the loop and just do regular checks on that "house id" index which is the "h" variable.
Reply
#7

Its really difficult to understand what i should do.Cause i dont really know English when we talk about programming.
Reply
#8

I mean do the loop before the "if" checks, "break;" the loop when you find one nearest to the player, save the nearest house "index" slot
->HouseInfo[h], then just do the if-checks separately outside the "for" loop with the "h" variable now being the house index.
Reply
#9

Can you please just show me examples?
Reply
#10

Yes, we are not here to spoon feed you code, you're meant to do that yourself with our help.
Feeding you the code is not the point of this community. Anyways...
This what I mean
pawn Код:
CMD:npirkti(playerid,params[])
{
    new h = -1; // house id
    for ( ; h < MAX_HOUSES; h++)
    {
        if (IsPlayerInRangeOfPoint(playerid, 5, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]))
            break;
    }
    if (h != -1)
    {
        if (!strcmp(HouseInfo[h][hOwnerName], pName, false))
        {
            if (HouseInfo[h][hOwned] == 0)
            {
                if (GetPlayerMoney(playerid) > HouseInfo[h][hPrice])
                {
                    strmid(HouseInfo[h][hOwnerName], pName, 0, strlen(pName),MAX_PLAYER_NAME);
                    HouseInfo[h][hOwned] = 1;
                    GivePlayerMoney(playerid,-HouseInfo[h][hPrice]);
                    SendClientMessage(playerid, COL_RED,"Sveikiname, nusipirkote nama! Visas komandas rasite /namai."); // Congratz you bought the house!
                    HouseInfo[h][hIsRented] = 0;
                    new labelstring[500];
                    DestroyDynamic3DTextLabel(HouseInfo[h][hLabel]);
                    DestroyDynamicMapIcon(HouseInfo[h][hIcon]);
                    DestroyDynamicPickup(HouseInfo[h][hPickup]);

                    format(labelstring, sizeof(labelstring),""TCCYAN"Savininkas: "TCRED"%s\n"TCCYAN"Nuoma: "TCRED"%s\n"TCCYAN"Nuomos kaina: "TCRED"%d\n"TCCYAN"Adresas: "TCRED"%s", HouseInfo[h][hOwnerName],HouseInfo[h][hRenter],HouseInfo[h][hRentPrice],HouseInfo[h][hAddress]);
                    HouseInfo[h][hLabel] = CreateDynamic3DTextLabel(labelstring, COL_GREEN, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 20);
                    HouseInfo[h][hPickup] = CreateDynamicPickup(1272, 1, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]);
                    HouseInfo[h][hIcon] = CreateDynamicMapIcon(HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 32, 0,0);
                    SaveHouseData(h);
                    return 1;
                }
                else SendClientMessage(playerid, COL_RED, "Jums neuztenka pinigu ipirkti siam namui!"); //You dont have enough money to buy this house
            }
            else SendClientMessage(playerid, COL_RED, "Sis namas jau nupirktas!Jei jis nuomuojamas gali ji nuomuoti.");  //This house is already bought , yuo can rent it if its rentable
        }
        else SendClientMessage(playerid, COL_RED, "Tu jau turi namus!"); // You already have house
    }
    else SendClientMessage(playerid, COL_RED, "Jus nesate prie parduodamo namo!"); // You're not a near house that is sellable
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)