Advertisement
Guest User

Untitled

a guest
Sep 28th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #include duffman\_common;
  2.  
  3. init() {
  4. addConnectThread(::onPlayerConnect);
  5. }
  6.  
  7. onPlayerConnect() {
  8. if(isDefined(self.pers["team"]) && self.pers["team"] == "spectator" && self.pers["freespec"] == 1)
  9. self thread StartWhSpectating();
  10. }
  11.  
  12. cleanup() {
  13. self endon("disconnect");
  14. self waittill("joined_team");
  15. self notify("end_wallhack");
  16. for(i=0;i<10 && isDefined(self.wallhack);i++)
  17. if(isDefined(self.wallhack[i]))
  18. self.wallhack[i] destroy();
  19. self setClientDvars("waypointIconHeight",13.37,"waypointIconWidth", 13.37);
  20. }
  21.  
  22. StartWhSpectating() {
  23. self endon("disconnect");
  24. self endon("end_wallhack");
  25. level endon("game_ended");
  26. self thread cleanup();
  27. self.wallhack = [];
  28. for(i=0;i<10;i++) {
  29. self.wallhack[i] = NewClientHudElem(self);
  30. self.wallhack[i] setShader("white", 2, 2);
  31. self.wallhack[i] setWaypoint(true, "white");
  32. self.wallhack[i].alpha = 0;
  33. }
  34. self setClientDvars("waypointIconHeight",13.37,"waypointIconWidth", 13.37);
  35. oldplayer = self getSpectatorClient();
  36. while(!isDefined(oldplayer)) {
  37. oldplayer = self getSpectatorClient();
  38. wait .05;
  39. }
  40. self setClientDvars("waypointIconHeight",12,"waypointIconWidth", 7);
  41. while(1) {
  42. wait .05;
  43. player = self getSpectatorClient();
  44. if(!isDefined(player)) {
  45. if(isDefined(oldplayer) && oldplayer isRealyAlive())
  46. player = oldplayer;
  47. else {
  48. for(i=0;i<10;i++)
  49. self.wallhack[i].alpha = 0;
  50. continue;
  51. }
  52. }
  53. else
  54. oldplayer = player;
  55.  
  56. players = self getBestPlayers(player);
  57.  
  58. for(i=0;i<10;i++) {
  59. if(isDefined(players[i])) {
  60. if(getPlayerVisibility(player,players[i]))
  61. self.wallhack[i].color = (0,1,0);
  62. else
  63. self.wallhack[i].color = (1,0,0);
  64. self.wallhack[i].x = players[i].origin[0];
  65. self.wallhack[i].y = players[i].origin[1];
  66. if(players[i] GetStance() == "stand")
  67. self.wallhack[i].z = players[i].origin[2] - 10;
  68. else if(players[i] GetStance() == "prone")
  69. self.wallhack[i].z = players[i].origin[2] - 45;
  70. else
  71. self.wallhack[i].z = players[i].origin[2] - 30;
  72. self.wallhack[i].alpha = .6;
  73. }
  74. else
  75. self.wallhack[i].alpha = 0;
  76. }
  77. }
  78. }
  79.  
  80. getBestPlayers(client) {
  81. bestplayer = [];
  82. available = [];
  83. angle = [];
  84. players = getAllPlayers();
  85. for(i=0;i<players.size;i++) {
  86. if(players[i].health && players[i] != client && (players[i].pers["team"] != client.pers["team"] || !level.teambased) && (!isDefined(players[i].pers["isBot"]) || !players[i].pers["isBot"])) {
  87. available[available.size] = players[i];
  88. angle[angle.size] = getAngleDistance(self.angles[0],vectorToAngles((players[i].origin)-(self.origin))[0]);
  89. }
  90. }
  91. for(k=0;k<10&&angle.size>9;k++) {
  92. for(i=0;i<angle.size-1;i++) {
  93. if(angle[i] > angle[i+1]) {
  94. save = angle[i+1];
  95. save2 = available[i+1];
  96. angle[i+1] = angle[i];
  97. angle[i] = save;
  98. available[i+1] = available[i];
  99. available[i] = save2;
  100. }
  101. }
  102. }
  103. for(i=0;i<10 && i<available.size;i++)
  104. bestplayer[bestplayer.size] = available[i];
  105. return bestplayer;
  106. }
  107.  
  108. getSpectatorClient() {
  109. players = getAllPlayers();
  110. for(i=0;i<players.size;i++)
  111. if(isDefined(players[i]) && players[i] != self && players[i] isRealyAlive() && players[i] getPlayerAngles() == self GetPlayerAngles())
  112. return players[i];
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement