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

Gag Главный флаг  [Решено]

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

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

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

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

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

Gag Главный флаг

Сообщение jjey1 » 07 фев 2017, 17:45

Здравствуйте уважаемые скриптеры.
Скажите как сделать так чтоб админ с флагом L мог (мутить-гагать) игрока имеющего иммунитет!

Код: Выделить всё
//
// модификаиця от serfreeman1337
//   * быстрая смена времени гага
//   * использование нативных функций AMXX 1.8.3
//   + запоминание последней страницы меню
// <noindex><a rel="nofollow" href="http://c-s.net.ua/url?u=http%3A%2F%2Fgf.hldm.org%2F" target="_blank">http://gf.hldm.org/</a></noindex>
// 21.07.2014
//
 
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#if AMXX_VERSION_NUM < 183
   #include <colorchat>
    
   #define print_team_default DontChange
   #define print_team_grey Grey
   #define print_team_red Red
   #define print_team_blue Blue
#endif
 
#define PLUGIN      "Admin Gag"
#define VERSION      "1.0sf1"
#define AUTHOR      "AndrewZ"
 
#define GAG_IMMUNITY   ADMIN_IMMUNITY
#define GAG_ACCESS      ADMIN_KICK
#define MAX_PLAYERS   32
 
#define TID         88897
 
const MAX_SAVED 64
 
new g_user_menu_pageMAX_PLAYERS ],
g_user_menu_playersMAX_PLAYERS ][ MAX_PLAYERS ],
g_user_timeMAX_PLAYERS ]
 
new 
g_user_gaggedMAX_PLAYERS ]
 
new 
g_times[] = { 5102030 }
 
new 
db_steamid[MAX_SAVED][32
new 
db_gag[MAX_SAVED
new 
db_slot_i
 
new g_SorryWait[33]
 
public 
plugin_init()
{
   
register_pluginPLUGINVERSIONAUTHOR )
    
   
register_forwardFM_Voice_SetClientListening"fwd_voice_setclientlistening" )
    
   
register_clcmd"amx_gagmenu""show_gag_main_menu" )
    
   
register_clcmd"say""hook_say" )
   
register_clcmd"say_team""hook_say" )
    
   
register_menu"gag_players_menu"1023"handler_gag_players_menu" )
}
 
public 
client_putinserverid )
{
   
g_SorryWait[id] = 0
   load_gag
(id)
}
 
public 
client_disconnectid 
{
   
save_gag(id)
   
_remove_user_gagid )
}
 
_remove_user_gagid ){
   
g_user_timeid ] = 0
   g_user_gagged
id ] = 0
    
   
if( task_existsTID id ) )
      
remove_taskTID id )
}
 
public 
fwd_voice_setclientlisteningreceiversenderlisten 
{
   if( 
receiver != sender )
   {
      if( 
g_user_gaggedsender ] )
      {
         
engfuncEngFunc_SetClientListeningreceiversender)
         return 
FMRES_SUPERCEDE
      
}
   }
    
   return 
FMRES_IGNORED
}
 
public 
hook_sayid ){
   if( 
g_user_gaggedid ] )   {
      new 
said]
      
read_argssaid)
       
      if( 
containsaid"/sorry" ) != -&& (!g_SorryWait[id] || get_systime() - g_SorryWait[id] > 30))
      {
         for( new 
1<= MAX_PLAYERS++ )
         {
            if( 
is_user_connected) && get_user_flags) & GAG_ACCESS )
            {
               new 
name32 ]; get_user_nameidname31 )
               
client_print_coloriprint_team_blue"^3[GAG]^1 ^4%s^1 извиняется и просит снять с него молчанку."name )
            }
         }
          
         
g_SorryWait[id] = get_systime()
         
client_print_coloridprint_team_blue"^3[GAG]^1 Вы попросили прощение у администраторов." )
         return 
PLUGIN_HANDLED
      
}else{
         
client_print_coloridprint_team_red"^3[GAG]^1 Вам запрещено писать в чат, можете попросить прощение командой /sorry." )
         return 
PLUGIN_HANDLED
      
}
   }
    
   return 
PLUGIN_CONTINUE
}
 
public 
show_gag_main_menuidpage ){
   if( !( 
get_user_flagsid ) & GAG_ACCESS ) )
      return 
PLUGIN_HANDLED
    
   
if( page )
      return 
PLUGIN_HANDLED
    
   
new players32 ], num
   get_players
playersnum"h" )
    
   new 
minpage 7num )
   new 
start - ( )
   new 
end minstart 7num )
   
page start 7
    
   g_user_menu_page
id ] = page
   g_user_menu_players
id ] = players
    
   
new menu512 ]
   new 
len formatexmenu511"\yЗаткнуть игрока\R%d/%d^n^n"page 1, ( ( num ) / ) + )
   new 
keys MENU_KEY_0 MENU_KEY_8
    
   
new item
    
   
for( startend++ )
   {
      new 
name32 ]
      new 
g_id players]
       
      
get_user_nameg_idname31 )
       
      if( 
id == g_id )
         
len += formatexmenulen ], 511 len"\d%d. \y%s^n", ++ itemname )
       
      else
      {
         if( 
get_user_flagsg_id ) & GAG_IMMUNITY )
            
len += formatexmenulen ], 511 len"\d%d. %s \r*^n", ++ itemname )
          
         else
         {
            
keys |= ( << item )
             
            if( 
g_user_gaggedg_id ] )
               
len += formatexmenulen ], 511 len"\w%d. \w%s \r[ЗАТКНУТ]^n", ++ itemname )
            else
               
len += formatexmenulen ], 511 len"\w%d. \w%s^n", ++ itemname )
         }
      }
   }
    
   
// dont over index arrays? net, ne sliwal
   
len += formatexmenulen ], 511 len"^n\w8. Время: \y%d минут^n"
      
g_times
         
g_user_timeid ]
      ]
   )
    
   if( 
end num )
   {   
      
keys |= MENU_KEY_9
      formatex
menulen ], 511 len"^n\w9. Далее^n0. %s"page "Назад" "Выход" )
   }
    
   else  
formatexmenulen ], 511 len"^n\w0. %s"page "Назад" "Выход" )
    
   
show_menuidkeysmenu, -1"gag_players_menu" )
    
   return 
PLUGIN_HANDLED
}
 
public 
handler_gag_players_menuidkey )
{
   switch( 
key )
   {
      case 
0..6:
      {
         new 
g_id g_user_menu_playersid ][ g_user_menu_pageid ] * key ]
          
         if( 
is_user_connectedg_id ) )
         {
            if( !( 
get_user_flagsg_id ) & GAG_IMMUNITY ) )
            {
               new 
name32 ]; get_user_nameidname31 )
               new 
g_name32 ]; get_user_nameg_idg_name31 )
                
               if( !
g_user_gaggedg_id ] )
               {
                  new 
time g_times[
                        
g_user_timeid ]
                     ]
                   
                  
g_user_gaggedg_id ] = 1
                  client_print_color
0print_team_red"^3[GAG]^1 ^4%s^1 заткнул ^4%s^1 на ^3%d^1 минут. Попросить прощение: /sorry."nameg_nametime )
                  
set_taskfloattime ) * 60.0"task_ungag"g_id TID )
               }
               else
               {
                  
_remove_user_gagg_id )
                  
client_print_color0print_team_blue"^3[GAG]^1 ^4%s^1 снял молчанку с ^4%s^1."nameg_name )
               }
            }
             
            else 
client_print_coloridprint_team_blue"^3[GAG] ^1Этот игрок имеет иммунитет." )
         }
          
         else 
client_print_coloridprint_team_blue"^3[GAG] ^1Этот игрок отключился от сервера." )
          
         
show_gag_main_menuid,  g_user_menu_pageid ] )
      }
       
      case 
7: {
         
g_user_time[id] ++
          
         if(
g_user_time[id] >= sizeof g_times)
            
g_user_time[id] = 0
          
         show_gag_main_menu
(id,g_user_menu_page[id])
      }
      case 
8show_gag_main_menuid, ++ g_user_menu_pageid ] )
      case 
9show_gag_main_menuid, -- g_user_menu_pageid ] )
   }
}
 
public 
task_ungagtask_id )
{
   new 
id task_id TID
    
   _remove_user_gag
id )
    
   new 
name32 ]; get_user_nameidname31 )
   
client_print_color0print_team_blue"^3[GAG] ^1C игрока ^4%s^1 снята молчанка."name )
}
 
save_gag(id){
   new 
g_steamid[32]
   
get_user_authid(idg_steamidcharsmax(g_steamid))
   if (
db_steamid[id][0] && !equal(g_steamiddb_steamid[id]))
   {
      if (
db_slot_i >= sizeof db_steamid)
         
db_slot_i get_maxplayers()+1
       
      copy
(db_steamid[db_slot_i], charsmax(db_steamid[]), db_steamid[id])
      
db_gag[db_slot_i] = db_gag[id]
      
db_slot_i++
   }
    
   
copy(db_steamid[id], charsmax(db_steamid[]), g_steamid)
   
db_gag[id] = g_user_gagged[id]
}
 
load_gag(id){
   new 
g_steamid[32]
   
get_user_authid(idg_steamidcharsmax(g_steamid))
    
   static 
i
   
for (0sizeof db_steamidi++)
   {
      if (
equal(g_steamiddb_steamid[i]))
      {
         
g_user_gagged[id] = db_gag[i]
         return;
      }
   }
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Gag Главный флаг

Сообщение NightFury » 07 фев 2017, 20:58

убрать проверку для флага L
Подпись: NightFury/406
Поддержка: vk.com/mashakrylova406
Аватара пользователя
NightFury
 
Сообщения: 85
Зарегистрирован: 10 авг 2016, 12:22
Благодарил (а): 8 раз.
Поблагодарили: 24 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, C, C++

Re: Gag Главный флаг

Сообщение ko22009 » 07 фев 2017, 21:11

это редачь:
#define GAG_IMMUNITY ADMIN_IMMUNITY
#define GAG_ACCESS ADMIN_KICK
Аватара пользователя
ko22009
 
Сообщения: 131
Зарегистрирован: 19 янв 2017, 16:20
Благодарил (а): 12 раз.
Поблагодарили: 27 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
C++
Php
Python
C#

Re: Gag Главный флаг

Сообщение jjey1 » 07 фев 2017, 21:18

ну тогда человека с иммунитетом сможет фигарить и обычный человек с киком...
а нужно чтоб только главный админ мог глушить человека с иммунитетом!!
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Gag Главный флаг  [Решено]

Сообщение ko22009 » 07 фев 2017, 21:31

Код: Выделить всё
//
// модификаиця от serfreeman1337
//   * быстрая смена времени гага
//   * использование нативных функций AMXX 1.8.3
//   + запоминание последней страницы меню
// <noindex><a rel="nofollow" href="http://c-s.net.ua/url?u=http%3A%2F%2Fgf.hldm.org%2F" target="_blank">http://gf.hldm.org/</a></noindex>
// 21.07.2014
//

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define print_team_default DontChange
#define print_team_grey Grey
#define print_team_red Red
#define print_team_blue Blue
#endif

#define PLUGIN      "Admin Gag"
#define VERSION      "1.0sf1"
#define AUTHOR      "AndrewZ"

#define GAG_IMMUNITY   ADMIN_IMMUNITY
#define GAG_ACCESS      ADMIN_KICK
#define GAG_ACCESS_IMMUNITY ADMIN_LEVEL_A
#define MAX_PLAYERS   32

#define TID         88897

const MAX_SAVED 64

new g_user_menu_pageMAX_PLAYERS ],
g_user_menu_playersMAX_PLAYERS ][ MAX_PLAYERS ],
g_user_timeMAX_PLAYERS ]

new 
g_user_gaggedMAX_PLAYERS ]

new 
g_times[] = { 5102030 }

new 
db_steamid[MAX_SAVED][32
new 
db_gag[MAX_SAVED
new 
db_slot_i

new g_SorryWait[33]

public 
plugin_init()
{
    
register_pluginPLUGINVERSIONAUTHOR )

    
register_forwardFM_Voice_SetClientListening"fwd_voice_setclientlistening" )

    
register_clcmd"amx_gagmenu""show_gag_main_menu" )

    
register_clcmd"say""hook_say" )
    
register_clcmd"say_team""hook_say" )

    
register_menu"gag_players_menu"1023"handler_gag_players_menu" )
}

public 
client_putinserverid )
{
    
g_SorryWait[id] = 0
    load_gag
(id)
}

public 
client_disconnectid 
{
    
save_gag(id)
    
_remove_user_gagid )
}

_remove_user_gagid ){
    
g_user_timeid ] = 0
    g_user_gagged
id ] = 0

    
if( task_existsTID id ) )
    
remove_taskTID id )
}

public 
fwd_voice_setclientlisteningreceiversenderlisten 
{
    if( 
receiver != sender )
    {
        if( 
g_user_gaggedsender ] )
        {
            
engfuncEngFunc_SetClientListeningreceiversender)
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED
}

public 
hook_sayid ) {
    if( 
g_user_gaggedid ] ) {
        new 
said]
        
read_argssaid)

        if( 
containsaid"/sorry" ) != -&& (!g_SorryWait[id] || get_systime() - g_SorryWait[id] > 30))
        {
            for( new 
1<= MAX_PLAYERS++ )
            {
                if( 
is_user_connected) && get_user_flags) & ( GAG_ACCESS GAG_ACCESS_IMMUNITY ) )
                {
                    new 
name32 ]; get_user_nameidname31 )
                    
client_print_coloriprint_team_blue"^3[GAG]^1 ^4%s^1 извиняется и просит снять с него молчанку."name )
                }
            }

            
g_SorryWait[id] = get_systime()
            
client_print_coloridprint_team_blue"^3[GAG]^1 Вы попросили прощение у администраторов." )
            return 
PLUGIN_HANDLED
        
} else 
        {
            
client_print_coloridprint_team_red"^3[GAG]^1 Вам запрещено писать в чат, можете попросить прощение командой /sorry." )
            return 
PLUGIN_HANDLED
        
}
    }
    return 
PLUGIN_CONTINUE
}

public 
show_gag_main_menuidpage ){
    if( ! ( 
get_user_flagsid ) & ( GAG_ACCESS GAG_ACCESS_IMMUNITY ) ) )
    return 
PLUGIN_HANDLED

    
if( page )
    return 
PLUGIN_HANDLED

    
new players32 ], num
    get_players
playersnum"h" )

    new 
minpage 7num )
    new 
start - ( )
    new 
end minstart 7num )
    
page start 7

    g_user_menu_page
id ] = page
    g_user_menu_players
id ] = players

    
new menu512 ]
    new 
len formatexmenu511"\yЗаткнуть игрока\R%d/%d^n^n"page 1, ( ( num ) / ) + )
    new 
keys MENU_KEY_0 MENU_KEY_8

    
new item

    
for( startend++ )
    {
        new 
name32 ]
        new 
g_id players]

        
get_user_nameg_idname31 )

        if( 
id == g_id )
        
len += formatexmenulen ], 511 len"\d%d. \y%s^n", ++ itemname )

        else
        {
            if( ( 
get_user_flagsg_id ) & GAG_IMMUNITY ) && ! ( get_user_flagsid ) & GAG_ACCESS_IMMUNITY ) )
            
len += formatexmenulen ], 511 len"\d%d. %s \r*^n", ++ itemname )

            else
            {
                
keys |= ( << item )

                if( 
g_user_gaggedg_id ] )
                
len += formatexmenulen ], 511 len"\w%d. \w%s \r[ЗАТКНУТ]^n", ++ itemname )
                else
                
len += formatexmenulen ], 511 len"\w%d. \w%s^n", ++ itemname )
            }
        }
    }

       
// dont over index arrays? net, ne sliwal
       
len += formatexmenulen ], 511 len"^n\w8. Время: \y%d минут^n"
       
g_times
       
g_user_timeid ]
       ]
       )

       if( 
end num )
       {   
           
keys |= MENU_KEY_9
           formatex
menulen ], 511 len"^n\w9. Далее^n0. %s"page "Назад" "Выход" )
      } else  
formatexmenulen ], 511 len"^n\w0. %s"page "Назад" "Выход" )
       
show_menuidkeysmenu, -1"gag_players_menu" )
    return 
PLUGIN_HANDLED
}

public 
handler_gag_players_menuidkey )
{
    switch( 
key )
    {
        case 
0..6:
        {
            new 
g_id g_user_menu_playersid ][ g_user_menu_pageid ] * key ]

            if( 
is_user_connectedg_id ) )
            {
                new 
user_flags get_user_flagsg_id );
                new 
admin_flags get_user_flagsid );
                if( !( 
user_flags GAG_IMMUNITY ) || ( admin_flags GAG_ACCESS_IMMUNITY ) )
                {
                    new 
name32 ]; get_user_nameidname31 )
                    new 
g_name32 ]; get_user_nameg_idg_name31 )

                    if( !
g_user_gaggedg_id ] )
                    {
                        new 
time g_times[
                        
g_user_timeid ]
                        ]

                        
g_user_gaggedg_id ] = 1
                        client_print_color
0print_team_red"^3[GAG]^1 ^4%s^1 заткнул ^4%s^1 на ^3%d^1 минут. Попросить прощение: /sorry."nameg_nametime )
                        
set_taskfloattime ) * 60.0"task_ungag"g_id TID )
                    }
                    else
                    {
                        
_remove_user_gagg_id )
                        
client_print_color0print_team_blue"^3[GAG]^1 ^4%s^1 снял молчанку с ^4%s^1."nameg_name )
                    }
                }

                else 
client_print_coloridprint_team_blue"^3[GAG] ^1Этот игрок имеет иммунитет." )
            }

            else 
client_print_coloridprint_team_blue"^3[GAG] ^1Этот игрок отключился от сервера." )

            
show_gag_main_menuid,  g_user_menu_pageid ] )
        }

        case 
7: {
            
g_user_time[id] ++

            if(
g_user_time[id] >= sizeof g_times)
            
g_user_time[id] = 0

            show_gag_main_menu
(id,g_user_menu_page[id])
        }
        case 
8show_gag_main_menuid, ++ g_user_menu_pageid ] )
        case 
9show_gag_main_menuid, -- g_user_menu_pageid ] )
    }
}

public 
task_ungagtask_id )
{
    new 
id task_id TID

    _remove_user_gag
id )

    new 
name32 ]; get_user_nameidname31 )
    
client_print_color0print_team_blue"^3[GAG] ^1C игрока ^4%s^1 снята молчанка."name )
}

save_gag(id){
    new 
g_steamid[32]
    
get_user_authid(idg_steamidcharsmax(g_steamid))
    if (
db_steamid[id][0] && !equal(g_steamiddb_steamid[id]))
    {
        if (
db_slot_i >= sizeof db_steamid)
        
db_slot_i get_maxplayers()+1

        copy
(db_steamid[db_slot_i], charsmax(db_steamid[]), db_steamid[id])
        
db_gag[db_slot_i] = db_gag[id]
        
db_slot_i++
    }

    
copy(db_steamid[id], charsmax(db_steamid[]), g_steamid)
    
db_gag[id] = g_user_gagged[id]
}

load_gag(id){
    new 
g_steamid[32]
    
get_user_authid(idg_steamidcharsmax(g_steamid))

    static 
i
    
for (0sizeof db_steamidi++)
    {
        if (
equal(g_steamiddb_steamid[i]))
        {
            
g_user_gagged[id] = db_gag[i]
            return;
        }
    }

 
Последний раз редактировалось ko22009 07 фев 2017, 21:53, всего редактировалось 1 раз.
Аватара пользователя
ko22009
 
Сообщения: 131
Зарегистрирован: 19 янв 2017, 16:20
Благодарил (а): 12 раз.
Поблагодарили: 27 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
C++
Php
Python
C#

Re: Gag Главный флаг

Сообщение jjey1 » 07 фев 2017, 21:39

ААААА....фак
Главный админ мог глушить человека с иммунитетом и других
А другие админы могли глушить только тех у кого нету иммунитета!

Я не понимаю как мне еще написать) и так всё по русски)
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Gag Главный флаг

Сообщение ko22009 » 07 фев 2017, 21:55

jjey1, сверху переписал, сделал так, что те, кто имеет флаг ADMIN_LEVEL_A, могут глушить тех, кто имеет имунитет.
Аватара пользователя
ko22009
 
Сообщения: 131
Зарегистрирован: 19 янв 2017, 16:20
Благодарил (а): 12 раз.
Поблагодарили: 27 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
C++
Php
Python
C#

Re: Gag Главный флаг

Сообщение jjey1 » 07 фев 2017, 22:04

Может ты мне еще с модельками поможешь) там думаю для тебя будет просто)
Большое спасибо. компилятор ток немного выпендривается теперь) но пока главное что работает!
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5