Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2012
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.19 KB | None | 0 0
  1. //Simple spectate script
  2. //Author Vetal © 2012 All Rights Reserved.
  3.  
  4. g_Enabled <- false;
  5. g_MyOldPos <- Vector(0.0, 0.0, 0.0);
  6. pPlayer <- FindLocalPlayer();
  7.  
  8. //Custom values (start). You can set this values whatever you want:
  9. g_TimerUpdate <- 10;
  10. g_Distance    <- 5;
  11. //Custom values (end)
  12.  
  13.  
  14. function onClientCommand( szCmd, szParams )
  15. {
  16.     if ( szCmd == "spec" ){
  17.     local p, playerid;
  18.     if(!szParams){
  19.     Message( "USAGE: /spec <playerid>");
  20.     return false; }
  21.     if ( szParams == "off" && g_Enabled == true ){
  22.     RestoreMyPlace();
  23.     Message( "Spectate has been disabled");
  24.     return false; }
  25.     if(g_Enabled == true){
  26.     Message( "Another spectate is active, to disable use  /spec off");
  27.     return false; }
  28.     if(!IsNum( szParams )){
  29.     Message( "USAGE: /spec <playerid>");
  30.     return false; }
  31.     playerid = szParams.tointeger();
  32.     if(playerid == pPlayer.ID){
  33.     Message( "You cant spectate yourself !");
  34.     return false; }
  35.     p = FindPlayer( playerid );
  36.     if(p){
  37.     pPlayer.Frozen = true;
  38.     g_Enabled = true;
  39.     Message( "Spectate Mode is ON. To Turn it Off, use /spec off");
  40.     g_MyOldPos = pPlayer.Pos;
  41.     NewTimer("SpectatorOn", g_TimerUpdate, 1, playerid);  } else
  42.     { Message( "Can't find the player."); } }
  43. }
  44.  
  45.  
  46.  
  47.  
  48. function SpectatorOn(playerid)
  49. {
  50.     local p, camPos, v, myPos;
  51.     p = FindPlayer( playerid );
  52.     if(!p){ RestoreMyPlace();
  53.     return false;  }
  54.     v = p.Pos;
  55.     camPos = Vector( v.x + g_Distance, v.y, v.z + g_Distance);
  56.     myPos  = Vector( v.x + g_Distance, v.y, v.z + 100);
  57.     SetCameraMatrix( camPos, v );
  58.     pPlayer.Pos = myPos;  
  59.     if(g_Enabled == true) {  NewTimer("SpectatorOn", g_TimerUpdate, 1, playerid);  }
  60.     if(g_Enabled == false){  RestoreMyPlace();  }
  61. }
  62.  
  63. function RestoreMyPlace(){
  64.    
  65.     RestoreCamera();
  66.     g_Enabled = true; //Needed for not being killed from falling from the sky
  67.     pPlayer.Pos = g_MyOldPos;  
  68.     pPlayer.Frozen = false;
  69.     NewTimer("RestoreStatus", 800, 1);
  70. }
  71.  
  72. function onScriptLoad()
  73. { print("Vetal's simple spectate script loaded"); }
  74.  
  75. function RestoreStatus(){ g_Enabled = false;  }
  76.  
  77. function onClientShot( attacker, weapon, bodypart )
  78. {
  79.     if(g_Enabled == true) {  
  80.     return 0; }
  81.     return 1;
  82. }
  83.  
  84. function onClientHurt( entity )
  85. {
  86.     if(g_Enabled == true) {  
  87.     return 0; }
  88.     return 1;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement