HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*================================================================================
  2. =================================================================================*/
  3.  
  4. #include <amxmodx>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7.  
  8. #define PLUGIN_VERSION "1.0"
  9.  
  10. const m_iFOV = 363
  11. const m_iPlayer = 41
  12. const m_iClipAmmo = 51
  13. const m_iExtraOffsetLinux = 4
  14. const m_iExtraOffsetWindows = 0
  15.  
  16. #pragma semicolon 1
  17.  
  18. new model_ak47_sniper[] = "models/v_ak47.mdl";
  19.  
  20. new gAlive[33];
  21. new gZoom[33];
  22. new gReloading[33];
  23.  
  24. public plugin_precache()
  25. engfunc(EngFunc_PrecacheModel, model_ak47_sniper);
  26.  
  27. public plugin_init()
  28. {
  29. register_plugin("AK super", PLUGIN_VERSION, "muzzaik");
  30.  
  31. register_forward(FM_CmdStart, "fwCmdStart");
  32.  
  33. RegisterHam(Ham_Spawn, "player", "fwPlayerSpawnPost", 1);
  34. RegisterHam(Ham_Killed, "player", "fwPlayerKilled");
  35. RegisterHam(Ham_Weapon_Reload, "weapon_ak47", "fwWeaponReload");
  36. RegisterHam(Ham_Item_Deploy, "weapon_ak47", "fwItemDeployPost", 1);
  37.  
  38. register_cvar("ak47_sniper", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY);
  39. }
  40.  
  41. public fwCmdStart(id, uc_handle, seed)
  42. {
  43. if (!gAlive[id]) return FMRES_IGNORED;
  44.  
  45. static button, oldbuttons, weapon;
  46. button = get_uc(uc_handle, UC_Buttons);
  47. oldbuttons = pev(id, pev_oldbuttons);
  48. weapon = get_user_weapon(id);
  49.  
  50. if ((button & IN_USE) && !(oldbuttons & IN_USE))
  51. {
  52. if (weapon == CSW_AK47)
  53. {
  54. if (!gZoom[id] && !gReloading[id])
  55. {
  56. gZoom[id] = true;
  57. set_pdata_int(id, m_iFOV, 35, 5);
  58. emit_sound(id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100);
  59. }
  60. else
  61. {
  62. if (gZoom[id])
  63. {
  64. gZoom[id] = false;
  65. set_pdata_int(id, m_iFOV, 90, 5);
  66. }
  67. }
  68. }
  69. }
  70. return FMRES_IGNORED;
  71. }
  72.  
  73. public fwPlayerSpawnPost(id) if (is_user_alive(id)) gAlive[id] = true;
  74.  
  75. public fwPlayerKilled(victim, attacker, shouldgib) gAlive[victim] = false;
  76.  
  77. public fwWeaponReload(weapon)
  78. {
  79. if (fm_get_weapon_ammo(weapon) != 100)
  80. {
  81. static id;
  82. id = get_pdata_cbase(weapon, m_iPlayer, 6);
  83.  
  84. set_pdata_int(id, m_iFOV, 90, 5);
  85.  
  86. gReloading[id] = true;
  87. set_task(2.3, "taskWeaponReloaded", id);
  88. }
  89. }
  90.  
  91. public taskWeaponReloaded(id)
  92. gReloading[id] = false;
  93.  
  94. public fwItemDeployPost(weapon)
  95. {
  96. static id;
  97. id = get_pdata_cbase(weapon, m_iPlayer, 4);
  98.  
  99. set_pev(id, pev_viewmodel2, model_ak47_sniper);
  100. }
  101.  
  102. // cs_to_fm
  103. stock fm_get_weapon_ammo(weapon)
  104. return get_pdata_int(weapon, m_iClipAmmo, is_linux_server() ? m_iExtraOffsetLinux : m_iExtraOffsetWindows);