AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Help with plugin crossbow (https://forums.alliedmods.net/showthread.php?t=213346)

Kopcha 04-13-2013 16:18

Help with plugin crossbow
 
Hello, please help, I want to do that would be a weapon just bought admins and other players, it was closed! Such as the new administrator privileges

Code:

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include < xs >
#include <zombieplague>

// Plugin info
new const PLUGIN[] = "[ZP] Extra Item: Crossbow"
new const VERSION[] = "1.7"
new const AUTHOR[] = "Kopcha =D"

new bool: g_has_grenade[33]

// Crossbow/Bolt models
new const P_MODEL[] = "models/zpdd/p_crossbow_cso.mdl"
new const V_MODEL[] = "models/zpdd/v_crossbow_cso.mdl"
new const W_MODEL[] = "models/zpdd/w_crossbow_cso.mdl"
new const BOLT_MODEL[] = "models/zpdd/crossbow_bolt.mdl"
// Grenade model
new const P_GRENADE[] = "models/zpdd/p_m24grenade.mdl"
new const V_GRENADE[] = "models/zpdd/v_m24grenadefix.mdl"
new const W_GRENADE[] = "models/zpdd/w_m24grenade.mdl"

// Some sounds
new const XBOW_SHOOT[] = "weapons/crossbow-1.wav"

#define CrossbowClip                50
#define CrossbowBpAmmo        200
#define CrossbowDamage        100.0 // Per shot
#define CrossbowReloadTime        3.7
#define GrenadeDmgMulti        6.0

// Item Cost
#define COST 55

// Item ID
new g_crossbow

// Player variables
new g_hasXbow[33] // whether player has Crossbow
new g_iGrenadeCount[33]
new g_iCurrentWeapon[33]
new Float:g_last_shot_time[33] // Last time Crossbow used
new g_FullClip[33] // whether player has Full Clip
new g_bInReload[33]

// Global vars
new g_restarted, gmsgAmmoPickup, g_grenade

const m_pPlayer = 41
const m_iId = 43
const m_fKnown = 44
const m_flNextPrimaryAttack = 46
const m_flNextSecondaryAttack = 47
const m_flTimeWeaponIdle = 48
const m_iPrimaryAmmoType = 49
const m_iClip = 51
const m_fInReload = 54
const m_fInSpecialReload = 55
const m_fSilent = 74
const m_flNextAttack = 83
const m_rgAmmo_player_Slot0 = 376

const DMG_HEGRENADE = ( 1 << 24 )

#define pev_weaponkey                        pev_impulse
#define CROSSBOW_WEAPONKEY                1966712
#define HoldCrossbow(%0)                ( g_hasXbow[ %0 ] && g_iCurrentWeapon[ %0 ] == CSW_AWP )

// Weapon animation sequences
enum
{
        crossbow_idle,
        crossbow_shoot1,
        crossbow_shoot2,
        crossbow_reload,
        crossbow_draw
}

const PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)       


// Precache
public plugin_precache()
{
        // Models
        precache_model(P_MODEL)
        precache_model(V_MODEL)
        precache_model(W_MODEL)
        precache_model(BOLT_MODEL)
        precache_model( P_GRENADE )
        precache_model( V_GRENADE )
        precache_model( W_GRENADE )

        // Sounds
        precache_sound(XBOW_SHOOT)
}

// Init
public plugin_init()
{
        // New plugin
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_cvar("zp_xbow_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)
       
        // New extra item
        g_crossbow = zp_register_extra_item("Crossbow", COST , ZP_TEAM_HUMAN)

        // Events
        register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
        register_event( "CurWeapon", "EV_CurWeapon", "be", "1=1" )
        register_event("TextMsg", "Event_GameRestart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in");
       
        register_forward( FM_SetModel, "fw_SetModel" )
        register_forward( FM_CmdStart, "fw_CmdStart" )
        register_forward( FM_UpdateClientData, "fw_UpdateClientaData_Post", 1 )
        RegisterHam( Ham_Killed, "player", "fw_PlayerKilled" )
        RegisterHam( Ham_Item_Deploy, "weapon_awp", "fw_CrossbowDeploy_Post", 1 )
        RegisterHam( Ham_TakeDamage, "player", "fw_PlayerTakeDamage_Post" )
        RegisterHam( Ham_Item_AddToPlayer, "weapon_awp", "fw_CrossbowAddToPlayer" )
        RegisterHam( Ham_Item_PostFrame, "weapon_awp", "fw_CrossbowPostFrame" )
        RegisterHam( Ham_Weapon_Reload, "weapon_awp", "fw_CrossbowReload_Post", 1 )
       
        register_message( get_user_msgid( "DeathMsg" ), "fn_DeathMsg" )
       
        gmsgAmmoPickup = get_user_msgid( "AmmoPickup" )
}

public zp_extra_item_selected( Player, Item )
{
        if( Item == g_crossbow )
        {
                DropWeapons( Player, 1 )
                g_hasXbow[ Player ] = true
                give_item( Player, "weapon_awp" )
               
                static iEnt
                iEnt = find_ent_by_owner( -1, "weapon_awp", Player )
               
                cs_set_weapon_ammo( iEnt, CrossbowClip )
                cs_set_user_bpammo( Player, CSW_AWP, CrossbowBpAmmo )
        }
       
        if( Item == g_grenade )
        {
                if( user_has_weapon( Player, CSW_HEGRENADE ) && g_iGrenadeCount[ Player ] <= 0 )
                {
                        g_iGrenadeCount[ Player ] = 1
                        emit_sound( Player, CHAN_WEAPON, "items/9mmclip1.wav", 1.0, 1.0, 0, 100 )
                        return PLUGIN_HANDLED
                }
                       
                if( !g_iGrenadeCount[ Player ] )
                {
                        g_iGrenadeCount[ Player ] = 1
                        give_item( Player, "weapon_hegrenade" )
                }
                else
                {
                        g_iGrenadeCount[ Player ]++
                        cs_set_user_bpammo( Player, CSW_HEGRENADE, g_iGrenadeCount[ Player ] )
                        emit_sound( Player, CHAN_WEAPON, "items/9mmclip1.wav", 1.0, 1.0, 0, 100 )
                       
                        message_begin( MSG_ONE, gmsgAmmoPickup, _, Player )
                        write_byte( 12 )
                        write_byte( 1 )
                        message_end( )
                }
        }
        return PLUGIN_CONTINUE
}

public zp_user_infected_post( Player, Infector )
{
        g_iGrenadeCount[ Player ] = 0
}

public zp_user_humanized_post( Player, Survivor )
{
        g_iGrenadeCount[ Survivor ] = 0
}

public EV_CurWeapon( Player )
{
        if( !is_user_alive( Player ) )
                return PLUGIN_CONTINUE
               
        g_iCurrentWeapon[ Player ] = read_data( 2 )
       
        if( g_iCurrentWeapon[ Player ] == CSW_HEGRENADE )
        {
                if( g_iGrenadeCount[ Player ] >= 1 )
                {
                        set_pev( Player, pev_viewmodel2, V_GRENADE )
                        set_pev( Player, pev_weaponmodel2, P_GRENADE )
                }
        }
       
        return PLUGIN_CONTINUE
}

public fw_SetModel (iEnt, const szModel[ ] )
{
        if( !pev_valid( iEnt ) )
                return FMRES_IGNORED
               
        static szClassname[ 32 ]
        pev( iEnt, pev_classname, szClassname, 31 )
       
        static iOwner, iWeaponID
        iOwner = pev( iEnt, pev_owner )
       
        if( equal( szModel[ 7 ], "w_he", 4 ) )
        {
                if( g_iGrenadeCount[ iOwner ] >= 1 )
                {
                        g_has_grenade[iOwner] = true
                        g_iGrenadeCount[ iOwner ]--
                        set_task(3.0, "remove", iOwner)
                        set_pev( iEnt, pev_flTimeStepSound, 0 )
                        engfunc( EngFunc_SetModel, iEnt, W_GRENADE )
                        return FMRES_SUPERCEDE
                }
        }
       
        if( !equal( szClassname, "weaponbox" ) )
                return FMRES_IGNORED
       
        if( equal( szModel[ 7 ], "w_aw", 4 ) )       
        {
                iWeaponID = find_ent_by_owner( -1, "weapon_awp", iEnt )
               
                if( g_hasXbow[ iOwner ] && is_valid_ent( iWeaponID ) )
                {
                        set_pev( iWeaponID, pev_weaponkey, CROSSBOW_WEAPONKEY )
                        g_hasXbow[ iOwner ] = false
                        engfunc( EngFunc_SetModel, iEnt, W_MODEL )
                        return FMRES_SUPERCEDE
                }
        }
        return FMRES_IGNORED
}

public remove(id)
{
        g_has_grenade[id] = false
}

public fw_CmdStart( Player, UC_Handle, Seed )
{
        if( !is_user_alive( Player ) || zp_get_user_zombie( Player ))
                return FMRES_IGNORED
               
        if( HoldCrossbow( Player ) )
        {
                static afButtons
                afButtons = get_uc( UC_Handle, UC_Buttons )
               
                if( afButtons & IN_ATTACK )
                {
                        afButtons &= ~IN_ATTACK
                        set_uc( UC_Handle, UC_Buttons, afButtons )
                       
                        if( get_gametime( ) - g_last_shot_time[ Player ] < 0.13 )
                                return FMRES_IGNORED
                               
                        static iEnt
                        iEnt = find_ent_by_owner( -1, "weapon_awp", Player )
                       
                        if( get_pdata_int( iEnt, m_fInReload, 4 ) )
                                return FMRES_IGNORED
                       
                        static iAmmo
                        iAmmo = cs_get_weapon_ammo( iEnt )
                       
                        if( iAmmo <= 0 )
                        {
                                ExecuteHamB( Ham_Weapon_PlayEmptySound, iEnt )
                                return FMRES_IGNORED
                        }
                       
                        FireBolt( Player )
                        cs_set_weapon_ammo( iEnt, --iAmmo )
                        g_last_shot_time[ Player ] = get_gametime( )
                }
        }
        return FMRES_HANDLED
}

public fw_UpdateClientaData_Post( Player, SendWeapons, CD_Handle )
{
        if( !is_user_alive( Player ) || zp_get_user_zombie( Player ))
                return FMRES_IGNORED
               
        if( HoldCrossbow( Player ) )
        {
                set_cd( CD_Handle, CD_flNextAttack, halflife_time( ) + 0.001 )
                return FMRES_HANDLED
        }
        return FMRES_IGNORED
}
       
public fw_PlayerKilled( iVictim, iKiller, iGib )
{
        g_iGrenadeCount[ iVictim ] = 0
}

public fw_PlayerTakeDamage_Post( iVictim, iInflictor, iAttacker, Float:flDamage, iDmgBits )
{
        if( !is_user_connected( iAttacker ) )
                return HAM_IGNORED
       
        if( zp_get_user_zombie( iAttacker ) )
                return HAM_IGNORED
       
        if( iDmgBits & DMG_HEGRENADE )
        {
                if( !zp_get_user_zombie( iVictim ) )
                        return HAM_SUPERCEDE
                       
                if( g_has_grenade[iAttacker])
                {
                        //client_print( 0, print_chat, "OLD DAMAGE: %f", flDamage )
                        flDamage *= GrenadeDmgMulti
                        SetHamParamFloat( 4, flDamage )
                        //client_print( 0, print_chat, "NEW DAMAFE: %f", flDamage )
                }
        }
        return HAM_IGNORED
}
       
public fw_CrossbowDeploy_Post( iEnt )
{
        static Player
        Player = get_pdata_cbase( iEnt, 41, 4 )
       
        if( g_hasXbow[ Player ] )
        {
                set_pev( Player, pev_viewmodel2, V_MODEL )
                set_pev( Player, pev_weaponmodel2, P_MODEL )
                UTIL_PlayWeaponAnimation( Player, crossbow_draw )
        }
}

public fw_CrossbowAddToPlayer( iEnt, Player )
{
        if( pev_valid( iEnt ) && is_user_connected( Player ) )
        {
                if( pev( iEnt, pev_weaponkey ) == CROSSBOW_WEAPONKEY )
                {
                        g_hasXbow[ Player ] = true
                }
                return HAM_HANDLED
        }
        return HAM_IGNORED
}

public fw_CrossbowPostFrame( iEnt )
{
        static Player
        Player = get_pdata_cbase( iEnt, 41, 4 )
       
        if( g_hasXbow[ Player ] )
        {
                static fInReload
                fInReload = get_pdata_int( iEnt, m_fInReload, 4 )
               
                static Float:flNextAttack
                flNextAttack = get_pdata_float( Player, m_flNextAttack, 5 )
               
                static iClip
                iClip = get_pdata_int( iEnt, m_iClip, 4 )
               
                static iBpAmmo
                iBpAmmo = cs_get_user_bpammo( Player, CSW_AWP )
               
                if( fInReload && flNextAttack <= 0.0 )
                {
                        static j
                        j = min ( CrossbowClip - iClip, iBpAmmo )
                       
                        set_pdata_int( iEnt, m_iClip, iClip + j, 4 )
                        cs_set_user_bpammo( Player, CSW_AWP, iBpAmmo - j )
                        set_pdata_int ( iEnt, m_fInReload, 0, 4 )
                        fInReload = 0
                }
               
                static iButton ; iButton = pev( Player, pev_button )
               
                if( ( iButton & IN_ATTACK2 && get_pdata_float( iEnt, m_flNextSecondaryAttack, 4 ) <= 0.0)
                || ( iButton & IN_ATTACK && get_pdata_float( iEnt, m_flNextPrimaryAttack, 4 ) <= 0.0) )
                {
                        return HAM_IGNORED
                }
               
                if( iButton & IN_RELOAD && !fInReload )
                {
                        if( iClip >= CrossbowClip )
                        {
                                set_pev( Player, pev_button, iButton & ~IN_RELOAD )
                                return HAM_SUPERCEDE
                        }
                        else
                        {
                                if ( !iBpAmmo )
                                        return HAM_IGNORED
                               
                                cs_set_user_zoom( Player, CS_RESET_ZOOM, 1 )
                                set_pdata_float( Player, m_flNextAttack, CrossbowReloadTime + 0.5, 5 )       
                                set_pdata_float( iEnt, m_flTimeWeaponIdle, CrossbowReloadTime + 1.0, 4 )
                                UTIL_PlayWeaponAnimation( Player, crossbow_reload )
                                set_pdata_int( iEnt, m_fInReload, 1, 4 )
                        }
                }
        }
        return HAM_IGNORED
}

public fw_CrossbowReload_Post( iEnt )
{
        static Player
        Player = get_pdata_cbase( iEnt, 41, 4 )
       
        if( g_hasXbow[ Player ] && get_pdata_int( iEnt, m_fInReload,4 ))
        {
                set_pdata_float( Player, m_flNextAttack, CrossbowReloadTime + 0.5, 5 )       
                set_pdata_float( iEnt, m_flTimeWeaponIdle, CrossbowReloadTime + 1.0, 4 )
                UTIL_PlayWeaponAnimation( Player, crossbow_reload )
        }
}

// When client connected, he cant have our weapon
public client_connect(id)
{
        g_hasXbow[id] = false
        g_FullClip[id] = false
        g_bInReload[id] = false
        g_iGrenadeCount[id ] = 0
}

// New round started
public Event_NewRound()
{
        if( g_restarted )
        {
                arrayset( g_hasXbow, false, 33 )
        }
       
        arrayset( g_iGrenadeCount, 0, 33 )
       
        g_restarted = false
}

// Restart
public Event_GameRestart()
{
        g_restarted = true
}

// Fire crossbow
public FireBolt( Player )
{
        static Float:plrViewAngles[ 3 ], Float:VecEnd[ 3 ], Float:VecDir[ 3 ], Float:PlrOrigin[ 3 ]
        pev( Player, pev_v_angle, plrViewAngles )
                                       
        static Float:VecSrc[ 3 ], Float:VecDst[ 3 ]
                               
        pev( Player, pev_origin, PlrOrigin )
        pev( Player, pev_view_ofs, VecSrc )
        xs_vec_add( VecSrc, PlrOrigin, VecSrc )
                                       
        angle_vector( plrViewAngles, ANGLEVECTOR_FORWARD, VecDir )
        xs_vec_mul_scalar( VecDir, 8192.0, VecDst )
        xs_vec_add( VecDst, VecSrc, VecDst )
                                       
        new hTrace = create_tr2( )
        engfunc( EngFunc_TraceLine, VecSrc, VecDst, 0, Player, hTrace )
                               
        new hitEnt = get_tr2( hTrace, TR_pHit )
        get_tr2( hTrace, TR_vecEndPos, VecEnd )
       
        message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
        write_byte( TE_WORLDDECAL )
        engfunc( EngFunc_WriteCoord, VecEnd[ 0 ] )
        engfunc( EngFunc_WriteCoord, VecEnd[ 1 ] )
        engfunc( EngFunc_WriteCoord, VecEnd[ 2 ] )
        write_byte( random_num( 41, 45 ) )
        message_end( )
               
        message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
        write_byte( TE_GUNSHOTDECAL )
        engfunc( EngFunc_WriteCoord, VecEnd[ 0 ] )
        engfunc( EngFunc_WriteCoord, VecEnd[ 1 ] )
        engfunc( EngFunc_WriteCoord, VecEnd[ 2 ] )
        write_short( Player )
        write_byte( random_num( 41, 45 ) )
        message_end( )
                       
        if( pev_valid( hitEnt ) )
        {
                new Float:takeDamage
                pev( hitEnt, pev_takedamage, takeDamage )
                               
                if( takeDamage != 0.0 )
                {
                        new Float:flDamage
                        flDamage = CrossbowDamage
                       
                        new hitGroup = get_tr2( hTrace, TR_iHitgroup )
                               
                        switch( hitGroup )
                        {
                                case HIT_HEAD: { flDamage *= 7.0; }
                                case HIT_LEFTARM: { flDamage *= 5.0; }
                                case HIT_RIGHTARM: { flDamage *= 5.0; }
                                case HIT_LEFTLEG: { flDamage *= 4.9; }
                                case HIT_RIGHTLEG: { flDamage *= 4.9; }
                        }
                                                       
                        if( is_user_connected( hitEnt ) )
                        {
                                ExecuteHamB( Ham_TakeDamage, hitEnt, Player, Player, flDamage, DMG_BULLET | DMG_NEVERGIB )
                                ExecuteHamB( Ham_TraceBleed, hitEnt, flDamage, VecDir, hTrace, DMG_BULLET | DMG_NEVERGIB )
                                //make_blood( VecEnd, flDamage, hitEnt )
                        }
                        else
                        {
                                static szClassName[ 32 ]
                                pev( hitEnt, pev_classname, szClassName, 31 )
                               
                                if( equal( szClassName, "func_breakable" ) )
                                {
                                        static Float:flhealth
                                        flhealth = entity_get_float( hitEnt, EV_FL_health )
                                       
                                        if( flhealth - CrossbowDamage >= 1 )
                                        {
                                                entity_set_float( hitEnt, EV_FL_health, flhealth - CrossbowDamage )
                                        }
                                        else
                                        {
                                                dllfunc( DLLFunc_Use, hitEnt, Player )
                                        }
                                }
                        }
                }
                                                       
                free_tr2( hTrace )
        }               
                       
       
        // Play sound
        emit_sound( Player, CHAN_WEAPON, XBOW_SHOOT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
        UTIL_PlayWeaponAnimation( Player, crossbow_shoot1 )
        set_pev( Player, pev_punchangle, Float:{ -2.5, 0.0, 0.0 } )
       
        return PLUGIN_CONTINUE
}

public fn_DeathMsg( Player, Dest, iEntity )
{
        static iVictim, iKiller
        iKiller = get_msg_arg_int( 1 )
        iVictim = get_msg_arg_int( 2 )       
       
        if( !is_user_connected( iVictim ) || iKiller == iVictim )
                return PLUGIN_CONTINUE
               
        static szWeapon[ 32 ]
        get_msg_arg_string( 4, szWeapon, 31 )
               
        if( g_hasXbow[ iKiller ] && equal( szWeapon, "awp" ) )
        {
                set_msg_arg_string( 4, "crossbow" )
        }
       
        return PLUGIN_CONTINUE
}               

// Play animation(Arkshine)
stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
        set_pev(Player, pev_weaponanim, Sequence);
       
        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
        write_byte(Sequence);
        write_byte(pev(Player, pev_body));
        message_end();
}

public DropWeapons( Player, iDropWhat )
{
        static szWeapons[ 32 ], iNum, i, iWeaponID
        iNum = 0
        get_user_weapons( Player, szWeapons, iNum )
       
        for( i = 0; i < iNum; i++ )
        {
                iWeaponID = szWeapons[ i ]
               
                if( ( iDropWhat == 1 && ( ( 1 << iWeaponID ) & PRIMARY_WEAPONS_BITSUM ) ) || ( iDropWhat == 2 && ( ( 1<<iWeaponID ) & SECONDARY_WEAPONS_BITSUM ) ) )
                {
                        static szWname[ 32 ], iEnt
                        get_weaponname( iWeaponID, szWname, charsmax( szWname ) )
                        iEnt = find_ent_by_owner( -1, szWname, Player )
                       
                        set_pev( iEnt, pev_iuser2, 1 )
                       
                        engclient_cmd( Player, "drop", szWname )
                }
        }
}


/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/


gubka 04-13-2013 16:42

Re: Help with plugin crossbow
 
Quote:

public zp_extra_item_selected( Player, Item )
{
if( Item == g_crossbow )
{
DropWeapons( Player, 1 )
g_hasXbow[ Player ] = true
give_item( Player, "weapon_awp" )

static iEnt
iEnt = find_ent_by_owner( -1, "weapon_awp", Player )

cs_set_weapon_ammo( iEnt, CrossbowClip )
cs_set_user_bpammo( Player, CSW_AWP, CrossbowBpAmmo )
}

if( Item == g_grenade )
{
if( user_has_weapon( Player, CSW_HEGRENADE ) && g_iGrenadeCount[ Player ] <= 0 )
{
g_iGrenadeCount[ Player ] = 1
emit_sound( Player, CHAN_WEAPON, "items/9mmclip1.wav", 1.0, 1.0, 0, 100 )
return PLUGIN_HANDLED
}

if( !g_iGrenadeCount[ Player ] )
{
g_iGrenadeCount[ Player ] = 1
give_item( Player, "weapon_hegrenade" )
}
else
{
g_iGrenadeCount[ Player ]++
cs_set_user_bpammo( Player, CSW_HEGRENADE, g_iGrenadeCount[ Player ] )
emit_sound( Player, CHAN_WEAPON, "items/9mmclip1.wav", 1.0, 1.0, 0, 100 )

message_begin( MSG_ONE, gmsgAmmoPickup, _, Player )
write_byte( 12 )
write_byte( 1 )
message_end( )
}
}
return PLUGIN_CONTINUE
}
-->

Quote:

public zp_extra_item_selected( Player, Item )
{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if( Item == g_crossbow )
{
DropWeapons( Player, 1 )
g_hasXbow[ Player ] = true
give_item( Player, "weapon_awp" )

static iEnt
iEnt = find_ent_by_owner( -1, "weapon_awp", Player )

cs_set_weapon_ammo( iEnt, CrossbowClip )
cs_set_user_bpammo( Player, CSW_AWP, CrossbowBpAmmo )
}

if( Item == g_grenade )
{
if( user_has_weapon( Player, CSW_HEGRENADE ) && g_iGrenadeCount[ Player ] <= 0 )
{
g_iGrenadeCount[ Player ] = 1
emit_sound( Player, CHAN_WEAPON, "items/9mmclip1.wav", 1.0, 1.0, 0, 100 )
return PLUGIN_HANDLED
}

if( !g_iGrenadeCount[ Player ] )
{
g_iGrenadeCount[ Player ] = 1
give_item( Player, "weapon_hegrenade" )
}
else
{
g_iGrenadeCount[ Player ]++
cs_set_user_bpammo( Player, CSW_HEGRENADE, g_iGrenadeCount[ Player ] )
emit_sound( Player, CHAN_WEAPON, "items/9mmclip1.wav", 1.0, 1.0, 0, 100 )

message_begin( MSG_ONE, gmsgAmmoPickup, _, Player )
write_byte( 12 )
write_byte( 1 )
message_end( )
}
}
else
{
client_print(id,print_center,"Only for vip")
}
return PLUGIN_CONTINUE
}

Kopcha 04-14-2013 04:07

Re: Help with plugin crossbow
 
I tried, it did not work, it all can buy!


All times are GMT -4. The time now is 10:53.

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