AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   [Fix]Vipmenu (https://forums.alliedmods.net/showthread.php?t=232557)

driger38 01-01-2014 13:21

[Fix]Vipmenu
 
Code:

#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fakemeta >
#include < fun >
#include < hamsandwich >

#define PLUGIN "VIP Menu"
#define VERSION "1.0"
#define AUTHOR "AMXX Community"

#define JUMPS_NUMBER 1 // 1 means +1 (2 jumps)

enum _:Items {
    HEALTH = 0,
    HEGRENADE,
    RESPAWN,
    AMMO,
    DOUBLE_JUMP,
    SILENT_RUN
};

new const g_szMenuItems[ ][ ] = {
    "+25 HP",
    "Hegrenade",
    "Respawn (25hp)",
    "Ammo Refill",
    "Double Jump"
//    "Silent Run"
};

new const g_szRegClCmd[ ][ ] = {
    "say /vipmenu",
    "say .vipmenu",
    "say vipmenu",
    "say_team .vipmenu",
    "say_team /vipmenu",
    "say_team vipmenu"
};

new bool:g_bItemUsed[ 33 ][ Items ];
new bool:g_bMenuOpened[ 33 ];
new bool:g_bDoJump[ 33 ];
new g_iJumps[ 33 ], g_Callback;

public plugin_init( ) {
    register_plugin( PLUGIN, VERSION, AUTHOR );
   
    register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" );
   
    for( new i = 0; i < sizeof( g_szRegClCmd ); i++ )
        register_clcmd( g_szRegClCmd[ i ], "Menu_Vip", ADMIN_RESERVATION );
   
    g_Callback = menu_makecallback( "MenuItems_Check" );
   
    RegisterHam( Ham_Spawn, "player", "Forward__PlayerSpawn_Post", 1 );
    register_forward( FM_PlayerPreThink, "Forward__PlayerPreThink" );
    register_forward( FM_PlayerPostThink, "Forward__PlayerPostThink" );
}

public Menu_Vip( id, lvl, cid ) {
    if( !has_flag( id, "b" ) || g_bMenuOpened[ id ] )
        return PLUGIN_HANDLED;
   
    new menu = menu_create( "V.I.P Menu", "MenuHandler_Vip" );
   
    for( new i = 0; i < sizeof( g_szMenuItems ); i++ )
        menu_additem( menu, g_szMenuItems[ i ], _, _, g_Callback );
   
    menu_display( id, menu, 0 );
    return PLUGIN_HANDLED;
}

public MenuItems_Check( id, menu, item ) {
    switch( item ) {
        case 0: {
            if( g_bItemUsed[ id ][ HEALTH ] || pev( id, pev_health ) > 75.0 )           
                return ITEM_DISABLED;   
        }
        case 1: {
            if( g_bItemUsed[ id ][ HEGRENADE ] || user_has_weapon( id, CSW_HEGRENADE ) )
                return ITEM_DISABLED;
        }
        case 2: {
            if( g_bItemUsed[ id ][ RESPAWN ] || pev( id, pev_health ) > 25.0 )
                return ITEM_DISABLED;
        }
        case 3: {
            if( g_bItemUsed[ id ][ AMMO ] )
                return ITEM_DISABLED;
        }
        case 4: {
            if( g_bItemUsed[ id ][ DOUBLE_JUMP ] )
                return ITEM_DISABLED;
        }
        case 5: {
            if( g_bItemUsed[ id ][ SILENT_RUN ] )           
                return ITEM_DISABLED;
        }
    }
    return ITEM_ENABLED;
}

public MenuHandler_Vip( id, menu, item ) {
    if( item == MENU_EXIT ) {
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }
   
    switch( item ) {
        case 0:
        { 
            set_pev( id, pev_health, pev( id, pev_health ) + 25.0 );
            g_bItemUsed[ id ][ HEALTH ] = true;
        }
        case 1:
        {
            give_item( id, "weapon_hegrenade" );
            g_bItemUsed[ id ][ HEGRENADE ] = true;
        }
        case 2:
        {
            ExecuteHamB( Ham_CS_RoundRespawn, id );
            g_bItemUsed[ id ][ RESPAWN ] = true; 
        }
        case 3:
        {
            new iWeapon = get_user_weapon( id );
            set_weapon_fullammo( id, iWeapon );
           
            g_bItemUsed[ id ][ AMMO ] = true;   
        }
        case 4:
        {
            g_bItemUsed[ id ][ DOUBLE_JUMP ] = true;
        }
        case 5:
        {
            set_user_footsteps( id, 1 );
            g_bItemUsed[ id ][ SILENT_RUN ] = true;
        }
    }   
    g_bMenuOpened[ id ] = true;
    menu_destroy( menu );
    return PLUGIN_HANDLED;
}

public Event_NewRound( iPlayer ) {
    g_bItemUsed[ iPlayer ][ HEALTH ] = false;
    g_bItemUsed[ iPlayer ][ HEGRENADE ] = false;
    g_bItemUsed[ iPlayer ][ RESPAWN ] = false;
    g_bItemUsed[ iPlayer ][ AMMO ] = false;
   
    if( g_bItemUsed[ iPlayer ][ DOUBLE_JUMP ] ) {
        g_bItemUsed[ iPlayer ][ DOUBLE_JUMP ] = false;
        g_bDoJump[ iPlayer ] = false;
        g_iJumps[ iPlayer ] = 0;
    }
   
    if( g_bItemUsed[ iPlayer ][ SILENT_RUN ] ) {
        g_bItemUsed[ iPlayer ][ SILENT_RUN ] = false;
        set_user_footsteps( iPlayer, 0 ); 
    }   
   
    g_bMenuOpened[ iPlayer ] = false;     
}   

public Forward__PlayerSpawn_Post( iPlayer ) {
    g_bItemUsed[ iPlayer ][ HEALTH ] = false;
    g_bItemUsed[ iPlayer ][ HEGRENADE ] = false;
    g_bItemUsed[ iPlayer ][ RESPAWN ] = false;
    g_bItemUsed[ iPlayer ][ AMMO ] = false;
   
    if( g_bItemUsed[ iPlayer ][ DOUBLE_JUMP ] ) {
        g_bItemUsed[ iPlayer ][ DOUBLE_JUMP ] = false;
        g_bDoJump[ iPlayer ] = false;
        g_iJumps[ iPlayer ] = 0;
    }
   
    if( g_bItemUsed[ iPlayer ][ SILENT_RUN ] ) {
        g_bItemUsed[ iPlayer ][ SILENT_RUN ] = false;
        set_user_footsteps( iPlayer, 0 );     
    }
    g_bMenuOpened[ iPlayer ] = false;     
}

public Forward__PlayerPreThink( iPlayer ) {
    if( g_bItemUsed[ iPlayer ][ DOUBLE_JUMP ] ) {
        if( !( pev( iPlayer, pev_button ) & IN_JUMP ) )
            return;
       
        if( !( pev( iPlayer, pev_oldbuttons ) & IN_JUMP ) && !( pev( iPlayer, pev_flags ) & FL_ONGROUND ) ) {
            if( g_iJumps[ iPlayer ] < JUMPS_NUMBER )
            {
                g_bDoJump[ iPlayer ] = true;
                g_iJumps[ iPlayer ]++;
            }
        }
        else if( pev( iPlayer, pev_flags ) & FL_ONGROUND ) {
            g_iJumps[ iPlayer ] = 0;   
            return;
        }
    }
}

public Forward__PlayerPostThink( iPlayer ) {
    if( !g_bDoJump[ iPlayer ] )
        return;
   
    static Float:fVelocity[ 3 ];
    pev( iPlayer, pev_velocity, fVelocity );
   
    fVelocity[ 2 ] = 265.0;       
   
    set_pev( iPlayer, pev_velocity, fVelocity );
    g_bDoJump[ iPlayer ] = false;   
}

stock set_weapon_fullammo(id, CSW_WEAPON) {
    static const iBPAmmo[CSW_P90 + 1] = { 
        0, 52, 90, -1, 32, -1, 100, 90, 1, 120, 100, 120, 90, 90, 90,
        90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 1, 35, 90, 90, -1, 100
    }
   
    static const NullWeapons = ( (1<<CSW_C4) | (1<<CSW_KNIFE) )
   
    if( (1<<CSW_WEAPON) & NullWeapons || (!(CSW_P228 <= CSW_WEAPON <= CSW_P90) ) || !is_user_connected(id))
        return 0
   
    cs_set_user_bpammo(id, CSW_WEAPON, iBPAmmo[CSW_WEAPON])
   
    return 1
}

So basically the problem:
Ammo Refill gives alot of nades. (tried with HE- nades. equipped it and used ammo refill. Then i had 32 Nades). So how do make so that it doesnt Give any nades ( got reported that it had same bug with flashes and smokes also)


All times are GMT -4. The time now is 20:36.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.