dcmd_totalteams(playerid, params[])
{
#pragma unused params
GetteamPlayers();
new String[500];
format(String, sizeof(String), "{FFFFFF}Players team 1:%d\n\
{FFFFFF}Players team 2: %d", Totalteam1, Totalteam2);
ShowPlayerDialog(playerid, 96251, DIALOG_STYLE_MSGBOX, "Total Players dos teams", String, "Ok", "");
return 1;
}
stock GetteamPlayers()
{
for(new i, g = GetMaxPlayers(); i < g; i++)
{
if(IsPlayerConnected(i))
{
if(Player[i][pteam1] == 1)
{
Totalteam1++;
return 1;
}
if(Player[i][pteam2] == 1)
{
Totalteam2++;
return 1;
}
}
}
return 1;
}
|
No, this is not how it works. There are basically two ways for a function to return; either by value or by reference. You can ****** the detailed difference, but to return more than one value, the function must return them by reference; meaning that whatever variables passed to this function are modified internally, they are modified where you called it and passed them too.
A fixed code of yours may look like: Code:
dcmd_totalteams(playerid, params[])
{
#pragma unused params
new
Totalteam1,
Totalteam2
;
GetteamPlayers(Totalteam1, Totalteam2);
new String[500];
format(String, sizeof(String),
"{FFFFFF}Players team 1:%d\n\
{FFFFFF}Players team 2: %d",
Totalteam1, Totalteam2);
ShowPlayerDialog(playerid, 96251, DIALOG_STYLE_MSGBOX, "Total Players dos teams", String, "Ok", "");
return 1;
}
GetteamPlayers(Totalteam1, Totalteam2)
{
for (new i, g = GetMaxPlayers(); i < g; i++)
{
if (IsPlayerConnected(i))
{
if (Player[i][pteam1] == 1)
Totalteam1++;
if (Player[i][pteam2] == 1)
Totalteam2++;
}
}
}
That would be something like: Code:
#define NoTeam (-1)
#define Team1 (0)
#define Team2 (1)
#define Team3 (2)
new
PlayerTeam[MAX_PLAYERS];
dcmd_totalteams(playerid, params[])
{
#pragma unused params
new
Totalteam1,
Totalteam2
;
GetteamPlayers(Totalteam1, Totalteam2);
new String[500];
format(String, sizeof(String),
"{FFFFFF}Players team 1:%d\n\
{FFFFFF}Players team 2: %d",
Totalteam1, Totalteam2);
ShowPlayerDialog(playerid, 96251, DIALOG_STYLE_MSGBOX, "Total Players dos teams", String, "Ok", "");
return 1;
}
GetteamPlayers(Totalteam1, Totalteam2)
{
for (new i, g = GetMaxPlayers(); i < g; i++)
{
if (!IsPlayerConnected(i))
continue;
switch (PlayerTeam[i])
{
case Team1:
Totalteam1++;
case Team2:
Totalteam2++;
// ...
}
}
}
Resetting would be: PlayerTeam[playerid] = NoTeam; |