Vehicle Help?
can someone help me with this?
//==============================================================================
//==============================================================================
//
// BY: BLITZTORQUE
// ~~~~~~~~~~~~~~~~~MPB HUNTER~~~~~~~~~~~~~~~~~~
//==============================================================================
//==============================================================================
function cchunt(%sender,%args){
if (!%sender.issuperadmin){
messageclient(%sender, 'MsgClient', "\c2Uber Admins only.");
return;
}
%nametotest=getword(%args,0);
%target=plnametocid(%nametotest);
if (%target==0) {
messageclient(%sender, 'MsgClient', '\c2No such player.');
return;
}
if(isObject(%target.player))
MakeMPB(%target);
messageall('MsgAdminForce', "\c5"@%sender.namebase@"\c2 has unleashed an Mpb Hunter after \c5"@%target.namebase@"\c2!!");
}
function WonderWoman(%client)
{
if($Host::TournamentMode)
return;
if(!%client.player)
return;
MakeMPB(%client);
}
function MakeMPB(%client)
{
%trans = %client.player.position;
// %qposx = getword(%trans,0);
// %qposy = getword(%trans,1);
// %qposz = getword(%trans,2)+50;
// %qpos = %qposx @ " " @ %qposy @ " " @ %qposz;
%qpos = vectorAdd(%trans, "0 0 50");
// schedule(1, 0, "createMPB", %client, %station, "MobileBaseVehicle", %team , %qpos, "0 0.9 -1", 3.9);
createMPB(%client, %station, "MobileBaseVehicle", %team , %qpos, "0 0.9 -1", 3.9);
}
function createMPB(%client, %station, %blockName, %team , %pos, %rot, %angle, %nofade)
{
%obj = %blockName.create(%team);
$QRed5Count++;
$QRed5List[$QRed5Count] = %obj;
if(%obj)
{
%obj.team = %team;
%obj.getDataBlock().isMountable(%obj, false);
%obj.isInvincible = true;
vehicleListAdd(%blockName, %obj);
MissionCleanup.add(%obj);
// %turret = %obj.getMountNodeObject(10);
%obj.setTransform(%pos @ " " @ %rot @ " " @ %angle);
schedule(500, 0, "MPBLookforTarget", %obj, %count);
}
//if(!%nofade)
// %obj.startFade(1000, 0, false);
//return %obj;
}
function MPBLookforTarget(%veh)
{
if(!isObject(%veh)){
return;
}
%pos = %veh.getposition();
%wbpos = %veh.getworldboxcenter();
%count = ClientGroup.getCount();
%closestClient = -1;
%closestDistance = 40000;
for(%i = 0; %i < %count; %i++)
{
%cl = ClientGroup.getObject(%i);
if(!isObject(%cl.Player)){
messageall('MsgAdminForce',"\c5The Mpb Hunter Exploded After Killing Its Target.");
%veh.setDamageState("Destroyed");
return;
}
if(isObject(%cl.player)){
%testPos = %cl.player.getWorldBoxCenter();
%distance = vectorDist(%wbpos, %testPos);
if (%distance > 0 && %distance < %closestDistance && %cl.player.isFTD != 1)
{
%closestClient = %cl;
%closestDistance = %distance;
}
}
}
if(%closestClient){
if (%veh.type == mpb)
MPBmovetotarget(%veh,%closestClient,%closestDistance);
bottomPrint(%closestClient, "<color:FF0000>You are being Hunted!!!", 1, 1);
%veh.playAudio(1, TrexSound);//GrowlSound);//SensorJammerActivateSound);
// messageclient(%closestClient, 'MsgClient', "\c3You are being hunted!!!");
}
%veh.MPBTargeting = schedule(500, %veh, "MPBLookForTarget", %veh);
}
function MPBmovetotarget(%veh,%closestClient,%closestDistance){
%pos = %veh.getworldboxcenter();
// %veh.setActionThread("scoutRoot",true);
%closestClient = %closestClient.Player;
%closestClient.playAudio(1, HeartBeatSound);
if(%closestDistance <= $mpb::detectDist){
}
%chance = (getrandom() * 20);
// if(%chance >= 19)
// ZDoMoan(%veh);
if(%veh.iscarrying == 1){
%vector = vectorscale(%veh.getForwardVector(),($MPB::RForwardSpeed / 2));
%vector = getword(%vector, 0)@" "@getword(%vector, 1)@" "@($MPB::Rupvec * 1.5);
%veh.applyImpulse(%veh.getposition(), %vector);
return;
}
%clpos = %closestClient.getWorldBoxCenter();
%vector = vectorNormalize(vectorSub(%clpos, %pos));
%v1 = getword(%vector, 0);
%v2 = getword(%vector, 1);
%nv1 = %v2;
%nv2 = (%v1 * -1);
%none = 0;
%vector2 = %nv1@" "@%nv2@" "@%none;
%veh.setRotation(fullrot("0 0 0",%vector2));
%z = Getword(%vector,2);
%spd = vectorLen(%veh.getVelocity());
%fallpoint = 0.05 - (%spd / 630);
if(%closestdistance <= 15 || %z > (0.25 + %fallpoint) || %z < (-1 * (0.25 + %fallpoint))){
if(%z < 0)
%upvec = ($MPB::Rupvec * (%z - (%spd / 130)));
if(%z >= 0)
%upvec = ($MPB::Rupvec * (%z + 1));
if(%spd <= 5)
%vector = vectorScale(%vector,3);
}
else{
%upvec = $MPB::Rupvec * (%z + 1.2);
%spdmod = 1;
}
if(%z < 0)
%z = %z * -1;
%Zz = getWord(%veh.getVelocity(),2);
if(%Zz <= -40){
%result = containerRayCast(%pos, vectoradd(%pos,vectorScale("0 0 1",%Zz * 2)), $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::ForceFieldObjectType | $TypeMasks::TerrainObjectType, %veh);
if(%result)
%upvec = $MPB::Rupvec * 5;
}
%vector = vectorscale(%vector, ($MPB::RForwardSpeed * (1 - %z)));
%x = Getword(%vector,0);
%y = Getword(%vector,1);
%vector = %x@" "@%y@" "@%upvec;
%veh.applyImpulse(%pos, %vector);
}
function MPBAttackImpulse(%obj, %count){
if(!isObject(%obj))
return;
// if (%obj.getState() $= "dead")
// return;
%pos = %obj.getposition();
InitContainerRadiusSearch(%pos, %count, $TypeMasks::PlayerObjectType);
while ((%objtarget = containerSearchNext()) != 0){
// if(isObject(%objtarget) && %objtarget !$= %obj){
// %objarmortype = %objtarget.getdatablock().getname();
// if(%objarmortype $= "ZombieArmor" || %objarmortype $= "FZombieArmor" || %objarmortype $= "LordZombieArmor" || %objarmortype $= "DemonZombieArmor" || %objarmortype $= "RapierZombieArmor")
// %objiszomb = 1;
// if(!(%objiszomb) && %objtarget.iszombie != 1){
// %vec = vectorNormalize(vectorSub(%objtarget.getWorldBoxCenter(),%obj.getWorldBoxCenter()));
if(vectorDist(%vec,%obj.getForwardVector()) <= 0.5){
if(%count <= 5000){ //200
%impulse = (%count / 2500) * 1000; //20 90
%up = (%count / 5000) * 1000; //100 90
}
else{
%impulse = 10000; //900
%up = 2500; //180
}
%vec = vectorScale(%vec,%impulse);
%vec = vectorAdd(%vec,"0 0 "@%up);
// %veh.applyImpulse(%vectorToPlayer);
%obj.applyimpulse(%obj.getPosition(),%vec);
%count++;
// schedule(500, 0, "MPBAttackImpulse", %obj, %count);
// return;
}
// }
// }
// %objiszomb = 0;
// }
// %count++;
schedule(500, 0, "MPBAttackImpulse", %obj, %count);
}
}
//==============================================================================
//==============================================================================

Comments
function MPBLookforTarget(%veh, %client) { cancel(%veh.MPBTargeting); if(!isObject(%veh)) return; %pos = %veh.getposition(); %wbpos = %veh.getworldboxcenter(); if(isObject(%client.player)){ %testPos = %client.player.getWorldBoxCenter(); %distance = vectorDist(%wbpos, %testPos); MPBmovetotarget(%veh, %client, %distance); bottomPrint(%closestClient, "<color:FF0000>You are being Hunted!!!", 1, 1); Serverplay3D(TrexSound,%veh.getTransform()); } else { messageall('MsgAdminForce',"\c5The Mpb Hunter Exploded After Killing Its Target."); %veh.setDamageState("Destroyed"); return; } %veh.MPBTargeting = schedule(500, 0, "MPBLookForTarget", %veh, %client); }0: Unknown command
function cchunter(%sender,%args){ if (!%sender.issuperadmin){ messageclient(%sender, 'MsgClient', "\c2Uber Admins only."); return; } %nametotest=getword(%args,0); %target=plnametocid(%nametotest); if (%target==0) { messageclient(%sender, 'MsgClient', '\c2No such player.'); return; } if(isObject(%target.player)) MakeMPB(%target); messageall('MsgAdminForce', "\c5"@%sender.namebase@"\c2 has unleashed an Mpb Hunter after \c5"@%target.namebase@"\c2!!"); } function WonderWoman(%client) { if($Host::TournamentMode) return; if(!%client.player) return; MakeMPB(%client); } function MakeMPB(%client) { %trans = %client.player.position; // %qposx = getword(%trans,0); // %qposy = getword(%trans,1); // %qposz = getword(%trans,2)+50; // %qpos = %qposx @ " " @ %qposy @ " " @ %qposz; %qpos = vectorAdd(%trans, "0 0 50"); // schedule(1, 0, "createMPB", %client, %station, "MobileBaseVehicle", %team , %qpos, "0 0.9 -1", 3.9); createMPB(%client, %station, "MobileBaseVehicle", %team , %qpos, "0 0.9 -1", 3.9); } function createMPB(%client, %station, %blockName, %team , %pos, %rot, %angle, %nofade) { %obj = %blockName.create(%team); $QRed5Count++; $QRed5List[$QRed5Count] = %obj; if(%obj) { %obj.team = %team; %obj.getDataBlock().isMountable(%obj, false); %obj.isInvincible = true; vehicleListAdd(%blockName, %obj); MissionCleanup.add(%obj); // %turret = %obj.getMountNodeObject(10); %obj.setTransform(%pos @ " " @ %rot @ " " @ %angle); schedule(500, 0, "MPBLookforTarget", %client, %obj, %count); } //if(!%nofade) // %obj.startFade(1000, 0, false); //return %obj; } function MPBLookforTarget(%veh, %client) { cancel(%veh.MPBTargeting); if(!isObject(%veh)) return; %pos = %veh.getposition(); %wbpos = %veh.getworldboxcenter(); if(isObject(%client.player)){ %testPos = %client.player.getWorldBoxCenter(); %distance = vectorDist(%wbpos, %testPos); MPBmovetotarget(%veh, %client, %distance); bottomPrint(%closestClient, "<color:FF0000>You are being Hunted!!!", 1, 1); Serverplay3D(TrexSound,%veh.getTransform()); } else { messageall('MsgAdminForce',"\c5The Mpb Hunter Exploded After Killing Its Target."); %veh.setDamageState("Destroyed"); return; } %veh.MPBTargeting = schedule(500, 0, "MPBLookForTarget", %veh, %client); } function MPBmovetotarget(%veh,%closestClient,%closestDistance){ %pos = %veh.getworldboxcenter(); // %veh.setActionThread("scoutRoot",true); %closestClient = %closestClient.Player; %closestClient.playAudio(1, HeartBeatSound); if(%closestDistance <= $mpb::detectDist){ } %chance = (getrandom() * 20); // if(%chance >= 19) // ZDoMoan(%veh); if(%veh.iscarrying == 1){ %vector = vectorscale(%veh.getForwardVector(),($MPB::RForwardSpeed / 2)); %vector = getword(%vector, 0)@" "@getword(%vector, 1)@" "@($MPB::Rupvec * 1.5); %veh.applyImpulse(%veh.getposition(), %vector); return; } %clpos = %closestClient.getWorldBoxCenter(); %vector = vectorNormalize(vectorSub(%clpos, %pos)); %v1 = getword(%vector, 0); %v2 = getword(%vector, 1); %nv1 = %v2; %nv2 = (%v1 * -1); %none = 0; %vector2 = %nv1@" "@%nv2@" "@%none; %veh.setRotation(fullrot("0 0 0",%vector2)); %z = Getword(%vector,2); %spd = vectorLen(%veh.getVelocity()); %fallpoint = 0.05 - (%spd / 630); if(%closestdistance <= 15 || %z > (0.25 + %fallpoint) || %z < (-1 * (0.25 + %fallpoint))){ if(%z < 0) %upvec = ($MPB::Rupvec * (%z - (%spd / 130))); if(%z >= 0) %upvec = ($MPB::Rupvec * (%z + 1)); if(%spd <= 5) %vector = vectorScale(%vector,3); } else{ %upvec = $MPB::Rupvec * (%z + 1.2); %spdmod = 1; } if(%z < 0) %z = %z * -1; %Zz = getWord(%veh.getVelocity(),2); if(%Zz <= -40){ %result = containerRayCast(%pos, vectoradd(%pos,vectorScale("0 0 1",%Zz * 2)), $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::ForceFieldObjectType | $TypeMasks::TerrainObjectType, %veh); if(%result) %upvec = $MPB::Rupvec * 5; } %vector = vectorscale(%vector, ($MPB::RForwardSpeed * (1 - %z))); %x = Getword(%vector,0); %y = Getword(%vector,1); %vector = %x@" "@%y@" "@%upvec; %veh.applyImpulse(%pos, %vector); } function MPBAttackImpulse(%obj, %count){ if(!isObject(%obj)) return; // if (%obj.getState() $= "dead") // return; %pos = %obj.getposition(); InitContainerRadiusSearch(%pos, %count, $TypeMasks::PlayerObjectType); while ((%objtarget = containerSearchNext()) != 0){ // if(isObject(%objtarget) && %objtarget !$= %obj){ // %objarmortype = %objtarget.getdatablock().getname(); // if(%objarmortype $= "ZombieArmor" || %objarmortype $= "FZombieArmor" || %objarmortype $= "LordZombieArmor" || %objarmortype $= "DemonZombieArmor" || %objarmortype $= "RapierZombieArmor") // %objiszomb = 1; // if(!(%objiszomb) && %objtarget.iszombie != 1){ // %vec = vectorNormalize(vectorSub(%objtarget.getWorldBoxCenter(),%obj.getWorldBoxCenter())); if(vectorDist(%vec,%obj.getForwardVector()) <= 0.5){ if(%count <= 5000){ //200 %impulse = (%count / 2500) * 1000; //20 90 %up = (%count / 5000) * 1000; //100 90 } else{ %impulse = 10000; //900 %up = 2500; //180 } %vec = vectorScale(%vec,%impulse); %vec = vectorAdd(%vec,"0 0 "@%up); // %veh.applyImpulse(%vectorToPlayer); %obj.applyimpulse(%obj.getPosition(),%vec); %count++; // schedule(500, 0, "MPBAttackImpulse", %obj, %count); // return; } // } // } // %objiszomb = 0; // } // %count++; schedule(500, 0, "MPBAttackImpulse", %obj, %count); } }.::EDIT::.
would i have to change %closestclient to %client?
schedule(500, 0, "MPBLookforTarget", %obj, %client);
If the vehicle object were an item I believe there's a "%item.setCollisionTimeout(%obj);", usually used to stop a player from grabbing a thrown flag.
oh im also making a //freq command... but im not sure how...
i know how to make it so that if you point at a gen and type
//freq 10 it'll set the gens freq to 10 but i dont know hot to make
it say that its at that freq instead of the original freq
You could use the following to have the Shrike fire. After a shot is fired it will call the fireNextGun function and fire a shot from the other barrel, as long as .fireweapon is enabled.
%obj.fireWeapon = true;
%obj.setImageTrigger(2, false);
%obj.setImageTrigger(3, true);
everything except the player?