Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Доступ к категории админ меню
nikola31rus Дата: Среда, 15.08.2012, 23:43:51 | Сообщение # 1
Сообщений: 37
Репутация: 4 [ +/- ]
Привет всем, мне нужна ваша помощ.
Вот весь плагин.
Code
new String:AdminAction[MAXPLAYERS+1][15];
new MyTarget[MAXPLAYERS+1];
new bool:ChatWaitMe[MAXPLAYERS+1];

CreateAdminPanel()
{
  AdminPanel = CreatePanel();
  SetPanelTitle(AdminPanel, "Админ меню\n \n");
  DrawPanelItem(AdminPanel, "Меню достройки");
  DrawPanelItem(AdminPanel, "Установить бонусы");
  DrawPanelItem(AdminPanel, "Удалить предметы игрока\n \n");
  SetPanelCurrentKey(AdminPanel, 10);
  DrawPanelItem(AdminPanel, "Выход");
}

public Action:padmin_cmd(client, args)
{
  if (args < 1)
  {
   ChatWaitMe[client] = false;
   SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0);
  }
  return Plugin_Handled;
}

public Select_AdminPanel(Handle:panel, MenuAction:action, client, option)
{
  if (action != MenuAction_Select || option > 3) return;
  if (option == 1)
  {
   PlayerUseAdminPropsMenu[client] = true;
   DisplayMenu(PropsMenu, client, 0);
  }
  else
  {
   strcopy(AdminAction[client], 15, option == 2 ? "set_bonus" : "del_props");
   ShowUsersMenu(client);
  }
}

ShowUsersMenu(client, item = 0)
{
  new Handle:menu = CreateMenu(Select_UsersMenu);
  SetMenuTitle(menu, "Выберите Игрока:\n \n");
  SetMenuExitBackButton(menu, true);
  decl String:userid[15], String:name[32]; name[0] = '\0';
  for (new i = 1; i <= MaxClients; i++)
  {
   if (IsClientInGame(i) && !IsFakeClient(i))
   {
    if (i != client && AdminAccess[i]) continue;
    IntToString(GetClientUserId(i), userid, 15);
    GetClientName(i, name, 32);
    AddMenuItem(menu, userid, name);
   }
  }
  DisplayMenuAtItem(menu, client, item, 0);
}

public Select_UsersMenu(Handle:menu, MenuAction:action, client, option)
{
  if (action == MenuAction_End) CloseHandle(menu);
  else if (action == MenuAction_Cancel && option == MenuCancel_ExitBack)
  {
   SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0);
  }
  else if (action == MenuAction_Select && AdminAccess[client])
  {
   decl String:info[15]; GetMenuItem(menu, option, info, 15);
   new userid = StringToInt(info);
   new target = GetClientOfUserId(userid);
   if (target < 1)
   {
    PrintToChat(client, "Игрок не найден");
    ShowUsersMenu(client);
    return;
   }
   if (StrEqual(AdminAction[client], "del_props"))
   {
    new props_n = MyPropsNum[target];
    if (props_n > 0)
    {
     decl String:text[75]; Format(text, 75, "wS_Prop_%d,Kill,,0,-1", target);
     DispatchKeyValue(client, "OnUser1", text);
     AcceptEntityInput(client, "FireUser1");

     PROPS_NUM -= props_n; MyPropsNum[target] = 0;
     PrintToChat(client, "\x01Предметы игрока \x04%N \x01удалены (\x04%d\x01)", target, props_n);
    }
    else PrintToChat(client, "На карте нет его предметов");
    ShowUsersMenu(client, GetMenuSelectionPosition());   
   }   
    else if (StrEqual(AdminAction[client], "set_bonus"))
   {
    MyTarget[client] = userid;
    ChatWaitMe[client] = true;
    PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]);
    PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit");
   }
  }
}

public Action:PlayerSay(client, const String:command[], args)
{
  if (ChatWaitMe[client] && client > 0 && args > 0)
  {
   ChatWaitMe[client] = false;
   if (!AdminAccess[client]) return Plugin_Continue;

   if (StrEqual(AdminAction[client], "set_bonus"))
   {
    decl String:arg1[25]; GetCmdArg(1, arg1, 25);
    if (StrEqual(arg1, "exit"))
    {
     SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0);
     return Plugin_Handled;
    }
    new max_symbols = strlen(arg1);
    for (new i = 0; i < max_symbols; i++)
    {
     if (!IsCharNumeric(arg1[i]))
     {
      PrintToChat(client, "Введено неверное значение.. [ нужно число или exit ]");
      ChatWaitMe[client] = true;
      return Plugin_Handled;
     }
    }
    new target = GetClientOfUserId(MyTarget[client]);
    if (target < 1)
    {
     PrintToChat(client, "Игрок не найден");
     SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0);
     return Plugin_Handled;
    }
    new bonus = StringToInt(arg1);
    if (bonus != MyPoints[target])
    {
     MyPoints[target] = bonus;
     if (client == target) PrintToChat(client, "\x04Ваши бонусы обновлены: %d", bonus);
     else PrintToChatAll("\x01\x04%N \x01установил игроку \x04%N \x01бонусы: %d", client, target, bonus);
     SQL_SavClientPoints(target);
    }
    SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0);
    return Plugin_Handled;
   }
  }
  return Plugin_Continue;
}


У меня не получается сделать так, чтобы вот эта функция работала у админа только если у него есть флаг доступа t, если нету этого флага то она не должна работать
Пробовал разные варианты, ничего не выходит, сюда выкладывать не стал, т.к удалил и там полный бред.
Code
}   
    else if (StrEqual(AdminAction[client], "set_bonus"))
   {
    MyTarget[client] = userid;
    ChatWaitMe[client] = true;
    PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]);
    PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit");
   }
  }
}
 
Scarface_slv Дата: Четверг, 16.08.2012, 11:15:35 | Сообщение # 2
Сообщений: 737
Репутация: 61 [ +/- ]
Создай проверку на этот флаг=)
Code

new flags = GetUserFlagBits(client);   
if (flags & CUSTOM6) PrintToChat(client, "Игрок с флагом Т");           
else PrintToChat(client, "У игрока отсутствует флаг Т");  
 
nikola31rus Дата: Четверг, 16.08.2012, 18:06:44 | Сообщение # 3
Сообщений: 37
Репутация: 4 [ +/- ]
Cпасибо большое, выручил) Вот что получилось:
Code
  if (StrEqual(AdminAction[client], "set_bonus"))   
    {
     new flags = GetUserFlagBits(client);    
     MyTarget[client] = userid;
     ChatWaitMe[client] = true;
     if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]);
     if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit");    
     else PrintToChat(client, "\x01\x03.:Team-A:. \x01Вы не можете устанавливать бонусы");      
    }
   }
}


Сообщение отредактировал nikola31rus - Четверг, 16.08.2012, 21:26:42
 
Scarface_slv Дата: Пятница, 17.08.2012, 14:39:28 | Сообщение # 4
Сообщений: 737
Репутация: 61 [ +/- ]
тока вот что
Code
      
if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]);
if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit");    [/color]
else PrintToChat(client, "\x01\x03.:Team-A:. \x01Вы не можете устанавливать бонусы");           

зачем два раза создавать проверку на флаг if (flags & ADMFLAG_CUSTOM6)
стоило сделать так, хотя без разницы твой вариант тоже будет работать это я так поправляю чтоб те легче было в будущем)
Code

if (StrEqual(AdminAction[client], "set_bonus"))        
{
          new flags = GetUserFlagBits(client);         
          MyTarget[client] = userid;
          ChatWaitMe[client] = true;
          if (flags & ADMFLAG_CUSTOM6)      
          {
                 PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]);
                 PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit");        
          }      
          else PrintToChat(client, "\x03.:Team-A:. \x01Вы не можете устанавливать бонусы");           
}


Сообщение отредактировал Scarface_slv - Пятница, 17.08.2012, 14:43:58
 
nikola31rus Дата: Пятница, 17.08.2012, 18:40:46 | Сообщение # 5
Сообщений: 37
Репутация: 4 [ +/- ]
ну как умел так сделал)
 
  • Страница 1 из 1
  • 1
Поиск: