| Blockland Forums > Suggestions & Requests |
| Player Control Other Vehicles |
| << < (3/3) |
| Light And Day:
package RcController { function WheeledVehicleData::OnTrigger(%this, %obj, %triggerNum, %val) { if(%val) { if(%triggerNum == 4) { %Client = %obj.getControllingClient(); switch(%Client.isRcing) { case 0: Parent::OnTrigger(%this, %obj, %triggerNum, %val); case 1: servercmdTurnOff(%Client); } } } } function FlyingVehicleData::OnTrigger(%this, %obj, %triggerNum, %val) { if(%val) { if(%triggerNum == 4) { %Client = %obj.getControllingClient(); switch(%Client.isRcing) { case 0: Parent::OnTrigger(%this, %obj, %triggerNum, %val); case 1: servercmdTurnOff(%Client); } } } } }; ActivatePackage(RcController); function RCControllerImage::onFire(%This,%Player,%Slot) { %Client = %Player.Client; InitContainerRadiusSearch (%Player.getPosition(),2,$TypeMasks::VehicleObjectType); while((%Vehicle = ContainerSearchNext()) != 0 ) { %VehicleNum++; %ConVehicle = %Vehicle; } if(%ConVehicle $= %Player.getObjectMount()) { } else if(%VehicleNum <= 0 || !isObject(%ConVehicle)) { commandToClient(%Client,'centerprint',"You must be near a vehicle.",1); } else if(%VehicleNum > 1) { commandToClient(%Client,'centerprint',"To many vehicles around.",1); } else if(%ConVehicle.getControllingClient() || %ConVehicle.isRC) { commandToClient(%Client,'centerprint',"That vehicle is already being driven.",1); } else if(getTrustLevel(%ConVehicle.spawnbrick.client,%Client.player) < 2) { commandToClient(%Client,'CenterPrint',%ConVehicle.spawnBrick.getGroup().name SPC "does not trust you enough to RC this.",3); } else if(!%Client.isRcing) { %Client.RCVehicle = %ConVehicle; %Client.isRcing = 1; %ConVehicle.isRC = 1; CheckRcDistance(%Client,%Player,%ConVehicle); commandToClient(%Client,'centerprint',"The RC Controller is now on.",1); } } function CheckRcDistance(%Client,%Player,%Vehicle) { if(isObject(%Player) && isObject(%Vehicle)) { %Player.setControlObject(%Vehicle); %PPos = %Player.getPosition(); %VPos = %Vehicle.getPosition(); %Vec = VectorSub(%PPos,%VPos); %Len = VectorLen(%Vec); %Len = %Len / 0.5; %Len = %Len - 1; if(%Len < 2500 && %Len > 2200) { commandToClient(%Client,'centerprint',"WARNING!: ALMOST OUT OF RANGE!",0.6); } else if(%Len > 2500) { serverCmdTurnOff(%Client); return; } %Player.Client.RcEvent = schedule(500,0,"CheckRcDistance",%Client,%Player,%Vehicle); } else { servercmdTurnOff(%Client); } } function servercmdTurnOff(%Client) { if(%Client.isRcing) { %Client.RCVehicle.setVelocity("0 0 0"); %Client.RCVehicle.isRC = 0; %Client.player.setControlObject(%Client.Player); %Client.isRcing = 0; cancel(%Client.RcEvent); commandToClient(%Client,'centerprint',"The RC Controller is now off.",1); } else { commandToClient(%Client,'centerprint',"The RC Controller is already off.",1); } } RC controler script. Now lets see what we can do with it? package VehicleControl { function WheeledVehicleData::OnTrigger(%this, %obj, %triggerNum, %val) { if(%val) { if(%triggerNum == 4) { %Client = %obj.getControllingClient(); switch(%Client.isControling) { Parent::OnTrigger(%this, %obj, %triggerNum, %val); } } } } function FlyingVehicleData::OnTrigger(%this, %obj, %triggerNum, %val) { if(%val) { if(%triggerNum == 4) { %Client = %obj.getControllingClient(); switch(%Client.isControllinging) { Parent::OnTrigger(%this, %obj, %triggerNum, %val); } } } } }; ActivatePackage(VehicleControl); That can begin it. With you know... The thing that trigger... I have no clue. Maybe that enables it? What ever ^_^ |
| phflack:
... i just searched vehicle, first page: http://forum.blockland.us/index.php?topic=90852.0 |
| Light And Day:
--- Quote from: phflack on April 04, 2010, 12:08:53 PM ---... i just searched vehicle, first page: http://forum.blockland.us/index.php?topic=90852.0 --- End quote --- You have earned your self the name, God. |
| Navigation |
| Message Index |
| Previous page |