Advertisement
Guest User

Untitled

a guest
Apr 24th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if($RTB::Hooks::ServerControl) {
  2.     RTB_registerPref("TeleBrick Create Permission", "Command Teleport", "Pref::CmdTeleport::Permissions", "list None 1 Admin 2 Super_Admin 3", "Server_CommandTeleport", 1, 0, 0);
  3.     RTB_registerPref("TeleBrick Remove Permission", "Command Teleport", "Pref::CmdTeleport::RemovePermissions", "list None 1 Admin 2 Super_Admin 3", "Server_CommandTeleport", 2, 0, 0);
  4. } else {
  5.     $Pref::CmdTeleport::Permissions = 1;
  6.     $Pref::CmdTeleport::RemovePermissions = 2;
  7. }
  8.  
  9.  
  10.  
  11. //Read all named bricks
  12. %file = new fileObject();
  13. %file.openForRead("config/telebrick/list.txt");
  14. %lineCt = -1;
  15. while(!%file.isEOF())
  16. {
  17.   %line = %file.readLine();
  18.   echo(%lineCt++);
  19.   if(%line $= "")
  20.       continue;
  21.  
  22.   $TB_CurrentOpen = %lineCT;
  23.   echo($TeleBrick[%lineCt] = %line);
  24.   $TeleName[getWord($TeleBrick[%lineCt],4)] = %lineCt;
  25. }
  26. %file.close(); //close it
  27. %file.delete(); //delete it from the game memory or something idk
  28.  
  29. $TB_CurrentOpen = $TB_CurrentOpen++;
  30.  
  31. function servercmdgoto(%client, %name)
  32. {
  33.     %player = %client.player;
  34.     if($TeleName[%name] $= "" || $TeleName[%name] $= "BLANK") {
  35.         //echo($TeleName[%name]);
  36.         return;
  37.     }
  38.     //echo("Goto successful 1");
  39.     %index = $TeleName[%name];
  40.     if(getWord($TeleBrick[%index],5) $= "1") {
  41.         //echo("Goto successful 2");
  42.         if(%client.getBLID() != getWord($TeleBrick[%index],3)) {
  43.             //echo("Goto fail");
  44.             return;
  45.         }
  46.     //echo("Goto successful 3");
  47.     }
  48.     %x = getWord($TeleBrick[%index],0);
  49.     %y = getWord($TeleBrick[%index],1);
  50.     %z = getWord($TeleBrick[%index],2);
  51.     %size = getWord($TeleBrick[%index],6);
  52.     %xyz = %x SPC %y SPC %z;
  53.  
  54.  
  55.     %factor = 0.1*%size;
  56.     %additive = "0 0" SPC %factor;
  57.     %transform = vectoradd(%xyz,%additive);
  58.     %player.setTransform(%transform);
  59. }
  60.  
  61. function CmdTeleport_Permcheck(%client, %which)
  62. {
  63.     switch(%which)
  64.     {
  65.         case 1:
  66.             return true;
  67.         case 2:
  68.             if(!%client.isAdmin && !%client.isSuperAdmin)
  69.                 return false;
  70.             else
  71.                 return true;
  72.         case 3:
  73.             if(!%client.isSuperAdmin)
  74.                 return false;
  75.             else
  76.                 return true;
  77.         default:
  78.             return false;
  79.     }
  80. }
  81.  
  82.  
  83. function servercmdsetTeleBrick(%client, %name, %private)
  84. {
  85.     if(!CmdTeleport_Permcheck(%client, $Pref::CmdTeleport::Permissions))
  86.         return;
  87.     echo("Test I'm here!");
  88.  
  89.     if(%private == true) {
  90.         %private = 1;
  91.     } else if(%private != true || %private != 1)
  92.     {
  93.         %private = 0;
  94.     }
  95.     for(%i = 0; %i < $TB_CurrentOpen; %i++) {
  96.         %check = getWord($TeleBrick[%i],4);
  97.         if(%check $= "")
  98.             continue;
  99.         if(%name $= %check) {
  100.             echo("Taken222");
  101.             return;
  102.         }
  103.     }
  104.    
  105.     %player = %client.player;
  106.     if(%name $= "") {
  107.         messageClient(%client,'', "No name chosen for telebrick.");
  108.         return;
  109.     }
  110.     %start = %player.getEyePoint();
  111.     %dir = %player.getEyeVector();
  112.    
  113.     %end = vectorAdd(%start, vectorScale(%dir, 20));
  114.        
  115.     %mask = $TypeMasks::FxBrickAlwaysObjectType;
  116.     %ignore2 = $TypeMasks::TerrainObjectType;
  117.     %ray = ContainerRayCast(%start, %end , %mask, %player, %ignore2);
  118.     //{
  119.         %hit = getWord(%ray, 0);
  120.         if (isObject(%hit)) {
  121.            
  122.             echo("HEEEERE");
  123.             $TeleBrick[$TB_CurrentOpen] = %hit.getPosition() SPC %client.getBLID() SPC %name SPC %private SPC %hit.getdatablock().bricksizez;
  124.             $TeleName[%name] = $TB_CurrentOpen;
  125.             $TB_CurrentOpen++;
  126.             messageClient(%client,'', "\c6Brick position successfully set as telemarker\c4" SPC %name);
  127.             echo(%client.name SPC "has created teleporter" SPC %name);
  128.             doTeleListSave();
  129.         }
  130.        
  131.         //%position = posFromRaycast(%ray);
  132.         //%normal = normalFromRaycast(%ray);
  133.  
  134.         //Can't directly spawn an explosion, must use a projectile
  135.         //%data = %client.ndImage.projectile;
  136. //
  137.         //if(!isObject(%data))
  138.         //  %data = ND_HitProjectile;
  139. //
  140.         //%proj = new Projectile()
  141.         //{
  142.         //  datablock = %data;
  143.         //  initialPosition = %position;
  144.         //  initialVelocity = %normal;
  145.         //};
  146.     //}
  147. }
  148.  
  149.  
  150.  
  151.  
  152. function doTeleListSave(){
  153.     %file = new fileObject();
  154.     %file.openForWrite("config/telebrick/list.txt");
  155.     for(%i = 0; %i < $TB_CurrentOpen; %i++) {
  156.         if($TeleBrick[%i] $= "BLANK") {
  157.             %file.writeLine(" ");
  158.             return;
  159.     }
  160.         %file.writeLine($TeleBrick[%i]);
  161.     }
  162.     %file.close();
  163.     %file.delete();
  164. }
  165.  
  166. function serverCmdTeleList(%client, %mine)
  167. {
  168.     echo(%clname = %client.getBLID());
  169.     if(%mine != 1) {
  170.         messageClient(%client,'', "\c6 All available teleporters:");
  171.         for(%i = 0; %i < $TB_CurrentOpen; %i++) {
  172.             if($TeleBrick[%i] $= "BLANK" || $TeleBrick[%i] $= "")
  173.                 continue;
  174.             if(getWord($TeleBrick[%i],5) $= "1")
  175.                 continue;
  176.             if(getWord($TeleBrick[%i],4) $= "")
  177.                 continue;
  178.             %tele = getWord($TeleBrick[%i],4);
  179.             messageClient(%client,'',"\c2" @ %tele);
  180.         }
  181.         return;
  182.     }
  183.    
  184.    
  185.     messageClient(%client,'', "\c6 All your teleporters:");
  186.     messageClient(%client,'', "\c4[PRIVATE]");
  187.     for(%i = 0; %i < $TB_CurrentOpen; %i++) {
  188.        
  189.         if($TeleBrick[%i] $= "BLANK" || $TeleBrick[%i] $= "")
  190.             continue;
  191.         if(getWord($TeleBrick[%i],3) !$= %clname)
  192.             continue;
  193.         if(getWord($TeleBrick[%i],5) $= "0")
  194.             continue;
  195.         if(getWord($TeleBrick[%i],4) $= "")
  196.             continue;
  197.         %tele = getWord($TeleBrick[%i],4);
  198.         messageClient(%client,'',"\c2" @ %tele);
  199.     }
  200.     messageClient(%client,'', "\c4[PUBLIC]");
  201.     for(%i = 0; %i < $TB_CurrentOpen; %i++) {
  202.         if($TeleBrick[%i] $= "BLANK" || $TeleBrick[%i] $= "")
  203.             continue;
  204.         if(getWord($TeleBrick[%i],3) !$= %clname)
  205.             continue;
  206.         if(getWord($TeleBrick[%i],5) $= "1")
  207.             continue;
  208.         if(getWord($TeleBrick[%i],4) $= "")
  209.             continue;
  210.         %tele = getWord($TeleBrick[%i],4);
  211.         messageClient(%client,'',"\c2" @ %tele);
  212.     }
  213. }
  214.  
  215. function serverCmdremoveTele(%client, %name)
  216. {
  217.     %clname = %client.getBLID();
  218.     if($TeleName[%name] $= "" || $TeleName[%name] $= "BLANK")
  219.         return;
  220.     %index = $TeleName[%name];
  221.     if(!CmdTeleport_Permcheck(%client, $Pref::CmdTeleport::RemovePermissions))
  222.     {
  223.         if(getWord($TeleBrick[%index],3) != %clname) {
  224.             messageClient(%client,'',"You cannot remove other people's teleporters");
  225.             return;
  226.         }
  227.     }
  228.     echo(%client.name SPC "has removed teleporter" SPC %name);
  229.     messageClient(%client,'',"\c3Teleporter\c4" SPC %name SPC "\c3successfully removed.");
  230.     $TeleBrick[%index] = "BLANK";
  231.     $TeleName[%name] = "BLANK";
  232.     doTeleListSave();
  233. }
  234. //use word searching
  235. //$TeleBrick[0] = %hit.getPosition() SPC %client SPC %name SPC %private;
  236.  
  237.  
  238. function serverCmdtelehelp(%client, %arg)
  239. {
  240.     switch$(%arg)
  241.     {
  242.         case "teleList":
  243.             messageClient(%client,'',"\c6Typing \c3 /teleList \c6 will give you a list of all public teleporters.");
  244.             messageClient(%client,'',"\c6You can also type \c3 /teleList\c4 1\c6 to get a list of your own teleporters.");
  245.         case "setTeleBrick":
  246.             messageClient(%client,'',"\c6To create a telebrick, look at any brick on the map and type \c3 /setTeleBrick \c4ANY-NAME");
  247.             messageClient(%client,'',"\c6Type \c3/setTeleBrick \c5ANY-NAME  \c41\c6  to make the telebrick private (only you can go to it or see it in the list)");
  248.         case "goto":
  249.             messageClient(%client,'',"\c3/goto \c4NAME\c6 will teleport you directly above a telebrick, even if the brick itself was deleted.");
  250.         case "removeTele":
  251.             messageClient(%client,'',"\c6To remove a telebrick from the list, type \c3/removeTele \c4NAME\c6. You can only delete your own. The brick it was attached to does not dissapear.");
  252.         default:
  253.             messageClient(%client,'',"\c6Type \c3/teleHelp\c4 COMMAND \c6to discover how a command works!");
  254.             messageClient(%client,'',"\c4[COMMAND LIST]");
  255.             messageClient(%client,'',"\c3teleList");
  256.             messageClient(%client,'',"\c3setTeleBrick");
  257.             messageClient(%client,'',"\c3goto");
  258.             messageClient(%client,'',"\c3removeTele");
  259.     }
  260. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement