now fot why it isnt working in ut... did you ever looked at the code????
//=============================================================================
// QuadShot.
//=============================================================================
class QuadShot extends Weapon;
#exec MESH IMPORT MESH=QuadShotPickup ANIVFILE=MODELS\aniv25.3D DATAFILE=MODELS\data25.3D X=0 Y=0 Z=0
#exec MESH ORIGIN MESH=QuadShotPickup X=0 Y=0 Z=0 YAW=0
#exec MESH SEQUENCE MESH=QuadShotPickup SEQ=All STARTFRAME=0 NUMFRAMES=1
#exec TEXTURE IMPORT NAME=GunPick1 FILE=MODELS\quadhand.PCX GROUP="Skins"
#exec MESHMAP SCALE MESHMAP=QuadShotPickup X=0.04 Y=0.04 Z=0.08
#exec MESHMAP SETTEXTURE MESHMAP=QuadShotPickup NUM=4 TEXTURE=GunPick1
#exec MESH IMPORT MESH=QuadShotHeld ANIVFILE=MODELS\aniv20.3D DATAFILE=MODELS\data20.3D X=0 Y=0 Z=0
#exec MESH ORIGIN MESH=QuadShotHeld X=0 Y=0 Z=0 YAW=128
#exec MESH SEQUENCE MESH=QuadShotHeld SEQ=All STARTFRAME=0 NUMFRAMES=30
#exec MESH SEQUENCE MESH=QuadShotHeld SEQ=Fire STARTFRAME=0 NUMFRAMES=9
#exec MESH SEQUENCE MESH=QuadShotHeld SEQ=Reload STARTFRAME=8 NUMFRAMES=21
#exec TEXTURE IMPORT NAME=QuadHand1 FILE=MODELS\QUADHAND.PCX GROUP="Skins"
#exec MESHMAP SCALE MESHMAP=QuadShotHeld X=0.04 Y=0.04 Z=0.08
#exec MESHMAP SETTEXTURE MESHMAP=QuadShotHeld NUM=4 TEXTURE=QuadHand1
and the code when working is:
//--------------------
// AHT.QuadShotGun
//--------------------
class QuadShotGun expands AHT_Weapon;
// Vue bonus
#exec MESH IMPORT MESH=QuadShotPickup ANIVFILE=MODELS\aniv25.3D DATAFILE=MODELS\data25.3D X=0 Y=0 Z=0
#exec MESH ORIGIN MESH=QuadShotPickup X=0 Y=0 Z=0 YAW=0
#exec MESH SEQUENCE MESH=QuadShotPickup SEQ=All STARTFRAME=0 NUMFRAMES=1
#exec TEXTURE IMPORT NAME=GunPick1 FILE=MODELS\quadhand.PCX GROUP="Skins"
#exec MESHMAP SCALE MESHMAP=QuadShotPickup X=0.04 Y=0.04 Z=0.08
#exec MESHMAP SETTEXTURE MESHMAP=QuadShotPickup NUM=4 TEXTURE=GunPick1
// Vue joueur & Vue 3ème personne
#exec MESH IMPORT MESH=QuadShotHeld ANIVFILE=MODELS\aniv20.3D DATAFILE=MODELS\data20.3D X=0 Y=0 Z=0
#exec MESH ORIGIN MESH=QuadShotHeld X=0 Y=0 Z=0 YAW=128
#exec MESH SEQUENCE MESH=QuadShotHeld SEQ=All STARTFRAME=0 NUMFRAMES=30
#exec MESH SEQUENCE MESH=QuadShotHeld SEQ=Fire STARTFRAME=0 NUMFRAMES=9
#exec MESH SEQUENCE MESH=QuadShotHeld SEQ=Reload STARTFRAME=8 NUMFRAMES=21
#exec TEXTURE IMPORT NAME=QuadHand1 FILE=MODELS\QUADHAND.PCX GROUP="Skins"
#exec MESHMAP SCALE MESHMAP=QuadShotHeld X=0.04 Y=0.04 Z=0.08
#exec MESHMAP SETTEXTURE MESHMAP=QuadShotHeld NUM=4 TEXTURE=QuadHand1
var vector x, y, z;
var UT_ShellCase ut_SC;
var() int hitdamage;
var float Accuracy, AltAccuracy;
//************************
// Sélection de l'arme
//************************
function PlaySelect()
{
PlayAnim('Reload', 1.25, 0.05);
Owner.PlayOwnedSound(SelectSound, SLOT_None,1.5*Pawn(Owner).SoundDampening);
}
//*****************
// Tir primaire
//*****************
function Fire( float Value )
{
local vector StartLocation, X, Y, Z;
if(AmmoType.UseAmmo(1))
{
GotoState('NormalFire');
bCanClientFire = true;
bPointing=True;
ClientFire(value);
Pawn(Owner).PlayRecoil(FiringSpeed);
StartLocation = Owner.Location + CalcDrawOffset();
Spawn(class'WeaponLight',,,StartLocation+X*20,Rot(0,0,0));
TraceFire(1.5);
TraceFire(1.5);
TraceFire(1.5);
TraceFire(1.5);
TraceFire(1.5);
if(ClipCount == 0)
{
GotoState('Reload');
}
}
}
function PlayFiring()
{
ClipCount--;
bMuzzleFlash++;
Owner.PlaySound(FireSound, SLOT_None,1.0*Pawn(Owner).SoundDampening);
PlayAnim('Fire', 1.35);
}
state NormalFire
{
ignores Fire, AltFire;
function EndState()
{
Super.EndState();
OldFlashCount = FlashCount;
}
Begin:
FlashCount++;
FinishAnim();
}
//*******************
// Tir secondaire
//*******************
function AltFire( float Value )
{
local vector Start, X, Y, Z;
if((AmmoType.AmmoAmount > 3)
&& (ClipCount == 4))
{
if(AmmoType.UseAmmo(4))
{
GotoState('AltFiring');
bCanClientFire = true;
bPointing=True;
ClientAltFire(value);
Pawn(Owner).PlayRecoil(FiringSpeed);
Start = Owner.Location + CalcDrawOffset();
Spawn(class'WeaponLight',,,Start + X*20,Rot(0,0,0));
TraceFire(3.0);
TraceFire(2.5);
TraceFire(2.0);
TraceFire(2.5);
TraceFire(3.0);
TraceFire(3.0);
TraceFire(2.5);
TraceFire(2.0);
TraceFire(2.5);
TraceFire(3.0);
TraceFire(3.0);
TraceFire(2.5);
TraceFire(2.0);
TraceFire(2.5);
TraceFire(3.0);
TraceFire(3.0);
TraceFire(2.5);
TraceFire(2.0);
TraceFire(2.5);
TraceFire(3.0);
}
}
else
GotoState('NoEnoughAmmo');
if(ClipCount == 0)
{
GoToState('Reload');
}
}
function PlayAltFiring()
{
ClipCount -= 4;
bMuzzleFlash++;
Owner.PlaySound(AltFireSound, SLOT_None,8.0*Pawn(Owner).SoundDampening);
PlayAnim('Fire');
if(PlayerPawn(Owner) != None) PlayerPawn(Owner).ShakeView(ShakeTime*4, ShakeMag*4, ShakeVert*4);
}
state AltFiring
{
ignores Fire, AltFire;
function EndState()
{
Super.EndState();
OldFlashCount = FlashCount;
}
Begin:
FlashCount++;
FinishAnim();
Finish();
}
State NoEnoughAmmo
{
Ignores Fire, AltFire;
Begin:
PlayAnim('Fire');
Pawn(owner).Playsound(Sound'Click',, 5);
FinishAnim();
Pawn(owner).ClientMessage(NoEnoughAmmoMessage ,'CriticalEvent');
Finish();
}
//***********************
// Tracer de la balle
//***********************
function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)
{
if(Other == Level)
Spawn(class'UT_LightWallHitEffect',,, HitLocation+HitNormal, Rotator(HitNormal));
else if ((Other != self)
&& (Other != Owner)
&& (Other != None))
{
if(FRand() <0.2) X *= 5;
Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, 3000.0*X, 'shot');
if(!Other.IsA('Pawn') && !Other.IsA('Carcass'))
spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9);
}
}
function float RateSelf( out int bUseAltMode )
{
local Pawn P;
if(AmmoType.AmmoAmount <=4) return -2;
P = Pawn(Owner);
if((P.Enemy == None)
|| (Owner.IsA('Bot')
&& Bot(Owner).bQuickFire))
{
bUseAltMode = 0;
return AIRating;
}
if((AmmoType.AmmoAmount > 3)
&& (ClipCount == 4))
{
bUseAltMode=int(500>VSize(P.Enemy.Location-Owner.Location));
}
}
//*************
// Recharge
//*************
state Reload
{
ignores Fire, AltFire;
Begin:
Sleep(0.2);
PlayAnim('Reload', 0.75, 0.1);
Owner.PlaySound(ReloadSound, SLOT_None,2.0*Pawn(Owner).SoundDampening);
ut_SC = Spawn(class'UT_ShellCase',Pawn(Owner));
ut_SC.DrawScale = 1.125;
ut_SC.Fatness = 132;
ut_SC.LightBrightness = 0;
ut_SC.MultiSkins[1] = Texture'Shellcase_Rouge';
ut_SC.Eject(((FRand()*1.0 +1.0)*X
+(FRand()*0.5 +0.5)*Y
+(FRand()*0.1 +0.1)*Z));
ut_SC = Spawn(class'UT_ShellCase',Pawn(Owner));
ut_SC.DrawScale = 1.125;
ut_SC.Fatness = 132;
ut_SC.LightBrightness = 0;
ut_SC.MultiSkins[1] = Texture'Shellcase_Rouge';
ut_SC.Eject(((FRand()*0.1 +0.1)*X
+(FRand()*1.0 +1.0)*Y
+(FRand()*0.5 +0.5)*Z));
ut_SC = Spawn(class'UT_ShellCase',Pawn(Owner));
ut_SC.DrawScale = 1.125;
ut_SC.Fatness = 132;
ut_SC.LightBrightness = 0;
ut_SC.MultiSkins[1] = Texture'Shellcase_Rouge';
ut_SC.Eject(((FRand()*0.5 +0.5)*X
+(FRand()*1.0 +1.0)*Y
+(FRand()*0.1 +0.1)*Z));
ut_SC = Spawn(class'UT_ShellCase',Pawn(Owner));
ut_SC.DrawScale = 1.125;
ut_SC.Fatness = 132;
ut_SC.LightBrightness = 0;
ut_SC.MultiSkins[1] = Texture'Shellcase_Rouge';
ut_SC.Eject(((FRand()*0.5 +0.5)*X
+(FRand()*0.5 +0.5)*Y
+(FRand()*0.5 +0.5)*Z));
FinishAnim();
ClipCount = ReloadClipCount;
Finish();
}
//**********************
// Animations et fin
//**********************
function Finish()
{
if(bChangeWeapon) GotoState('DownWeapon');
else if(PlayerPawn(Owner) == None)
Super.Finish();
else if((AmmoType.AmmoAmount<=0)
|| (Pawn(Owner).Weapon != self)) GotoState('Idle');
else if(ClipCount==0) GoToState('NewClip');
else if(Pawn(Owner).bFire!=0) Global.Fire(0);
else if(Pawn(Owner).bAltFire!=0) Global.AltFire(0);
else GotoState('Idle');
}
//********
// HUD
//********
simulated function PostRender(Canvas Canvas)
{
local PlayerPawn PP;
Super.PostRender(Canvas);
PP = PlayerPawn(Owner);
if(PP != None)
{
Canvas.SetPos(0.9125* Canvas.ClipX ,0.9125* Canvas.ClipY);
Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.Font = Canvas.MedFont;
Canvas.DrawColor.B = 255;
Canvas.DrawColor.G = 255;
Canvas.DrawColor.R = 255;
Canvas.DrawText(ClipCount$"/4");
}
}
:S
guess they didnt like it or so.. or givin people a subject 2 talk about
dunno