Advertisement
hadesownage

Untitled

Jul 4th, 2015
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <hamsandwich>
  5.  
  6. new g_max_clients;
  7.  
  8. #define FL_ONGROUND2 (FL_ONGROUND|FL_PARTIALGROUND|FL_INWATER|FL_CONVEYOR|FL_FLOAT)
  9.  
  10. #define UnitsToMeters(%1) (%1*0.0254)
  11.  
  12.  
  13. new bool:g_bCheckSurf[ 33 ];
  14.  
  15. new Float:g_oldorigins[33][3];
  16.  
  17. new Float:meters[33];
  18. public plugin_init()
  19. {
  20. register_plugin( "meter calculator", "1.0", "-=ThQ=-" );
  21. register_forward(FM_PlayerPreThink, "client_PreThink");
  22. g_max_clients = get_maxplayers();
  23.  
  24. set_task ( 1.0, "TASK_HUD", _, _, _, "b" );
  25.  
  26. RegisterHam ( Ham_Spawn, "player", "Player_Spawn", 1 );
  27. }
  28.  
  29. public Player_Spawn ( id ) {
  30.  
  31. if ( meters [ id ] )
  32. meters [ id ] = 0.0;
  33.  
  34. }
  35.  
  36. public client_PreThink(id)
  37. {
  38. if( !is_user_alive(id) ) return;
  39. new bool:on_ground = IsUserOnGround(id);
  40. if( g_bCheckSurf[ id ] )
  41. {
  42. g_bCheckSurf[ id ] = false;
  43. return;
  44. }
  45. //static Float:old_origin[33][3];
  46.  
  47. static Float:origin[3];
  48. pev(id, pev_origin, origin);
  49.  
  50. //pev(id, pev_velocity, velocity);
  51.  
  52. static Float:gravity;
  53. //pev(id, pev_maxspeed, maxspeed);
  54. pev(id, pev_gravity, gravity);
  55.  
  56. if(
  57. pev(id, pev_movetype) != MOVETYPE_WALK
  58. || gravity != 1.0
  59. || pev(id, pev_waterlevel) > 0
  60. || (g_oldorigins[id][0] == origin[0] && g_oldorigins[id][1] == origin[1] && g_oldorigins[id][2] == origin[2] )
  61. ) {
  62.  
  63. return;
  64. }
  65.  
  66. if(on_ground)
  67. {
  68.  
  69. meters[id]+=get_distance_f(origin,g_oldorigins[id]);
  70. pev(id, pev_origin, g_oldorigins[id]);
  71. //server_print("on ground %f %f %f %f %f",origin[0],origin[1],origin[2],UnitsToMeters(meters[id]), meters[id]);
  72. }
  73.  
  74.  
  75. }
  76.  
  77. public TASK_HUD ( ) {
  78.  
  79.  
  80. static id;
  81. for ( id = 1; id <= get_maxplayers ( ); id++ ) {
  82.  
  83. if ( is_user_alive ( id ) ) {
  84.  
  85. set_hudmessage(255, 255, 255, -1.0, 0.82, 0, 6.0, 1.0)
  86. show_hudmessage(id, "Meters: %f", UnitsToMeters(meters[id]) )
  87.  
  88.  
  89.  
  90.  
  91. }
  92.  
  93. }
  94.  
  95. }
  96.  
  97. public FwdTouch( iEntity1, iEntity2 )
  98. {
  99. // player touched something while in the air, so reset the jump
  100. // this prevents surfing
  101. //
  102. // the only problem with this is player could touch a wall during a jump
  103. // but not lose any speed and this would reset the jump
  104. //
  105. // oh well. this prevents surfing, and i'm happy
  106.  
  107. if( ( 1 <= iEntity1 <= g_max_clients ) && !IsUserOnGround( iEntity1 ) )
  108. {
  109. g_bCheckSurf[ iEntity1 ] = true;
  110. }
  111.  
  112. if( ( 1 <= iEntity2 <= g_max_clients ) && !IsUserOnGround( iEntity2 ) )
  113. {
  114. g_bCheckSurf[ iEntity2 ] = true;
  115. }
  116. }
  117.  
  118. stock bool:IsUserOnGround(client)
  119. {
  120. return !!(pev(client, pev_flags) & FL_ONGROUND2);
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement