Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Вы не подключены. Войдите или зарегистрируйтесь

[/ban][/unban][/deleteacc]

Перейти вниз  Сообщение [Страница 1 из 1]

1[/ban][/unban][/deleteacc] Empty [/ban][/unban][/deleteacc] Пн Янв 30, 2012 5:41 pm

Cpt_ALEX

Cpt_ALEX
Новичок
Новичок

Решил вырезать из своего мода три команды. [/ban] - забанить игрока, [/unban] - разбанить игрока, [/deleteacc] - удалить аккаунт прямо из игры. Приступим.

В public OnPlayerCommandText:
Код:
//==============================================================================
   if(strcmp("/ban", cmd, true) == 0)
   {
       if(IsPlayerAdmin(playerid) || PlayerInfo[playerid][pAdmin] >= 3)
      {
         tmp = strtok(cmdtext,idx);
         if(!strlen(tmp) || strlen(tmp) > 5)
         {
            return SendClientMessage(playerid,COLOR_ISPOLZUY,"{33AA33}[Использование]{FFFFFF}: /ban [id] [кол-во дней] [причина]");
         }
         new id = strval(tmp);
         if(!IsPlayerConnected(id))
         {
            return SendClientMessage(playerid,COLOR_ISPOLZUY,"{33AA33}[Использование]{FFFFFF}: /ban [id] [кол-во дней] [причина]");
         }
         if(PlayerInfo[id][pAdmin] >= 5)
         {
            return SendClientMessage(playerid,COLOR_ISPOLZUY,"{FF0000}[Ошибка]{FFFFFF}: Администратора забанить нельзя.");
         }
         new days = strval(strtok(cmdtext,idx));
                  new length = strlen(cmdtext);
                  while ((idx < length) && (cmdtext[idx] <= ' '))
                  {
                     idx++;
                  }
                  new offset = idx;
                  new result[64];
            //      new banstring[64];
                  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, "{33AA33}[Использование]{FFFFFF}: /ban [id_игрока/ЧастьИмени] [причина]");
                     return 1;
                  }
         GetPlayerName(id,giveplayer,sizeof(giveplayer)) ;
          GetPlayerName(playerid,sendername,sizeof(sendername));
         if(days < 1 || days > 91) { SendClientMessage(playerid, COLOR_RED, "{FF0000}[Ошибка]{FFFFFF}: Не ниже 1 и не выше 91."); return 1; }
          new arank[64];
          if(PlayerInfo[playerid][pAdmin] == 6) { arank = "Гл. Администратором"; }
          else if(PlayerInfo[playerid][pAdmin] == 5) { arank = "Администратором"; }
          else if(PlayerInfo[playerid][pAdmin] == 4) { arank = "Гл. Модератором"; }
          else if(PlayerInfo[playerid][pAdmin] == 3) { arank = "Модератором 3ур."; }
          else if(PlayerInfo[playerid][pAdmin] == 2) { arank = "Модератором 2ур."; }
           else if(PlayerInfo[playerid][pAdmin] == 1) { arank = "Модератором 1ур."; }
          else { arank = "Модератор"; }
         new unbandate = GetTimeStamp() + days*60*60*24;
         new playern[16];
         GetPlayerName(id, playern, sizeof(playern));
         AddInTimeBanList(playern, unbandate);
         PlayerInfo[id][pBanned] = 1;
         PlayerInfo[id][pBlocks] += 1;
         PlayerInfo[playerid][pBans] += 1;
         //KickBan(id);
         new TBanStr[256];
         format(TBanStr,sizeof(TBanStr),"AgelonG: %s был(а) забанен(а) %s %s на %d дней. Причина: %s",giveplayer,arank,sendername,days, (result));
         SendClientMessageToAll(COLOR_LIGHTRED, TBanStr);
         format(string, sizeof(string), "Ты забанил(а) %s на %d дней. Причина: %s", giveplayer, days, (result));
         SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
         format(string, sizeof(string), "Ты был(а) забанен(а) %s %s на %d дней. Причина: %s", arank, sendername, days, (result));
         SendClientMessage(id, COLOR_LIGHTBLUE, string);
         Kick(id);
         return 1;
       }
       else
       {
            SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF}: Ты не авторизован для этой команды.");
         return 0;
      }
   }
Первая команда. Следующая [/unban]
Также в public OnPlayerCommandText:

Код:
//------------------------------------------------------------------------------
   if(strcmp(cmd, "/unban", true) == 0)
   {
      if(IsPlayerConnected(playerid))
        {
            if(PlayerInfo[playerid][pAdmin] < 5)
            {
              format(string, sizeof(string), "У Вас недостаточно прав, чтобы испольозовать эту команду.");
                SendClientMessage(playerid, COLOR_GRAD1, string);
             return 1;
         }
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD1, "AgelonG: /unban [PartOfName]");
            return 1;
         }
            format(string, sizeof(string), "%s.ini", tmp);
            if(fexist(string))
            {
              format(string, sizeof(string), "Аккаунт был успешно разбанен.");
                SendClientMessage(playerid, COLOR_WHITE, string);
            format(string, sizeof(string), "%s.ini", tmp);
                dini_IntSet(string, "Banned", 0);
/*              format(string,sizeof(string),"unbanip %s",tmp);
            SendRconCommand(string);
            SendRconCommand("reloadbans");
*/
         }
           else
            {
              format(string, sizeof(string), "Аккаунта с таким именем не существует.");
                SendClientMessage(playerid, COLOR_GRAD1, string);
         }
      }
      return 1;
   }
И третья команда это [/deleteacc]
Опять же в public OnPlayerCommandText:
Код:
//==============================================================================
   if (strcmp(cmd, "/deleteacc", true)==0)
   {
      if ((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][pAdmin] >= 6)
      {
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_ISPOLZUY, "{33AA33}[Использование]{FFFFFF}: /deleteaccount [ник игрока]");
            return 1;
         }
           GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
         GetPlayerName(playerid, sendername, sizeof(sendername));
         format(string, 256, "AgelonG: Администратор: %s удалил игровой аккаунт '%s'", sendername,tmp);
      //   ABroadCast(COLOR_LIGHTRED,string,1);
//------------------------------------------------------------------------------
         format(string, 256, "AgelonG: Администратор: %s удалил игровой аккаунт '%s'", sendername,tmp);
         printf(string);
         format(string,sizeof(string),"%s.ini",tmp);
         fremove(string);
         format(string, sizeof(string), "Вы удалили аккаунт: '%s", tmp);
         SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
      }
      return 1;
   }

Есть вопросы или ошибки? Пиши всё сюда!

http://agelong-rpg.gip-gip.ru

Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения