HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fun>
  3. #include <fakemeta>
  4.  
  5. new stuck[33]
  6.  
  7. new cvar[3]
  8.  
  9. new const Float:size[][3] = {
  10. {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},
  11. {0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},
  12. {0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},
  13. {0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},
  14. {0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0}
  15. }
  16.  
  17. public plugin_init() {
  18. register_plugin("Automatic Unstuck","1.5","NL)Ramon(NL")
  19. cvar[0] = register_cvar("amx_autounstuck","1")
  20. cvar[1] = register_cvar("amx_autounstuckeffects","1")
  21. cvar[2] = register_cvar("amx_autounstuckwait","7")
  22. set_task(0.1,"checkstuck",0,"",0,"b")
  23. }
  24.  
  25. public checkstuck() {
  26. if(get_pcvar_num(cvar[0]) >= 1) {
  27. static players[32], pnum, player
  28. get_players(players, pnum)
  29. static Float:origin[3]
  30. static Float:mins[3], hull
  31. static Float:vec[3]
  32. static o,i
  33. for(i=0; i<pnum; i++){
  34. player = players[i]
  35. if (is_user_connected(player) && is_user_alive(player)) {
  36. pev(player, pev_origin, origin)
  37. hull = pev(player, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
  38. if (!is_hull_vacant(origin, hull,player) && !get_user_noclip(player) && !(pev(player,pev_solid) & SOLID_NOT)) {
  39. ++stuck[player]
  40. if(stuck[player] >= get_pcvar_num(cvar[2])) {
  41. pev(player, pev_mins, mins)
  42. vec[2] = origin[2]
  43. for (o=0; o < sizeof size; ++o) {
  44. vec[0] = origin[0] - mins[0] * size[o][0]
  45. vec[1] = origin[1] - mins[1] * size[o][1]
  46. vec[2] = origin[2] - mins[2] * size[o][2]
  47. if (is_hull_vacant(vec, hull,player)) {
  48. engfunc(EngFunc_SetOrigin, player, vec)
  49. effects(player)
  50. set_pev(player,pev_velocity,{0.0,0.0,0.0})
  51. o = sizeof size
  52. }
  53. }
  54. }
  55. }
  56. else
  57. {
  58. stuck[player] = 0
  59. }
  60. }
  61. }
  62. }
  63. }
  64.  
  65. stock bool:is_hull_vacant(const Float:origin[3], hull,id) {
  66. static tr
  67. engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)
  68. if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid)) //get_tr2(tr, TR_InOpen))
  69. return true
  70.  
  71. return false
  72. }
  73.  
  74. public effects(id) {
  75. if(get_pcvar_num(cvar[1])) {
  76. set_hudmessage(255,150,50, -1.0, 0.65, 0, 6.0, 1.5,0.1,0.7) // HUDMESSAGE
  77. show_hudmessage(id,"Ki lettel szedve!") // HUDMESSAGE
  78. message_begin(MSG_ONE_UNRELIABLE,105,{0,0,0},id )
  79. write_short(1<<10) // fade lasts this long duration
  80. write_short(1<<10) // fade lasts this long hold time
  81. write_short(1<<1) // fade type (in / out)
  82. write_byte(20) // fade red
  83. write_byte(255) // fade green
  84. write_byte(255) // fade blue
  85. write_byte(255) // fade alpha
  86. message_end()
  87. client_cmd(id,"spk fvox/blip.wav")
  88. }
  89. }
  90.