Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Меню ножей помощь !

Статус пользователя M0Nk
сообщение 25.3.2017, 0:23
Сообщение #1


Стаж: 9 лет 1 месяц

Сообщений: 11
Благодарностей: 1
Полезность: 0

Всем доброго времени.

Нужна помощь с плагином меню ножей при вводе в чат команды /knife выдаёт меню выбора ножей любому игроку , кто бы мне помог сделать чтоб только игрок с флагом N то есть LEVEL_B смог открыть это меню команндой /knife буду блогодарен ;)

Код
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fakemeta >
#include < hamsandwich >

new dMenu [ 36 ][ 64 ], dChat [ 36 ][ 64 ], dView [ 36 ][ 64 ], dPlayer [ 36 ][ 64 ], dCost [ 36 ][ 64 ], dLines;
new knife [ 33 ];

public plugin_init ()
{
    register_plugin ( "Knives Shop", "1.2", "OverGame" );
    
    register_clcmd ( "say /knife", "open_menu" );
    register_clcmd ( "say_team /knife", "open_menu" );
    
    RegisterHam ( Ham_Item_Deploy, "weapon_knife", "fwd_Deploy_Knife", 1 );
    register_dictionary ( "knives.txt" );
}

public plugin_precache ()
{
    read_data_ini ();
    for ( new index; index < dLines; index++ )
    {
        precache_model ( dView [ index ] );
        precache_model ( dPlayer [ index ] );
    }
}

public open_menu ( id )
{
    new szCaption [ 255 ], menu;
    format ( szCaption, charsmax ( szCaption ), "\d[%L]^n\r%L", LANG_SERVER, "MENU_PREFIX", LANG_SERVER, "MENU_CAPTION" );
    menu = menu_create ( szCaption, "func_omenu" );
    
    for ( new i; i < dLines; i++ )
    {
        new szTemp [ 10 ];
        num_to_str ( i, szTemp, charsmax ( szTemp ) );
        menu_additem ( menu, dMenu [ i ], szTemp );
    }
    
    menu_setprop ( menu, MPROP_BACKNAME, "Назад" );
    menu_setprop ( menu, MPROP_NEXTNAME, "Далее" );
    menu_setprop ( menu, MPROP_EXITNAME, "Выход" );
    
    menu_display ( id, menu, 0 );
    return PLUGIN_HANDLED;
}

public func_omenu ( id, menu, item )    
{    
    if ( item == MENU_EXIT )
    {    
        menu_destroy ( menu );
        return PLUGIN_HANDLED;
    }
    
    new data [ 15 ], iName [ 64 ];
    new access, callback;
    menu_item_getinfo ( menu, item, access, data,15, iName, 64, callback );
    
    new key = str_to_num ( data );
    if ( str_to_num ( dCost [ key ] ) <= cs_get_user_money ( id ) )
    {
        knife [ id ] = key;
        chat_send ( id, "!g[%L]!y %s", LANG_SERVER, "CHAT_PREFIX", dChat [ key ] );
        cs_set_user_money ( id, cs_get_user_money ( id ) - str_to_num ( dCost [ key ] ) );
        
        set_user_knife ( id );
    } else {
        chat_send ( id, "!g[%L]!y %L", LANG_SERVER, "CHAT_PREFIX", LANG_SERVER, "CHAT_NO_MONEY" );
    }
    
    return PLUGIN_HANDLED;
}

public fwd_Deploy_Knife ( weapon )
{
    new id = get_pdata_cbase ( weapon, 41, 4 );
    
    if ( is_user_alive ( id ) )
    {
        set_pev ( id, pev_viewmodel2, dView [ knife [ id ] ] );
        set_pev ( id, pev_weaponmodel2, dPlayer [ knife [ id ] ] );
    }
    
    return HAM_IGNORED;
}

stock set_user_knife ( id )
{
    if ( is_user_alive ( id ) )
    {
        engclient_cmd ( id, "weapon_knife" );
        set_pev ( id, pev_viewmodel2, dView [ knife [ id ] ] );
        set_pev ( id, pev_weaponmodel2, dPlayer [ knife [ id ] ] );
    }
}

stock chat_send ( const id, const input [ ], any:... )
{
    new count = 1, players [ 32 ];
    static msg [ 188 ];
    vformat ( msg, 187, input, 3 );
    
    replace_all ( msg, 187, "!g", "^4" );
    replace_all ( msg, 187, "!y", "^1" );
    replace_all ( msg, 187, "!t", "^3" );
    
    if ( id ) players [ 0 ] = id; else get_players ( players, count, "ch" );
    {
        for ( new i = 0; i < count; i++ )
        {
            if ( is_user_connected ( players [ i ] ) )
            {
                message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "SayText" ), _, players [ i ] );
                write_byte ( players [ i ] );
                write_string ( msg );
                message_end ();
            }
        }
    }
}

stock read_data_ini ()
{
    new len, buffer [ 256 ];
    new file = fopen ( "/addons/amxmodx/configs/knives.ini", "r" );
    
    while ( !feof ( file ) )
    {
        fgets ( file, buffer, 255 );
        trim ( buffer );
        
        if ( buffer [ 0 ] == '"' )
        {
            parse ( buffer, dMenu [ len ], 63, dChat [ len ], 63, dView [ len ], 63, dPlayer [ len ], 63, dCost [ len ], 63 );
        } else {
            continue;
        }
        len++;
    }
    dLines = len;
    fclose ( file );
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя fl0werD
сообщение 2.4.2017, 16:39
Сообщение #2
Стаж: 9 лет 2 месяца

Сообщений: 155
Благодарностей: 114
Полезность: 692

Так добавь в open_menu ( id ) проверку на флаг.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 4.4.2017, 20:13
Сообщение #3


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

На вот, читай: хопа

Отредактировал: kolobok1, - 4.4.2017, 20:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 4.4.2017, 20:20
Сообщение #4


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Cкрытый текст
Код:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fakemeta >
#include < hamsandwich >

new dMenu [ 36 ][ 64 ], dChat [ 36 ][ 64 ], dView [ 36 ][ 64 ], dPlayer [ 36 ][ 64 ], dCost [ 36 ][ 64 ], dLines;
new knife [ 33 ];

public plugin_init ()
{
register_plugin ( "Knives Shop", "1.2", "OverGame" );

register_clcmd ( "say /knife", "open_menu", ADMIN_LEVEL_B );
register_clcmd ( "say_team /knife", "open_menu", ADMIN_LEVEL_B );

RegisterHam ( Ham_Item_Deploy, "weapon_knife", "fwd_Deploy_Knife", 1 );
register_dictionary ( "knives.txt" );
}

public plugin_precache ()
{
read_data_ini ();
for ( new index; index < dLines; index++ )
{
precache_model ( dView [ index ] );
precache_model ( dPlayer [ index ] );
}
}

public open_menu ( id, level, cid )
{

if (!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;

new szCaption [ 255 ], menu;
format ( szCaption, charsmax ( szCaption ), "\d[%L]^n\r%L", LANG_SERVER, "MENU_PREFIX", LANG_SERVER, "MENU_CAPTION" );
menu = menu_create ( szCaption, "func_omenu" );

for ( new i; i < dLines; i++ )
{
new szTemp [ 10 ];
num_to_str ( i, szTemp, charsmax ( szTemp ) );
menu_additem ( menu, dMenu [ i ], szTemp );
}

menu_setprop ( menu, MPROP_BACKNAME, "Назад" );
menu_setprop ( menu, MPROP_NEXTNAME, "Далее" );
menu_setprop ( menu, MPROP_EXITNAME, "Выход" );



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

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

new data [ 15 ], iName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,15, iName, 64, callback );

new key = str_to_num ( data );
if ( str_to_num ( dCost [ key ] ) <= cs_get_user_money ( id ) )
{
knife [ id ] = key;
chat_send ( id, "!g[%L]!y %s", LANG_SERVER, "CHAT_PREFIX", dChat [ key ] );
cs_set_user_money ( id, cs_get_user_money ( id ) - str_to_num ( dCost [ key ] ) );

set_user_knife ( id );
} else {
chat_send ( id, "!g[%L]!y %L", LANG_SERVER, "CHAT_PREFIX", LANG_SERVER, "CHAT_NO_MONEY" );
}

return PLUGIN_HANDLED;
}

public fwd_Deploy_Knife ( weapon )
{
new id = get_pdata_cbase ( weapon, 41, 4 );

if ( is_user_alive ( id ) )
{
set_pev ( id, pev_viewmodel2, dView [ knife [ id ] ] );
set_pev ( id, pev_weaponmodel2, dPlayer [ knife [ id ] ] );
}

return HAM_IGNORED;
}

stock set_user_knife ( id )
{
if ( is_user_alive ( id ) )
{
engclient_cmd ( id, "weapon_knife" );
set_pev ( id, pev_viewmodel2, dView [ knife [ id ] ] );
set_pev ( id, pev_weaponmodel2, dPlayer [ knife [ id ] ] );
}
}

stock chat_send ( const id, const input [ ], any:... )
{
new count = 1, players [ 32 ];
static msg [ 188 ];
vformat ( msg, 187, input, 3 );

replace_all ( msg, 187, "!g", "^4" );
replace_all ( msg, 187, "!y", "^1" );
replace_all ( msg, 187, "!t", "^3" );

if ( id ) players [ 0 ] = id; else get_players ( players, count, "ch" );
{
for ( new i = 0; i < count; i++ )
{
if ( is_user_connected ( players [ i ] ) )
{
message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "SayText" ), _, players [ i ] );
write_byte ( players [ i ] );
write_string ( msg );
message_end ();
}
}
}
}

stock read_data_ini ()
{
new len, buffer [ 256 ];
new file = fopen ( "/addons/amxmodx/configs/knives.ini", "r" );

while ( !feof ( file ) )
{
fgets ( file, buffer, 255 );
trim ( buffer );

if ( buffer [ 0 ] == '"' )
{
parse ( buffer, dMenu [ len ], 63, dChat [ len ], 63, dView [ len ], 63, dPlayer [ len ], 63, dCost [ len ], 63 );
} else {
continue;
}
len++;
}
dLines = len;
fclose ( file );
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: