spawnVehicle()
{
if(!self.car["spawned"])
{
self.car["spawned"] = true;
vehicle["position"] = bulletTrace(self getEye(),self getEye()+vectorScale(anglesToForward(self getPlayerAngles()),150),false,self)["position"];
thread addVehicle(vehicle["position"],(0,self getPlayerAngles()[1],self getPlayerAngles()[2]));
slef ExitMenu();
}
else
{
self iPrintln("^1You Can Only Spawn One Car At A Time!");
}
}
addVehicle(position,angle)
{
self.car["model"] = spawn("script_model",position);
self.car["model"].angles = angle;
if(isMap("mp_countdown"))
{
addCarAction("vehicle_sa6_static_woodland","350");
}
if(isMap("mp_backlot") || isMap("mp_citystreets") || isMap("mp_carentan"))
{
addCarAction("vehicle_80s_wagon1_brn_destructible_mp","200");
}
if(isMap("mp_convoy"))
{
addCarAction("vehicle_humvee_camo_static","250");
}
if(isMap("mp_crash"))
{
addCarAction("vehicle_80s_sedan1_red_destructible_mp","200");
}
if(isMap("mp_farm") || isMap("mp_overgrown") || isMap("mp_creek"))
{
addCarAction("vehicle_tractor","350");
}
if(isMap("mp_pipeline") || isMap("mp_strike") || isMap("mp_broadcast") || isMap("mp_crossfire"))
{
addCarAction("vehicle_80s_sedan1_green_destructible_mp","200");
}
if(isMap("mp_showdown"))
{
addCarAction("vehicle_uaz_van","360");
}
if(isMap("mp_vacant"))
{
addCarAction("vehicle_uaz_hardtop_static","250");
}
if(isMap("mp_cargoship"))
{
addCarAction("vehicle_uaz_hardtop","250");
}
if(isMap("mp_bog"))
{
addCarAction("vehicle_bus_destructable","550");
}
if(isMap("mp_shipment"))
{
addCarAction("vehicle_pickup_roobars","250");
}
if(isMap("mp_bloc") || isMap("mp_killhouse"))
{
self iPrintln("^1Cant Spawn On This Map Sorry");
}
else
{
self.runCar = true;
wait .2;
thread waitForVehicle();
}
}
addCarAction(model,range)
{
self.car["model"] setModel(model);
level.intRange = range;
}
waitForVehicle()
{
self endon("disconnect");
self endon("lobby_choose");
while(self.runCar)
{
if(distance(self.origin,self.car["model"].origin) < 120)
{
if(self useButtonPressed() && !self.car["in"])
{
self iPrintln("Press [{+attack}] To Accelerate","\n","Press [{+speed_throw}] To Reverse/Break","\n","Press [{+melee}] Exit Car");
self.car["in"] = true;
self.oldOrigin = self getOrigin();
self disableWeapons();
self detachAll();
self setmodel("");
self setOrigin(((self.car["model"].origin)+(anglesToForward(self.car["model"].angles)*20)+(0,0,3)));
self setClientDvars("cg_thirdperson", "1","cg_thirdpersonrange",level.IntRange);
self linkTo(self.car["model"]);
self.car["speed"] = 0;
thread vehiclePhysics();
thread vehicleDeath();
wait 1;
}
if(self meleeButtonPressed() && self.car["in"])
{
self setOrigin(self.oldOrigin);
thread vehicleExit();
}
}
wait .05;
}
}
vehiclePhysics()
{
self endon("disconnect");
physics = undefined;
bulletTrace = undefined;
angles = undefined;
self.car["bar"] = createProBar((1,1,1),100,7,"","",0,170);
while(self.runCar)
{
physics = ((self.car["model"].origin)+((anglesToForward(self.car["model"].angles)*(self.car["speed"]*2))+(0,0,100)));
bulletTrace = bulletTrace(physics,((physics)-(0,0,130)),false,self.car["model"])["position"];
if(self attackButtonPressed())
{
if(self.car["speed"] < 0)
{
self.car["speed"] = 0;
}
if(self.car["speed"] < 50)
{
self.car["speed"] += .4;
}
angles = vectorToAngles(bulletTrace - self.car["model"].origin);
self.car["model"] moveTo(bulletTrace,.2);
self.car["model"] rotateTo((angles[0],self getPlayerAngles()[1],angles[2]),.2);
}
else
{
if(self.car["speed"] > 0)
{
angles = vectorToAngles(bulletTrace - self.car["model"].origin);
self.car["speed"] -= .7;
self.car["model"] moveTo(bulletTrace,.2);
self.car["model"] rotateTo((angles[0],self getPlayerAngles()[1],angles[2]),.2);
}
}
if(self adsButtonPressed())
{
if(self.car["speed"] > -20)
{
if(self.car["speed"] < 0)
{
angles = vectorToAngles(self.car["model"].origin - bulletTrace);
}
self.car["speed"] -= .5;
self.car["model"] moveTo(bulletTrace,.2);
}
else
{
self.car["speed"] += .5;
}
self.car["model"] rotateTo((angles[0],self getPlayerAngles()[1],angles[2]),.2);
}
else
{
if(self.car["speed"] < -1)
{
if(self.car["speed"] < 0)
{
angles = vectorToAngles(self.car["model"].origin - bulletTrace);
}
self.car["speed"] += .8;
self.car["model"] moveTo(bulletTrace,.2);
self.car["model"] rotateTo((angles[0],self getPlayerAngles()[1],angles[2]),.2);
}
}
self.car["bar"] updateBar(self.car["speed"]/50);
wait .05;
}
}
vehicleDeath()
{
self endon("end_car");
self waittill("lobby_choose");
if(self.car["in"])
{
thread vehicleExit();
}
else
{
self.car["model"] delete();
}
wait .2;
self suicide();
}
vehicleExit()
{
self.car["in"] = false;
if(isDefined(self.car["bar"]))
{
self.car["bar"] destroyElem();
}
self.runCar = false;
self.car["model"] delete();
self.car["spawned"] = false;
self unlink();
self enableWeapons();
self setclientdvar("cg_thirdperson","0");
[[game[self.pers["team"]+"_model"]["SPECOPS"]]]();
self.car["speed"] = 0;
wait .3;
self notify("end_car");
}
createProBar(color,width,height,align,relative,x,y)
{
hudBar = createBar(color,width,height,self);
hudBar setPoint(align,relative,x,y);
hudBar.hideWhenInMenu = true;
thread destroyElemOnDeath(hudBar);
return hudBar;
}
updateBar( barFrac, rateOfChange )
{
if ( self.elemType == "bar" )
{
updateBarScale( barFrac, rateOfChange );
}
}
updateBarScale( barFrac, rateOfChange )
{
barWidth = int(self.width * barFrac + 0.5);
if ( !barWidth )
{
barWidth = 1;
}
self.bar.frac = barFrac;
self.bar setShader( self.bar.shader, barWidth, self.height );
assertEx( barWidth <= self.width, "barWidth <= self.width: " + barWidth + " <= " + self.width + " - barFrac was " + barFrac );
if ( isDefined( rateOfChange ) && barWidth < self.width )
{
if ( rateOfChange > 0 )
{
assertex( ((1 - barFrac) / rateOfChange) > 0, "barFrac: " + barFrac + "rateOfChange: " + rateOfChange );
self.bar scaleOverTime( (1 - barFrac) / rateOfChange, self.width, self.height );
}
else if ( rateOfChange < 0 )
{
assertex( (barFrac / (-1 * rateOfChange)) > 0, "barFrac: " + barFrac + "rateOfChange: " + rateOfChange );
self.bar scaleOverTime( barFrac / (-1 * rateOfChange), 1, self.height );
}
}
self.bar.rateOfChange = rateOfChange;
self.bar.lastUpdateTime = getTime();
}
Copyright © 2024, NextGenUpdate.
All Rights Reserved.