Русское сообщество по скриптингу

Функция проверки флагов доступа через cmd_access

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Функция проверки флагов доступа через cmd_access

Сообщение Ronny123456789 » 24 июл 2018, 14:32

Здравствуйте! У меня есть плагин. Раньше стояла проверка флага доступа через
Код: Выделить всё
if(!(get_user_flags(id) & ACCESSFLAG)) 
, решил заменить на
Код: Выделить всё
if (!cmd_access(idlevelcid0)) 

Вроде все правильно сделал, везде все добавил, инклюд подключил и т.п, но плагин не копилируется.
выдает ошибку
Код: Выделить всё
menu_.sma(85) : error 088number of arguments does not match definition
menu_
.sma(158) : error 088number of arguments does not match definition


Подскажите, пожалуйста, где моя ошибка ? Буду очень благодарен.

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define ACCESSFLAG ADMIN_RCON
  
new typeImg[33]
new 
name[32]

public 
plugin_init() 
{
   
//register_clcmd("donat_menu", "dysplay_menu")
   
   
register_concmd("donat_menu""dysplay_menu"ACCESSFLAG"menu donata sponsor")
}
  
public 
dysplay_menu(idlevelcid)
{
   
//if(!(get_user_flags(id) & ACCESSFLAG))
   //return PLUGIN_CONTINUE
   
   
if (!cmd_access(idlevelcid0))
   return 
PLUGIN_HANDLED
     
   
new Menu menu_create("\wМеню выдачи доната:^n^n""menu_handler2")
   
   
menu_additem(Menu"Меню""1"0)
   
menu_additem(Menu"Меню""2"0)
   
menu_additem(Menu"Меню""3"0)
   
menu_additem(Menu"Меню""4"0)
   
menu_additem(Menu"Меню""5"0)
   
menu_additem(Menu"Меню""6"0)
   
menu_additem(Menu"Меню""7"0)
   
menu_additem(Menu"Меню""8"0)
   
menu_additem(Menu"Меню""9"0)
   
menu_additem(Menu"Меню""10"0)
   
menu_additem(Menu"Меню""11"0)
   
menu_additem(Menu"Меню""12"0)
   
menu_additem(Menu"Меню""13"0)
   
menu_additem(Menu"Меню""14"0)
   
menu_additem(Menu"Меню""15"0)
   
menu_additem(Menu"Меню""16"0)
   
menu_additem(Menu"Меню""17"0)
   
   
   
menu_display(idMenu0)
     
   return 
PLUGIN_HANDLED
}
  
public 
menu_handler2(id,menu,item)
{
   if(
item == MENU_EXIT)
   {
       
menu_destroy(menu)
       return 
PLUGIN_HANDLED
   
}
     
   new 
data[6], iName[64], accesscallback
   menu_item_getinfo
(menuitemaccessdata5iName63callback)
     
   new 
key str_to_num(data)
   switch(
key)
   {
        case 
1typeImg[id]=1
        
case 2typeImg[id]=2
        
case 3typeImg[id]=3
        
case 4typeImg[id]=4
        
case 5typeImg[id]=5
        
case 6typeImg[id]=6
        
case 7typeImg[id]=7
        
case 8typeImg[id]=8
        
case 9typeImg[id]=9
        
case 10typeImg[id]=10
        
case 11typeImg[id]=11
        
case 12typeImg[id]=12
        
case 13typeImg[id]=13
        
case 14typeImg[id]=14
        
case 15typeImg[id]=15
        
case 16typeImg[id]=16
        
case 17typeImg[id]=17
    
}
        
     
   
dysplay_menu2(id)
  
   new 
oldmenunewmenumenupage
   player_menu_info
(idoldmenunewmenumenupage)
   return 
PLUGIN_CONTINUE
}
  
public 
dysplay_menu2(idlevelcid)
{
   
//if(!(get_user_flags(id) & ACCESSFLAG))
      //return PLUGIN_CONTINUE
   
   
if (!cmd_access(idlevelcid0))
        return 
PLUGIN_HANDLED
     
   
new Menu menu_create("\yКому выдаем донат ?""menu_handler")
     
   new 
Player
   
new sPlayerName[128]
   new 
sPlayerId[11]                                          
     
   new 
playersList[32]
   new 
playersnum
   get_players
(playersListplayersnum"c")
     
   for(new 
ii<playersnumi++)
   {
      
Player playersList[i]
      
get_user_name(PlayersPlayerNamecharsmax(sPlayerName))
      
num_to_str(PlayersPlayerIdcharsmax(sPlayerId))
      
menu_additem(MenusPlayerNamesPlayerId0)
   }
     
   
menu_display(idMenu0)
     
   return 
PLUGIN_HANDLED
}
  
public 
menu_handler(idmenuitem)
{
   if (
item == MENU_EXIT)
   {
      
menu_destroy(menu)
      return 
PLUGIN_HANDLED
   
}
   
get_user_name(idname31)     
   
   new 
flags1 read_flags("t");
   new 
flags2 read_flags("a");
   new 
flags3 read_flags("a");
   new 
flags4 read_flags("a");
   new 
flags5 read_flags("a");
   new 
flags6 read_flags("a");
   new 
flags7 read_flags("a");
   new 
flags8 read_flags("a");
   new 
flags9 read_flags("d");
   new 
flags10 read_flags("d");
   new 
flags11 read_flags("d");
   new 
flags12 read_flags("a");
   new 
flags13 read_flags("i");
   new 
flags14 read_flags("s");
   new 
flags15 read_flags("d");
   new 
flags16 read_flags("d");
   new 
flags17 read_flags("d");
   
   new 
s_Data[6], s_Name[64], i_Accessi_Callback
   menu_item_getinfo
(menuitemi_Accesss_Datacharsmax(s_Data), s_Namecharsmax(s_Name), i_Callback)
     
   new 
Player str_to_num(s_Data)
     
   if(!
is_user_connected(Player))
   {
      
print_col_chat(id,"!g[ОШИБКА] !yИгрок покинул сервер!!!")
      
dysplay_menu(id)                               
      return 
PLUGIN_HANDLED
   
}                                                      
     
   switch(
typeImg[id])
   {
      case 
1
      {
          
set_user_flags(Player,flags1);
          
print_col_chat(0"Мой текст"names_Name)
      }
     case 
2
      {
          
set_user_flags(Player,flags2);
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
3
      {
          
set_user_flags(Player,flags3);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
4
      {
          
set_user_flags(Player,flags4);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
5
      {
          
set_user_flags(Player,flags5);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
6
      {
          
set_user_flags(Player,flags6);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
7
      {
          
set_user_flags(Player,flags7);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
8
      {
          
set_user_flags(Player,flags8);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
9
      {
          
set_user_flags(Player,flags9);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
10
      {
          
set_user_flags(Player,flags10);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
11
      {
          
set_user_flags(Player,flags11);
          
print_col_chat(id"Мой текст"s_Name)
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
12
      {
          
set_user_flags(Player,flags12);
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
13
      {
          
set_user_flags(Player,flags13);
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
14
      {
          
set_user_flags(Player,flags14);
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
15
      {
          
set_user_flags(Player,flags15);
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
16
      {
          
set_user_flags(Player,flags16);
          
print_col_chat(0"Мой текст"names_Name)
      }
      case 
17
      {
          
set_user_flags(Player,flags17);
          
print_col_chat(0"Мой текст"names_Name)
      }
      
   }
                                                            
   return 
PLUGIN_CONTINUE
}
  
stock print_col_chat(const id, const input[], any:...) 

   new 
count 1players[32]
   static 
msg[191]
   
vformat(msg190input3)                                                               
   
replace_all(msg190"!g""^4"// Green Color 
   
replace_all(msg190"!y""^1"// Default Color
   
replace_all(msg190"!t""^3"// Team Color 
     
   
if (id)
      
players[0] = id
   
else
      
get_players(playerscount"ch")
     
   {
      for ( new 
0counti++ )
      {
         if (
is_user_connected(players[i]))
         {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
         }
      }
   }
Аватара пользователя
Ronny123456789
 
Сообщения: 117
Зарегистрирован: 21 июл 2014, 13:52
Благодарил (а): 48 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Функция проверки флагов доступа через cmd_access

Сообщение JustProOnline » 24 июл 2018, 22:52

у тебя 1 индекс за место 3

да и зачем тебе эта функция
Код: Выделить всё
cmd_access

лучше оставь
Код: Выделить всё
get_user_flags(id) & ACCESSFLAG
Аватара пользователя
JustProOnline
 
Сообщения: 160
Зарегистрирован: 30 дек 2017, 10:14
Благодарил (а): 23 раз.
Поблагодарили: 14 раз.
Опыт программирования: Около года
Языки программирования: C++
Counter-Strike 1.6

Re: Функция проверки флагов доступа через cmd_access

Сообщение Ronny123456789 » 24 июл 2018, 23:40

JustProOnline писал(а):у тебя 1 индекс за место 3

да и зачем тебе эта функция
Код: Выделить всё
cmd_access

лучше оставь
Код: Выделить всё
get_user_flags(id) & ACCESSFLAG

Можешь по поподробнее, как это 1 индекс за место 3. Буду очень благодарен, если подскажешь, как поправить

Мне нужна функция cmd_access , т.к. я хочу брать флаги доступа именно с файла cmdaccess.ini , поэтому использовать хочу эту функцию , а не get_user_flags(id)
Аватара пользователя
Ronny123456789
 
Сообщения: 117
Зарегистрирован: 21 июл 2014, 13:52
Благодарил (а): 48 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Функция проверки флагов доступа через cmd_access

Сообщение Ronny123456789 » 25 июл 2018, 10:56

Никто не подскажет ?? (
Аватара пользователя
Ronny123456789
 
Сообщения: 117
Зарегистрирован: 21 июл 2014, 13:52
Благодарил (а): 48 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Функция проверки флагов доступа через cmd_access

Сообщение Papito » 25 июл 2018, 13:11

Аватара пользователя
Papito
 
Сообщения: 545
Зарегистрирован: 09 ноя 2012, 16:28
Откуда: Montana
Благодарил (а): 44 раз.
Поблагодарили: 121 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter Strike 1.6
SAMP


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 4