Raised This Month: $51 Target: $400
 12% 

WEAPON for admins only


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Unalloyed
New Member
Join Date: Aug 2012
Old 08-17-2012 , 10:43   WEAPON for admins only
Reply With Quote #1

Im using this mod http://forums.alliedmods.net/showthread.php?p=363037


From the original wpn_distruptor, I tried to change the code around so that the person needs to pass an admin check for the flag ADMIN_KICK..But all players can buy that weapon .Please Help
Code:
/* WeaponMod Weapon
 * 
 * (c) Copyright 2006, DevconeS
 * This file is provided as is (no warranties).
 * 
 */

#include <amxmodx>
#include <fakemeta>
#include <weaponmod>
#define ADMINLEVEL        ADMIN_KICK


new PLUGIN[] = "WPN DISRUPTOR"
new VERSION[] = "5.1"
new AUTHOR[] = "DevconeS"
new WPN_NAME[] = "The DISRUPTOR(\rAdmin only)"
new WPN_SHORT[] = "dis"

new P_MODEL[] = "models/wpnmod/p_dis.mdl"
new V_MODEL[] = "models/wpnmod/v_dis.mdl"
new W_MODEL[] = "models/wpnmod/w_dis.mdl"

new BULLETS_PER_SHOT[] = {1, 30}
new ROCKET_MDL[][] = {"sprites/gargeye1.spr", "sprites/3dmflared.spr"}
new ROCKET_SOUND[][] = {"wpnmod/dis_fire_8b44k_v2.wav", "wpnmod/dis_nuke_8b44k.wav"}

new ROCKET_CLASSNAME[][] = {"wpn_disrupor_1", "wpn_disruptor_2"}
new ROCKET_SPEED[] = {2200, 450}
new ROCKET_EXPLOSION[][] = {"sprites/wpnmod/dis.spr", "sprites/wpnmod/dis_nuke.spr"}
new ROCKET_TRAIL_COLOR[][3] = {{255, 255, 255}, {255, 255, 0}}
new Float:ROCKET_RADIUS[] = {175.0, 1500.0}
new Float:ROCKET_DAMAGE[] = {250.0, 5000.0}

// Sequences
enum
{
    anim_idle1,
    anim_idle2,
    anim_spinup,
    anim_spindown,
    anim_spin,
    anim_fire,
    anim_draw,
    anim_holster1
}

new g_wpnid
new g_trail,g_explosion[2]

public plugin_precache() {
    precache_model(P_MODEL)
    precache_model(V_MODEL)
    precache_model(W_MODEL)

    precache_model(ROCKET_MDL[0])
    precache_model(ROCKET_MDL[1])
    precache_sound(ROCKET_SOUND[0])
    precache_sound(ROCKET_SOUND[1])

    g_trail= precache_model("sprites/gwave1.spr")
    g_explosion[0] = precache_model(ROCKET_EXPLOSION[0])
    g_explosion[1] = precache_model(ROCKET_EXPLOSION[1])
}




public plugin_init() {
    register_plugin(PLUGIN,VERSION,AUTHOR)
    register_forward(FM_Touch,"fwd_Touch")
    create_weapon()
}


public wpn_event_post(player,wpnid,wpn_event:event,params[])
{
    new bool:Check = false
    
    
    switch(wpn_event)
    {
        case event_draw: 
            Check = true
        case event_pickup:
            Check = true
        default:
            Check = false
    }
    if(Check)
    {
        if((get_user_flags(player) & ADMINLEVEL))
            return PLUGIN_CONTINUE
        else
            return PLUGIN_HANDLED
    }
    return PLUGIN_CONTINUE
}    

public onlyadmin(id)   
{
    if ((get_user_flags(id) & ADMINLEVEL))
{
return PLUGIN_HANDLED
}
else
{
client_print(id, print_console, "only admin")
}
return PLUGIN_CONTINUE
} 
 
public create_weapon() {
    new wpnid = wpn_register_weapon(WPN_NAME,WPN_SHORT)
    if(wpnid == -1) return PLUGIN_CONTINUE
    wpn_set_string(wpnid,wpn_viewmodel,V_MODEL)
    wpn_set_string(wpnid,wpn_weaponmodel,P_MODEL)
    wpn_set_string(wpnid,wpn_worldmodel,W_MODEL)
    
    wpn_register_event(wpnid,event_attack1,"ev_attack1")
    wpn_register_event(wpnid,event_attack2,"ev_attack2")
    wpn_register_event(wpnid,event_draw,"ev_draw")
    wpn_register_event(wpnid,event_reload,"ev_reload")

    wpn_set_float(wpnid,wpn_refire_rate1,0.35)
    wpn_set_float(wpnid,wpn_refire_rate2,2.0)
    wpn_set_float(wpnid,wpn_reload_time,6.0)
    wpn_set_float(wpnid,wpn_recoil1,4.0)
    wpn_set_float(wpnid,wpn_run_speed,350.0)

    wpn_set_integer(wpnid,wpn_ammo1,45)
    wpn_set_integer(wpnid,wpn_ammo2,45)
    wpn_set_integer(wpnid,wpn_bullets_per_shot1,BULLETS_PER_SHOT[0])
    wpn_set_integer(wpnid,wpn_bullets_per_shot2,BULLETS_PER_SHOT[1])
    wpn_set_integer(wpnid,wpn_cost,0)

    g_wpnid = wpnid
    return PLUGIN_CONTINUE
} 

// vector_to_angle port 
stock vec_to_angle(Float:vector[3],Float:output[3]) {
    new Float:angles[3]
    engfunc(EngFunc_VecToAngles, vector, angles) 
    output[0] = angles[0] 
    output[1] = angles[1] 
    output[2] = angles[2] 
} 

public ev_attack1(id) {
    return fire_rocket(id, 0);
}

public ev_attack2(id) {
    return fire_rocket(id, 1);
}

fire_rocket(id, type)
{
    wpn_playanim(id,random_num(anim_fire,anim_idle1))
    
    new rocket = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
    if(!rocket) return PLUGIN_CONTINUE
    
    // Strings
    set_pev(rocket,pev_classname,ROCKET_CLASSNAME[type])
    engfunc(EngFunc_SetModel,rocket,ROCKET_MDL[type])
    
    // Integer
    set_pev(rocket,pev_owner,id)
    set_pev(rocket,pev_movetype,MOVETYPE_FLY)
    set_pev(rocket,pev_solid,SOLID_BBOX)
    set_pev(rocket,pev_rendermode,kRenderTransAdd)
    set_pev(rocket,pev_renderamt,255.0)
        
    // Floats
    set_pev(rocket,pev_mins,Float:{-1.0,-1.0,-1.0})
    set_pev(rocket,pev_maxs,Float:{1.0,1.0,1.0})
    
    new Float:fStart[3]
    wpn_projectile_startpos(id,40,0,0,fStart)
    set_pev(rocket,pev_origin,fStart)
    
    new Float:fVel[3]
    velocity_by_aim(id,ROCKET_SPEED[type],fVel)
    set_pev(rocket,pev_velocity,fVel)
    
    new Float:fAngles[3]
    vec_to_angle(fVel,fAngles)
    set_pev(rocket,pev_angles,fAngles)
    
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(TE_BEAMFOLLOW)    // Temp entity type
    write_short(rocket)        // entity
    write_short(g_trail)    // sprite index
    write_byte(25)    // life time in 0.1's
    write_byte(5)    // line width in 0.1's
    write_byte(ROCKET_TRAIL_COLOR[type][0])    // red (RGB)
    write_byte(ROCKET_TRAIL_COLOR[type][1])    // green (RGB)
    write_byte(ROCKET_TRAIL_COLOR[type][2])    // blue (RGB)
    write_byte(255)    // brightness 0 invisible, 255 visible
    message_end()
    
    emit_sound(rocket, CHAN_WEAPON, ROCKET_SOUND[type], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    return PLUGIN_CONTINUE
}

public ev_reload(id)
    wpn_playanim(id, anim_spindown)

public ev_draw(id)
    wpn_playanim(id,anim_draw) 

public fwd_Touch(ptr, ptd) {
    if(pev_valid(ptr)) {
        static classname[32]
        pev(ptr,pev_classname,classname,31)

        if(equal(classname,ROCKET_CLASSNAME[0])) {
            create_explosion(ptr, ptd, 0)
        } else if(equal(classname,ROCKET_CLASSNAME[1])) {
            create_explosion(ptr, ptd, 1)
        }
    }
}

create_explosion(ptr, ptd, type)
{
    new Float:fOrigin[3]
    pev(ptr,pev_origin,fOrigin)
    
    engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fOrigin, 0)
    write_byte(TE_EXPLOSION)
    engfunc(EngFunc_WriteCoord, fOrigin[0])
    engfunc(EngFunc_WriteCoord, fOrigin[1])
    engfunc(EngFunc_WriteCoord, fOrigin[2])
    write_short(g_explosion[type])
    write_byte(30)
    write_byte(15)
    write_byte(0)
    message_end()

    new attacker = pev(ptr,pev_owner)
    wpn_radius_damage(g_wpnid,attacker,ptr,ROCKET_RADIUS[type],ROCKET_DAMAGE[type],DMG_BLAST)
    if(pev_valid(ptd)) {
        new classname[32]
        pev(ptd,pev_classname,classname,31)

        if(equal(classname,"func_breakable"))
            dllfunc(DLLFunc_Use,ptd,ptr)
    }
    set_pev(ptr,pev_flags,FL_KILLME)
}
I colored my parts black
Unalloyed is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:56.


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