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 ^_^