HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fakemeta_util>
  3. #include <amxmisc>
  4. #include <fun>
  5. #include <fakemeta>
  6. #include <cstrike>
  7. #include <hamsandwich>
  8. #include <Vexd_Utilities>
  9.  
  10. #define PLUGIN "medkit"
  11. #define VERSION "3.0"
  12. #define AUTHOR "MaHu"
  13.  
  14. const Wep_c4 = ((1<<CSW_C4))
  15. //icon
  16. #define ICON_HIDE 0
  17. #define ICON_SHOW 1
  18. #define ICON_FLASH 2
  19. //models/sound
  20. #define V_MODEL "models/medkit/v_medkit.mdl"
  21. #define P_MODEL "models/medkit/p_medkit.mdl"
  22. #define W_MODEL "models/medkit/w_medkit.mdl"
  23. #define HEALING "medkit/healing.wav"
  24.  
  25. new cvar_hp, cvar_cost,g_healspr,gmsgIcon,bool:g_HasMedkit[32]
  26. new const sprite_heal[] = "sprites/heal.spr"
  27.  
  28. public plugin_init() {
  29. register_plugin(PLUGIN, VERSION, AUTHOR)
  30. //commands
  31. register_clcmd( "say /medkit" , "medkit")
  32. register_clcmd( "say_team /medkit" , "medkit")
  33. register_concmd("amx_medkit", "CmdGivemedkit", ADMIN_BAN, "<name>")
  34. //cvars
  35. cvar_hp = register_cvar("medkit_hp", "50")
  36. cvar_cost = register_cvar("medkit_cost","5000")
  37.  
  38. RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
  39. RegisterHam(Ham_Spawn, "player", "Spawn", 1)
  40. register_touch("medkit", "player", "touch_medkit")
  41. register_event("DeathMsg", "Death", "a")
  42. register_event("CurWeapon","checkWeapon","be","1=1")
  43. register_clcmd("drop","drop_medkit")
  44. gmsgIcon = get_user_msgid("StatusIcon")
  45. }
  46.  
  47. public plugin_precache( ){
  48. precache_sound(HEALING)
  49. precache_model(V_MODEL)
  50. precache_model(P_MODEL)
  51. precache_model(W_MODEL)
  52. precache_model("models/rpgrocket.mdl")
  53. g_healspr = engfunc(EngFunc_PrecacheModel, sprite_heal)
  54. }
  55.  
  56. public touch_medkit(ent, id)
  57. {
  58. if(!is_valid_ent(ent) || !is_user_alive(id))
  59. return PLUGIN_CONTINUE
  60. client_cmd(id, "spk items/ammopickup2")
  61. give_item(id,"weapon_c4");
  62. g_HasMedkit[id] = true;
  63. remove_entity(ent)
  64. message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id )
  65. write_byte(ICON_SHOW)
  66. write_string("plus")
  67. write_byte(222)
  68. write_byte(255)
  69. write_byte(0)
  70. message_end()
  71.  
  72. return PLUGIN_CONTINUE
  73. }
  74.  
  75. public medkit(id){
  76.  
  77. if(g_HasMedkit[id]){
  78. client_print(id,print_chat,"Mar megvetted az elet csomagot")
  79. return PLUGIN_HANDLED
  80. }
  81. if(cs_get_user_money(id)< get_pcvar_num(cvar_cost)){
  82. client_print(id,print_chat,"Nincs eleg penzed a vasarlashoz! Ara: $ %d ",get_pcvar_num(cvar_cost))
  83. return PLUGIN_HANDLED
  84. }
  85. else{
  86. cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(cvar_cost))
  87. give_item(id,"weapon_c4")
  88. g_HasMedkit[id] = true
  89. client_print(id, print_chat, "Sikeresen vettel egy elet csomagot")
  90. message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id )
  91. write_byte( ICON_SHOW )
  92. write_string("plus")
  93. write_byte(222)
  94. write_byte(255)
  95. write_byte(0)
  96. message_end()
  97.  
  98. return PLUGIN_HANDLED
  99.  
  100. }
  101. return PLUGIN_HANDLED
  102. }
  103.  
  104. public client_PreThink(id)
  105. {
  106. new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])
  107. if( get_user_button( id ) & IN_ATTACK && weapon == CSW_C4 && g_HasMedkit[id]){
  108. if( get_user_oldbutton( id ) & IN_ATTACK )
  109. {
  110. g_HasMedkit[id] = false
  111. SetView(id, 1)
  112. set_user_maxspeed(id,1.0);
  113. static Float:originF[3]
  114. pev(id, pev_origin, originF)
  115. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
  116. write_byte(TE_SPRITE)
  117. engfunc(EngFunc_WriteCoord, originF[0]+random_float(-5.0, 5.0))
  118. engfunc(EngFunc_WriteCoord, originF[1]+random_float(-5.0, 5.0))
  119. engfunc(EngFunc_WriteCoord, originF[2]+random_float(-10.0, 10.0))
  120. write_short(g_healspr)
  121. write_byte(random_num(5, 10))
  122. write_byte(200)
  123. message_end()
  124. set_task(2.0,"heal",id)
  125. emit_sound(id, CHAN_ITEM, HEALING, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  126. }
  127. }
  128. }
  129.  
  130. public drop_medkit(id)
  131. {
  132. new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])
  133. if(!(weapon == CSW_C4 && g_HasMedkit[id]))
  134. return PLUGIN_CONTINUE
  135. else{
  136. fm_strip_user_gun(id,0,"weapon_c4")
  137. g_HasMedkit[id] = false
  138. icon_hide(id)
  139. new Float:fVelocity[3], Float:fOrigin[3]
  140. entity_get_vector(id, EV_VEC_origin, fOrigin)
  141. VelocityByAim(id, 34, fVelocity)
  142.  
  143. fOrigin[0] += fVelocity[0]
  144. fOrigin[1] += fVelocity[1]
  145.  
  146. VelocityByAim(id, 300, fVelocity)
  147.  
  148. new ent = create_entity("info_target")
  149. entity_set_string(ent, EV_SZ_classname, "medkit")
  150. entity_set_model(ent, W_MODEL)
  151. entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
  152. entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
  153. entity_set_vector(ent, EV_VEC_origin, fOrigin)
  154. entity_set_vector(ent, EV_VEC_velocity, fVelocity)
  155. entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
  156. }
  157. return PLUGIN_HANDLED
  158. }
  159.  
  160. public CmdGivemedkit(id,level,cid)
  161. {
  162. if (!cmd_access(id,level,cid,2))
  163. return PLUGIN_HANDLED;
  164. new arg[32];
  165. read_argv(1,arg,31);
  166.  
  167. new player = cmd_target(id,arg,7)
  168. if (!player)
  169. return PLUGIN_HANDLED;
  170. new name[32];
  171. get_user_name(player,name,31)
  172. g_HasMedkit[player] = true
  173. give_item(player, "weapon_c4")
  174. message_begin( MSG_ONE, gmsgIcon, {0,0,0}, player )
  175. write_byte(ICON_SHOW)
  176. write_string("plus")
  177. write_byte(222)
  178. write_byte(255)
  179. write_byte( 0 )
  180. message_end()
  181.  
  182. return PLUGIN_HANDLED
  183. }
  184.  
  185. public client_connect(id)
  186. {
  187. g_HasMedkit[id] = false
  188. }
  189.  
  190. public client_disconnect(id)
  191. {
  192. g_HasMedkit[id] = false
  193. }
  194.  
  195. public Death()
  196. {
  197. new id = read_data(2)
  198. g_HasMedkit[id] = false
  199. g_HasMedkit[id] = false
  200. icon_hide(id)
  201. new Float:fVelocity[3], Float:fOrigin[3]
  202. entity_get_vector(id, EV_VEC_origin, fOrigin)
  203. VelocityByAim(id, 34, fVelocity)
  204.  
  205. fOrigin[0] += fVelocity[0]
  206. fOrigin[1] += fVelocity[1]
  207.  
  208. VelocityByAim(id, 300, fVelocity)
  209.  
  210. new ent = create_entity("info_target")
  211. entity_set_string(ent, EV_SZ_classname, "medkit")
  212. entity_set_model(ent, W_MODEL)
  213. entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
  214. entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
  215. entity_set_vector(ent, EV_VEC_origin, fOrigin)
  216. entity_set_vector(ent, EV_VEC_velocity, fVelocity)
  217. entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
  218. }
  219.  
  220. public checkWeapon(id)
  221. {
  222.  
  223. new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])
  224. if(weapon == CSW_C4 && g_HasMedkit[id]){
  225. entity_set_string(id, EV_SZ_viewmodel, V_MODEL)
  226. set_pev(id, pev_weaponmodel2, P_MODEL)
  227. message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id)
  228. write_byte(ICON_FLASH)
  229. write_string("plus")
  230. write_byte(222)
  231. write_byte(255)
  232. write_byte( 0 )
  233. message_end()
  234. }
  235.  
  236. if(!(weapon == CSW_C4) && g_HasMedkit[id]){
  237. message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id)
  238. write_byte(ICON_SHOW)
  239. write_string("plus")
  240. write_byte(222)
  241. write_byte(255)
  242. write_byte( 0 )
  243. message_end()
  244. }
  245.  
  246. }
  247.  
  248. public fwHamPlayerSpawnPost(id)
  249. {
  250. g_HasMedkit[id] = false
  251. }
  252.  
  253. public Spawn(id)
  254. {
  255. if(is_user_alive(id))
  256. g_HasMedkit[id] = false
  257. return HAM_HANDLED
  258. }
  259.  
  260. public heal(id){
  261. new hp = get_user_health(id)
  262. set_user_health(id, hp+ get_pcvar_num(cvar_hp))
  263. fm_strip_user_gun(id,0,"weapon_c4")
  264. set_user_maxspeed(id,250.0)
  265. SetView(id, 0)
  266. icon_hide(id)
  267. }
  268. public icon_hide(id){
  269. message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id )
  270. write_byte(ICON_HIDE)
  271. write_string("plus")
  272. write_byte(222)
  273. write_byte(255)
  274. write_byte(0)
  275. message_end()
  276. }