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

MG Hook : изменить флаги доступа  [Решено]

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

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

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

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

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

MG Hook : изменить флаги доступа

Сообщение onetwothree » 08 янв 2017, 07:12

здравствуйте :-)
снова я :-D

как сделать так, чтобы меню хук открывалось по admin_rcon, а сам хук admin_kick
sma
Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <amxmisc>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <colorchat>

#define HOOK_LEVEL ADMIN_KICK   // Уровен доступа

#define TRAIL_LIFE        10        // Жизнь полосы
#define TRAIL_WIDTH       10        // Ширина полосы
#define TRAIL_RED         255        // Цвет: Красный         
#define TRAIL_GREEN       0         // Цвет: Зелёный
#define TRAIL_BLUE        0            // Цвет: Голубой
#define TRAIL_BRIGTHNESS  220        // Яркость

#define TRAIL_LIF        10         // Жизнь полосы
#define TRAIL_WIDT       10            // Ширина полосы
#define TRAIL_RE         0            // Цвет: Красный         
#define TRAIL_GREE       0             // Цвет: Зелёный
#define TRAIL_BLU        255        // Цвет: Голубой
#define TRAIL_BRIGTHNES  220        // Яркость

#pragma tabsize 0

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]

new Enable
new Glow
, GlowRandom, GlowR, GlowG, GlowB
new Tsprite
, STsprite, sprstandart
new Fade
, FadeRandom, fadeR, fadeG, fadeB
new model_gibs
, gTrail
new HookSpeed


public plugin_init
() {
    register_plugin("MG Hook","2.0","LLInH9rA, Remake Nickron")
    
    register_clcmd
("+hook","hook_on",HOOK_LEVEL)
    register_clcmd("-hook","hook_off",HOOK_LEVEL)
    register_clcmd("say /hook","Menu_hook",HOOK_LEVEL)
    register_clcmd("amx_menuhook","Menu_hook",HOOK_LEVEL)
    register_clcmd("hook_give","give_hook",HOOK_LEVEL,"<name|#userid|steamid|@ALL> <on/off>") // Дать/отнять хук
    
    Enable            
=    register_cvar( "hook_enable", "1" )                // Вкл./Выкл. Плагин (По умолчанию Вкл)
    Glow            =    register_cvar( "hook_glow", "1" )                // Аура при полете Вкл./Выкл. (По умолчанию Вкл)
    GlowRandom        =    register_cvar( "hook_glow_random", "1" )        // Рандомная подсветка
    GlowR            =    register_cvar( "hook_glow_r", "255" )            // Цвет свечения(красный)
    GlowG            =    register_cvar( "hook_glow_g", "255" )            // Цвет свечения(зеленый)
    GlowB            =    register_cvar( "hook_glow_b", "255" )            // Цвет свечения(синий)
    sprstandart        =    register_cvar( "hook_sprite_new", "1" )            // Новый или старый спрайт хука (По умолчанию новый)
    Fade            =    register_cvar( "hook_screenfade", "0" )            // Затемнение экрана при полете Вкл./Выкл. (По умолчанию Вкл)
    FadeRandom        =    register_cvar( "hook_screenfade_random", "1" )    // Использовать рандомный цвет (1 - да, 2 -нет)(По умолчанию 1)
    fadeR            =     register_cvar( "hook_fade_r", "255" )            // Цвет затемнения экрана при полете(красный)
    fadeG             =     register_cvar( "hook_fade_g", "255" )            // Цвет затемнения экрана при полете(зеленый)
    fadeB             =     register_cvar( "hook_fade_b", "255" )            // Цвет затемнения экрана при полете(синий)
    HookSpeed        =    register_cvar( "hook_speed", "450" )            // Скорость (По умолчанию: 350)
}

public plugin_precache() {
    precache_sound("MG_hook/mg_hook.wav")                                // Загрузка звука 
    precache_sound("MG_hook/mg_item.wav")                                // Загрузка звука меню
    precache_sound("MG_hook/mg_menu.wav")                                // Загрузка звука меню вещей
    
    Tsprite            
=    precache_model("sprites/MG_hook/hook_ALL.spr")     // Загрузка спрайта паутины
    STsprite        =    precache_model("sprites/laserbeam.spr")         // Загрузка стандартного спрайта
    gTrail          =   precache_model("sprites/MG_hook/speed.spr")        // Загрузка спрайта полосы
    model_gibs      =   precache_model("sprites/knife_v2/watergun.spr")            // Загрузка модели земли
    
}

// =================================================================================================

public Menu_hook(id)
{
  if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_KICK)
  client_cmd(id, "spk MG_hook/mg_menu.wav") 
  
{
    new menu = menu_create("\rMG Hook: \yМеню смотрящего ^n\dRemake Nickron ^n\d˙·٠●• •●٠·˙","menu_hook")
    
    menu_additem
(menu,"Взять \r[Комплект Гранат] \yツ", "1", 0)
    menu_additem(menu,"Взять \r[AWP] \yツ", "2", 0)
    menu_additem(menu,"Взять \r[Прыжок] \yツ", "3", 0)
    menu_additem(menu,"Подарить \r[Жизни] \yツ", "4", 0)

    
    menu_setprop
(menu , MPROP_NEXTNAME, "Далее")
    menu_setprop(menu , MPROP_BACKNAME, "Назад")
    menu_setprop(menu , MPROP_EXITNAME, "\rВыход")
    menu_setprop(menu , MPROP_EXIT, MEXIT_ALL)
    menu_display(id, menu) 
  
}  
    return PLUGIN_HANDLED
}

// =================================================================================================

public menu_hook(id, menu, key)
{
  if(key == MENU_EXIT)
  {
      menu_destroy(menu)
    return PLUGIN_HANDLED
  
}
  new accss, clbck, data[6], name[64], itm
  menu_item_getinfo
(menu, key, accss, data, 5, name, 63, clbck)
  itm = str_to_num(data)
    
  switch
(itm)
  {     
    case 1
:
    {
      {
        client_cmd(id, "spk MG_hook/mg_item.wav") 
        give_item
(id, "weapon_hegrenade")
        give_item(id, "weapon_smokegrenade")
        give_item(id, "weapon_flashbang")
        ColorChat(id,BLUE,"^3[MG Hook] ^4Вы взяли комплект гранат: ^3HE, Flash, Smoke")  
      
}
    }  
    case 2
:
    {
      {
        client_cmd(id, "spk MG_hook/mg_item.wav")
        give_item(id, "weapon_awp")
        ColorChat(id,BLUE,"^3[MG Hook] ^4Вы взяли: ^3AWP - 10")  
      
}
    }  
    case 3
:
    {
      {
        client_cmd(id, "spk MG_hook/mg_item.wav")
        set_user_gravity(id,0.3)
        ColorChat(id,BLUE,"^3[MG Hook] ^4Наш форум: ^3Magick-Mod.RU") 
      
}
    }
    case 4:
    {
      {
        HEALTHMenu(id)
      }
    } 
  
}
  return PLUGIN_HANDLED
}

// =================================================================================================

public HEALTHMenu(id)
{
     if(get_user_flags(id) & ADMIN_LEVEL_H)
     {
    new menu = menu_create( "\rМеню Жизней", "menu_health" )
    new players[32], pnum, tempid
    new szName
[32], szTempid[10]
    cs_get_user_team(id)

    get_players(players, pnum)

    for(new i; i<pnum; i++)
    {
        cs_get_user_team(players[i])
        
        tempid 
= players[i]

        if(!is_user_alive(tempid))
        {    
        
}
                else if(get_user_health(tempid) < 250)
                {
            get_user_name(tempid, szName, 31)
            num_to_str(tempid, szTempid, 9)

            menu_additem(menu, szName, szTempid, 0)
                }
    }

    menu_display(id, menu, 0)
     }
     return PLUGIN_HANDLED
}

public menu_health(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    
}

    new data[6], iName[64], playername[33], playername2[33]
    new access, callback
    menu_item_getinfo
(menu, item, access, data,5, iName, 63, callback)

    new tempid = str_to_num(data)
    cs_get_user_team(tempid)

    get_user_name(id, playername, 32)
    get_user_name(tempid, playername2, 32)

    set_user_health(tempid, 250)
        client_cmd(id,"health_menu")
        ColorChat(0,BLUE, "^3[MG Hook] ^4Смотрящий ^3%s ^4дал жизни ^3%s", playername, playername2)

    menu_destroy(menu)
    return PLUGIN_HANDLED
}

public client_disconnect(id) {
    remove_hook(id)
}

public client_putinserver(id) {
    remove_hook(id)
}

// =================================================================================================

public give_hook(id,level,cid) {
    if(!cmd_access(id,level,cid,3))
        return PLUGIN_HANDLED
            
    new name
[32]
    get_user_name(id,name,32)
        
    new szarg1
[32], szarg2[8], bool:mode
    read_argv
(1,szarg1,32)
    read_argv(2,szarg2,32)
    if(equal(szarg2,"on"))
        mode = true
        
    if
(equal(szarg1,"@ALL")) {
        for(new i=1;i<=get_maxplayers();i++) {
            if(is_user_connected(i) && is_user_alive(i)) {
                canusehook[i-1] = mode
                if
(mode) {
                    client_print(i,print_chat,"[MG Hook] Админ %s дал возможность возможность использовать hook",name)
                    client_print(i,print_chat,"[MG Hook] Забиндите '+hook' на кнопку")
                }
                else
                    client_print
(i,print_chat,"[MG Hook] Админ %s отнял возможность возможность использовать hook",name)
            }
        }
    }
    else {
        new pid = cmd_target(id,szarg1,2)
        if(pid > 0) {
            canusehook[pid-1] = mode
            if
(mode) {
                client_print(pid,print_chat,"[MG Hook] Админ %s дал возможность возможность использовать hook",name)
                client_print(pid,print_chat,"[MG Hook] Забиндите '+hook' на кнопку")
            }
            else
                client_print
(pid,print_chat,"[MG Hook] Админ %s отнял возможность возможность использовать hook",name)
        }
    }
    
    return PLUGIN_HANDLED
}

// =================================================================================================

public hook_on(id,level,cid)
{
    if( get_pcvar_num( Enable ) )
    {
    if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
        return PLUGIN_HANDLED
    
    get_user_origin
(id,hookorigin[id-1],3)
    
    if
(callfunc_begin("detect_cheat","prokreedz.amxx") == 1) {
        callfunc_push_int(id)
        callfunc_push_str("Hook")
        callfunc_end()
    }
    
    ishooked
[id-1] = true
    
    emit_sound
(id,CHAN_STATIC,"MG_hook/mg_hook.wav",1.0,ATTN_NORM,0,PITCH_NORM)
    set_task(0.1,"hook_task",id,"",0,"ab")
    hook_task(id)
    func_break(id)
    if( is_user_alive( id ) && get_pcvar_num( Glow ) )
    {
        if( is_user_alive( id ) && get_pcvar_num( GlowRandom ) )
        {
        set_user_rendering(id, kRenderFxGlowShell,  random_num( 0,255 ),  random_num( 0,255 ),  random_num( 0,255 ), kRenderNormal, 16 )
        }
        else
        
{
        set_user_rendering(id, kRenderFxGlowShell, ( get_pcvar_num( GlowR ) ),  ( get_pcvar_num( GlowG ) ),  ( get_pcvar_num( GlowB ) ), kRenderNormal, 16 )
        }
    }
    
    
}
    else
    
{
    ColorChat(id, RED,"[MG Hook] ^4Функция отключена!")
    }
    
    if
( get_pcvar_num( Fade ) )
    {
        if( get_pcvar_num( FadeRandom ) )
        {
        message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
        write_short( 10<<12 )
        write_short( 10<<16 )
        write_short( 1<<)
        write_byte random_num( 0,255 )
        write_byte random_num( 0,255 )
        write_byte random_num( 0,255 )
        write_byte( 255 )
        message_end()
        }
        else
        
{
        message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
        write_short( 10<<12 )
        write_short( 10<<16 )
        write_short( 1<<)
        write_byte ( get_pcvar_num( fadeR ) )
        write_byte ( get_pcvar_num( fadeG ) )
        write_byte ( get_pcvar_num( fadeB ) )
        write_byte( 255 )
        message_end()
        }
    }
    
    return PLUGIN_HANDLED
}

// =================================================================================================

public is_hooked(id) {
    return ishooked[id-1]
}

// =================================================================================================

public hook_off(id) {

    remove_hook(id)
    if( is_user_alive( id ) && get_pcvar_num( Glow ) )
    {
    set_user_rendering(id, kRenderFxGlowShell,  random_num( 0,),  random_num( 0,),  random_num( 0,), kRenderNormal, 16 )
    }
    
    if
( get_pcvar_num( Fade ) )
    {
    message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
    write_short( 10<<12 )
    write_short( 10<<16 )
    write_short( 1<<)
    write_byte ( 255 )
    write_byte ( 255 )
    write_byte ( 255 )
    write_byte( 255 )
    message_end()
    }
    
    return PLUGIN_HANDLED
}

// =================================================================================================

public hook_task(id) {
    if(!is_user_connected(id) || !is_user_alive(id))
        remove_hook(id)
    
    remove_beam
(id)
    draw_hook(id)
    func_trail(id)
    func_trail_ct(id)
    
    new origin
[3], Float:velocity[3]
    get_user_origin(id,origin) 
    new distance 
= get_distance(hookorigin[id-1],origin)
    
    new Float
:HSpeed = get_pcvar_float(HookSpeed)
    
    if
(distance > 25)  { 
        velocity
[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * HSpeed / distance)
        velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * HSpeed / distance)
        velocity[2] = (hookorigin[id-1][2] - origin[2]) * (2.0 * HSpeed / distance)
        
        entity_set_vector
(id,EV_VEC_velocity,velocity)
    } 
    else 
{
        entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
        remove_hook(id)
    }
}

// =================================================================================================

public draw_hook(id) {
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(1)                // TE_BEAMENTPOINT
    write_short(id)                // entid
    write_coord(hookorigin[id-1][0])    // origin
    write_coord(hookorigin[id-1][1])    // origin
    write_coord(hookorigin[id-1][2])    // origin
    if( get_pcvar_num( sprstandart ) )                 // sprite index
    {
    if(get_user_team(id) == 1) {
    write_short( Tsprite )            
    
}
    else
    
{
    write_short( Tsprite )
    }
    }
    else
    
{
    write_short( STsprite )
    }
    write_byte( 0 )                    // start frame
    write_byte( 0 )                    // framerate
    write_byte( 100 )                // life
    write_byte( 20 )                // width
    write_byte( 0 )                    // noise
    if( get_pcvar_num( sprstandart ) )
    {
    if(get_user_team(id) == 1) {    // Террористы
        write_byte( 255 )            // красный
        write_byte( 255 )            // зеленый
        write_byte( 255 )            // синий
    }
    else 
    
{                                // Контры
        write_byte( 255 )            // красный
        write_byte( 255 )            // зеленый
        write_byte( 255 )            // синий
    }
    }
    else
    
{
    if(get_user_team(id) == 1) {    // Террористы
        write_byte( 255 )            // красный
        write_byte( 0 )                // зеленый
        write_byte( 0 )                // синий
    }
    else 
    
{                                // Контры
        write_byte( 0 )                // красный
        write_byte( 0 )                // зеленый
        write_byte( 255 )            // синий
    }
    }
    write_byte( 150 )                // brightness
    write_byte(0)                    // Скорость
    message_end()
}

// =================================================================================================

public func_break(id)
{
    new origin[3]
    
    get_user_origin
(id, origin, 3)
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(TE_SPRITE)
    write_coord(origin[0])
    write_coord(origin[1])
    write_coord(origin[2])
    write_short(model_gibs)
    write_byte(13)
    write_byte(255)
    message_end()
}

// =================================================================================================

public func_trail(id)

if(
cs_get_user_team(id) == CS_TEAM_T)

{
    
    
{
        {
    
            message_begin 
(MSG_BROADCAST,SVC_TEMPENTITY)
            write_byte (TE_BEAMFOLLOW)
            write_short (id)
            write_short (gTrail)
            write_byte (TRAIL_LIFE)
            write_byte (TRAIL_WIDTH)
            write_byte (TRAIL_RED)
            write_byte (TRAIL_GREEN)
            write_byte (TRAIL_BLUE)
            write_byte (TRAIL_BRIGTHNESS)
            message_end()
        }        
    
}
}

public func_trail_ct(id)

if(
cs_get_user_team(id) == CS_TEAM_CT)

{
    
    
{
        {
    
            message_begin 
(MSG_BROADCAST,SVC_TEMPENTITY)
            write_byte (TE_BEAMFOLLOW)
            write_short (id)
            write_short (gTrail)
            write_byte (TRAIL_LIF)
            write_byte (TRAIL_WIDT)
            write_byte (TRAIL_RE)
            write_byte (TRAIL_GREE)
            write_byte (TRAIL_BLU)
            write_byte (TRAIL_BRIGTHNES)
            message_end()
        }        
    
}
}

// =================================================================================================

public remove_hook(id) {
    if(task_exists(id))
        remove_task(id)
    remove_beam(id)
    ishooked[id-1] = false
}

// =================================================================================================

public remove_beam(id) {
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(99) // TE_KILLBEAM
    write_short(id)
    message_end()
}


Название темы скорректировано // liFe iS GoOD
Аватара пользователя
onetwothree
 
Сообщения: 16
Зарегистрирован: 04 янв 2017, 19:23
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: MG Hook : изменить флаги доступа

Сообщение 3BEPb » 08 янв 2017, 09:27

Аватара пользователя
3BEPb
 
Сообщения: 141
Зарегистрирован: 16 авг 2014, 22:02
Откуда: Пряжа
Благодарил (а): 22 раз.
Поблагодарили: 17 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: MG Hook : изменить флаги доступа

Сообщение sa1me » 08 янв 2017, 10:58

onetwothree,

Код: Выделить всё
if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_KICK

=>

Код: Выделить всё
if(get_user_flags(id) & ADMIN_RCON

79 строка.
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: MG Hook : изменить флаги доступа

Сообщение onetwothree » 08 янв 2017, 17:29

sa1me писал(а):onetwothree,
Код: Выделить всё
if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_KICK

=>
Код: Выделить всё
if(get_user_flags(id) & ADMIN_RCON

79 строка.


Да я пробовал, не работает как-то..
Всё равно у всех меню будет открываться
Аватара пользователя
onetwothree
 
Сообщения: 16
Зарегистрирован: 04 янв 2017, 19:23
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: MG Hook : изменить флаги доступа  [Решено]

Сообщение sa1me » 08 янв 2017, 17:33

Код: Выделить всё
    if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_KICK)
  client_cmd(id, "spk MG_hook/mg_menu.wav") 
  
{
    new menu = menu_create("\rMG Hook: \yМеню смотрящего ^n\dRemake Nickron ^n\d˙·٠●• •●٠·˙","menu_hook")

=>
Код: Выделить всё
if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_KICK)
{
    new menu = menu_create("\rMG Hook: \yМеню смотрящего ^n\dRemake Nickron ^n\d˙·٠●• •●٠·˙","menu_hook")

    client_cmd(id, "spk MG_hook/mg_menu.wav")
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели


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

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

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