• 05 Juin 2026, 16:11:17


Auteur Sujet: Selectionneur de team  (Lu 1395 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Selectionneur de team
« le: 30 Janvier 2009, 13:37:58 »
Bonjour tout le monde,

Voila, j'esseye de creer pour un ami un "selectionneur automatique de team". J'explique:
Admeton sur un serveur ou il y a 2 team, les joueurs sont souvent forcés de prendre le premier perso venu, or si c'est un gm a 2 team, il y aura des déséquilibres considérables ..
J'esseye de faire en sorte que les team soit tjr a peu près équilibrées (a un joueur près)
Je sais pas quel fonction il faudrai faire et quoi utiliser ... Je pense le mettre dans un timer (si 3 joueur d'une meme team se déconnectent, ca place 1 ou 2 joueur adverse dans l'autre team..)
Voila, je pense avoir bien expliqué, si quelqu'un a des idée pour le faire ... :)

++
nikko

Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : Selectionneur de team
« Réponse #1 le: 30 Janvier 2009, 14:35:06 »
Le plus simple serait de faire une verification quand un joueur d'une team se deconecte et que l'autre a 2 membre de plus tu prend un membre de la team qui a le plus de membre au hasard et tu le place dans la team qui a le moin de membre




Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Selectionneur de team
« Réponse #2 le: 30 Janvier 2009, 15:21:21 »
oui mais justement, je sais pas quels fonction faut utiliser .. ^^

++
nikko

Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : Selectionneur de team
« Réponse #3 le: 30 Janvier 2009, 16:30:38 »
Dans OnPlayerDisconnect

Code: (pawn) [Sélectionner]
if(GetPlayerTeam(playerid) == TEAM1)
{
      NombreJoueurTeam1--;
       if((NombreJoueurTeam2 - NombreJoueurTeam1) >= 2) // si il ya 2 joueur(ou plus) de plus dans la team2
       {
            //tu choisi un joueur de la team2 au hasard et tu place le joueur choisi dans la team1
       }
}
else if(GetPlayerTeam(playerid) == TEAM2)
{
      NombreJoueurTeam2--;
       if((NombreJoueurTeam1 - NombreJoueurTeam2) >= 2) // si il ya 2 joueur(ou plus) de plus dans la team1
       {
            //tu choisi un joueur de la team1 au hasard et tu place le joueur choisi dans la team2
       }
}

J'ai fait ce code en suposant que t'avait deja des variable qui stock le nombre de joueur dans une team

Un truc dans le genre je pense (j'ai fait ce code sans trop refflechir donc j'pense pas qu'il fonctionera faut ameliorer mais sa donne la base +- je pense)

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Selectionneur de team
« Réponse #4 le: 30 Janvier 2009, 16:37:00 »
Merci, je vais continuer ;)

++
nikko

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Selectionneur de team
« Réponse #5 le: 30 Janvier 2009, 16:57:08 »
Salut,

sinon tu peut t'inspirer de celui qu'a fait Y_Less:

#define MAX_TEAMS (27) // Up to 27 teams (for example)

#define GET_PLAYER_TEAM(%0) gTeam[(%0)]
//#define GET_PLAYER_TEAM(%0) GetPlayerTeam(%0)

#define SET_PLAYER_TEAM(%0,%1) gTeam[(%0)] = (%1)
//#define SET_PLAYER_TEAM(%0,%1) SetPlayerTeam(%0, %1)

new
gTeamCount[MAX_TEAMS];

public OnPlayerConnect(playerid)
{
SET_PLAYER_TEAM(playerid, NO_TEAM);
}

public OnPlayerDisconnect(playerid, reason)
{
if (GET_PLAYER_TEAM(playerid) != NO_TEAM)
{
gTeamCount[GET_PLAYER_TEAM(playerid)]--;
}
}

SetPlayerTeamBalanced(playerid)
{
if (GET_PLAYER_TEAM(playerid) != NO_TEAM)
{
gTeamCount[GET_PLAYER_TEAM(playerid)]--;
}
new
tm = -1;
for (new i = 0, tc = cellmax; i < MAX_TEAMS; i++)
{
new
cur = gTeamCount[i];
if (cur)
{
if (cur < tc)
{
tc = cur;
tm = i;
}
}
else
{
// Team with no players on - put them on it (saves time)
SET_PLAYER_TEAM(playerid, i);
gTeamCount[i]++;
return i;
}
}
SET_PLAYER_TEAM(playerid, tm);
gTeamCount[tm]++;
return tm;
}

public OnPlayerRequestSpawn(playerid)
{
SetPlayerTeamBalanced(playerid);
return 1;
}

++Sim++