HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < fakemeta >
  4. #include < hamsandwich >
  5.  
  6. #pragma semicolon 1
  7.  
  8. #define PLUGIN_VERSION "1.0.0"
  9.  
  10. #define TASKID 81732519124
  11.  
  12. #define TRAIL_ACTIVE 1
  13. #define TRAIL_INACTIVE 0
  14. #define TRAIL_LIFE 15
  15. #define ACCES_FLAG ADMIN_BAN
  16.  
  17. new gTrailSprite;
  18. new gTrailRandomColor[ 33 ][ 3 ];
  19. new bPlayerTrailStatus[ 33 ];
  20. new Float:bflNextCheck[ 33 ];
  21. new const gTrailSpriteIndex[] = "sprites/zbeam2.spr";
  22.  
  23. const IN_MOVING = IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT | IN_JUMP;
  24.  
  25. public plugin_init()
  26. {
  27. register_plugin( "Owner Trail", PLUGIN_VERSION, "tuty" );
  28. register_forward( FM_CmdStart, "forward_cmdstart" );
  29. register_clcmd( "say trail", "cmdMakeOwnerTrail" );
  30. register_clcmd( "trail", "cmdMakeOwnerTrail" );
  31. register_clcmd( "say_team trail", "cmdMakeOwnerTrail" );
  32.  
  33. RegisterHam(Ham_Spawn, "player", "Fwd_Spawn", 1);
  34. }
  35.  
  36. public plugin_precache()
  37. {
  38. gTrailSprite = precache_model( gTrailSpriteIndex );
  39. }
  40.  
  41. public client_connect( id )
  42. {
  43. bPlayerTrailStatus[ id ] = TRAIL_INACTIVE;
  44. }
  45.  
  46. public Fwd_Spawn(id)
  47. {
  48. if(get_user_flags(id) & ACCES_FLAG)
  49. {
  50. bPlayerTrailStatus[id] = TRAIL_ACTIVE;
  51.  
  52. gTrailRandomColor[ id ][ 0 ] = random_num( 0, 255 );
  53. gTrailRandomColor[ id ][ 1 ] = random_num( 0, 255 );
  54. gTrailRandomColor[ id ][ 2 ] = random_num( 0, 255 );
  55.  
  56. set_task(10.0, "change_color", id + TASKID, .flags="b");
  57. }
  58. }
  59.  
  60. public change_color(taskid)
  61. {
  62. new id = taskid - TASKID;
  63.  
  64. if(!is_user_alive(id))
  65. {
  66. remove_task(taskid);
  67. return;
  68. }
  69.  
  70. gTrailRandomColor[ id ][ 0 ] = random_num( 0, 255 );
  71. gTrailRandomColor[ id ][ 1 ] = random_num( 0, 255 );
  72. gTrailRandomColor[ id ][ 2 ] = random_num( 0, 255 );
  73. }
  74.  
  75. public cmdMakeOwnerTrail( id )
  76. {
  77. if( !is_user_alive( id ) )
  78. {
  79. client_print( id, print_chat, "[Trail] Te ezt a parancsot nem hasznalhatod mert nem vagy ADMIN!" );
  80. return PLUGIN_HANDLED;
  81. }
  82. if( !( get_user_flags( id ) & ACCES_FLAG ) )
  83. {
  84. client_print( id, print_chat, "[Trail] A parancs elfogadva, mostmar ADMIN csikot huzol magad utann!" );
  85. return PLUGIN_HANDLED;
  86. }
  87.  
  88. if( bPlayerTrailStatus[ id ] == TRAIL_ACTIVE )
  89. {
  90.  
  91. client_print( id, print_chat, "[Trail] Az ADMIN csik deaktivalva, mostmar nem huzol magad utann csikot!" );
  92.  
  93. bPlayerTrailStatus[ id ] = TRAIL_INACTIVE;
  94.  
  95. UTIL_KillBeamFollow( id );
  96.  
  97. bflNextCheck[ id ] = -5000.0;
  98.  
  99. return PLUGIN_HANDLED;
  100. }
  101.  
  102. if( bPlayerTrailStatus[ id ] == TRAIL_INACTIVE )
  103. {
  104. client_print( id, print_chat, "[Trail] ADMIN trail aktivalva! Mostmar csikot fogsz huzni!" );
  105.  
  106. bPlayerTrailStatus[ id ] = TRAIL_ACTIVE;
  107.  
  108. gTrailRandomColor[ id ][ 0 ] = random_num( 0, 255 );
  109. gTrailRandomColor[ id ][ 1 ] = random_num( 0, 255 );
  110. gTrailRandomColor[ id ][ 2 ] = random_num( 0, 255 );
  111.  
  112. return PLUGIN_HANDLED;
  113. }
  114.  
  115. return PLUGIN_CONTINUE;
  116. }
  117.  
  118. public forward_cmdstart( id, handle )
  119. {
  120. if( !is_user_alive( id ) || bPlayerTrailStatus[ id ] == TRAIL_INACTIVE )
  121. {
  122. return FMRES_IGNORED;
  123. }
  124.  
  125. new iButton = get_uc( handle, UC_Buttons );
  126.  
  127. if( !( iButton & IN_MOVING ) )
  128. {
  129. new Float:flGameTime = get_gametime();
  130. if( bflNextCheck[ id ] < flGameTime )
  131. {
  132. UTIL_KillBeamFollow( id );
  133. UTIL_BeamFollow( id );
  134. bflNextCheck[ id ] = flGameTime + ( TRAIL_LIFE / 8 );
  135. }
  136. }
  137.  
  138. return FMRES_IGNORED;
  139. }
  140.  
  141. stock UTIL_BeamFollow( const iClient )
  142. {
  143. message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
  144. write_byte( TE_BEAMFOLLOW );
  145. write_short( iClient );
  146. write_short( gTrailSprite );
  147. write_byte( TRAIL_LIFE );
  148. write_byte( 20 );
  149. write_byte( gTrailRandomColor[ iClient ][ 0 ] );
  150. write_byte( gTrailRandomColor[ iClient ][ 1 ] );
  151. write_byte( gTrailRandomColor[ iClient ][ 2 ] );
  152. write_byte( 255 );
  153. message_end();
  154. }
  155.  
  156. stock UTIL_KillBeamFollow( const iClient )
  157. {
  158. message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
  159. write_byte( TE_KILLBEAM );
  160. write_short( iClient );
  161. message_end();
  162. }
  163.