HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*
  2. * _______ _ _ __ __
  3. * | _____/ | | | | \ \ __ / /
  4. * | | | | | | | | / \ | |
  5. * | | | |____| | | |/ __ \| |
  6. * | | ___ | ______ | | / \ |
  7. * | | |_ | | | | | | / \ |
  8. * | | | | | | | | | | | |
  9. * | |____| | | | | | | | | |
  10. * |_______/ |_| |_| \_/ \_/
  11. *
  12. *
  13. *
  14. * Last Edited: 07-09-09
  15. *
  16. * ============
  17. * Changelog:
  18. * ============
  19. *
  20. * v2.2
  21. * -Using avelocity now (idea by arkshine)
  22. *
  23. * v2.1
  24. * -Added glow CVAR
  25. *
  26. * v2.0
  27. * -Added color to floating weapons
  28. *
  29. * v1.0
  30. * -Initial Release
  31. *
  32. */
  33.  
  34. #define VERSION "2.2"
  35.  
  36. #include <amxmodx>
  37. #include <amxmisc>
  38. #include <engine>
  39. #include <fakemeta>
  40. #include <fun>
  41.  
  42. new maxplayers
  43. new speed_pcvar
  44. new toggle_pcvar
  45. new glow_pcvar
  46.  
  47. public plugin_init()
  48. {
  49. register_plugin("UT Style Floating Weapons",VERSION,"GHW_Chronic")
  50.  
  51. speed_pcvar = register_cvar("FW_speed","25.0")
  52. toggle_pcvar = register_cvar("FW_enabled","1")
  53. glow_pcvar = register_cvar("FW_glow","1")
  54.  
  55. register_touch("weaponbox","worldspawn","touch")
  56. set_task(1.0,"newgame")
  57.  
  58. maxplayers = get_maxplayers()
  59. }
  60.  
  61. public touch(weaponbox,worldspawn)
  62. {
  63. if(get_pcvar_num(toggle_pcvar) && pev_valid(weaponbox))
  64. {
  65. float_weapon(weaponbox)
  66. set_task(0.1,"spin_weapon",weaponbox)
  67. }
  68. }
  69.  
  70. public newgame()
  71. {
  72. if(get_pcvar_num(toggle_pcvar))
  73. {
  74. static ent, classname[8]
  75. ent = engfunc(EngFunc_FindEntityInSphere,maxplayers,Float:{0.0,0.0,0.0},4800.0)
  76. while(ent)
  77. {
  78. if(pev_valid(ent))
  79. {
  80. pev(ent,pev_classname,classname,7)
  81. if(containi(classname,"armoury")!=-1)
  82. {
  83. float_weapon(ent)
  84. spin_weapon(ent)
  85. }
  86. }
  87. ent = engfunc(EngFunc_FindEntityInSphere,ent,Float:{0.0,0.0,0.0},4800.0)
  88. }
  89. }
  90. }
  91.  
  92. public float_weapon(ent)
  93. {
  94. if(pev_valid(ent))
  95. {
  96. if(get_pcvar_num(glow_pcvar))
  97. {
  98. set_pev(ent,pev_renderfx,kRenderFxGlowShell)
  99. switch(random_num(1,4))
  100. {
  101. case 1: set_pev(ent,pev_rendercolor,Float:{0.0,0.0,255.0})
  102. case 2: set_pev(ent,pev_rendercolor,Float:{0.0,255.0,0.0})
  103. case 3: set_pev(ent,pev_rendercolor,Float:{255.0,0.0,0.0})
  104. case 4: set_pev(ent,pev_rendercolor,Float:{255.0,255.0,255.0})
  105. }
  106. }
  107.  
  108. static Float:floatvector[3]
  109. pev(ent,pev_origin,floatvector)
  110. floatvector[2] += 30.0
  111. set_pev(ent,pev_origin,floatvector)
  112.  
  113. pev(ent,pev_angles,floatvector)
  114. floatvector[0] -= 90.0
  115. floatvector[1] += 45.0
  116. set_pev(ent,pev_angles,floatvector)
  117.  
  118. set_pev(ent,pev_movetype,MOVETYPE_NOCLIP)
  119.  
  120. set_pev(ent,pev_solid,SOLID_TRIGGER)
  121.  
  122. set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
  123. }
  124. }
  125.  
  126. public spin_weapon(ent)
  127. {
  128. if(pev_valid(ent))
  129. {
  130. static Float:floatvector[3]
  131.  
  132. floatvector[0] = 0.0
  133. floatvector[1] = get_pcvar_float(speed_pcvar)
  134. floatvector[2] = 0.0
  135.  
  136. set_pev(ent,pev_avelocity,floatvector)
  137. }
  138. }