Aller au contenu
News ticker
  • Bienvenue sur le nouveau forum VeryGames
  • Welcome to the new VeryGames forum
  • VeryNews

    Petit problème.


    darky3697

    Messages recommandés

    Hey, j'ai re-pris le dev en sourcepawn il y a quelque jours après 2 ans de pause :o.

     

    J'ai fait ça vite fait, (après 1h à chercher j'ai toujours pas réussit donc je post :p)

    Le plugin sert à re-définir un capitaine après ça mort. Si vous avez besoin d'autre partie du code ou de variables dîtes le moi.

     

    PS: Il manque surrement des accolades mais pas de panique je n'ai pas copié tout mon event player_death.

     

    public OnPlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    {
       new victim = GetClientOfUserId(GetEventInt(event, "userid"));
    
       if (victim > 0)
       {
           if (GetClientTeam(victim) == 3) 
           {    
                  if(victim == g_CaptainCT)
                   {
                       g_CaptainCT = -1;
                       CPrintToChatAll("ETAPE 1: ok");
    
                       do 
                       {
                            random2 = GetRandomInt(1, MaxClients);
                            CPrintToChatAll("ETAPE 2: ok");
    
                            if(IsClientInGame(random2) && IsPlayerAlive(random2) && GetClientTeam(random2) == 3)  
                            {
                                 CPrintToChatAll("ETAPE 3: ok");
                                 GetClientName(random2, g_sCapitaineName, sizeof(g_sCapitaineName));
                                 CPrintToChatAll("%s : Le nouveau capitaine est : {blue}%s{default}.", LOGO, g_sCapitaineName);
                                 chosen = true;
                                 g_CaptainCT = random2;
                                 CPrintToChatAll("ETAPE 4: ok");
                            }
                       }
             while(!chosen);
            }
    

     

     

    Voilà donc en gros on passe pas l'étape 2.

     

    En vous remerciant

     

    Cdt, Moulman (Oh oui tu aimes mon pseudo :p)

    Lien vers le commentaire
    Partager sur d’autres sites

    Refais ton code, t'as pas besoin de while pour faire un choix aléatoire ...

     

    /* 
    * Reprend un client au hasard
    *
    * @param team    Index de la team
    * @return ID du client 
    */
    stock int GetRandomPlayer(int team)
    {
       int[] client = new int[MaxClients+1];
       int count;
    
       for (int i = 1; i <= MaxClients; i++)
       {
           if(!IsClientInGame(i) && !IsClientConnected(i))
               continue;
    
           if(team != GetClientTeam(i))
               continue;
    
           client[count++] = i;
       }
    
       return (count == 0) ? -1 : client[GetRandomInt(0, count-1)];
    }
    

     

    if(victim == g_Captain)
    {
       g_CaptainCT = GetRandomPlayer(3);
       if(g_CaptainCT != -1)
          PrintToChatAll("Le nouveau capitaine est %N", g_CaptainCT);
    }
    

     

    Grosso modo tu peu faire comme ça, à toi de l'adapté pour ton code ^^

    do while pour un random ça fais très moches ... C'est super pratique pour sauter des lignes, des kv, et j'en passe ! mais utiliser ce genre de boucle pour faire ça ><

     

    Fais ton include avec tes fonctions utile, et met cette fonction dedans :)

    Lien vers le commentaire
    Partager sur d’autres sites

    Rejoindre la conversation

    Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

    Invité
    Répondre à ce sujet…

    ×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

      Seulement 75 émoticônes maximum sont autorisées.

    ×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

    ×   Votre contenu précédent a été rétabli.   Vider l’éditeur

    ×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

    ×
    ×
    • Créer...