Advertisement
Sugisaki

[AMXX] TEST

Jun 17th, 2017
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.73 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4. #include <reapi>
  5. #include <engine>
  6.  
  7. #define DEFAULT_FOV         90
  8. #define BIG_EXPLOSION_VOLUME        2048
  9. #define NORMAL_GUN_FLASH        256
  10. #define SCOUT_DAMAGE            75
  11. #define SCOUT_RANGE_MODIFER     0.98
  12.  
  13. new g_Event
  14. new fm_fwd
  15. public plugin_init()
  16. {
  17.     register_plugin("Cazapatos", "1.0", "Sugisaki")
  18.     RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_scout", "pfn_Weapon_PrimaryAttackPre")
  19.     register_forward(FM_UpdateClientData, "FM_UpdateClientData_Post", true)
  20.     RegisterHam(Ham_Spawn, "player", "pfn_PlayerSpawnPost", 1)
  21. }
  22. public plugin_precache()
  23. {
  24.     precache_sound("weapons/dryfire_rifle.wav")
  25.     fm_fwd = register_forward(FM_PrecacheEvent, "pfn_PrecacheEvent", 1)
  26. }
  27. public pfn_PrecacheEvent(type, ev[])
  28. {
  29.     if(equal(ev, "events/scout.sc"))
  30.     {
  31.         g_Event = get_orig_retval()
  32.         unregister_forward(FM_PrecacheEvent, fm_fwd, 1)
  33.     }
  34. }
  35. public pfn_Weapon_PrimaryAttackPre(ent)
  36. {
  37.     new id = get_member(ent, m_pPlayer)
  38.     new clip = get_member(ent, m_Weapon_iClip)
  39.  
  40.     new Float:vecAiming[3], Float:vecSrc[3], Float:vecDir[3], flag
  41.     new pFOV = get_member(id, m_iFOV)
  42.     if(pFOV != DEFAULT_FOV)
  43.     {
  44.         set_member(id, m_bResumeZoom, true)
  45.         set_member(id, m_iLastZoom, pFOV)
  46.         set_member(id, m_iFOV, DEFAULT_FOV)
  47.     }
  48.     if(clip <= 0)
  49.     {
  50.         if(get_member(ent, m_Weapon_fFireOnEmpty))
  51.         {
  52.             emit_sound(id, CHAN_WEAPON, "weapons/dryfire_rifle.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)
  53.             set_member(ent, m_Weapon_flNextPrimaryAttack, 0.2)
  54.         }
  55.         return HAM_SUPERCEDE
  56.     }
  57.    
  58.     set_member(ent, m_Weapon_iClip, --clip)
  59.     new Float:PunchAngle[3], Float:angles[3]
  60.     pev(id, pev_angles, angles)
  61.     pev(id, pev_punchangle, PunchAngle)
  62.     new Float:global_Time;
  63.     global_get(glb_time, global_Time)
  64.     set_member(id, m_flEjectBrass, global_Time + 0.56)
  65.     set_member(id, m_iWeaponVolume, BIG_EXPLOSION_VOLUME)
  66.     set_member(id, m_iWeaponFlash, NORMAL_GUN_FLASH)
  67.  
  68.     ExecuteHam(Ham_Player_GetGunPosition, id, vecSrc)
  69.  
  70.     global_get(glb_v_forward, vecAiming)
  71.  
  72.     vecDir = rg_fire_bullets3(id, id, vecSrc, vecAiming, 0.0, 8192.0, 3, BULLET_PLAYER_762MM, SCOUT_DAMAGE, SCOUT_RANGE_MODIFER, true, get_member(id, random_seed));
  73.  
  74.     flag = 0
  75.    
  76.     playback_event(flag, id, g_Event, 0.0, Float:{0.0,0.0,0.0}, angles, vecDir[0] * PunchAngle[0] * 100, vecDir[0] * PunchAngle[0] * 100, 0, 0, 0, 0)
  77.    
  78.     PunchAngle[0] -= 2.0
  79.     set_pev(id, pev_punchangle, PunchAngle)
  80.     set_member(ent, m_Weapon_flNextPrimaryAttack, 1.25)
  81.     set_member(ent, m_Weapon_flNextSecondaryAttack, 1.25)
  82.     return HAM_SUPERCEDE
  83. }
  84. public pfn_PlayerSpawnPost(id)
  85. {
  86.     if(!is_user_alive(id))
  87.     {
  88.         return
  89.     }
  90.     rg_give_item(id, "weapon_scout")
  91. }
  92. public FM_UpdateClientData_Post(const id, const bool:BO_SendWeapons, const I_CD)
  93. {
  94.     set_cd(I_CD, CD_flNextAttack, halflife_time() + 0.001)
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement