GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: coco76640 le 11 Octobre 2011, 17:18:00

Titre: Limiter le nombre de joueurs max dans une équipe
Posté par: coco76640 le 11 Octobre 2011, 17:18:00
Bonjour, dans mon serveur Zombie, il y a deux équipes: humains et zombies

Le problème c'est que tout le monde se met humain et le jeu ne se fais pas car du coup il n'y a pas de zombie.

Ce que je voudrais c'est limiter le nombre de joueurs dans chaque équipe. Et que cette limite augmente en fonction du nombre de connecté.

Si je met une limite fixe, genre "limite humain = 10" il pourrat y avoir 10 humains et 1 zombies. Du coup je voudrais que cette limite augmente ou diminue proportionelement en fonction du nombre de joueurs.

Je me suis cassé la tete tout l'apres midi....  :wall Need your help  :P

Merci

 
Titre: Re : Limiter le nombre de joueurs max dans une équipe
Posté par: Xolokos le 11 Octobre 2011, 18:25:49
Tu créer 2 variables :

new Humain;
new Zombie;

quand un joueur sélectionne Humain tu l'incrémente en fessant :

new Humain++;
ou
new Zombie++;
ce qui ajoute 1 tu est d'accord ?

Et la vient le détail dans le OnPlayerRequestClasse tu fais une vérifiquation avec une multiplication ou un + a toi de voir ou bien tu vérifies si le nombre d'humain est > (supérieur strictement) a celui des zombie !

En exemple :
if(Humain < Zombie)
{
//Tu le spawn
}
else
{
//Tu lui envoi un message d'erreur !
}

A toi de voir comme dit plus haut !

EDIT : N'oublie pas de décrémenté la variable avec Humain--; quand il le faut !
Titre: Re : Limiter le nombre de joueurs max dans une équipe
Posté par: spiirou le 11 Octobre 2011, 18:32:56
Ne pas oublier de decrementer a la deconnection ou au changement d'equipe ;)
Titre: Re : Limiter le nombre de joueurs max dans une équipe
Posté par: Xolokos le 11 Octobre 2011, 18:33:26
J'avais oublier en plus :bouley:.
Titre: Re : Limiter le nombre de joueurs max dans une équipe
Posté par: Xartrick le 11 Octobre 2011, 19:38:01
J'opterais pour seulement fixer une valeur d'écart.
Titre: Re : Limiter le nombre de joueurs max dans une équipe
Posté par: coco76640 le 11 Octobre 2011, 19:56:24
Voici ce que j'ai fais:

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerWeather(playerid,20);
    SetPlayerTime(playerid, 20, 0);
    SetupPlayerForClassSelection(playerid);
    if(classid >= 12 && classid <= 162) {
if (zombie > humain)
{
        GameTextForPlayer(playerid,"~b~Humains",5000,6);
        gTeam[playerid] = TEAM_HUMAN;
        humain = humain + 1;
        }
        else
        {
        SendClientMessage(playerid,COLOR_YELLOW,"ERREUR: Il y a trop d'humains, veuillez sélectionner zombie");
        SendClientMessage(playerid,COLOR_YELLOW,"ERROR: They're too many humans, please select zombie!");
        SendClientMessage(playerid,COLOR_YELLOW,"ERROR: hay demasiados humanos, por favor, seleccione zombie");
        }
       
    }
    else if(classid >= 0 && classid <= 11) {
        if (zombie < humain)
        {
        gTeam[playerid] = TEAM_ZOMBIE;
        GameTextForPlayer(playerid,"~p~Zombies",5000,6);
        zombie = zombie + 1;
        }
        else
        {
        SendClientMessage(playerid,COLOR_YELLOW,"ERREUR: Il y a trop de zombies, veuillez sélectionner humain");
        SendClientMessage(playerid,COLOR_YELLOW,"ERROR: They're too many zombies, please select human!");
        SendClientMessage(playerid,COLOR_YELLOW,"ERROR: hay demasiados zombies, por favor, seleccione humano");
        }
       
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
if (gTeam[playerid] == TEAM_HUMAN)
{
humain = humain - 1;
}
else if (gTeam[playerid] == TEAM_ZOMBIE)
{
zombie = zombie - 1;
}
    TextDrawDestroy(HealthBar[playerid]);
    return 1;
}

Qu'en pensez vous? Au passage merci d'avoir répondu.