Advertisement
mforce

AdminESP Lite

Sep 7th, 2015
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.03 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <engine>
  3.  
  4. new g_iLaser;
  5. new bool:g_bAdmin[33];
  6. new bool:g_IsAlive[33];
  7.  
  8. public plugin_precache()
  9.     g_iLaser = precache_model("sprites/laserbeam.spr");
  10.  
  11. public plugin_end()
  12. {
  13.     new pl[32], pnum; get_players(pl, pnum);
  14.     for(new i; i < pnum; i++)
  15.         remove_task(pl[i]);
  16. }  
  17.    
  18. public plugin_init()
  19. {
  20.     register_plugin("AdminESP Lite", "1.10", "neugomon");
  21.    
  22.     register_event("DeathMsg", "eDeathMsg", "a", "1>0");
  23.     register_event("ResetHUD", "eResetHud", "be");
  24.     register_event("TextMsg", "eSpecMode", "b", "2&#Spec_M");
  25. }
  26.  
  27. public client_putinserver(id)
  28. {
  29.     g_bAdmin[id]  = (get_user_flags(id) & ADMIN_KICK) ? true : false;
  30.     g_IsAlive[id] = false;
  31. }
  32.  
  33. public client_disconnect(id)
  34. {
  35.     if(g_bAdmin[id])
  36.         remove_task(id);
  37. }
  38.  
  39. public eDeathMsg()
  40.     g_IsAlive[read_data(2)] = false;
  41.  
  42. public eResetHud(id)
  43.     g_IsAlive[id] = true;
  44.  
  45. public eSpecMode(id)
  46. {
  47.     if(!g_bAdmin[id]) return;
  48.  
  49.     if(entity_get_int(id, EV_INT_iuser1) == 4)
  50.         set_task(0.3, "EspTimer", id, .flags="b");
  51.     else
  52.         remove_task(id);
  53. }
  54.  
  55. public EspTimer(id)
  56. {
  57.     switch(g_IsAlive[id])
  58.     {
  59.         case false:
  60.         {
  61.             static iTarget; iTarget = entity_get_int(id, EV_INT_iuser2);
  62.  
  63.             if(iTarget && is_user_alive(iTarget) && is_valid_ent(iTarget))
  64.                 SendQuadro(id, iTarget);
  65.         }
  66.         case true: remove_task(id);
  67.        
  68.     }  
  69. }
  70.  
  71. SendQuadro(id, iTarget)
  72. {
  73.     static pl[32], pnum, my_team;
  74.     static Float:my_origin[3], Float:target_origin[3], Float:v_middle[3], Float:v_hitpoint[3];
  75.     static Float:distance, Float:distance_to_hitpoint, Float:distance_target_hitpoint, Float:scaled_bone_len;
  76.     static Float:v_bone_start[3], Float:v_bone_end[3], Float:offset_vector[3], Float:eye_level[3];
  77.  
  78.     entity_get_vector(iTarget, EV_VEC_origin, my_origin);
  79.     my_team = get_user_team(iTarget);
  80.     get_players(pl, pnum, "ah");
  81.     for(new i; i < pnum; i++)
  82.     {
  83.         if(pl[i] == iTarget) continue;
  84.         if(my_team == get_user_team(pl[i])) continue;
  85.  
  86.         entity_get_vector(pl[i], EV_VEC_origin, target_origin);
  87.         distance = vector_distance(my_origin, target_origin);
  88.  
  89.         trace_line(-1, my_origin, target_origin, v_hitpoint);
  90.        
  91.         subVec(target_origin, my_origin, v_middle);
  92.         normalize(v_middle, offset_vector, (distance_to_hitpoint = vector_distance(my_origin, v_hitpoint)) - 10.0);
  93.  
  94.         copyVec(my_origin, eye_level);
  95.         eye_level[2] += 17.5;
  96.         addVec(offset_vector, eye_level);
  97.  
  98.         copyVec(offset_vector, v_bone_start);
  99.         copyVec(offset_vector, v_bone_end);
  100.         v_bone_end[2] -= (scaled_bone_len = distance_to_hitpoint / distance * 50.0);
  101.  
  102.         if(distance_to_hitpoint == distance)
  103.             continue;
  104.        
  105.         distance_target_hitpoint = (distance - distance_to_hitpoint) / 12;
  106.         MakeQuadrate(id, v_bone_start, v_bone_end, floatround(scaled_bone_len * 3.0), (distance_target_hitpoint < 170.0) ? (255 - floatround(distance_target_hitpoint)) : 85)
  107.     }
  108. }
  109.  
  110. stock normalize(Float:Vec[3], Float:Ret[3], Float:multiplier)
  111. {
  112.     static Float:len; len = vector_distance(Vec, Float:{ 0.0, 0.0, 0.0 });
  113.     copyVec(Vec, Ret);
  114.  
  115.     Ret[0] /= len;
  116.     Ret[1] /= len;
  117.     Ret[2] /= len;
  118.     Ret[0] *= multiplier;
  119.     Ret[1] *= multiplier;
  120.     Ret[2] *= multiplier;
  121. }
  122.  
  123. stock copyVec(Float:Vec[3], Float:Ret[3])
  124. {
  125.     Ret[0] = Vec[0];
  126.     Ret[1] = Vec[1];
  127.     Ret[2] = Vec[2];
  128. }
  129.  
  130. stock subVec(Float:Vec1[3], Float:Vec2[3], Float:Ret[3])
  131. {
  132.     Ret[0] = Vec1[0] - Vec2[0];
  133.     Ret[1] = Vec1[1] - Vec2[1];
  134.     Ret[2] = Vec1[2] - Vec2[2];
  135. }
  136.  
  137. stock addVec(Float:Vec1[3], Float:Vec2[3])
  138. {
  139.     Vec1[0] += Vec2[0];
  140.     Vec1[1] += Vec2[1];
  141.     Vec1[2] += Vec2[2];
  142. }
  143.  
  144. MakeQuadrate(id, Float:Vec1[3], Float:Vec2[3], width, brightness)
  145. {
  146.     message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, { 0, 0, 0 }, id);
  147.     write_byte(0);
  148.     write_coord(floatround(Vec1[0]));
  149.     write_coord(floatround(Vec1[1]));
  150.     write_coord(floatround(Vec1[2]));
  151.     write_coord(floatround(Vec2[0]));
  152.     write_coord(floatround(Vec2[1]));
  153.     write_coord(floatround(Vec2[2]));
  154.     write_short(g_iLaser);
  155.     write_byte(3);
  156.     write_byte(0);
  157.     write_byte(3);
  158.     write_byte(width);
  159.     write_byte(0);
  160.     write_byte(0);
  161.     write_byte(255);
  162.     write_byte(0);
  163.     write_byte(brightness);
  164.     write_byte(0);
  165.     message_end();
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement