hlmod.hu
https://hlmod.hu/

Kezdővédelm, glow kitéle
https://hlmod.hu/viewtopic.php?f=9&t=6971
Oldal: 1 / 1

Szerző:  ChaspeR [2012.12.30. 12:58 ]
Hozzászólás témája:  Kezdővédelm, glow kitéle

SMA Forráskód: [ Mindet kijelol ]
  1. /* Formatright © 2011, ConnorMcLeod
  2.  
  3. This plugin is free software;
  4. you can redistribute it and/or modify it under the terms of the
  5. GNU General Public License as published by the Free Software Foundation.
  6.  
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11.  
  12. You should have received a copy of the GNU General Public License
  13. along with this plugin; if not, write to the
  14. Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  15. Boston, MA 02111-1307, USA.
  16. */
  17.  
  18. #include <amxmodx>
  19. #include <fakemeta>
  20. #include <hamsandwich>
  21. #include <fun>
  22. #include <cstrike>
  23.  
  24. #define VERSION "0.1.2"
  25. #define PLUGIN "Spawn Protection"
  26.  
  27. const MAX_PLAYERS = 32
  28.  
  29. const DMG_GRENADE = (1<<24)
  30.  
  31. #define MaskEnt(%0) ( 1<<(%0 & 31) )
  32.  
  33. new g_bitProtectedPlayers
  34. #define MarkUserProtected(%0) g_bitProtectedPlayers |= MaskEnt(%0)
  35. #define ClearUserProtected(%0) g_bitProtectedPlayers &= ~MaskEnt(%0)
  36. #define IsUserProtected(%0) ( g_bitProtectedPlayers & MaskEnt(%0) )
  37.  
  38. new g_iMaxPlayers
  39. #define IsPlayer(%0) ( 1 <= %0 <= g_iMaxPlayers )
  40.  
  41. new Float:g_flEndOfProtection[MAX_PLAYERS+1]
  42. new g_pCvarProtectTime, g_pCvarDisplayHud
  43. new HamHook:g_iHhTakeDamage, HamHook:g_iHhTraceAttack, HamHook:g_iHhCSoundEntThinkPost,
  44. HamHook:g_iHhTakeDamage_CZBot, HamHook:g_iHhTraceAttack_CZBot
  45. new g_iSyncHud
  46.  
  47. public plugin_init()
  48. {
  49. register_plugin(PLUGIN, VERSION, "ConnorMcLeod")
  50.  
  51. g_pCvarProtectTime = register_cvar("amx_spawn_protection", "3.0")
  52. g_pCvarDisplayHud = register_cvar("amx_spawn_protect_display", "1")
  53. g_iSyncHud = CreateHudSyncObj()
  54.  
  55. RegisterHam(Ham_Spawn, "player", "OnCBasePlayer_Spawn_Post", true)
  56.  
  57. DisableHamForward( g_iHhTakeDamage = RegisterHam(Ham_TakeDamage, "player", "OnCBasePlayer_TakeDamage", false) )
  58. DisableHamForward( g_iHhTraceAttack = RegisterHam(Ham_TraceAttack, "player", "OnCBasePlayer_TraceAttack", false) )
  59.  
  60. g_iMaxPlayers = get_maxplayers()
  61.  
  62. for(new __ent = g_iMaxPlayers+1, __maxEntities = global_get(glb_maxEntities); __ent<__maxEntities; __ent++)
  63. {
  64. if( pev_valid(__ent) && !pev(__ent, pev_classname) )
  65. {
  66. DisableHamForward( g_iHhCSoundEntThinkPost = RegisterHamFromEntity(Ham_Think, __ent, "OnCSoundEnt_Think_Post", true) )
  67. break
  68. }
  69. }
  70. }
  71.  
  72. public cz_bot_ham_registerable( id )
  73. {
  74. RegisterHamFromEntity(Ham_Spawn, id, "OnCBasePlayer_Spawn_Post", true)
  75. DisableHamForward( g_iHhTakeDamage_CZBot = RegisterHamFromEntity(Ham_TakeDamage, id, "OnCBasePlayer_TakeDamage", false) )
  76. DisableHamForward( g_iHhTraceAttack_CZBot = RegisterHamFromEntity(Ham_TraceAttack, id, "OnCBasePlayer_TraceAttack", false) )
  77. }
  78.  
  79. public client_disconnect(id)
  80. {
  81. ClearUserProtected(id)
  82. if( !g_bitProtectedPlayers )
  83. {
  84. DisableHamForward( g_iHhTakeDamage )
  85. DisableHamForward( g_iHhTraceAttack )
  86. DisableHamForward( g_iHhCSoundEntThinkPost )
  87. if( g_iHhTakeDamage_CZBot )
  88. {
  89. DisableHamForward( g_iHhTakeDamage_CZBot )
  90. DisableHamForward( g_iHhTraceAttack_CZBot )
  91. }
  92. }
  93. }
  94.  
  95. public OnCBasePlayer_TraceAttack(id, iAttacker, Float:flDamage, Float:fVecDir[3], ptr, bitsDamageType)
  96. {
  97. if( IsUserProtected(id) || (IsPlayer(iAttacker) && IsUserProtected(iAttacker) ) )
  98. {
  99. return HAM_SUPERCEDE
  100. }
  101. return HAM_IGNORED
  102. }
  103.  
  104. public OnCBasePlayer_TakeDamage(id, iInflictor, iAttacker, Float:flDamage, bitsDamageType)
  105. {
  106. if( bitsDamageType & DMG_GRENADE && ( IsUserProtected(id) || (IsPlayer(iAttacker) && IsUserProtected(iAttacker) ) ) )
  107. {
  108. SetHamReturnInteger(0)
  109. return HAM_SUPERCEDE
  110. }
  111. return HAM_IGNORED
  112. }
  113.  
  114. public OnCBasePlayer_Spawn_Post( id )
  115. {
  116. if( is_user_alive(id) )
  117. {
  118. switch( cs_get_user_team(id) )
  119. {
  120. case CS_TEAM_T:
  121. {
  122. set_user_rendering(id, kRenderFxGlowShell, 200, 0, 0, kRenderNormal, 24)
  123. }
  124. case CS_TEAM_CT:
  125. {
  126. set_user_rendering(id, kRenderFxGlowShell, 0, 0, 200, kRenderNormal, 24)
  127. }
  128. default:
  129. {
  130. return
  131. }
  132. }
  133. if( !g_bitProtectedPlayers )
  134. {
  135. EnableHamForward( g_iHhTakeDamage )
  136. EnableHamForward( g_iHhTraceAttack )
  137. EnableHamForward( g_iHhCSoundEntThinkPost )
  138.  
  139. if( g_iHhTakeDamage_CZBot )
  140. {
  141. EnableHamForward( g_iHhTakeDamage_CZBot )
  142. EnableHamForward( g_iHhTraceAttack_CZBot )
  143. }
  144. }
  145. MarkUserProtected(id)
  146. new Float:flProtectTime = get_pcvar_float( g_pCvarProtectTime )
  147. g_flEndOfProtection[id] = get_gametime() + flProtectTime
  148. if( get_pcvar_num(g_pCvarDisplayHud) )
  149. {
  150. set_hudmessage(0, 100, 200, -1.0, 0.75, 0, 0.01, flProtectTime, 0.01, 0.01, -1)
  151. ShowSyncHudMsg(id, g_iSyncHud, "You are protected and can't shoot during %.1f seconds", flProtectTime)
  152. }
  153. }
  154. }
  155.  
  156. public OnCSoundEnt_Think_Post( ent )
  157. {
  158. new iPlayers[32], iNum, id, Float:flGameTime = get_gametime()
  159. get_players(iPlayers, iNum, "h")
  160. set_hudmessage(0, 100, 200, -1.0, 0.75, 0, 0.01, 0.5, 0.01, 0.01, -1)
  161. for(--iNum; iNum>=0; iNum--)
  162. {
  163. id = iPlayers[iNum]
  164. if( IsUserProtected(id) && (g_flEndOfProtection[id] <= flGameTime || !is_user_alive(id) ) )
  165. {
  166. set_user_rendering(id, _, 0, 0, 0, _, 0)
  167. ClearUserProtected(id)
  168. ShowSyncHudMsg(id, g_iSyncHud, "You can shoot now.")
  169. }
  170. }
  171.  
  172. if( !g_bitProtectedPlayers )
  173. {
  174. DisableHamForward( g_iHhTakeDamage )
  175. DisableHamForward( g_iHhTraceAttack )
  176. DisableHamForward( g_iHhCSoundEntThinkPost )
  177. if( g_iHhTakeDamage_CZBot )
  178. {
  179. DisableHamForward( g_iHhTakeDamage_CZBot )
  180. DisableHamForward( g_iHhTraceAttack_CZBot )
  181. }
  182. }
  183. }


Sziasztok , valaki kibírnál ebből venni a glowot?
A kérdés meg azt,hogy mit kell kivenni ... :D hogy legközelebb már tudjam :)

Szerző:  Chaos Killer [2012.12.30. 13:42 ]
Hozzászólás témája:  Re: Kezdővédelm, glow kitéle

SMA Forráskód: [ Mindet kijelol ]
  1. /* Formatright © 2011, ConnorMcLeod
  2.  
  3. This plugin is free software;
  4. you can redistribute it and/or modify it under the terms of the
  5. GNU General Public License as published by the Free Software Foundation.
  6.  
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11.  
  12. You should have received a copy of the GNU General Public License
  13. along with this plugin; if not, write to the
  14. Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  15. Boston, MA 02111-1307, USA.
  16. */
  17.  
  18. #include <amxmodx>
  19. #include <fakemeta>
  20. #include <hamsandwich>
  21. #include <fun>
  22. #include <cstrike>
  23.  
  24. #define VERSION "0.1.2"
  25. #define PLUGIN "Spawn Protection"
  26.  
  27. const MAX_PLAYERS = 32
  28.  
  29. const DMG_GRENADE = (1<<24)
  30.  
  31. #define MaskEnt(%0) ( 1<<(%0 & 31) )
  32.  
  33. new g_bitProtectedPlayers
  34. #define MarkUserProtected(%0) g_bitProtectedPlayers |= MaskEnt(%0)
  35. #define ClearUserProtected(%0) g_bitProtectedPlayers &= ~MaskEnt(%0)
  36. #define IsUserProtected(%0) ( g_bitProtectedPlayers & MaskEnt(%0) )
  37.  
  38. new g_iMaxPlayers
  39. #define IsPlayer(%0) ( 1 <= %0 <= g_iMaxPlayers )
  40.  
  41. new Float:g_flEndOfProtection[MAX_PLAYERS+1]
  42. new g_pCvarProtectTime, g_pCvarDisplayHud
  43. new HamHook:g_iHhTakeDamage, HamHook:g_iHhTraceAttack, HamHook:g_iHhCSoundEntThinkPost,
  44. HamHook:g_iHhTakeDamage_CZBot, HamHook:g_iHhTraceAttack_CZBot
  45. new g_iSyncHud
  46.  
  47. public plugin_init()
  48. {
  49. register_plugin(PLUGIN, VERSION, "ConnorMcLeod")
  50.  
  51. g_pCvarProtectTime = register_cvar("amx_spawn_protection", "3.0")
  52. g_pCvarDisplayHud = register_cvar("amx_spawn_protect_display", "1")
  53. g_iSyncHud = CreateHudSyncObj()
  54.  
  55. RegisterHam(Ham_Spawn, "player", "OnCBasePlayer_Spawn_Post", true)
  56.  
  57. DisableHamForward( g_iHhTakeDamage = RegisterHam(Ham_TakeDamage, "player", "OnCBasePlayer_TakeDamage", false) )
  58. DisableHamForward( g_iHhTraceAttack = RegisterHam(Ham_TraceAttack, "player", "OnCBasePlayer_TraceAttack", false) )
  59.  
  60. g_iMaxPlayers = get_maxplayers()
  61.  
  62. for(new __ent = g_iMaxPlayers+1, __maxEntities = global_get(glb_maxEntities); __ent<__maxEntities; __ent++)
  63. {
  64. if( pev_valid(__ent) && !pev(__ent, pev_classname) )
  65. {
  66. DisableHamForward( g_iHhCSoundEntThinkPost = RegisterHamFromEntity(Ham_Think, __ent, "OnCSoundEnt_Think_Post", true) )
  67. break
  68. }
  69. }
  70. }
  71.  
  72. public cz_bot_ham_registerable( id )
  73. {
  74. RegisterHamFromEntity(Ham_Spawn, id, "OnCBasePlayer_Spawn_Post", true)
  75. DisableHamForward( g_iHhTakeDamage_CZBot = RegisterHamFromEntity(Ham_TakeDamage, id, "OnCBasePlayer_TakeDamage", false) )
  76. DisableHamForward( g_iHhTraceAttack_CZBot = RegisterHamFromEntity(Ham_TraceAttack, id, "OnCBasePlayer_TraceAttack", false) )
  77. }
  78.  
  79. public client_disconnect(id)
  80. {
  81. ClearUserProtected(id)
  82. if( !g_bitProtectedPlayers )
  83. {
  84. DisableHamForward( g_iHhTakeDamage )
  85. DisableHamForward( g_iHhTraceAttack )
  86. DisableHamForward( g_iHhCSoundEntThinkPost )
  87. if( g_iHhTakeDamage_CZBot )
  88. {
  89. DisableHamForward( g_iHhTakeDamage_CZBot )
  90. DisableHamForward( g_iHhTraceAttack_CZBot )
  91. }
  92. }
  93. }
  94.  
  95. public OnCBasePlayer_TraceAttack(id, iAttacker, Float:flDamage, Float:fVecDir[3], ptr, bitsDamageType)
  96. {
  97. if( IsUserProtected(id) || (IsPlayer(iAttacker) && IsUserProtected(iAttacker) ) )
  98. {
  99. return HAM_SUPERCEDE
  100. }
  101. return HAM_IGNORED
  102. }
  103.  
  104. public OnCBasePlayer_TakeDamage(id, iInflictor, iAttacker, Float:flDamage, bitsDamageType)
  105. {
  106. if( bitsDamageType & DMG_GRENADE && ( IsUserProtected(id) || (IsPlayer(iAttacker) && IsUserProtected(iAttacker) ) ) )
  107. {
  108. SetHamReturnInteger(0)
  109. return HAM_SUPERCEDE
  110. }
  111. return HAM_IGNORED
  112. }
  113.  
  114. public OnCBasePlayer_Spawn_Post( id )
  115. {
  116. if( is_user_alive(id) )
  117. {
  118. }
  119. if( !g_bitProtectedPlayers )
  120. {
  121. EnableHamForward( g_iHhTakeDamage )
  122. EnableHamForward( g_iHhTraceAttack )
  123. EnableHamForward( g_iHhCSoundEntThinkPost )
  124.  
  125. if( g_iHhTakeDamage_CZBot )
  126. {
  127. EnableHamForward( g_iHhTakeDamage_CZBot )
  128. EnableHamForward( g_iHhTraceAttack_CZBot )
  129. }
  130. }
  131. MarkUserProtected(id)
  132. new Float:flProtectTime = get_pcvar_float( g_pCvarProtectTime )
  133. g_flEndOfProtection[id] = get_gametime() + flProtectTime
  134. if( get_pcvar_num(g_pCvarDisplayHud) )
  135. {
  136. set_hudmessage(0, 100, 200, -1.0, 0.75, 0, 0.01, flProtectTime, 0.01, 0.01, -1)
  137. ShowSyncHudMsg(id, g_iSyncHud, "You are protected and can't shoot during %.1f seconds", flProtectTime)
  138. }
  139. }
  140. }
  141.  
  142. public OnCSoundEnt_Think_Post( ent )
  143. {
  144. new iPlayers[32], iNum, id, Float:flGameTime = get_gametime()
  145. get_players(iPlayers, iNum, "h")
  146. set_hudmessage(0, 100, 200, -1.0, 0.75, 0, 0.01, 0.5, 0.01, 0.01, -1)
  147. for(--iNum; iNum>=0; iNum--)
  148. {
  149. id = iPlayers[iNum]
  150. if( IsUserProtected(id) && (g_flEndOfProtection[id] <= flGameTime || !is_user_alive(id) ) )
  151. {
  152. set_user_rendering(id, _, 0, 0, 0, _, 0)
  153. ClearUserProtected(id)
  154. ShowSyncHudMsg(id, g_iSyncHud, "You can shoot now.")
  155. }
  156. }
  157.  
  158. if( !g_bitProtectedPlayers )
  159. {
  160. DisableHamForward( g_iHhTakeDamage )
  161. DisableHamForward( g_iHhTraceAttack )
  162. DisableHamForward( g_iHhCSoundEntThinkPost )
  163. if( g_iHhTakeDamage_CZBot )
  164. {
  165. DisableHamForward( g_iHhTakeDamage_CZBot )
  166. DisableHamForward( g_iHhTraceAttack_CZBot )
  167. }
  168. }
  169. }
  170.  


Player spawn forwardnál kellet kivenni a set_user_rendering függvényeket

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/