• 22 Avril 2025, 16:28:51


Auteur Sujet: Besoin d'aide pour comprendre certaines Boucles  (Lu 628 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Khay

  • *
  • Criminel
  • Messages: 32
    • Voir le profil
Besoin d'aide pour comprendre certaines Boucles
« le: 08 Août 2011, 09:30:57 »
Bonjour, j'aurais besoin d'aide pour comprendre quelques partie de se script, je ne comprends pas les fonction While et For je comprends que c'est des boucles je connais leurs fonction de base mais pas quand les utilisés et comment vu que c'est souvent utilisé je veux apprendre cela si une bonne explication est possible d'avoir merci


Citer
if(strcmp(cmd, "/mp", true) == 0 || strcmp(cmd, "/pm", true) == 0)
   {
       if(IsPlayerConnected(playerid))
       {
           if(gLogged[playerid] == false)
           {
               SendClientMessage(playerid,COLOR_GRAD1, MSG_ERROR_LOG);
               return 1;
           }
           if(PlayerInfo[playerid][pMuted] > 0)
         {
             SendClientMessage(playerid,COLOR_GRAD1,MSG_ERROR_MUTE);
             return 1;
         }
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /mp (ou /pm) [playerid/PartOfName] [text]");
            return 1;
         }
         giveplayerid = ReturnUser(tmp);
         if (IsPlayerConnected(giveplayerid))
         {
             if(giveplayerid != INVALID_PLAYER_ID)
             {
                 if(playerid == giveplayerid)
               {
                  SendClientMessage(playerid, COLOR_GRAD1, "...ça ne sert à rien d'envoyer des messages à soi même !");
                  return 1;
               }
               GetPlayerName(playerid, sendername, sizeof(sendername));
               GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
               new length = strlen(cmdtext);
               while ((idx < length) && (cmdtext[idx] <= ' '))
               {
                  idx++;
               }
               new offset = idx;
               new result[128];
               while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
               {
                  result[idx - offset] = cmdtext[idx];
                  idx++;
               }
               result[idx - offset] = EOS;
               if(!strlen(result))
               {
                  SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /mp [playerid/PartOfName] [text]");
                  return 1;
               }
               format(string, sizeof(string), "MP reçu de [%d]%s: %s", playerid, sendername, (result));
               SendClientMessage(giveplayerid, COLOR_YELLOW, string);
               format(string, sizeof(string), "MP envoyé à [%d]%s: %s", giveplayerid, giveplayer, (result));
               SendClientMessage(playerid,  COLOR_YELLOW, string);
               
               format(string, sizeof(string), "MP de [%d]%s à [%d]%s: %s", playerid, sendername, giveplayerid, giveplayer, (result));
               printf("%s", string);
               
               if(PlayerInfo[playerid][pAdmin] < 5 && PlayerInfo[giveplayerid][pAdmin] < 5)
               {
                  for(new i = 0; i < MAX_PLAYERS; i++)
                  {
                     if(IsPlayerConnected(i) && PlayerInfo[pAdmin] > 0 && LookMp == 0)
                     {
                        SendClientMessage(i, COLOR_ADMIN_CHAT, string);
                     }
                  }
               }
               return 1;
            }
         }
      }
      return 1;
   }
« Modifié: 09 Août 2011, 01:30:44 par Khay »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area

Hors ligne Khay

  • *
  • Criminel
  • Messages: 32
    • Voir le profil
Re : Besoin d'aide pour comprendre certaines Boucle
« Réponse #2 le: 09 Août 2011, 01:29:47 »
J'ai compris leurs fonctions c'est à dire faire des actions répétitives mais ils répètent quoi comme action ici je vais vous dire ce que je comprends

Citer
while ((idx < length) && (cmdtext[idx] <= ' '))
               {
                  idx++;
               }
               new offset = idx;
               new result[128];
               while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
               {
                  result[idx - offset] = cmdtext[idx];
                  idx++;
               }
               result[idx - offset] = EOS;
               if(!strlen(result))

Là si idx est plus petit que lenght et cmdtext plus petit ou = a ''

Sa incrémente de +1? ensuite je ne suis plus ^^

Citer
for(new i = 0; i < MAX_PLAYERS; i++)

Donc ici on on crée une variable "i", ensuite on met que les joueurs ne seront pas servit et ensuite on incrémente de +1, ensuite la fonction de ceci que je n'ai pas cité

Pourquoi avoir utilisé ici des boucles était ce vraiment obligatoirement nécessaire? Dans quel cas d'un Serveur DM par exemple avec des exemples serait bien de les utiliser? c'est peu etre un peu con mes questions mais je bloque à ce niveau
« Modifié: 09 Août 2011, 01:32:01 par Khay »