spectate.pwn 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. stock SpectatePlayer(playerid, giveplayerid)
  2. {
  3. if(IsPlayerConnected(giveplayerid)) {
  4. if( InsideTut{giveplayerid} >= 1 ) {
  5. SendClientMessageEx(playerid, COLOR_WHITE, "NOTE: This person is in the tutorial. Please consider this before assuming that they're air-breaking.");
  6. }
  7. if(PlayerInfo[giveplayerid][pAccountRestricted]) SendClientMessageEx(playerid, COLOR_WHITE, "NOTE: This person has their account restricted. Please consider this before assuming that they're health hacking.");
  8. if(Spectating[playerid] == 0) {
  9. new Float: pPositions[3];
  10. GetPlayerPos(playerid, pPositions[0], pPositions[1], pPositions[2]);
  11. SetPVarFloat(playerid, "SpecPosX", pPositions[0]);
  12. SetPVarFloat(playerid, "SpecPosY", pPositions[1]);
  13. SetPVarFloat(playerid, "SpecPosZ", pPositions[2]);
  14. SetPVarInt(playerid, "SpecInt", GetPlayerInterior(playerid));
  15. SetPVarInt(playerid, "SpecVW", GetPlayerVirtualWorld(playerid));
  16. if(IsPlayerInAnyVehicle(giveplayerid)) {
  17. TogglePlayerSpectating(playerid, true);
  18. new carid = GetPlayerVehicleID( giveplayerid );
  19. PlayerSpectateVehicle( playerid, carid );
  20. SetPlayerInterior( playerid, GetPlayerInterior( giveplayerid ) );
  21. SetPlayerVirtualWorld( playerid, GetPlayerVirtualWorld( giveplayerid ) );
  22. }
  23. else if(InsidePlane[giveplayerid] != INVALID_VEHICLE_ID) {
  24. TogglePlayerSpectating(playerid, true);
  25. PlayerSpectateVehicle(playerid, InsidePlane[giveplayerid]);
  26. SetPlayerInterior(playerid, GetPlayerInterior(giveplayerid));
  27. SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(giveplayerid));
  28. }
  29. else {
  30. for(new i = 0; i < 2; i++) {
  31. TogglePlayerSpectating(playerid, true);
  32. PlayerSpectatePlayer( playerid, giveplayerid );
  33. SetPlayerInterior( playerid, GetPlayerInterior( giveplayerid ) );
  34. SetPlayerVirtualWorld( playerid, GetPlayerVirtualWorld( giveplayerid ) );
  35. }
  36. }
  37. GettingSpectated[giveplayerid] = playerid;
  38. if(Spectate[playerid] != giveplayerid) SpecTime[playerid] = gettime();
  39. Spectate[playerid] = giveplayerid;
  40. Spectating[playerid] = 1;
  41. }
  42. else {
  43. if(IsPlayerInAnyVehicle(giveplayerid)) {
  44. TogglePlayerSpectating(playerid, true);
  45. new carid = GetPlayerVehicleID( giveplayerid );
  46. PlayerSpectateVehicle( playerid, carid );
  47. SetPlayerInterior( playerid, GetPlayerInterior( giveplayerid ) );
  48. SetPlayerVirtualWorld( playerid, GetPlayerVirtualWorld( giveplayerid ) );
  49. }
  50. else if(InsidePlane[giveplayerid] != INVALID_VEHICLE_ID) {
  51. TogglePlayerSpectating(playerid, true);
  52. PlayerSpectateVehicle(playerid, InsidePlane[giveplayerid]);
  53. SetPlayerInterior(playerid, GetPlayerInterior(giveplayerid));
  54. SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(giveplayerid));
  55. }
  56. else {
  57. for(new i = 0; i < 2; i++) {
  58. TogglePlayerSpectating(playerid, true);
  59. PlayerSpectatePlayer( playerid, giveplayerid );
  60. SetPlayerInterior( playerid, GetPlayerInterior( giveplayerid ) );
  61. SetPlayerVirtualWorld( playerid, GetPlayerVirtualWorld( giveplayerid ) );
  62. }
  63. }
  64. GettingSpectated[Spectate[playerid]] = INVALID_PLAYER_ID;
  65. GettingSpectated[giveplayerid] = playerid;
  66. if(Spectate[playerid] != giveplayerid) SpecTime[playerid] = gettime();
  67. Spectate[playerid] = giveplayerid;
  68. Spectating[playerid] = 1;
  69. }
  70. new string[64];
  71. format(string, sizeof(string), "You are spectating %s (ID: %d).", GetPlayerNameEx(giveplayerid), giveplayerid);
  72. SendClientMessageEx(playerid, COLOR_WHITE, string);
  73. }
  74. return 1;
  75. }
  76. forward SpecUpdate(playerid);
  77. public SpecUpdate(playerid)
  78. {
  79. if(Spectating[playerid] > 0 && Spectate[playerid] != INVALID_PLAYER_ID)
  80. {
  81. for(new i = 0; i < 2; i++)
  82. {
  83. TogglePlayerSpectating(playerid, true);
  84. PlayerSpectatePlayer( playerid, Spectate[playerid] );
  85. SetPlayerInterior( playerid, GetPlayerInterior( Spectate[playerid] ) );
  86. SetPlayerVirtualWorld( playerid, GetPlayerVirtualWorld( Spectate[playerid] ) );
  87. }
  88. }
  89. else if(Spectating[playerid] > 0 && GetPVarType(playerid, "SpectatingWatch"))
  90. {
  91. for(new i = 0; i < 2; i++)
  92. {
  93. TogglePlayerSpectating(playerid, true);
  94. PlayerSpectatePlayer( playerid, GetPVarInt(playerid, "SpectatingWatch") );
  95. SetPlayerInterior( playerid, GetPlayerInterior( GetPVarInt(playerid, "SpectatingWatch") ) );
  96. SetPlayerVirtualWorld( playerid, GetPlayerVirtualWorld( GetPVarInt(playerid, "SpectatingWatch") ) );
  97. }
  98. }
  99. return 1;
  100. }