HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*
  2. Plugin generated by AMXX-Studio
  3.  
  4. Plugin: [CoF] Abilites
  5. Creator: Chrescoe1
  6. Skype: Xailer24
  7.  
  8.  
  9.  
  10. */
  11.  
  12. #include <amxmodx>
  13. #include <hamsandwich>
  14. #include <fakemeta_util>
  15.  
  16. #define PLUGIN "New abilitys"
  17. #define VERSION "0.4"
  18. #define AUTHOR "Chrescoe1"
  19.  
  20. #define v_hands "models/cof/v_actions5.mdl"
  21. #define RunSpeed 300.0
  22. #define SpeedUpg 30.0
  23.  
  24. new
  25. //Run
  26. bool:in_run[33],
  27. runbutton_num[33],
  28. Float:RunButtonTime[33][2],
  29. Float:OriginalMaxSpeed[33],
  30. RunStade[33],
  31. vModelName[128][33],
  32. pModelName[128][33],
  33.  
  34. //Jump
  35. bool:in_jump[33],
  36. Float:JumpTime[33],
  37. bool:free_fall[33],
  38.  
  39. //Deploy weapon after jump
  40. bool:ForceWeaponDeploy[33],
  41. Float:ForceDeployTime[33],
  42.  
  43. //Swim
  44. bool:in_swim[33]
  45. public plugin_precache()precache_model(v_hands)
  46.  
  47. public plugin_init()
  48. {
  49. register_plugin(PLUGIN, VERSION, AUTHOR)
  50. register_event("CurWeapon", "Event_CurrentWeapon", "be", "1=1")
  51. // Add your code here...
  52. }
  53. public Event_CurrentWeapon(id)
  54. {
  55. if(in_jump[id])
  56. in_jump[id]=false,
  57. ForceWeaponDeploy[id]=false
  58. if(in_run[id])
  59. set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
  60. in_run[id]=false
  61. if(in_swim[id])
  62. in_swim[id]=false
  63. }
  64. public client_connect(id)
  65. OriginalMaxSpeed[id]=250.0,ForceWeaponDeploy[id]=false,
  66. in_jump[id]=false,in_run[id]=false,in_swim[id]=false
  67. public client_PreThink(id)
  68. {
  69. static Float:gametime
  70. gametime=get_gametime()
  71.  
  72. if(is_user_alive(id))
  73. //If on ladder or movetype_fly or movetype_noclip - block func
  74. if(pev(id,pev_movetype)==MOVETYPE_FLY||pev(id,pev_movetype)==MOVETYPE_NOCLIP)
  75. {
  76. if(in_jump[id])
  77. in_jump[id]=false,
  78. ForceWeaponDeploy[id]=false,
  79. deploy_weapon(id)
  80. if(in_run[id])
  81. set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
  82. in_run[id]=false,
  83. deploy_weapon(id)
  84. if(in_swim[id])
  85. in_swim[id]=false,
  86. deploy_weapon(id)
  87. return
  88. }
  89. else
  90.  
  91. //Swimming
  92. if(pev(id,pev_waterlevel)>1)
  93. {
  94. if(!in_swim[id])
  95. {
  96. if(in_jump[id])
  97. in_jump[id]=false,
  98. ForceWeaponDeploy[id]=false
  99. if(in_run[id])
  100. set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
  101. in_run[id]=false
  102.  
  103. if(pev(id,pev_waterlevel)<2)return
  104. save_model(id)
  105. set_pev(id, pev_viewmodel2, v_hands)
  106. set_pev(id, pev_weaponmodel2, "")
  107. set_pdata_float(id, 83, 999.9, 5) //Block attack
  108. in_swim[id]=true
  109. WeaponAnim(id,3)
  110. return
  111. }
  112. }
  113. else
  114. //Run
  115. if(pev(id,pev_flags)&FL_ONGROUND)
  116. {
  117. if(in_swim[id])
  118. in_swim[id]=false,
  119. deploy_weapon(id)
  120. if(ForceWeaponDeploy[id])
  121. if(ForceDeployTime[id]<gametime)ForceWeaponDeploy[id]=false,deploy_weapon(id)
  122. if(in_jump[id])
  123. {
  124. WeaponAnim(id,7)
  125. in_jump[id]=false
  126. ForceWeaponDeploy[id]=true
  127. ForceDeployTime[id]=gametime+0.25
  128. }
  129. if(pev(id,pev_button)&IN_FORWARD)
  130. {
  131. if(!(pev(id,pev_oldbuttons)&IN_FORWARD))
  132. {
  133. static x
  134. switch(runbutton_num[id])
  135. {
  136. case 0:runbutton_num[id]=1,x=0
  137. case 1:runbutton_num[id]=0,x=1
  138. }
  139. RunButtonTime[id][runbutton_num[id]]=gametime
  140.  
  141. if(gametime-RunButtonTime[id][x]<0.35)
  142. {
  143. in_run[id]=true
  144. RunStade[id]=1
  145.  
  146. OriginalMaxSpeed[id]=fm_get_user_maxspeed(id)
  147. if(OriginalMaxSpeed[id]<=1.0)OriginalMaxSpeed[id]=250.0
  148. save_model(id)
  149. set_pev(id, pev_viewmodel2, v_hands)
  150. set_pev(id, pev_weaponmodel2, "")
  151. set_pdata_float(id, 83,999.9, 5) //Block attack
  152. set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id])
  153. WeaponAnim(id,4)
  154. }
  155. }
  156. if(in_run[id])
  157. {
  158. static Float:Velocity[3]
  159. pev(id,pev_velocity,Velocity);
  160. if(gametime-RunButtonTime[id][runbutton_num[id]]>1.0)
  161. if(vector_length(Velocity)<200.0)
  162. set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
  163. in_run[id]=false,
  164. deploy_weapon(id)
  165. else
  166. if(RunStade[id]<5)
  167. {
  168. static Float:RunTime
  169. RunTime=RunButtonTime[id][runbutton_num[id]]
  170. if(gametime-RunTime>=3.4&&RunStade[id]<5)RunStade[id]=5,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
  171. if(gametime-RunTime>=2.6&&RunStade[id]<4)RunStade[id]=4,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
  172. if(gametime-RunTime>=1.8&&RunStade[id]<3)RunStade[id]=3,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
  173. if(gametime-RunTime>=1.2&&RunStade[id]<2)RunStade[id]=2,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
  174. if(gametime-RunTime>=0.6&&RunStade[id]<1)RunStade[id]=1,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id])
  175. }
  176. }
  177. }
  178. else
  179. if(in_run[id])
  180. {
  181. set_pev(id,pev_maxspeed,OriginalMaxSpeed[id])
  182. in_run[id]=false
  183. deploy_weapon(id)
  184. }
  185. }
  186. else
  187. //Jump
  188. if(!(pev(id,pev_flags)&FL_ONGROUND))
  189. {
  190. if(in_swim[id])
  191. in_swim[id]=false,
  192. deploy_weapon(id)
  193. if(!in_jump[id])
  194. {
  195. static Float:Velocity[3]
  196. pev(id,pev_velocity,Velocity);
  197. if((Velocity[2]>300.0)||(Velocity[2]<-350.0)||in_run[id]&&(Velocity[2]>200.0)||(Velocity[2]<-400.0))
  198. {
  199. static Float:JumpPower
  200. switch(RunStade[id])
  201. {
  202. case 1:JumpPower=1.0
  203. case 2:JumpPower=1.09
  204. case 3:JumpPower=1.18
  205. case 4:JumpPower=1.27
  206. case 5:JumpPower=1.36
  207. }
  208. set_pev(id,pev_maxspeed,OriginalMaxSpeed[id])
  209. in_run[id]=false
  210. RunStade[id]=1
  211.  
  212. Velocity[0]=Velocity[0]*JumpPower
  213. Velocity[1]=Velocity[1]*JumpPower
  214. Velocity[2]=Velocity[2]*JumpPower
  215. set_pev(id,pev_velocity,Velocity)
  216.  
  217. save_model(id)
  218. set_pev(id, pev_viewmodel2, v_hands)
  219. set_pev(id, pev_weaponmodel2, "")
  220. set_pdata_float(id, 83, 999.9, 5)
  221. WeaponAnim(id,5)
  222. in_jump[id]=true
  223. free_fall[id]=false
  224. JumpTime[id]=gametime
  225. }
  226. }
  227. else
  228. if(!free_fall[id])
  229. if(gametime-JumpTime[id]>0.35)
  230. free_fall[id]=false,WeaponAnim(id,6)
  231. }
  232. }
  233. stock deploy_weapon(id)
  234. {
  235. static Temp_String[28]
  236. get_weaponname(get_user_weapon(id), Temp_String, 27)
  237. static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, Temp_String, id)
  238. if(pev_valid(weapon_ent))ExecuteHam(Ham_Item_Deploy, weapon_ent),set_pdata_int(weapon_ent,54,0),set_pdata_int(weapon_ent,55,0)
  239. if (contain(vModelName[id], v_hands)== -1)
  240. set_pev(id, pev_viewmodel2, vModelName[id]),
  241. set_pev(id, pev_weaponmodel2, pModelName[id])
  242. }
  243. stock WeaponAnim(const Player, const Sequence)
  244. {
  245. set_pev(Player, pev_weaponanim, Sequence)
  246. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  247. write_byte(Sequence)
  248. write_byte(0)
  249. message_end()
  250. }
  251. stock save_model(id)
  252. {
  253. new Text[128]
  254. pev(id, pev_viewmodel2, Text,127)
  255. if (contain(Text, v_hands)== -1)
  256. pev(id, pev_viewmodel2, vModelName[id],127)
  257.  
  258. pev(id, pev_weaponmodel2, Text,127)
  259. if (contain(Text,"models/")!= -1)
  260. pev(id, pev_weaponmodel2, pModelName[id],127)
  261. }
  262.