etqw-sdk/base/script/vehicles/weapons/rockets.script
2008-05-29 00:00:00 +00:00

119 lines
No EOL
3 KiB
Text

object vehicle_weapon_rockets : vehicle_weapon_base {
void preinit();
void init();
void Fire();
float fireRate;
float projectileIndex;
float spread;
float currentWeapon;
float muzzleJointHandle;
float exhaustJointHandle;
string muzzleFlashFX;
string exhaustFlashFX;
float muzzleJoint1;
float muzzleJoint2;
float exhaustJoint1;
float exhaustJoint2;
vector velocity;
entity vehicle;
};
void vehicle_weapon_rockets::preinit() {
vehicle = getVehicle();
projectileIndex = GetEntityDef( getKey( "def_projectile" ) );
muzzleFlashFX = getKey( "muzzle_flash" );
exhaustFlashFX = getKey( "exhaust_flash" );
fireRate = getFloatKey( "fire_rate" );
spread = getFloatKey( "spread" );
velocity = getVectorKey( "velocity" );
muzzleJoint1 = vehicle.getJointHandle( getKey( "muzzle_pos" + 0 ) );
muzzleJoint2 = vehicle.getJointHandle( getKey( "muzzle_pos" + 1 ) );
exhaustJoint1 = vehicle.getJointHandle( getKey( "exhaust_pos" + 0 ) );
exhaustJoint2 = vehicle.getJointHandle( getKey( "exhaust_pos" + 1 ) );
}
void vehicle_weapon_rockets::init() {
}
void vehicle_weapon_rockets::Fire() {
RemoveCharge();
if ( currentWeapon == 0 ) {
muzzleJointHandle = muzzleJoint1;
exhaustJointHandle = exhaustJoint1;
} else {
muzzleJointHandle = muzzleJoint2;
exhaustJointHandle = exhaustJoint2;
}
vehicle.launchMissileSimple( user, vehicle, $null_entity, projectileIndex, -1, spread, vehicle.getJointPos( muzzleJointHandle ), vehicle.jointToWorldSpace( muzzleJointHandle, velocity ) );
// vehicle.playJointEffect( muzzleFlashFX, muzzleJointHandle, 0 );
if ( exhaustJointHandle != -1 ) {
vehicle.playJointEffect( exhaustFlashFX, exhaustJointHandle, 0 );
}
currentWeapon++;
if( currentWeapon == 2 ) {
currentWeapon = 0;
}
AddReFireDelay( fireRate );
GoToIdle();
}
/*
void vehicle_weapon_rockets::Idle() {
entity playerEntity;
float muzzleJointHandle;
float exhaustJointHandle;
sys.waitFrame();
while ( true ) {
sys.waitFrame();
playerEntity = getPlayer();
if ( playerEntity == $null_entity ) {
continue;
}
if ( playerEntity.getButton( PK_ATTACK ) && !myVehicle.isWeaponEMPed() && weaponGetAmmo( weaponIndex ) > 0 ) {
if ( currentWeapon == 0 ) {
muzzleJointHandle = muzzleJoint1;
exhaustJointHandle = exhaustJoint1;
} else {
muzzleJointHandle = muzzleJoint2;
exhaustJointHandle = exhaustJoint2;
}
vehicle.launchMissileSimple( playerEntity, vehicle, $null_entity, projectileIndex, -1, spread, vehicle.getJointPos( muzzleJointHandle ), vehicle.jointToWorldSpace( muzzleJointHandle, velocity ) );
// weaponUseAmmo( weaponIndex );
vehicle.playJointEffect( muzzleFlashFX, muzzleJointHandle, 0 );
if ( exhaustJointHandle != -1 ) {
vehicle.playJointEffect( exhaustFlashFX, exhaustJointHandle, 0 );
}
currentWeapon++;
if( currentWeapon == 2 ) {
currentWeapon = 0;
}
sys.wait( fireRate );
}
}
}
*/