GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Nikko™ le 30 Juin 2009, 11:03:25

Titre: Compter les joueur d'une team
Posté par: Nikko™ le 30 Juin 2009, 11:03:25
Bonjour tout le monde,

Je voulais savoir s'il éxistait un moyen de compter le nombre de joueur dans une team.
J'imgine bien ca avec une boucle ou quoi, sauf que c'est pas mon fort.
Merci d'avance  :)

++
nikko
Titre: Re : Compter les joueur d'une team
Posté par: R@f le 30 Juin 2009, 11:43:48
La chose la plus simple à faire dans ce cas là est d'augmenter la variable team1 (par exemple) lorsque le joueur choisi la 1ère classe. Lorsqu'il change de classe tu diminues l'autre et tu augmentes celle de la team2, et ainsi de suite pour les autres équipes.
Dès que je suis chez moi je te montrerai un exemple ;)

++
R@f
Titre: Re : Compter les joueur d'une team
Posté par: Nikko™ le 30 Juin 2009, 11:47:55
Le probleme est qu'en cours de route, les joueur change de team. (exemple: en tuant une personne, ca les chande de skin et change de team).
Donc je croyais qu'il y aurai un truc du style qui compte chaque gTeam ...

++
nikko
Titre: Re : Compter les joueur d'une team
Posté par: cristab le 30 Juin 2009, 12:24:59
dans ce cas dans le onplayerdeath tu peu mettre

if(gTeam[playerid] == team1)
{
    team1 -- ;
}
if(gTeam[playerid] == team2)
{
    team2 -- ;
}

et dans le onplayerspawn le contraire
if(gTeam[playerid] == team1)
{
    team1 ++ ;
}
if(gTeam[playerid] == team2)
{
    team2 ++ ;
}

de meme dans le onplayerdisconnect
if(gTeam[playerid] == team1)
{
    team1 -- ;
}
if(gTeam[playerid] == team2)
{
    team2 -- ;
}

un truc du genre
Titre: Re : Compter les joueur d'une team
Posté par: Nikko™ le 30 Juin 2009, 12:55:47
Ouais ya surement des faille, car des fois ca change de team sans qu'on meurt ...
Et oui tres complexe.
J'aurai pensé a mettre dans un timer un system avec une boucle, qui compte les joueur des team et qui les met dans des variables ...

++
nikko
Titre: Re : Compter les joueur d'une team
Posté par: S!m le 01 Juillet 2009, 00:23:07
Salut,

si tu n'utilise pas trop souvent cette valeur, tu peut très bien faire une boucle qui teste tous les joueurs quand tu as besoin de la donnée, voici une fonction qui peut le faire:

GetTeamPlayerCount(teamID)
{
    new count = 0;
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
        if(gTeam[i] == teamID])
        {
            count++;
        }
    }
    return count;
}

ps. ce code ne fonctionne que si le gm utilise gTeam (il suffit de changer la variable dans le cas contraire), de plus la fonction assume que les joueurs non-connectés n'ont pas de team associée (voir INVALID_TEAM que tu peut définir) et que cette team ne sera pas testée

++Sim++
Titre: Re : Compter les joueur d'une team
Posté par: Nikko™ le 01 Juillet 2009, 00:27:25
Merci beaucoup cest ce que je cherchais :)

++
nikko