HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fun>
  3. #include <cstrike>
  4. #include <engine>
  5.  
  6.  
  7. new gmsgSetFOV
  8. new Zooming[32]
  9. new laststate[32]
  10. new gLastWeapon[32]
  11. //----------------------------------------------------------------------------------------------
  12. public plugin_init()
  13. {
  14. // Plugin Info
  15. register_plugin("Bullseye","1.0","AssKicR¨& Freecode")
  16. register_event("ResetHUD","newRound","b")
  17. register_event("CurWeapon","changeweapon","be","1=1")
  18. register_cvar("amx_bullseye","1");
  19. register_clcmd("bullseye_zoom", "bullseye_kd",0,"zoom")
  20.  
  21. gmsgSetFOV = get_user_msgid("SetFOV")
  22.  
  23. set_task(0.01,"check_reload",0,"",0,"b")
  24.  
  25. return PLUGIN_CONTINUE
  26. }
  27.  
  28. //----------------------------------------------------------------------------------------------
  29. public newRound(id)
  30. {
  31. if ( is_user_alive(id))
  32. {
  33. bullseye_zoomout(id)
  34. }
  35. return PLUGIN_CONTINUE
  36. }
  37. //----------------------------------------------------------------------------------------------
  38. public plugin_precache()
  39. {
  40. precache_sound("weapons/zoom.wav")
  41. precache_sound("common/wpn_denyselect.wav");
  42. }
  43. //----------------------------------------------------------------------------------------------
  44. public bullseye_zoom(id)
  45. {
  46. Zooming[id]=4
  47. message_begin(MSG_ONE, gmsgSetFOV, {0,0,0}, id)
  48. write_byte(60) //Zooming AUG/SIG style
  49. message_end()
  50. return PLUGIN_CONTINUE
  51. }
  52. //----------------------------------------------------------------------------------------------
  53. public bullseye_zoomonce(id)
  54. {
  55. Zooming[id]=1
  56. emit_sound(id,CHAN_WEAPON, "weapons/zoom.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  57. message_begin(MSG_ONE, gmsgSetFOV, {0,0,0}, id)
  58. write_byte(40) //Zooming once
  59. message_end()
  60. return PLUGIN_CONTINUE
  61. }
  62. //----------------------------------------------------------------------------------------------
  63. public bullseye_zoomtwice(id)
  64. {
  65. Zooming[id]=2
  66. emit_sound(id,CHAN_WEAPON, "weapons/zoom.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  67. message_begin(MSG_ONE, gmsgSetFOV, {0,0,0}, id)
  68. write_byte(20) //Zooming twice
  69. message_end()
  70. return PLUGIN_CONTINUE
  71. }
  72. //----------------------------------------------------------------------------------------------
  73. public bullseye_zoomtrice(id)
  74. {
  75. Zooming[id]=3
  76. emit_sound(id,CHAN_WEAPON, "weapons/zoom.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  77. message_begin(MSG_ONE, gmsgSetFOV, {0,0,0}, id)
  78. write_byte(1) //Zooming trice
  79. message_end()
  80. return PLUGIN_CONTINUE
  81. }
  82. //----------------------------------------------------------------------------------------------
  83. public bullseye_zoomout(id)
  84. {
  85. Zooming[id]=0
  86. message_begin(MSG_ONE, gmsgSetFOV, {0,0,0}, id)
  87. write_byte(90) //not Zooming
  88. message_end()
  89. return PLUGIN_CONTINUE
  90. }
  91. //----------------------------------------------------------------------------------------------
  92. public check_zoom(id)
  93. {
  94. if (is_user_alive(id))
  95. {
  96. new temp,temp2
  97. new wpn_id = get_user_weapon(id,temp,temp2)
  98. gLastWeapon[id]=wpn_id
  99. if ( wpn_id==CSW_AWP || wpn_id==CSW_SCOUT || wpn_id==CSW_SG552 || wpn_id==CSW_G3SG1 || wpn_id==CSW_AUG || wpn_id==CSW_SG550 || wpn_id==CSW_KNIFE || wpn_id==CSW_C4 || wpn_id==CSW_HEGRENADE || wpn_id==CSW_FLASHBANG || wpn_id==CSW_SMOKEGRENADE )
  100. {
  101. emit_sound(id,CHAN_ITEM, "common/wpn_denyselect.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  102. }
  103. else
  104. {
  105. if (get_cvar_num("amx_bullseye")==1)
  106. {
  107. if (Zooming[id]==3)
  108. {
  109. bullseye_zoomout(id)
  110. }
  111. else if (Zooming[id]==2)
  112. {
  113. bullseye_zoomtrice(id)
  114. }
  115. else if (Zooming[id]==1)
  116. {
  117. bullseye_zoomtwice(id)
  118. }
  119. else
  120. {
  121. bullseye_zoomonce(id)
  122. }
  123. }
  124. else
  125. {
  126. if (Zooming[id]!=0)
  127. {
  128. bullseye_zoomout(id)
  129. }
  130. else
  131. {
  132. bullseye_zoom(id)
  133. }
  134. }
  135. }
  136. }
  137. return PLUGIN_CONTINUE
  138. }
  139. //----------------------------------------------------------------------------------------------
  140. public changeweapon(id)
  141. {
  142. new clip,temp
  143. new wpn_id = get_user_weapon(id,clip,temp)
  144. if (gLastWeapon[id]!=wpn_id) bullseye_zoomout(id)
  145. gLastWeapon[id]=wpn_id
  146.  
  147. if ( wpn_id==CSW_AWP || wpn_id==CSW_SCOUT || wpn_id==CSW_SG552 || wpn_id==CSW_G3SG1 || wpn_id==CSW_AUG || wpn_id==CSW_SG550 || wpn_id==CSW_KNIFE || wpn_id==CSW_C4 || wpn_id==CSW_HEGRENADE || wpn_id==CSW_FLASHBANG || wpn_id==CSW_SMOKEGRENADE ) return PLUGIN_CONTINUE
  148.  
  149. if ( clip == 0 )
  150. {
  151. if (Zooming[id]!=0)
  152. {
  153. laststate[id]=Zooming[id]
  154. bullseye_zoomout(id)
  155. new parm[2]
  156. parm[0]=id
  157. parm[1]=wpn_id
  158. set_task(float(3),"zoom_return",0,parm,2)
  159. set_user_maxspeed(id,-1.0);
  160. }
  161. }
  162. return PLUGIN_CONTINUE
  163. }
  164. //----------------------------------------------------------------------------------------------
  165. public bullseye_kd(id)
  166. {
  167. check_zoom(id)
  168. return PLUGIN_HANDLED
  169. }
  170. //------------------------------------------------------------------------------------------
  171. public check_reload()
  172. {
  173.  
  174. for(new id = 1; id <= get_maxplayers(); ++id)
  175. {
  176. if (is_user_alive(id))
  177. {
  178. new clip,temp
  179. new wpn_id = get_user_weapon(id,clip,temp)
  180. if ( wpn_id==CSW_AWP || wpn_id==CSW_SCOUT || wpn_id==CSW_SG552 || wpn_id==CSW_G3SG1 || wpn_id==CSW_AUG || wpn_id==CSW_SG550 || wpn_id==CSW_KNIFE || wpn_id==CSW_C4 || wpn_id==CSW_HEGRENADE || wpn_id==CSW_FLASHBANG || wpn_id==CSW_SMOKEGRENADE )
  181. {
  182. //nottin
  183. }
  184. else
  185. {
  186. if (get_user_button(id)&IN_RELOAD)
  187. {
  188. if (CheckMaxAmmo(id))
  189. {
  190. laststate[id]=Zooming[id]
  191. bullseye_zoomout(id)
  192. new parm[2]
  193. parm[0]=id
  194. parm[1]=wpn_id
  195. set_task(float(3),"zoom_return",0,parm,2)
  196. }
  197. }
  198. else
  199. {
  200. //nottin
  201. }
  202. }
  203. }
  204. }
  205. return PLUGIN_CONTINUE
  206. }
  207. //----------------------------------------------------------------------------------------------
  208. public zoom_return(parm[])
  209. {
  210. new id=parm[0]
  211. new clip,ammo
  212. new wpn_id = get_user_weapon(id,clip,ammo)
  213. if (parm[1]==wpn_id)
  214. {
  215. if (get_cvar_num("bullseye_zoommode")==1)
  216. {
  217. if (laststate[id]==3)
  218. {
  219. bullseye_zoomtrice(id)
  220. }
  221. else if (laststate[id]==2)
  222. {
  223. bullseye_zoomtwice(id)
  224. }
  225. else if (laststate[id]==1)
  226. {
  227. bullseye_zoomonce(id)
  228. }
  229. else
  230. {
  231. bullseye_zoomout(id)
  232. }
  233. }
  234. else
  235. {
  236. if (laststate[id]!=0)
  237. {
  238. bullseye_zoom(id)
  239. }
  240. else
  241. {
  242. bullseye_zoomout(id)
  243. }
  244. }
  245. }
  246. return PLUGIN_CONTINUE
  247. }
  248. //----------------------------------------------------------------------------------------------
  249. public CheckMaxAmmo(id)
  250. {
  251. new clip,temp
  252. new wpn_id = get_user_weapon(id,clip,temp)
  253. switch (wpn_id) {
  254. case CSW_M3: if (clip!=8) return true
  255. case CSW_XM1014: if (clip!=7) return true
  256. case CSW_MP5NAVY: if (clip!=30) return true
  257. case CSW_TMP: if (clip!=30) return true
  258. case CSW_P90: if (clip!=50) return true
  259. case CSW_MAC10: if (clip!=30) return true
  260. case CSW_UMP45: if (clip!=25) return true
  261. case CSW_AK47: if (clip!=30) return true
  262. case CSW_SG552: if (clip!=30) return true
  263. case CSW_M4A1: if (clip!=30) return true
  264. case CSW_AUG: if (clip!=30) return true
  265. case CSW_SCOUT: if (clip!=10) return true
  266. case CSW_AWP: if (clip!=10) return true
  267. case CSW_G3SG1: if (clip!=20) return true
  268. case CSW_SG550: if (clip!=30) return true
  269. case CSW_M249: if (clip!=100) return true
  270. case CSW_USP: if (clip!=12) return true
  271. case CSW_GLOCK18: if (clip!=20) return true
  272. case CSW_DEAGLE: if (clip!=7) return true
  273. case CSW_P228: if (clip!=13) return true
  274. case CSW_ELITE: if (clip!=30) return true
  275. case CSW_FIVESEVEN: if (clip!=20) return true
  276. }
  277. return false
  278. }
  279. //----------------------------------------------------------------------------------------------