Unalloyed |
08-10-2012 14:31 |
[WeaponMOD]Weapon for admins only
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 can buy that weapon :( .Please Help
PHP 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) }
|