Vice City Multiplayer

VC:MP 0.3 => mIRC/pawn Scripting => Topic started by: saberman on May 28, 2011, 09:24:19 am

Title: /c admins bugged
Post by: saberman on May 28, 2011, 09:24:19 am
[pawn]   else if (strcmp(cmd, "admins", true) == 0) {
   new Count,i,name[24],string[256];
   for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2) Count++;
   if(!Count) return SendClientMessage(playerid, BLUE,"No admins ingame.");
   if(Count == 1)
   {
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2) break;
   GetPlayerName(i,name,24);
   if(PlayerInfo[playerid][Level] == 5)
   {
         format(string,256,"Present Owners: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 4)
   {
         format(string,256,"Present Managers: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 3)
   {
         format(string,256,"Present Administrators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 2)
   {
         format(string,256,"Present Moderators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   return 1;
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[playerid][Level] == 5)
            {
               format(string,256,"Present Owners: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[playerid][Level] == 4)
            {
               format(string,256,"Present Managers: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[playerid][Level] == 3)
            {
               format(string,256,"Present Administrators: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[playerid][Level] == 2)
            {
               format(string,256,"Present Moderators: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   GetPlayerName(playerid, name, 32);
   printf("%s has used /admins command");
   return 1;
}[/pawn]
Even administrators/managers/moderators(level 3/4/2) are shown in Present: Owners when there is one.
Title: Re: /c admins bugged
Post by: stormeus on May 28, 2011, 09:36:14 am
[pawn]if(PlayerInfo[playerid][Level] == 5)
   {
         format(string,256,"Present Owners: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 4)
   {
         format(string,256,"Present Managers: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 3)
   {
         format(string,256,"Present Administrators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 2)
   {
         format(string,256,"Present Moderators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
[/pawn]

From what I'm seeing, you tend to be making the same mistake, which is confusing variables. When you code, stop and look it over to make sure it makes sense.
[pawn]
if(PlayerInfo[playerid][Level] ==
[/pawn]

Should be
[pawn]
if(PlayerInfo[Level] ==
[/pawn]
Title: Re: /c admins bugged
Post by: saberman on May 29, 2011, 06:53:37 pm
Thanks a lot Storm!!!
Title: Re: /c admins bugged
Post by: saberman on May 29, 2011, 07:13:55 pm
Another problem.
[pawn]   else if (strcmp(cmd, "admins", true) == 0) {
   new Count,i,name[24],string[256];
   for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2) Count++;
   if(!Count) return SendClientMessage(playerid, BLUE,"No admins ingame.");
   if(Count == 1)
   {
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2) break;
   GetPlayerName(i,name,24);
   if(PlayerInfo[Level] == 5)
   {
         format(string,256,"Present Owners: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[Level] == 4)
   {
         format(string,256,"Present Managers: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[Level] == 3)
   {
         format(string,256,"Present Administrators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[Level] == 2)
   {
         format(string,256,"Present Moderators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   return 1;
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[Level] == 5)
            {
               format(string,256,"Present Owners: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[Level] == 4)
            {
               format(string,256,"Present Managers: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[Level] == 3)
            {
               format(string,256,"Present Administrators: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   if(Count >= 1)
   {
      new bool:First = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2)
     {
         GetPlayerName(i,name,24);
         if(!First)
       {
            if(PlayerInfo[Level] == 2)
            {
               format(string,256,"Present Moderators: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);
      }
      return SendClientMessage(playerid, BLUE, string);
   }
   GetPlayerName(playerid, name, 32);
   printf("%s has used /admins command");
   return 1;
}[/pawn]
It says like, I set Dawood's level to 4(manager) and I have 5(Owner) and it says: "Present Owners: Sabreman(1), Dawood(0)"

How to fix it? Dawood's name should appear in Present Managers
Title: Re: /c admins bugged
Post by: stormeus on May 29, 2011, 09:22:09 pm
[pawn]format(string,256,"Present Owners: %s(%d)",name,i);[/pawn]

Replace that with:
[pawn]format(string,256,"Present Owners: %s(%d)",name,PlayerInfo[Level]);[/pawn]
Title: Re: /c admins bugged
Post by: saberman on May 30, 2011, 09:42:27 am
[pawn]format(string,256,"Present Owners: %s(%d)",name,i);[/pawn]

Replace that with:
[pawn]format(string,256,"Present Owners: %s(%d)",name,PlayerInfo[Level]);[/pawn]
Actually the "i" is the ID of the person. Not the level :)
Title: Re: /c admins bugged
Post by: saberman on May 30, 2011, 05:48:53 pm
Help please.
Title: Re: /c admins bugged
Post by: stormeus on May 30, 2011, 07:07:11 pm
[pawn]         if(!First)
       {
            if(PlayerInfo[Level] == 5)
            {
               format(string,256,"Present Owners: %s(%d)",name,i);
               SendClientMessage(playerid, BLUE, string);
            }
            First = true;
         }
         else format(string,256,"%s, %s(%d)",string,name,i);[/pawn]

There's a few things wrong with this code. First thing is that you're saying "If the first person we run into is a level 5, place them as a present admin. Otherwise, don't do anything. If they're not first, place them all in the Current Owners string."

You'd probably have to rescript this piece of the code with four 128-cell long strings
[pawn]
new owners[128], managers[128], admins[128], moderators[128];
[/pawn]

Then have four First variables for each group.
[pawn]
new Bool:ownerFirst, Bool:managerFirst, Bool:adminFirst, Bool:moderatorFirst;
[/pawn]

You'd then have to place each group in its respective string, then set their individual "First" variables.
Title: Re: /c admins bugged
Post by: saberman on June 05, 2011, 07:30:49 pm
Will do so this week. Thanks for the help.
Title: Re: /c admins bugged
Post by: saberman on June 06, 2011, 10:13:33 am
What's wrong here?
[pawn]   else if (strcmp(cmd, "admins", true) == 0) {
   new Count,i,name[24],string[256];
   for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2) Count++;
   if(!Count) return SendClientMessage(playerid, BLUE,"No admins ingame.");
   if(Count == 1)
   {
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] >= 2) break;
   GetPlayerName(i,name,24);
   if(PlayerInfo[playerid][Level] == 5)
   {
         format(string,256,"Present Owners: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 4)
   {
         format(string,256,"Present Managers: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 3)
   {
         format(string,256,"Present Administrators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   if(PlayerInfo[playerid][Level] == 2)
   {
         format(string,256,"Present Moderators: %s(%d)",name,i);
         SendClientMessage(playerid, BLUE, string);
      }
   return 1;
   }
   if(Count >= 1)
   {
      new owners[128], managers[128], admins[128], mods[128];
      new bool:ofirst = false, bool:mfirst = false, bool:afirst = false, bool:mdfirst = false;
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] == 5)
     {
         GetPlayerName(i,name,24);
         if(!ofirst)
         {
            format(owners,128,"Present Owners: %s(%d)",name,i);
            SendClientMessage(playerid, BLUE, owners);
            ofirst = true;
         }
         else format(owners,128,"%s, %s",owners,name);
      }
      SendClientMessage(playerid, BLUE, string);
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] == 4)
     {
         GetPlayerName(i,name,24);
         if(!mfirst)
         {
            format(managers,128,"Present Managers: %s(%d)",name,i);
            SendClientMessage(playerid, BLUE, managers);
            mfirst = true;
         }
         else format(managers,128,"%s, %s",managers,name);
      }
      SendClientMessage(playerid, BLUE, managers);
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] == 3)
     {
         GetPlayerName(i,name,24);
         if(!afirst)
         {
            format(admins,128,"Present Administrators: %s(%d)",name,i);
            SendClientMessage(playerid, BLUE, admins);
            afirst = true;
         }
         else format(admins,128,"%s, %s",admins,name);
      }
      SendClientMessage(playerid, BLUE, admins);
      for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[Level] == 2)
     {
         GetPlayerName(i,name,24);
         if(!mdfirst)
         {
            format(mods,128,"Present Owners: %s(%d)",name,i);
            SendClientMessage(playerid, BLUE, mods);
            mdfirst = true;
         }
         else format(mods,128,"%s, %s",mods,name);
      }
      SendClientMessage(playerid, BLUE, mods);
   }
   GetPlayerName(playerid, name, 32);
   printf("%s has used /admins command");
   return 1;
}[/pawn]
Title: Re: /c admins bugged
Post by: stormeus on June 06, 2011, 05:15:35 pm
if(Count >= 1) should be if(Count > 1)

Also, in that same area, you should put the entire thing (if(IsPlayerConnected(i) && PlayerInfo[Level]...) in that for loop, and then send all the messages after the for loop.