Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if($RTB::Hooks::ServerControl) {
- RTB_registerPref("TeleBrick Create Permission", "Command Teleport", "Pref::CmdTeleport::Permissions", "list None 1 Admin 2 Super_Admin 3", "Server_CommandTeleport", 1, 0, 0);
- RTB_registerPref("TeleBrick Remove Permission", "Command Teleport", "Pref::CmdTeleport::RemovePermissions", "list None 1 Admin 2 Super_Admin 3", "Server_CommandTeleport", 2, 0, 0);
- } else {
- $Pref::CmdTeleport::Permissions = 1;
- $Pref::CmdTeleport::RemovePermissions = 2;
- }
- //Read all named bricks
- %file = new fileObject();
- %file.openForRead("config/telebrick/list.txt");
- %lineCt = -1;
- while(!%file.isEOF())
- {
- %line = %file.readLine();
- echo(%lineCt++);
- if(%line $= "")
- continue;
- $TB_CurrentOpen = %lineCT;
- echo($TeleBrick[%lineCt] = %line);
- $TeleName[getWord($TeleBrick[%lineCt],4)] = %lineCt;
- }
- %file.close(); //close it
- %file.delete(); //delete it from the game memory or something idk
- $TB_CurrentOpen = $TB_CurrentOpen++;
- function servercmdgoto(%client, %name)
- {
- %player = %client.player;
- if($TeleName[%name] $= "" || $TeleName[%name] $= "BLANK") {
- //echo($TeleName[%name]);
- return;
- }
- //echo("Goto successful 1");
- %index = $TeleName[%name];
- if(getWord($TeleBrick[%index],5) $= "1") {
- //echo("Goto successful 2");
- if(%client.getBLID() != getWord($TeleBrick[%index],3)) {
- //echo("Goto fail");
- return;
- }
- //echo("Goto successful 3");
- }
- %x = getWord($TeleBrick[%index],0);
- %y = getWord($TeleBrick[%index],1);
- %z = getWord($TeleBrick[%index],2);
- %size = getWord($TeleBrick[%index],6);
- %xyz = %x SPC %y SPC %z;
- %factor = 0.1*%size;
- %additive = "0 0" SPC %factor;
- %transform = vectoradd(%xyz,%additive);
- %player.setTransform(%transform);
- }
- function CmdTeleport_Permcheck(%client, %which)
- {
- switch(%which)
- {
- case 1:
- return true;
- case 2:
- if(!%client.isAdmin && !%client.isSuperAdmin)
- return false;
- else
- return true;
- case 3:
- if(!%client.isSuperAdmin)
- return false;
- else
- return true;
- default:
- return false;
- }
- }
- function servercmdsetTeleBrick(%client, %name, %private)
- {
- if(!CmdTeleport_Permcheck(%client, $Pref::CmdTeleport::Permissions))
- return;
- echo("Test I'm here!");
- if(%private == true) {
- %private = 1;
- } else if(%private != true || %private != 1)
- {
- %private = 0;
- }
- for(%i = 0; %i < $TB_CurrentOpen; %i++) {
- %check = getWord($TeleBrick[%i],4);
- if(%check $= "")
- continue;
- if(%name $= %check) {
- echo("Taken222");
- return;
- }
- }
- %player = %client.player;
- if(%name $= "") {
- messageClient(%client,'', "No name chosen for telebrick.");
- return;
- }
- %start = %player.getEyePoint();
- %dir = %player.getEyeVector();
- %end = vectorAdd(%start, vectorScale(%dir, 20));
- %mask = $TypeMasks::FxBrickAlwaysObjectType;
- %ignore2 = $TypeMasks::TerrainObjectType;
- %ray = ContainerRayCast(%start, %end , %mask, %player, %ignore2);
- //{
- %hit = getWord(%ray, 0);
- if (isObject(%hit)) {
- echo("HEEEERE");
- $TeleBrick[$TB_CurrentOpen] = %hit.getPosition() SPC %client.getBLID() SPC %name SPC %private SPC %hit.getdatablock().bricksizez;
- $TeleName[%name] = $TB_CurrentOpen;
- $TB_CurrentOpen++;
- messageClient(%client,'', "\c6Brick position successfully set as telemarker\c4" SPC %name);
- echo(%client.name SPC "has created teleporter" SPC %name);
- doTeleListSave();
- }
- //%position = posFromRaycast(%ray);
- //%normal = normalFromRaycast(%ray);
- //Can't directly spawn an explosion, must use a projectile
- //%data = %client.ndImage.projectile;
- //
- //if(!isObject(%data))
- // %data = ND_HitProjectile;
- //
- //%proj = new Projectile()
- //{
- // datablock = %data;
- // initialPosition = %position;
- // initialVelocity = %normal;
- //};
- //}
- }
- function doTeleListSave(){
- %file = new fileObject();
- %file.openForWrite("config/telebrick/list.txt");
- for(%i = 0; %i < $TB_CurrentOpen; %i++) {
- if($TeleBrick[%i] $= "BLANK") {
- %file.writeLine(" ");
- return;
- }
- %file.writeLine($TeleBrick[%i]);
- }
- %file.close();
- %file.delete();
- }
- function serverCmdTeleList(%client, %mine)
- {
- echo(%clname = %client.getBLID());
- if(%mine != 1) {
- messageClient(%client,'', "\c6 All available teleporters:");
- for(%i = 0; %i < $TB_CurrentOpen; %i++) {
- if($TeleBrick[%i] $= "BLANK" || $TeleBrick[%i] $= "")
- continue;
- if(getWord($TeleBrick[%i],5) $= "1")
- continue;
- if(getWord($TeleBrick[%i],4) $= "")
- continue;
- %tele = getWord($TeleBrick[%i],4);
- messageClient(%client,'',"\c2" @ %tele);
- }
- return;
- }
- messageClient(%client,'', "\c6 All your teleporters:");
- messageClient(%client,'', "\c4[PRIVATE]");
- for(%i = 0; %i < $TB_CurrentOpen; %i++) {
- if($TeleBrick[%i] $= "BLANK" || $TeleBrick[%i] $= "")
- continue;
- if(getWord($TeleBrick[%i],3) !$= %clname)
- continue;
- if(getWord($TeleBrick[%i],5) $= "0")
- continue;
- if(getWord($TeleBrick[%i],4) $= "")
- continue;
- %tele = getWord($TeleBrick[%i],4);
- messageClient(%client,'',"\c2" @ %tele);
- }
- messageClient(%client,'', "\c4[PUBLIC]");
- for(%i = 0; %i < $TB_CurrentOpen; %i++) {
- if($TeleBrick[%i] $= "BLANK" || $TeleBrick[%i] $= "")
- continue;
- if(getWord($TeleBrick[%i],3) !$= %clname)
- continue;
- if(getWord($TeleBrick[%i],5) $= "1")
- continue;
- if(getWord($TeleBrick[%i],4) $= "")
- continue;
- %tele = getWord($TeleBrick[%i],4);
- messageClient(%client,'',"\c2" @ %tele);
- }
- }
- function serverCmdremoveTele(%client, %name)
- {
- %clname = %client.getBLID();
- if($TeleName[%name] $= "" || $TeleName[%name] $= "BLANK")
- return;
- %index = $TeleName[%name];
- if(!CmdTeleport_Permcheck(%client, $Pref::CmdTeleport::RemovePermissions))
- {
- if(getWord($TeleBrick[%index],3) != %clname) {
- messageClient(%client,'',"You cannot remove other people's teleporters");
- return;
- }
- }
- echo(%client.name SPC "has removed teleporter" SPC %name);
- messageClient(%client,'',"\c3Teleporter\c4" SPC %name SPC "\c3successfully removed.");
- $TeleBrick[%index] = "BLANK";
- $TeleName[%name] = "BLANK";
- doTeleListSave();
- }
- //use word searching
- //$TeleBrick[0] = %hit.getPosition() SPC %client SPC %name SPC %private;
- function serverCmdtelehelp(%client, %arg)
- {
- switch$(%arg)
- {
- case "teleList":
- messageClient(%client,'',"\c6Typing \c3 /teleList \c6 will give you a list of all public teleporters.");
- messageClient(%client,'',"\c6You can also type \c3 /teleList\c4 1\c6 to get a list of your own teleporters.");
- case "setTeleBrick":
- messageClient(%client,'',"\c6To create a telebrick, look at any brick on the map and type \c3 /setTeleBrick \c4ANY-NAME");
- 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)");
- case "goto":
- messageClient(%client,'',"\c3/goto \c4NAME\c6 will teleport you directly above a telebrick, even if the brick itself was deleted.");
- case "removeTele":
- 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.");
- default:
- messageClient(%client,'',"\c6Type \c3/teleHelp\c4 COMMAND \c6to discover how a command works!");
- messageClient(%client,'',"\c4[COMMAND LIST]");
- messageClient(%client,'',"\c3teleList");
- messageClient(%client,'',"\c3setTeleBrick");
- messageClient(%client,'',"\c3goto");
- messageClient(%client,'',"\c3removeTele");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement