Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <fakemeta>
  4. #include <hamsandwich>
  5.  
  6. #define PLUGIN "Back Weapons"
  7. #define AUTHOR "hoboman313/cheap_suit"
  8. #define VERSION "1.87"
  9.  
  10. #define MAX_PLAYERS 32
  11. #define OFFSET_PRIMARYWEAPON 116
  12. #define OFFSET_WEAPONTYPE 43
  13. #define EXTRAOFFSET_WEAPONS 4
  14. #define OFFSET_AUTOSWITCH 509
  15. #define OFFSET_SHIELD 510
  16. #define HAS_SHIELD (1<<24)
  17.  
  18. #define PRIMARY_WEAPONS (1<<CSW_SCOUT | 1<<CSW_XM1014 | 1<<CSW_MAC10 | 1<<CSW_AUG | 1<<CSW_UMP45 | 1<<CSW_SG550 | 1<<CSW_GALIL | 1<<CSW_FAMAS | 1<<CSW_AWP | 1<<CSW_MP5NAVY | 1<<CSW_M249 | 1<<CSW_M3 | 1<<CSW_M4A1 | 1<<CSW_TMP | 1<<CSW_G3SG1 | 1<<CSW_SG552 | 1<<CSW_AK47 | 1<<CSW_P90)
  19.  
  20. #define is_weapon_primary(%1) (PRIMARY_WEAPONS & (1<<%1))
  21. #define cs_get_weapon_type(%1) get_pdata_int(%1, OFFSET_WEAPONTYPE, EXTRAOFFSET_WEAPONS)
  22. #define cs_get_user_hasprim(%1) get_pdata_int(%1, OFFSET_PRIMARYWEAPON)
  23. #define cs_get_user_autoswitch(%1) get_pdata_int(%1, OFFSET_AUTOSWITCH)
  24. #define cs_get_user_shield(%1) (get_pdata_int(%1, OFFSET_SHIELD) & HAS_SHIELD) ? 1 : 0
  25.  
  26. enum
  27. {
  28. MODEL_NULL = 0,
  29. MODEL_AUG = 1,
  30. MODEL_AK47 = 2,
  31. MODEL_AWP = 3,
  32. MODEL_MP5NAVY = 4,
  33. MODEL_P90 = 5,
  34. MODEL_GALIL = 6,
  35. MODEL_M4A1 = 7,
  36. MODEL_SG550 = 8,
  37. MODEL_SG552 = 9,
  38. MODEL_SCOUT = 10,
  39. MODEL_XM1014 = 11,
  40. MODEL_M3 = 12,
  41. MODEL_G3SG1 = 13,
  42. MODEL_M249 = 14,
  43. MODEL_FAMAS = 15,
  44. MODEL_UMP45 = 16
  45. }
  46.  
  47. new g_weapons[][] =
  48. {
  49. "weapon_p228",
  50. "weapon_scout",
  51. "weapon_hegrenade",
  52. "weapon_xm1014",
  53. "weapon_c4",
  54. "weapon_mac10",
  55. "weapon_aug",
  56. "weapon_smokegrenade",
  57. "weapon_elite",
  58. "weapon_fiveseven",
  59. "weapon_ump45",
  60. "weapon_sg550",
  61. "weapon_galil",
  62. "weapon_famas",
  63. "weapon_usp",
  64. "weapon_glock18",
  65. "weapon_awp",
  66. "weapon_mp5navy",
  67. "weapon_m249",
  68. "weapon_m3",
  69. "weapon_m4a1",
  70. "weapon_tmp",
  71. "weapon_g3sg1",
  72. "weapon_flashbang",
  73. "weapon_deagle",
  74. "weapon_sg552",
  75. "weapon_ak47",
  76. "weapon_knife",
  77. "weapon_p90"
  78. }
  79.  
  80. new g_weaponclass[] = "backweapon"
  81. new g_weaponmodel[] = "models/backweapons.mdl"
  82.  
  83. new g_weaponent[MAX_PLAYERS+1]
  84.  
  85. public plugin_init()
  86. {
  87. register_plugin(PLUGIN, VERSION, AUTHOR)
  88. register_cvar(PLUGIN, VERSION, FCVAR_SPONLY|FCVAR_SERVER)
  89.  
  90. RegisterHam(Ham_Killed, "player", "bacon_killed")
  91. RegisterHam(Ham_Spawn, "player", "bacon_spawn_post", 1)
  92. RegisterHam(Ham_AddPlayerItem, "player", "bacon_addplayeritem")
  93. RegisterHam(Ham_RemovePlayerItem, "player", "bacon_removeplayeritem")
  94.  
  95. for(new i = 0; i < sizeof g_weapons; i++)
  96. {
  97. RegisterHam(Ham_Item_AttachToPlayer, g_weapons[i], "bacon_item_attachtoplayer_post", 1)
  98. RegisterHam(Ham_Item_Deploy, g_weapons[i], "bacon_item_deploy_post", 1)
  99. }
  100. }
  101.  
  102. public plugin_precache()
  103. precache_model(g_weaponmodel)
  104.  
  105. public client_putinserver(id)
  106. {
  107. static infotarget
  108. if(!infotarget) infotarget = engfunc(EngFunc_AllocString, "info_target")
  109.  
  110. g_weaponent[id] = engfunc(EngFunc_CreateNamedEntity, infotarget)
  111. if(pev_valid(g_weaponent[id]))
  112. {
  113. engfunc(EngFunc_SetModel, g_weaponent[id], g_weaponmodel)
  114. set_pev(g_weaponent[id], pev_classname, g_weaponclass)
  115. set_pev(g_weaponent[id], pev_movetype, MOVETYPE_FOLLOW)
  116. set_pev(g_weaponent[id], pev_effects, EF_NODRAW)
  117. set_pev(g_weaponent[id], pev_aiment, id)
  118. }
  119. }
  120.  
  121. public client_disconnect(id)
  122. {
  123. if(g_weaponent[id] > 0 && pev_valid(g_weaponent[id]))
  124. engfunc(EngFunc_RemoveEntity, g_weaponent[id])
  125.  
  126. g_weaponent[id] = 0
  127. }
  128.  
  129. public bacon_killed(id, idattacker, shouldgib)
  130. fm_set_entity_visibility(g_weaponent[id], 0)
  131.  
  132. public bacon_addplayeritem(id, ent)
  133. {
  134. static weaponid; weaponid = cs_get_weapon_type(ent)
  135. if(is_weapon_primary(weaponid) && pev_valid(g_weaponent[id]) && cs_get_user_team(id) == CS_TEAM_CT)
  136. {
  137. fm_set_entity_visibility(g_weaponent[id], 0)
  138. set_pev(g_weaponent[id], pev_body, get_weapon_model(weaponid))
  139. }
  140. }
  141.  
  142. public bacon_removeplayeritem(id, ent)
  143. {
  144. if(is_weapon_primary(cs_get_weapon_type(ent)) && pev_valid(g_weaponent[id]))
  145. fm_set_entity_visibility(g_weaponent[id], 0)
  146. }
  147.  
  148. public bacon_spawn_post(id) if(is_user_alive(id))
  149. {
  150. if(!cs_get_user_hasprim(id))
  151. fm_set_entity_visibility(g_weaponent[id], 0)
  152.  
  153. if(cs_get_user_team(id) == CS_TEAM_T)
  154. {
  155. engfunc(EngFunc_RemoveEntity, g_weaponent[id])
  156. }
  157. }
  158.  
  159. public bacon_item_attachtoplayer_post(ent, id) if(is_user_alive(id) && !cs_get_user_autoswitch(id))
  160. {
  161. if(is_weapon_primary(cs_get_weapon_type(ent)) && pev_valid(g_weaponent[id]))
  162. fm_set_entity_visibility(g_weaponent[id], 1)
  163. }
  164.  
  165. public bacon_item_deploy_post(ent)
  166. {
  167. static id; id = pev(ent, pev_owner)
  168. if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
  169. {
  170. static weapon; weapon = cs_get_weapon_type(ent)
  171. if(is_weapon_primary(weapon) || cs_get_user_shield(id))
  172. fm_set_entity_visibility(g_weaponent[id], 0)
  173.  
  174. else if(cs_get_user_hasprim(id))
  175. fm_set_entity_visibility(g_weaponent[id], 1)
  176. }
  177. }
  178.  
  179. stock get_weapon_model(weapon)
  180. {
  181. switch(weapon)
  182. {
  183. case CSW_SCOUT: return MODEL_SCOUT
  184. case CSW_XM1014: return MODEL_XM1014
  185. case CSW_AUG: return MODEL_AUG
  186. case CSW_UMP45: return MODEL_UMP45
  187. case CSW_SG550: return MODEL_SG550
  188. case CSW_GALIL: return MODEL_GALIL
  189. case CSW_FAMAS: return MODEL_FAMAS
  190. case CSW_AWP: return MODEL_AWP
  191. case CSW_MP5NAVY: return MODEL_MP5NAVY
  192. case CSW_M249: return MODEL_M249
  193. case CSW_M3: return MODEL_M3
  194. case CSW_M4A1: return MODEL_M4A1
  195. case CSW_G3SG1: return MODEL_G3SG1
  196. case CSW_SG552: return MODEL_SG552
  197. case CSW_AK47: return MODEL_AK47
  198. case CSW_P90: return MODEL_P90
  199. }
  200. return 0
  201. }
  202.  
  203. stock fm_set_entity_visibility(index, visible = 1)
  204. set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement