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
-
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
-
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
-
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
-
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
-
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
-
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++
-
Merci beaucoup cest ce que je cherchais :)
++
nikko