Меню привилегий для ZP 4.3

Сообщения
7
Реакции
0
Ошибка
(22) : error 072: "sizeof" operator is invalid on "function" symbols
(24) : error 017: undefined symbol "RegisterHam"
(24) : error 017: undefined symbol "WEAPONENTNAMES"
(24) : warning 215: expression has no effect
(24) : error 001: expected token: ";", but found "]"
(24) : fatal error 107: too many error messages on one line
Компилятор
Локальный
Amx Mod X
1.9.0
Исходный код
#include < amxmodx >
#include < cstrike >
#include < zombieplague >
#include < fun >
#include < fakemeta >

#define VIP_FLAG ADMIN_LEVEL_A // Вип флаг - m

new const PLUGIN_INFO[ ] =
{
"menu privilegiy",
"1.1",
"Sanecka"
}

public plugin_init( )
{
register_plugin( PLUGIN_INFO[ 0 ] , PLUGIN_INFO[ 1 ] , PLUGIN_INFO [ 2 ] )

register_clcmd("/menu_pri" , "menu_privilegij" )

for(new i = 0; i < sizeof WEAPONENTNAMES; i++)
{
RegisterHam(Ham_Weapon_PrimaryAttack, WEAPONENTNAMES[i], "CWeapon__Fire_Post", true );
RegisterHam(Ham_Weapon_SecondaryAttack, WEAPONENTNAMES[i], "CWeapon__Fire_Post", true );
}
}

public menu_privilegij( pPlayer )
{
new g_Menu = menu_create( "\r[\yМеню привилегий\r]" , "ClCmd_Menu_Handler" )

menu_additem( g_Menu , "\r[\yВип меню\r]" , "1" )

menu_additem( g_Menu , "\r[\yАдмин меню\r]" , "2" )

menu_additem( g_Menu , "\r[\yМодератор меню\r]" , "3" )

menu_additem( g_Menu , "\r[\yUmbrella Weapon\r]" , "4" )

menu_additem( g_Menu , "\r[\yБелая ночь\r] [\dВкл/Выкл\r]" , "5" )

len += formatex(menu[len], charsmax(menu) - len, "^n\r[\y6\r] \wНет отдачи \r[\y%s\r]", (gl_iPlayerData[UNRECAMMO][iPlayer] == 0) ? "Выкл" : "Вкл");

if(get_user_flags(iPlayer) & VIP_FLAG)
{
len += formatex(menu[len], charsmax(menu) - len, "^n\r[\y6\r] \wНет отдачи \r[\y%s\r]", (gl_iPlayerData[UNRECAMMO][iPlayer] == 0) ? "Выкл" : "Вкл");
iKeys |= MENU_KEY_6|
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "^n\r[\y6\r] \dНет отдачи");
}

menu_additem( g_Menu , "\r[\yУправление меню\r]" , "7" )

menu_setprop( g_Menu , MPROP_EXITNAME , "Выход" )

menu_setprop( g_Menu , MPROP_EXIT , MEXIT_ALL )

menu_display( pPlayer , g_Menu , 0 )
}

public ClCmd_Menu_Handler( id, pMenu, pItem )
{
if ( pItem == MENU_EXIT )
{
menu_destroy( pMenu )
return PLUGIN_HANDLED;
}

new pData[ 6 ], pName[ 64 ], pAccess, pCallback

menu_item_getinfo( pMenu , pItem , pAccess , pData , charsmax( pData ) , pName , charsmax( pName ) , pCallback )

new pKey = str_to_num( pData )

switch( pKey )
{
case 1:
{
client_cmd(id, "/vip_menu")
}
case 2:
{
client_cmd(id, "/admin_menu")
}
case 3:
{
client_cmd(id, "amxmodmenu")
}
case 4:
{
client_cmd(id, "/umb_wpn")
}
case 5:
{
client_cmd(id, "/nightvision")
}
case 6:
{
gl_iPlayerData[UNRECAMMO][iPlayer] = (gl_iPlayerData[UNRECAMMO][iPlayer] == 0) ? 1 : 0;
}
case 7:
{
client_cmd(id, "/give_lvl_menu")
}
}

menu_destroy( pMenu )
return PLUGIN_HANDLED
}

public CWeapon__Fire_Post( iItem ) {

static pPlayer; pPlayer = get_pdata_cbase( iItem, m_pPlayer, extra_offset_weapon );

if( gl_iPlayerData[UNRECAMMO][pPlayer] == 1 && (get_user_flags(pPlayer) & PREMIUM_FLAG) && !zp_get_user_zombie(pPlayer) && !zp_get_user_survivor(pPlayer) )
{
static Float: flAccuracy;

switch( get_pdata_int( iItem, m_iId, extra_offset_weapon ) )
{
case CSW_AK47, CSW_AUG, CSW_FAMAS, CSW_GALIL, CSW_M249, CSW_M4A1, CSW_MAC10, CSW_MP5NAVY, CSW_P90, CSW_SG552, CSW_TMP, CSW_UMP45: flAccuracy = 0.0;
case CSW_DEAGLE, CSW_ELITE, CSW_GLOCK18, CSW_P228, CSW_G3SG1, CSW_SG550, CSW_USP: flAccuracy = 1.0;
default: flAccuracy = 0.0; // btw other weapons not have a m_flAccuracy offset
}

set_pev( pPlayer, pev_punchangle, Float:{ 0.01, 0.01, 0.01 } );
set_pdata_float( iItem, m_flAccuracy, flAccuracy, extra_offset_weapon );
}

return HAM_IGNORED;
}

stock PrintChatColor( const id , const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4" ) // Green Color
replace_all(msg, 190, "!y", "^1" ) // Default Color
replace_all(msg, 190, "!team", "^3" ) // Team Color

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();
}
}
}
}
В общем я хочу сделать переключалку Функции (Нет отдачи) [Вкл] [Выкл] прямо в меню. Взял код из старого вип меню где были функции и код, под функцией я подразумеваю нажал на пункт у тебя загорелось [Вкл] функция работает, нажал ещё раз, загорелось [Выкл] функция не работает. В общем просто добавил функцию, прописал в меню и не знаю почему не работает, я не разбираюсь. Надеюсь поможете
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
7
Реакции
0
Murz, добавил инклюд hamsandwich и ошибки стали такими (25) : error 072: "sizeof" operator is invalid on "function" symbols - (27) : error 017: undefined symbol "WEAPONENTNAMES" - (27) : warning 215: expression has no effect - (27) : warning 215: expression has no effect - (27) : error 001: expected token: ";", but found "]" - (27) : error 029: invalid expression, assumed zero - (27) : fatal error 107: too many error messages on one line
 
Сообщения
72
Реакции
81
Помог
5 раз(а)
Код:
#include < amxmodx >
#include < zombieplague >
#include < fakemeta >
#include < hamsandwich >

new const PLUGIN_INFO[ ] =
{
    "menu privilegiy",
    "1.1",
    "Sanecka"
}

new gUnRecAmmo[33] = false;

new const WEAPONENTNAMES[][] = { "weapon_p228", "weapon_xm1014", "weapon_mac10", "weapon_aug", "weapon_elite",
    "weapon_fiveseven", "weapon_ump45", "weapon_sg550",    "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18",
    "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1",
    "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_p90" }

public plugin_init( )
{
    register_plugin( PLUGIN_INFO[ 0 ] , PLUGIN_INFO[ 1 ] , PLUGIN_INFO [ 2 ] )

    register_clcmd("/menu_pri" , "menu_privilegij" )
    
    for(new i = 0; i < sizeof (WEAPONENTNAMES); i++)
    {
        RegisterHam(Ham_Weapon_PrimaryAttack, WEAPONENTNAMES[i], "CWeapon__Fire_Post", true );
        RegisterHam(Ham_Weapon_SecondaryAttack, WEAPONENTNAMES[i], "CWeapon__Fire_Post", true );
    }
}

public client_connect(id)
{
    gUnRecAmmo[id] = false;
}

public menu_privilegij( pPlayer )
{
    new g_Menu = menu_create( "\r[\yМеню привилегий\r]" , "ClCmd_Menu_Handler" )

    menu_additem( g_Menu , "\r[\yВип меню\r]" , "1" )
    
    menu_additem( g_Menu , "\r[\yАдмин меню\r]" , "2" )

    menu_additem( g_Menu , "\r[\yМодератор меню\r]" , "3" )
    
    menu_additem( g_Menu , "\r[\yUmbrella Weapon\r]" , "4" )
    
    menu_additem( g_Menu , "\r[\yБелая ночь\r] [\dВкл/Выкл\r]" , "5" )
    
    menu_additem( g_Menu , fmt("\wНет отдачи \r[\y%s\r]", gUnRecAmmo[pPlayer] ? "Вкл" : "Выкл") , "6" )
        
    menu_additem( g_Menu , "\r[\yУправление меню\r]" , "7" )

    menu_setprop( g_Menu , MPROP_EXITNAME , "Выход" )

    menu_setprop( g_Menu , MPROP_EXIT , MEXIT_ALL )

    menu_display( pPlayer , g_Menu , 0 )   
}

public ClCmd_Menu_Handler( id, pMenu, pItem )
{
    if ( pItem == MENU_EXIT )
    {
        menu_destroy( pMenu )
        return PLUGIN_HANDLED;
    }

    new pData[ 6 ], pName[ 64 ], pAccess, pCallback

    menu_item_getinfo( pMenu , pItem , pAccess , pData , charsmax( pData ) , pName , charsmax( pName ) , pCallback )

    new pKey = str_to_num( pData )

    switch( pKey )
    {
    case 1:
        {       
            client_cmd(id, "/vip_menu")
        }
    case 2:
        {
            client_cmd(id, "/admin_menu")
        }
    case 3:
        {
            client_cmd(id, "amxmodmenu")
        }
    case 4:
        {
            client_cmd(id, "/umb_wpn")
        }
    case 5:
        {
            client_cmd(id, "/nightvision")
        }
    case 6:
        {
            gUnRecAmmo[id] = !gUnRecAmmo[id];
        }
    case 7:
        {
            client_cmd(id, "/give_lvl_menu")
        }       
    }

    menu_destroy( pMenu )
    return PLUGIN_HANDLED
}

#define extra_offset_weapon        4

// CBasePlayerItem
#define m_pPlayer        41
#define m_iId            43
#define m_flAccuracy    62

public CWeapon__Fire_Post( iItem )    {

    new pPlayer = get_pdata_cbase( iItem, m_pPlayer, extra_offset_weapon );
    
    if (!gUnRecAmmo[pPlayer] || zp_get_user_zombie(pPlayer) || zp_get_user_survivor(pPlayer))
        return HAM_IGNORED;
    
    new Float: flAccuracy;

    switch( get_pdata_int( iItem, m_iId, extra_offset_weapon ) )
    {
        case CSW_AK47, CSW_AUG, CSW_FAMAS, CSW_GALIL, CSW_M249, CSW_M4A1, CSW_MAC10, CSW_MP5NAVY, CSW_P90, CSW_SG552, CSW_TMP, CSW_UMP45: flAccuracy = 0.0;
        case CSW_DEAGLE, CSW_ELITE, CSW_GLOCK18, CSW_P228, CSW_G3SG1, CSW_SG550, CSW_USP: flAccuracy = 1.0;
        default: flAccuracy = 0.0; // btw other weapons not have a m_flAccuracy offset
    }
        
    set_pev( pPlayer, pev_punchangle, Float:{ 0.01, 0.01, 0.01 } );
    set_pdata_float( iItem, m_flAccuracy, flAccuracy, extra_offset_weapon );

    return HAM_IGNORED;
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу