Sugisaki

CAZAPATOS

Apr 10th, 2018
462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.05 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. #define FEV_NOTHOST     (1<<0)  
  13.  
  14. new g_Event
  15. new fm_fwd
  16. public plugin_init()
  17. {
  18.     register_plugin("Cazapatos", "1.0", "Sugisaki")
  19.     RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_scout", "pfn_Weapon_PrimaryAttackPre")
  20.     //register_forward(FM_UpdateClientData, "FM_UpdateClientData_Post", true)
  21.     RegisterHam(Ham_Spawn, "player", "pfn_PlayerSpawnPost", 1, true)
  22.     RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "pfn_RestItem")
  23.     register_message(get_user_msgid("StatusIcon"), "pfn_StatusIcon")
  24. }
  25. public client_connect(id)
  26. {
  27.     client_cmd(id, "scr_connectmsg ^"Cojedes Best Players^"");
  28. }
  29. public pfn_StatusIcon(m, e, id)
  30. {
  31.     static szIcon[8]
  32.     get_msg_arg_string(2, szIcon, charsmax(szIcon))
  33.     if (equal(szIcon, "buyzone") && get_msg_arg_int(1))
  34.     {
  35.         set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0))
  36.         return PLUGIN_HANDLED;
  37.     }
  38.     return PLUGIN_CONTINUE;
  39. }
  40. public pfn_RestItem(id, ItemID:item, ItemRestType:type)
  41. {
  42.     new bool:block
  43.     if(item == ITEM_SCOUT || item == ITEM_KNIFE)
  44.     {
  45.         block = false
  46.     }
  47.     else
  48.     {
  49.         block = true
  50.     }
  51.     if(block)
  52.     {
  53.         SetHookChainReturn(ATYPE_INTEGER, 1)
  54.         return HC_SUPERCEDE
  55.     }
  56.     return HC_CONTINUE
  57. }
  58. public plugin_cfg()
  59. {
  60.     set_cvar_num("sv_gravity", 150)
  61.     set_cvar_num("sv_airaccelerate", 50)
  62.     set_cvar_num("mp_refill_bpammo_weapons", 3)
  63.     set_cvar_num("mp_roundover", 1)
  64. }
  65. public plugin_precache()
  66. {
  67.     precache_sound("weapons/dryfire_rifle.wav")
  68.     fm_fwd = register_forward(FM_PrecacheEvent, "pfn_PrecacheEvent", 1)
  69. }
  70. public pfn_PrecacheEvent(type, ev[])
  71. {
  72.     if(equal(ev, "events/scout.sc"))
  73.     {
  74.         g_Event = get_orig_retval()
  75.         unregister_forward(FM_PrecacheEvent, fm_fwd, 1)
  76.     }
  77. }
  78. public pfn_Weapon_PrimaryAttackPre(ent)
  79. {
  80.     new id = get_member(ent, m_pPlayer)
  81.     new clip = get_member(ent, m_Weapon_iClip)
  82.  
  83.     new Float:vecAiming[3], Float:vecSrc[3], Float:vecDir[3], flag
  84.     new pFOV = get_member(id, m_iFOV)
  85.     if(pFOV != DEFAULT_FOV)
  86.     {
  87.         set_member(id, m_bResumeZoom, true)
  88.         set_member(id, m_iLastZoom, pFOV)
  89.         set_member(id, m_iFOV, DEFAULT_FOV)
  90.     }
  91.     if(clip <= 0)
  92.     {
  93.         if(get_member(ent, m_Weapon_fFireOnEmpty))
  94.         {
  95.             emit_sound(id, CHAN_WEAPON, "weapons/dryfire_rifle.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)
  96.             set_member(ent, m_Weapon_flNextPrimaryAttack, 0.2)
  97.         }
  98.         return HAM_SUPERCEDE
  99.     }
  100.    
  101.     set_member(ent, m_Weapon_iClip, --clip)
  102.     rg_set_animation(id, PLAYER_ATTACK1)
  103.    
  104.     new Float:PunchAngle[3], Float:angles[3]
  105.     pev(id, pev_angles, angles)
  106.     pev(id, pev_punchangle, PunchAngle)
  107.     new Float:global_Time;
  108.     global_get(glb_time, global_Time)
  109.     set_member(id, m_flEjectBrass, global_Time + 0.56)
  110.     set_member(id, m_iWeaponVolume, BIG_EXPLOSION_VOLUME)
  111.     set_member(id, m_iWeaponFlash, NORMAL_GUN_FLASH)
  112.  
  113.     ExecuteHam(Ham_Player_GetGunPosition, id, vecSrc)
  114.  
  115.     global_get(glb_v_forward, vecAiming)
  116.  
  117.     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));
  118.  
  119.     flag = FEV_NOTHOST
  120.    
  121.     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)
  122.    
  123.     PunchAngle[0] -= 2.0
  124.     set_member(ent, m_Weapon_flTimeWeaponIdle, global_Time + 1.8)
  125.     set_pev(id, pev_punchangle, PunchAngle)
  126.     set_member(ent, m_Weapon_flNextPrimaryAttack, 1.25)
  127.     set_member(ent, m_Weapon_flNextSecondaryAttack, 1.25)
  128.     return HAM_SUPERCEDE
  129. }
  130. public pfn_PlayerSpawnPost(id)
  131. {
  132.     if(!is_user_alive(id))
  133.     {
  134.         return
  135.     }
  136.     rg_remove_all_items(id)
  137.     rg_give_item(id, "weapon_scout")
  138.     rg_give_item(id, "weapon_knife")
  139.     rg_set_user_bpammo(id, WEAPON_SCOUT, 90)
  140.     rg_set_user_armor(id, 100, ARMOR_VESTHELM)
  141.  
  142. }
  143. public FM_UpdateClientData_Post(const id, const bool:BO_SendWeapons, const I_CD)
  144. {
  145.     if(is_user_alive(id))
  146.         if(get_user_weapon(id) == CSW_SCOUT)
  147.             set_cd(I_CD, CD_flNextAttack, halflife_time() + 0.001)
  148. }
Advertisement
Add Comment
Please, Sign In to add comment