Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function fxDTSBrick::doRPlayerTeleport(%obj,%target,%dir,%velocityop,%rel,%client)
- {
- //we need to find the specified Named Brick.
- //get nt object array stuff
- %group = %obj.getGroup();
- if(%group.NTObjectCount_[%target] > 1)
- %targetobj = %group.NTObject_[%target, %group.NTObjectCount_[%target]-1];
- else
- %targetobj = %group.NTObject_[%target, 0];
- // re-adding functionality for teleporting to the brick you click (with relays, etc)
- if(%target $= "SELF") {
- %targetobj = %obj;
- }
- if(!isObject(%targetobj)) {
- return;
- }
- // teleport
- if(isobject(%client.player))
- {
- %player = %client.player;
- switch (%dir)
- {
- case 0 :
- %prot = getwords(%player.gettransform(),3,6);
- case 1 :
- %prot = "1 0 0 0";
- %velo = 0;
- case 2 :
- %prot = "0 0 1 1.57079";
- %velo = 1;
- case 3 :
- %prot = "0 0 1 3.14159";
- %velo = 2;
- case 4 :
- %prot = "0 0 1 -1.57079";
- %velo = 3;
- }
- if(%rel != 1 || !$Server::DoPlayerTeleport::Allow)
- {
- %or = getwords(%targetobj.gettransform(),0,2);
- %lscale = 0.1*%targetobj.getdatablock().bricksizez;
- %finalsend = "0 0" SPC %lscale;
- %fr = vectoradd(%or,%finalsend);
- %finaltransform = %fr SPC %prot;
- %turn = %player.getvelocity();
- %player.settransform(%finaltransform);
- }
- else if(%rel == 1)
- {
- %or = getwords(%targetobj.gettransform(),0,2);
- %lscale = 0.1*%targetobj.getdatablock().bricksizez;
- %finalsend = "0 0" SPC %lscale;
- %offset = vectorsub(%player.getposition(),%obj.getposition());
- %player.settransform(vectoradd(%targetobj.getposition(),%offset) SPC getwords(%player.gettransform(),3,6));
- }
- if(%velocityop == 0)
- {
- %player.setvelocity("0 0 0");
- }
- }
- }
- registerOutputEvent("fxDTSBrick","doRPlayerTeleport","string 500 90\tlist Relative 0 North 1 East 2 South 3 West 4\tbool\tbool",1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement