Little Help
#10

Quote:
Originally Posted by Trollerz
Посмотреть сообщение
TRY ADDING
PHP код:
new GetPlayerUniqueSquadID@YSII_Ag
At the top
Simply said, no. That's not the fix.

Quote:
Originally Posted by DRIFT_HUNTER
Посмотреть сообщение
pawn Код:
CMD:squadronmembers(playerid, params[])
{
    if(pInfo[playerid][pSquadID] == 0) return SendError(playerid, "You are not in a squadron!");
    new LongString[1024], ShortString[180], Count = 0;
   
    foreach(Player, i)
    {
        format(StringSquad,sizeof(StringSquad),"SELECT `UserName` FROM `users` WHERE `SquadID` = %d", pInfo[i][pSquadID]);
        mysql_query(StringSquad);
        mysql_store_result();

        new MemberName[MAX_PLAYER_NAME];
        while(mysql_retrieve_row())
        {
            mysql_get_field("UserName", MemberName);
            Count++;
            format(ShortString, sizeof(ShortString), embed_orange"%s\n", MemberName);
            strcat(LongString,ShortString);
        }
        mysql_free_result();
    }

    if(Count == 0) return Dialog_Show(playerid, SquadDialog, DIALOG_STYLE_MSGBOX, "{BCF562}Squadron Members", embed_red"There is no members", "Ok", "");
    else return Dialog_Show(playerid, SquadDialog, DIALOG_STYLE_MSGBOX ,"{BCF562}Squadron Members", LongString, "Ok", "");
}
Try that
foreach being executed this way was deprecated in the latest version - executing your code would give you warnings like warning 219: local variable "using_deprecated_foreach_syntax"

You can not just loop around your group members only, you have to identify them first. Thus, you are going to have to loop through all connected players and selectively choosing the ones that belong to your group. Translating what I said to code would look something like:
pawn Код:
CMD:squadronmembers(playerid, params[])
{
    if(pInfo[playerid][pSquadID] == 0) return SendError(playerid, "You are not in a squadron!");
    new LongString[1024], ShortString[180], Count = 0;
   
    format(StringSquad,sizeof(StringSquad),"SELECT `UserName` FROM `users` WHERE `SquadID` = %d", pInfo[playerid][pSquadID]);
     mysql_query(StringSquad);
     mysql_store_result();

    new MemberName[MAX_PLAYER_NAME];
    while(mysql_retrieve_row())
    {
        mysql_get_field("UserName", MemberName);
        Count ++;
    }

    format(ShortString, sizeof(ShortString), embed_orange"%s\n", MemberName);
    strcat(LongString,ShortString);

    mysql_free_result();

    if(Count == 0) return Dialog_Show(playerid, SquadDialog, DIALOG_STYLE_MSGBOX, "{BCF562}Squadron Members", embed_red"There is no members", "Ok", "");
    else return Dialog_Show(playerid, SquadDialog, DIALOG_STYLE_MSGBOX ,"{BCF562}Squadron Members", LongString, "Ok", "");
}
You don't need foreach to loop around your MySQL entries. while() does it for you. Generally speaking, what I wrote looks around in your database for ALL members that belong to your group, whether online or offline. If you're only looking for those who are online, then you don't need to go through loading from the database, and that's when foreach comes in.
Reply


Messages In This Thread
Little Help - by Sanady - 29.08.2015, 12:01
Re: Little Help - by Finn707 - 29.08.2015, 12:24
Re: Little Help - by R0 - 29.08.2015, 12:59
Re: Little Help - by Sanady - 29.08.2015, 17:35
Re: Little Help - by Sanady - 29.08.2015, 18:50
Re: Little Help - by Trollerz - 29.08.2015, 18:51
Re: Little Help - by Sanady - 29.08.2015, 19:01
Re: Little Help - by DRIFT_HUNTER - 29.08.2015, 19:39
Re: Little Help - by R0 - 29.08.2015, 21:59
Re: Little Help - by Nixco - 29.08.2015, 22:14

Forum Jump:


Users browsing this thread: 1 Guest(s)