Results 1 to 22 of 22
  1. #1
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default Does anyone have experiance coding walker vehicles?

    I need some help with coding a walker vehicle, i think i have it all working with one exception, my walker has four legs not three, and i didn't find anywhere to set the number of legs, but i did add an extra anim node and etc.

    also, when my vehicle shoots its main beam i want these flaps on it to open, so i have a one frame anim of it open and one of it closed and i set them up in the anim tree like how a scorpions blades are done, but i dont know how to code it in

    btw, if you can do code i am recruiting
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  2. #2
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    ok so i changed my animtree to work around this, i combined its front left legs anim node with the back right and etc. i place my vehicle factory but when i click play from here the vehicle is gone
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  3. #3
    Marrow Fiend
    Join Date
    Jul 2006
    Location
    UT40k
    Posts
    4,169

    Default

    this sets the leg count code file UTWalkerBody (UTGame folder)
    Code:
    class UTWalkerBody extends Actor
    	native(Vehicle)
    	abstract
    	notplaceable;
    
    // 3 legged walkers, by default
    const NUM_WALKER_LEGS = 3;
    
    enum EWalkerLegID
    {
    	WalkerLeg_Rear,
    	WalkerLeg_FrontLeft,
    	WalkerLeg_FrontRight
    };
    there's also a lot of stuff in the UTWalkerBody_DarkWalker default properties
    UT40K:The Chosen - Warhammer 40,000 for UDK
    ut40kgeodav - UT3 Tutorials - Characters - Weapons - Vehicles - FaceFX
    UDK Tutorials - Basics - Vehicles - Characters - Weapons

  4. #4
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    thanks, i forgot to check utwalkerbody, this helps alot, if i get it to work i will post some pics, its a halo 2 scarab btw
    Last edited by skwisdemon666; 07-30-2009 at 11:46 PM.
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  5. #5
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    hmm still no good, its still invisible when i start to play the level

    Code:
    class UTQuadWalkerBody extends Actor
    	abstract
    	notplaceable;
    
    // 4 legged walkers, by default
    const NUM_WALKER_LEGS = 4;
    
    enum EWalkerLegID
    {
    	WalkerLeg_FrontLeft,
    	WalkerLeg_FrontRight,
    	WalkerLeg_RearLeft,
    	WalkerLeg_RearRight,
    };
    
    /** Skel mesh for the legs. */
    var() /*const*/ editconst SkeletalMeshComponent	SkeletalMeshComponent;
    
    /** Refs to shoulder lookat skelcontrols for each leg  */
    var protected transient SkelControlLookat ShoulderSkelControl[NUM_WALKER_LEGS];
    /** Names for the shoulder skelcontrol nodes for each leg (from the animtree) */
    var protected const Name ShoulderSkelControlName[NUM_WALKER_LEGS];
    
    /** If TRUE for corresponding foot, walking/stepping code will ignore that leg */
    var() byte IgnoreFoot[NUM_WALKER_LEGS];
    
    /** Handles used to move the walker feet around. */
    var() UTWalkerStepHandle FootConstraints[NUM_WALKER_LEGS];
    
    /** world time to advance to the next phase of the step - experimental walker leg code */
    var float NextStepStageTime[NUM_WALKER_LEGS];
    
    /** Time, in seconds, that each step stage lasts. */
    var() const array<float> StepStageTimes;
    
    /** which stage the step is in for each leg - experimental walker leg code */
    var protected int StepStage[NUM_WALKER_LEGS];
    
    /** used to play water effects when feet enter/exit water */
    var byte FootInWater[NUM_WALKER_LEGS];
    var ParticleSystem Foo****erEffect;
    
    /** Min dist trigger to make foot a possible candidate for next step */
    var() float MinStepDist;
    
    /** Max leg extension */
    var() float MaxLegReach;
    
    /** Factor in range [0..1].  0 means no leg spread, 1 means legs are spread as far as possible. */
    var() float LegSpreadFactor;
    var() float	CustomGravityScale;
    var() float LandedFootDistSq;
    
    /** How far foot should embed into ground. */
    var() protected const float FootEmbedDistance;
    
    
    /** Bone names for this walker */
    var const name FootBoneName[NUM_WALKER_LEGS];
    var const name ShoulderBoneName[NUM_WALKER_LEGS];
    var const name BodyBoneName;
    
    /** Ref to the walker vehicle that we are attached to. */
    var transient UTVehicle_Walker	WalkerVehicle;
    
    var protected const bool	bHasCrouchMode;
    var	bool					bIsDead;
    
    /** Where the feet are right now */
    var vector CurrentFootPosition[NUM_WALKER_LEGS];
    
    var array<MaterialImpactEffect> FootStepEffects;
    var ParticleSystemComponent FootStepParticles[NUM_WALKER_LEGS];
    
    /** Store indices into the legs array, used to map from rear/left/right leg designations to the model's leg indices.  Indexed by LegID. */
    var transient int LegMapping[EWalkerLegID.EnumCount];
    
    /** Base directions from the walker center for the legs to point, in walker-local space.  Indexed by LegID. */
    var protected const vector BaseLegDirLocal[EWalkerLegID.EnumCount];
    
    /**
     * Scalar to control how much velocity to add to the desired foot positions.  Indexed by LegID.
     * This effectively controls how far ahead of the walker the legs will try to reach while the walker
     * is moving.
     */
    var() const float FootPosVelAdjScale[EWalkerLegID.EnumCount];
    
    /** Names of the anim nodes for playing the step anim for a leg.  Used to fill in FootStepAnimNode array. */
    var protected const Name	FootStepAnimNodeName[NUM_WALKER_LEGS];
    /** Refs to AnimNodes used for playing step animations */
    var protected AnimNode		FootStepAnimNode[NUM_WALKER_LEGS];
    
    /** How far above the current foot position to begin interpolating towards. */
    var() protected const float FootStepStartLift;
    /** How far above the desired foot position to end the foot step interpolation */
    var() protected const float FootStepEndLift;
    
    struct native WalkerLegStepAnimData
    {
    	/** Where foot wants to be. */
    	var vector				DesiredFootPosition;
    
    	/** Normal of the surface at the desired foot position. */
    	var vector				DesiredFootPosNormal;
    
    	/** Physical material at the DesiredFootPosition */
    	var PhysicalMaterial	DesiredFootPosPhysMaterial;
    
    	/** True if we don't have a valid desired foot position for this leg. */
    	var bool				bNoValidFootHold;
    };
    
    /** Indexed by LegID. */
    var protected WalkerLegStepAnimData StepAnimData[EWalkerLegID.EnumCount];
    
    /** keeps track of previous leg locations */
    var protected vector PreviousTraceSeedLocation[NUM_WALKER_LEGS];
    
    /** The walker legs's light environment */
    var DynamicLightEnvironmentComponent LegLightEnvironment;
    
    var float MaxFootStepEffectDist;
    
    
    
    function PostBeginPlay()
    {
    	local int Idx;
    
    	super.PostBeginPlay();
    
    	// make sure the rb is awake
    	SkeletalMeshComponent.WakeRigidBody();
    
    	for (Idx=0; Idx<NUM_WALKER_LEGS; ++Idx)
    	{
    		// cache refs to footstep anims
    		FootStepAnimNode[Idx] = SkeletalMeshComponent.FindAnimNode(FootStepAnimNodeName[Idx]);
    
    		// cache refs to skel controls
    		ShoulderSkelControl[Idx] = SkelControlLookAt(SkeletalMeshComponent.FindSkelControl(ShoulderSkelControlName[Idx]));
    		if (ShoulderSkelControl[Idx] != None)
    		{
    			// turn it on
    			ShoulderSkelControl[Idx].SetSkelControlActive(TRUE);
    		}
    	}
    }
    
    simulated function UpdateShadowSettings(bool bWantShadow)
    {
    	local bool bNewCastShadow, bNewCastDynamicShadow;
    
    	if (SkeletalMeshComponent != None)
    	{
    		bNewCastShadow = default.SkeletalMeshComponent.CastShadow && bWantShadow;
    		bNewCastDynamicShadow = default.SkeletalMeshComponent.bCastDynamicShadow && bWantShadow;
    		if (bNewCastShadow != SkeletalMeshComponent.CastShadow || bNewCastDynamicShadow != SkeletalMeshComponent.bCastDynamicShadow)
    		{
    			SkeletalMeshComponent.CastShadow = bNewCastShadow;
    			SkeletalMeshComponent.bCastDynamicShadow = bNewCastDynamicShadow;
    			// defer if we can do so without it being noticeable
    			if (LastRenderTime < WorldInfo.TimeSeconds - 1.0)
    			{
    				SetTimer(0.1 + FRand() * 0.5, false, 'ReattachMesh');
    			}
    			else
    			{
    				ReattachMesh();
    			}
    		}
    	}
    }
    
    /** reattaches the mesh component, because settings were updated */
    simulated function ReattachMesh()
    {
    	DetachComponent(SkeletalMeshComponent);
    	AttachComponent(SkeletalMeshComponent);
    }
    
    /* epic ===============================================
    * ::StopsProjectile()
    *
    * returns true if Projectiles should call ProcessTouch() when they touch this actor
    */
    simulated function bool StopsProjectile(Projectile P)
    {
    	// Don't block projectiles fired from this vehicle
    	return (P.Instigator != WalkerVehicle) && (bProjTarget || bBlockActors);
    }
    
    /** Called once to set up legs. */
    native function InitFeet();
    
    /** Called on landing to reestablish a foothold */
    native function InitFeetOnLanding();
    
    function SetWalkerVehicle(UTVehicle_Walker V)
    {
    	WalkerVehicle = V;
    	SkeletalMeshComponent.SetShadowParent(WalkerVehicle.Mesh);
    	SkeletalMeshComponent.SetLightEnvironment(LegLightEnvironment);
    	InitFeet();
    }
    
    event PlayFootStep(int LegIdx)
    {
    	local AudioComponent AC;
    	local UTPhysicalMaterialProperty PhysicalProperty;
    	local int EffectIndex;
    
    	local vector HitLoc,HitNorm,TraceLength;
    	local TraceHitInfo HitInfo;
    
    	if (FootStepEffects.Length == 0)
    	{
    		return;
    	}
    
    	// figure out what we landed on
    
    	TraceLength = vector(QuatToRotator(SkeletalMeshComponent.GetBoneQuaternion(FootBoneName[LegIdx])))*5.0;
    	//Trace(HitLoc,HitNorm, CurrentFootPosition[LegIdx]+TraceLength,CurrentFootPosition[LegIdx],true,,HitInfo);
    	Trace(HitLoc,HitNorm, CurrentFootPosition[LegIdx]-TraceLength,CurrentFootPosition[LegIdx]-TraceLength*4.0,true,,HitInfo);
    	if(HitInfo.PhysMaterial != none)
    	{
    		PhysicalProperty = UTPhysicalMaterialProperty(HitInfo.PhysMaterial.GetPhysicalMaterialProperty(class'UTPhysicalMaterialProperty')); //(StepAnimData[LegIdx].DesiredFootPosPhysMaterial.GetPhysicalMaterialProperty(class'UTPhysicalMaterialProperty'));
    	}
    	if (PhysicalProperty != None)
    	{
    		EffectIndex = FootStepEffects.Find('MaterialType', PhysicalProperty.MaterialType);
    		if (EffectIndex == INDEX_NONE)
    		{
    			EffectIndex = 0;
    		}
    		// Footstep particle
    		if (FootStepEffects[EffectIndex].ParticleTemplate != None && EffectIsRelevant(Location, false))
    		{
    			if (FootStepParticles[LegIdx] == None)
    			{
    				FootStepParticles[LegIdx] = new(self) class'UTParticleSystemComponent';
    				FootStepParticles[LegIdx].bAutoActivate = false;
    				SkeletalMeshComponent.AttachComponent(FootStepParticles[LegIdx], FootBoneName[LegIdx]);
    			}
    			FootStepParticles[LegIdx].SetTemplate(FootStepEffects[EffectIndex].ParticleTemplate);
    			FootStepParticles[LegIdx].ActivateSystem();
    		}
    	}
    
    	AC = WorldInfo.CreateAudioComponent(FootStepEffects[EffectIndex].Sound, false, true);
    	if (AC != None)
    	{
    		AC.bUseOwnerLocation = false;
    
    		// play it closer to the player if he's controlling the walker
    		AC.Location = (PlayerController(WalkerVehicle.Controller) != None) ? 0.5 * (Location + CurrentFootPosition[LegIdx]) : CurrentFootPosition[LegIdx];
    
    		AC.bAutoDestroy = true;
    		AC.Play();
    	}
    	WalkerVehicle.TookStep(LegIdx);
    }
    
    event SpawnFoo****erEffect(int LegIdx)
    {
    	if (Foo****erEffect != None)
    	{
    		WorldInfo.MyEmitterPool.SpawnEmitter(Foo****erEffect, CurrentFootPosition[LegIdx]);
    	}
    }
    
    /**
     * Default behavior when shot is to apply an impulse and kick the KActor.
     */
    event TakeDamage(int Damage, Controller EventInstigator, vector HitLocation, vector Momentum, class<DamageType> DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser)
    {
    	local vector ApplyImpulse;
    
    	if (damageType.default.KDamageImpulse > 0 )
    	{
    		if ( VSize(momentum) < 0.001 )
    		{
    			`Log("Zero momentum to KActor.TakeDamage");
    			return;
    		}
    
    		// Make sure we have a valid TraceHitInfo with our SkeletalMesh
    		// we need a bone to apply proper impulse
    		CheckHitInfo( HitInfo, SkeletalMeshComponent, Normal(Momentum), hitlocation );
    
    		ApplyImpulse = Normal(momentum) * damageType.default.KDamageImpulse;
    		if ( HitInfo.HitComponent != None )
    		{
    			HitInfo.HitComponent.AddImpulse(ApplyImpulse, HitLocation, HitInfo.BoneName);
    		}
    	}
    }
    
    function PlayDying()
    {
    	local int i;
    
    	Lifespan = 8.0;
    	CustomGravityScale = 1.5;
    	bCollideWorld = true;
    	bIsDead = true;
    
    	// clear all constraints
    	for ( i=0; i<3; i++ )
    	{
    		FootConstraints[i].ReleaseComponent();
    	}
    
    	SkeletalMeshComponent.SetTraceBlocking(true, false);
    	SkeletalMeshComponent.SetBlockRigidBody(true);
    	SkeletalMeshComponent.SetShadowParent(None);
    	GotoState('DyingVehicle');
    }
    
    function AddVelocity( vector NewVelocity, vector HitLocation,class<DamageType> DamageType, optional TraceHitInfo HitInfo )
    {
    	if ( !IsZero(NewVelocity) )
    	{
    		if (Location.Z > WorldInfo.StallZ)
    		{
    			NewVelocity.Z = FMin(NewVelocity.Z, 0);
    		}
    		NewVelocity = DamageType.Default.VehicleMomentumScaling * DamageType.Default.KDamageImpulse * Normal(NewVelocity);
    		SkeletalMeshComponent.AddImpulse(NewVelocity, HitLocation);
    	}
    }
    
    state DyingVehicle
    {
    	event TakeDamage(int Damage, Controller EventInstigator, vector HitLocation, vector Momentum, class<DamageType> DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser)
    	{
    		if ( DamageType == None )
    			return;
    		AddVelocity(Momentum, HitLocation, DamageType, HitInfo);
    	}
    }
    
    /** cause a single step, used for debugging */
    native function DoTestStep(int LegIdx, float Mag);
    
    /** NOTE:  this is actually what changes the colors on the PowerOrb on the legs of the Walker **/
    simulated function TeamChanged()
    {
    	local MaterialInterface NewMaterial;
    
    	NewMaterial = WalkerVehicle.Mesh.GetMaterial(0);
    	SkeletalMeshComponent.SetMaterial( 0, NewMaterial );
    
    	NewMaterial = WalkerVehicle.Mesh.GetMaterial(1);
    	SkeletalMeshComponent.SetMaterial( 1, NewMaterial );
    }
    
    
    defaultproperties
    {
    	TickGroup=TG_PostAsyncWork
    
    	Physics=PHYS_RigidBody
    
    	bEdShouldSnap=true
    	bStatic=false
    	bCollideActors=true
    	bBlockActors=false
    	bWorldGeometry=false
    	bCanBeAdheredTo=true
    	bCollideWorld=false
    	bProjTarget=true
    	bIgnoreEncroachers=true
    	bNoEncroachCheck=true
    
    	RemoteRole=ROLE_None
    
    	Begin Object Class=DynamicLightEnvironmentComponent Name=LegLightEnvironmentComp
    	    AmbientGlow=(R=0.2,G=0.2,B=0.2,A=1.0)
    	End Object
    	LegLightEnvironment=LegLightEnvironmentComp
    	Components.Add(LegLightEnvironmentComp)
    
    
    	Begin Object Class=SkeletalMeshComponent Name=LegMeshComponent
    		CollideActors=true
    		BlockActors=false
    		BlockZeroExtent=true
    		BlockNonZeroExtent=true
    		PhysicsWeight=1
    		bHasPhysicsAssetInstance=true
    		BlockRigidBody=false
    		RBChannel=RBCC_Nothing
    		RBCollideWithChannels=(Default=TRUE,GameplayPhysics=TRUE,EffectPhysics=TRUE)
    		bUseAsOccluder=FALSE
    		bUpdateSkelWhenNotRendered=true
    		bIgnoreControllersWhenNotRendered=true
    		bAcceptsDecals=true
    		bUseCompartment=FALSE
    		LightEnvironment=LegLightEnvironmentComp
    	End Object
    	CollisionComponent=LegMeshComponent
    	SkeletalMeshComponent=LegMeshComponent
    	Components.Add(LegMeshComponent)
    
    	Begin Object Class=UTWalkerStepHandle Name=RB_FootHandle0
    		LinearDamping=50.0
    		LinearStiffness=10000.0
    	End Object
    	FootConstraints(0)=RB_FootHandle0
    	Components.Add(RB_FootHandle0)
    
    	Begin Object Class=UTWalkerStepHandle Name=RB_FootHandle1
    		LinearDamping=50.0
    		LinearStiffness=10000.0
    	End Object
    	FootConstraints(1)=RB_FootHandle1
    	Components.Add(RB_FootHandle1)
    
    	Begin Object Class=UTWalkerStepHandle Name=RB_FootHandle2
    		LinearDamping=50.0
    		LinearStiffness=10000.0
    	End Object
    	FootConstraints(2)=RB_FootHandle2
    	Components.Add(RB_FootHandle2)
    
            Begin Object Class=UTWalkerStepHandle Name=RB_FootHandle3
    		LinearDamping=50.0
    		LinearStiffness=10000.0
    	End Object
    	FootConstraints(3)=RB_FootHandle3
    	Components.Add(RB_FootHandle3)
    
    	MinStepDist=20.0
    	MaxLegReach=450.0
    
    	FootBoneName(0)=Leg1_End
    	FootBoneName(1)=Leg2_End
    	FootBoneName(2)=Leg3_End
            FootBoneName(3)=Leg4_End
    	ShoulderBoneName(0)=frontlefttoe
    	ShoulderBoneName(1)=frontrighttoe
    	ShoulderBoneName(2)=frontlefttoe01
            ShoulderBoneName(3)=frontrighttoe01
    
    	BodyBoneName=chasis
    	CustomGravityScale=0.f
    	FootEmbedDistance=8.0
    	LandedFootDistSq=400.0
    
    	ShoulderSkelControlName[0]="Shoulder1"
    	ShoulderSkelControlName[1]="Shoulder2"
    	ShoulderSkelControlName[2]="Shoulder3"
    	ShoulderSkelControlName[3]="Shoulder4"
    
    	BaseLegDirLocal[WalkerLeg_FrontLeft]=(X=0.5f,Y=-0.866025f,Z=0.f)
    	BaseLegDirLocal[WalkerLeg_FrontRight]=(X=0.5f,Y=0.866025f,Z=0.f)
            BaseLegDirLocal[WalkerLeg_RearLeft]=(X=0.5f,Y=-0.866025f,Z=0.f)
    	BaseLegDirLocal[WalkerLeg_RearRight]=(X=0.5f,Y=0.866025f,Z=0.f)
    
    
    	FootPosVelAdjScale[WalkerLeg_FrontLeft]=0.6f
    	FootPosVelAdjScale[WalkerLeg_FrontRight]=0.6f
            FootPosVelAdjScale[WalkerLeg_RearLeft]=0.6f
            FootPosVelAdjScale[WalkerLeg_RearRight]=0.6f
    
    	FootStepStartLift=512.f
    	FootStepEndLift=128.f
    
    	StepStageTimes(0)=0.7f			// foot pickup and move forward
    	StepStageTimes(1)=0.135f		// foot stab to ground at destination
    	StepStageTimes(2)=1.f			// wait for foot to reach dest before forcibly ending step
    
    	MaxFootStepEffectDist=15000.0
    }
    Code:
    class UTVehicle_Scarab extends UTVehicle_Walker
    	abstract;
    
    var repnotify byte TurretFlashCount;
    var repnotify rotator TurretWeaponRotation;
    var byte TurretFiringMode;
    
    var particleSystem BeamTemplate;
    
    /** Holds the Emitter for the Beam */
    var ParticleSystemComponent BeamEmitter[3];
    
    /** Where to attach the Beam */
    var name BeamSockets[3];
    
    /** The name of the EndPoint parameter */
    var name EndPointParamName;
    
    var protected AudioComponent BeamAmbientSound;
    var SoundCue BeamFireSound;
    
    var float WarningConeMaxRadius;
    var float LengthDarkWalkerWarningCone;
    var AudioComponent WarningConeSound;
    var name ConeParam;
    
    var ParticleSystemComponent EffectEmitter;
    
    var actor LastHitActor;
    
    var bool bIsBeamActive;
    
    /** radius to allow players under this darkwalker to gain entry */
    var float CustomEntryRadius;
    
    /** When asleep, monitor distance below darkwalker to make sure it isn't in the air. */
    var float LastSleepCheckDistance;
    
    /** Disable aggressive sleeping behaviour. */
    var bool bSkipAggresiveSleep;
    
    var float CustomGravityScaling;
    
    /** @hack: replicated copy of bHoldingDuck for clients */
    var bool bIsDucking;
    
    
    
    replication
    {
    	if (!bNetOwner)
    		bIsDucking;
    	if (!IsSeatControllerReplicationViewer(1))
    		TurretFlashCount, TurretWeaponRotation;
    }
    
    native simulated final function PlayWarningSoundIfInCone(Pawn Target);
    
    simulated function PostBeginPlay()
    {
    	super.PostBeginPlay();
    	AddBeamEmitter();
    	SetTimer(1.0, TRUE, 'SleepCheckGroundDistance');
    }
    
    simulated event Destroyed()
    {
    	super.Destroyed();
    	KillBeamEmitter();
    	ClearTimer('SleepCheckGroundDistance');
    }
    
    simulated function SleepCheckGroundDistance()
    {
    	local vector HitLocation, HitNormal;
    	local actor HitActor;
    	local float SleepCheckDistance;
    
    	bSkipAggresiveSleep = FALSE;
    
    	if(!bDriving && !Mesh.RigidBodyIsAwake())
    	{
    		HitActor = Trace(HitLocation, HitNormal, Location - vect(0,0,1000), Location, TRUE);
    
    		SleepCheckDistance = 1000.0;
    		if(HitActor != None)
    		{
    			SleepCheckDistance = VSize(HitLocation - Location);
    		}
    
    		// If distance has changed, wake it
    		if(Abs(SleepCheckDistance - LastSleepCheckDistance) > 10.0)
    		{
    			Mesh.WakeRigidBody();
    			bSkipAggresiveSleep = TRUE;
    			LastSleepCheckDistance = SleepCheckDistance;
    		}
    	}
    }
    
    simulated function AddBeamEmitter()
    {
    	local int i;
    	if (WorldInfo.NetMode != NM_DedicatedServer)
    	{
    		for (i=0;i<2;i++)
    		{
    			if (BeamEmitter[i] == None)
    			{
    				if (BeamTemplate != None)
    				{
    					BeamEmitter[i] = new(Outer) class'UTParticleSystemComponent';
    					BeamEmitter[i].SetTemplate(BeamTemplate);
    					BeamEmitter[i].SecondsBeforeInactive=1.0f;
    					BeamEmitter[i].SetHidden(true);
    					Mesh.AttachComponentToSocket( BeamEmitter[i],BeamSockets[i] );
    				}
    			}
    			else
    			{
    				BeamEmitter[i].ActivateSystem();
    			}
    		}
    	}
    }
    
    simulated function KillBeamEmitter()
    {
    	local int i;
    	for (i=0;i<2;i++)
    	{
    		if (BeamEmitter[i] != none)
    		{
    			//BeamEmitter[i].SetHidden(true);
    			BeamEmitter[i].DeactivateSystem();
    		}
    	}
    }
    
    simulated function SetBeamEmitterHidden(bool bHide)
    {
    	local int i;
    
    	if (bHide && EffectEmitter != None)
    	{
    		EffectEmitter.SetActive(false);
    	}
    	if ( WorldInfo.NetMode != NM_DedicatedServer )
    	{
    		if (bIsBeamActive != !bHide )
    		{
    			for (i=0; i<2; i++)
    			{
    					if (BeamEmitter[i] != none)
    					{
    						if(!bHide)
    							BeamEmitter[i].SetHidden(bHide);
    						else
    							BeamEmitter[i].DeactivateSystem();
    					}
    
    					if (!bHide)
    					{
    						BeamAmbientSound.SoundCue = BeamFireSound;
    						BeamAmbientSound.Play();
    						BeamEmitter[i].ActivateSystem();
    					}
    					else
    					{
    						BeamAmbientSound.FadeOut(0.3f, 0.f);
    					}
    			}
    		}
    		bIsBeamActive = !bHide;
    	}
    }
    
    /**
     * Detect the transition from vehicle to ground and vice versus and handle it
     */
    
    simulated function actor FindWeaponHitNormal(out vector HitLocation, out Vector HitNormal, vector End, vector Start, out TraceHitInfo HitInfo)
    {
    	local Actor NewHitActor;
    
    	NewHitActor = Super.FindWeaponHitNormal(HitLocation, HitNormal, End, Start, HitInfo);
    	if (NewHitActor != LastHitActor && EffectEmitter != None)
    	{
    		EffectEmitter.SetActive(false);
    	}
    	LastHitActor = NewHitActor;
    	return NewHitActor;
    }
    
    
    simulated function SpawnImpactEmitter(vector HitLocation, vector HitNormal, const out MaterialImpactEffect ImpactEffect, int SeatIndex)
    {
    	local rotator TmpRot;
    
    	TmpRot = rotator(HitNormal);
    	TmpRot.Pitch = NormalizeRotAxis(TmpRot.Pitch - 16384);
    
    	if (EffectEmitter == None)
    	{
    		EffectEmitter = new(self) class'ParticleSystemComponent';
    		EffectEmitter.SetTemplate(ImpactEffect.ParticleTemplate);
    		EffectEmitter.SetAbsolute(true, true, true);
    		EffectEmitter.SetScale(0.7);
    		AttachComponent(EffectEmitter);
    	}
    
    	EffectEmitter.SetTranslation(HitLocation);
    	EffectEmitter.SetRotation(TmpRot);
    	EffectEmitter.SetActive(true);
    }
    
    simulated function VehicleWeaponImpactEffects(vector HitLocation, int SeatIndex)
    {
    	local int i;
    
    	Super.VehicleWeaponImpactEffects(HitLocation, SeatIndex);
    
    	if ( SeatIndex == 0 )
    	{
    		SetBeamEmitterHidden(false);
    		for(i=0;i<2;i++)
    		{
    			BeamEmitter[i].SetVectorParameter(EndPointParamName, HitLocation);
    		}
    	}
    }
    
    simulated function VehicleWeaponStoppedFiring( bool bViaReplication, int SeatIndex )
    {
    	if (SeatIndex == 0)
    	{
    		SetBeamEmitterHidden(true);
    	}
    }
    
    /** notification from WalkerBody that foot just landed */
    function TookStep(int LegIdx)
    {
    	EyeStepOffset = MaxEyeStepOffset * FMin(1.0,VSize(Velocity)/AirSpeed);
    }
    
    function PassengerLeave(int SeatIndex)
    {
    	Super.PassengerLeave(SeatIndex);
    
    	SetDriving(NumPassengers() > 0);
    }
    
    function bool PassengerEnter(Pawn P, int SeatIndex)
    {
    	local bool b;
    
    	b = Super.PassengerEnter(P, SeatIndex);
    	SetDriving(NumPassengers() > 0);
    	return b;
    }
    
    simulated function VehicleCalcCamera(float DeltaTime, int SeatIndex, out vector out_CamLoc, out rotator out_CamRot, out vector CamStart, optional bool bPivotOnly)
    {
    	local UTPawn P;
    
    	if (SeatIndex == 1)
    	{
    		// Handle the fixed view
    		P = UTPawn(Seats[SeatIndex].SeatPawn.Driver);
    		if (P != None && P.bFixedView)
    		{
    			out_CamLoc = P.FixedViewLoc;
    			out_CamRot = P.FixedViewRot;
    			return;
    		}
    
    		out_CamLoc = GetCameraStart(SeatIndex);
    		CamStart = out_CamLoc;
    		out_CamRot = Seats[SeatIndex].SeatPawn.GetViewRotation();
    		return;
    	}
    
    	Super.VehicleCalcCamera(DeltaTime, SeatIndex, out_CamLoc, out_CamRot, CamStart, bPivotOnly);
    }
    
    
    /**
    *  Overloading this from SVehicle to avoid torquing the walker head.
    */
    function AddVelocity( vector NewVelocity, vector HitLocation, class<DamageType> DamageType, optional TraceHitInfo HitInfo )
    {
    	// apply hit at location, not hitlocation
    	Super.AddVelocity(NewVelocity, Location, DamageType, HitInfo);
    }
    
    /**
      * Let pawns standing under me get in, if I have a driver.
      */
    function bool InCustomEntryRadius(Pawn P)
    {
    	return ( (P.Location.Z < Location.Z) && (VSize2D(P.Location - Location) < CustomEntryRadius)
    		&& FastTrace(P.Location, Location) );
    }
    
    event WalkerDuckEffect();
    
    simulated function BlowupVehicle()
    {
    	local vector Impulse;
    	Super.BlowupVehicle();
    	Impulse = Velocity; //LastTakeHitInfo;
    	Impulse.Z = 0;
    	if(IsZero(Impulse))
    	{
    		Impulse = vector(Rotation); // forward if no velocity.
    	}
    	Impulse *= 7000/VSize(Impulse);
    	Mesh.SetRBLinearVelocity(Impulse);
    	Mesh.SetRBAngularVelocity(VRand()*5, true);
    	bStayUpright = false;
    	bCanFlip=true;
    }
    
    simulated function bool ShouldClamp()
    {
    	return false;
    }
    
    //=================================
    // AI Interface
    
    function bool ImportantVehicle()
    {
    	return true;
    }
    
    function bool RecommendLongRangedAttack()
    {
    	return true;
    }
    
    defaultproperties
    {
    	Begin Object Name=SVehicleMesh
    		RBCollideWithChannels=(Default=TRUE,GameplayPhysics=TRUE,EffectPhysics=TRUE,Vehicle=TRUE,Untitled1=TRUE)
    	End Object
    
    	Begin Object Name=RB_BodyHandle
    		LinearDamping=100.0
    		LinearStiffness=99000.0
    		AngularDamping=100.0
    		AngularStiffness=99000.0
    	End Object
    
    	Health=25000
    	MeleeRange=-100.0
    
    	LegTraceOffset=(X=0,Y=0,Z=0)
    	LegTraceZUpAmount=700
    
    	COMOffset=(x=0,y=0.0,z=150)
    	bCanFlip=false
    
    	AirSpeed=350.0
    	GroundSpeed=350.0
    
    	bFollowLookDir=true
    	bCanStrafe=true
    	bTurnInPlace=true
    	bDuckObstacles=true
    	ObjectiveGetOutDist=750.0
    	ExtraReachDownThreshold=450.0
    	MaxDesireability=3.75
    	SpawnRadius=125.0
    	bNoZSmoothing=true
    	BaseBodyOffset=(Z=0.0)
    	LookForwardDist=40.0
    	TeamBeaconOffset=(z=350.0)
    
    	bUseSuspensionAxis=true
    
    	bStayUpright=true
    	StayUprightRollResistAngle=0.0			// will be "locked"
    	StayUprightPitchResistAngle=0.0
    	//StayUprightStiffness=10
    	//StayUprightDamping=100
    
    	WheelSuspensionTravel(WalkerStance_Standing)=1300
    	WheelSuspensionTravel(WalkerStance_Parked)=0
    	WheelSuspensionTravel(WalkerStance_Crouched)=655
    	SuspensionTravelAdjustSpeed=250
    	HoverAdjust(WalkerStance_Standing)=-280.0
    	HoverAdjust(WalkerStance_Parked)=0.0
    	HoverAdjust(WalkerStance_Crouched)=-63.0
    
    	Begin Object Class=UTVehicleSimHover Name=SimObject
    		WheelSuspensionStiffness=100.0
    		WheelSuspensionDamping=40.0
    		WheelSuspensionBias=0.0
    		MaxThrustForce=600.0
    		MaxReverseForce=600.0
    		LongDamping=0.3
    		MaxStrafeForce=600.0
    		LatDamping=0.3
    		MaxRiseForce=0.0
    		UpDamping=0.0
    		TurnTorqueFactor=9000.0
    		TurnTorqueMax=10000.0
    		TurnDamping=3.0
    		MaxYawRate=1.6
    		PitchTorqueMax=35.0
    		PitchDamping=0.1
    		RollTorqueMax=50.0
    		RollDamping=0.1
    		MaxRandForce=0.0
    		RandForceInterval=1000.0
    		bCanClimbSlopes=true
    		PitchTorqueFactor=0.0
    		RollTorqueTurnFactor=0.0
    		RollTorqueStrafeFactor=0.0
    		bAllowZThrust=false
    		bStabilizeStops=true
    		StabilizationForceMultiplier=1.0
    		bFullThrustOnDirectionChange=true
    		bDisableWheelsWhenOff=false
    		HardLimitAirSpeedScale=1.5
    	End Object
    	SimObj=SimObject
    	Components.Add(SimObject)
    
    	Begin Object Class=UTHoverWheel Name=RThruster
    		BoneName="BodyRoot"
    		BoneOffset=(X=0,Y=0,Z=-20)
    		WheelRadius=70
    		SuspensionTravel=20
    		bPoweredWheel=false
    		SteerFactor=1.0
    		LongSlipFactor=0.0
    		LatSlipFactor=0.0
    		HandbrakeLongSlipFactor=0.0
    		HandbrakeLatSlipFactor=0.0
    		bCollidesVehicles=FALSE
    	End Object
    	Wheels(0)=RThruster
    
    	RespawnTime=45.0
    
    	LengthDarkWalkerWarningCone=7500
    
    	HoverBoardAttachSockets=(HoverAttach00,HoverAttach01)
    
    	bHasCustomEntryRadius=true
    	CustomEntryRadius=300.0
    
    	bIgnoreStallZ=TRUE
    	HUDExtent=250.0
    
    	MaxEyeStepOffset=48.0
    	EyeStepFadeRate=2.0
    	EyeStepBlendRate=2.0
    	BaseEyeheight=0
    	Eyeheight=0
    
    	bFindGroundExit=false
    	bShouldAutoCenterViewPitch=FALSE
    
    	bIsNecrisVehicle=true
    
    	HornIndex=3
    	CustomGravityScaling=0.9
    }
    Last edited by skwisdemon666; 07-31-2009 at 04:30 PM.
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  6. #6
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    Code:
    class UTVehicle_Scarab_Content extends UTVehicle_Scarab;
    
    /** dynamic light which moves around following primary fire beam impact point */
    var UTDarkWalkerBeamLight BeamLight;
    
    var float HornImpulseMag;
    var float VehicleHornModifier;
    var ParticleSystemComponent DarkwalkerHornEffect;
    var repnotify bool bSpeakerReady;
    var float SpeakerRadius;
    var float SpeakerRechargeTime;
    var SoundCue HornAttackSound;
    
    
    replication
    {
    	if (!bNetOwner)
    		bSpeakerReady;
    }
    
    event MantaDuckEffect()
    {
    	if (bHoldingDuck)
    	{
    		VehicleEvent('CrushStart');
    	}
    	else
    	{
    		VehicleEvent('CrushStop');
    	}
    }
    
    function DriverLeft()
    {
    	Super.DriverLeft();
    
    	if (Role == ROLE_Authority && UTVWeap_DarkWalkerTurret(Seats[0].Gun) != none)
    	{
    		UTVWeap_DarkWalkerTurret(Seats[0].Gun).StopBeamFiring();
    	}
    }
    
    /** Overloaded so we can attach the muzzle flash light to a custom socket */
    simulated function CauseMuzzleFlashLight(int SeatIndex)
    {
    	Super.CauseMuzzleFlashLight(SeatIndex);
    
    	if ( (SeatIndex == 0) && Seats[SeatIndex].MuzzleFlashLight != none )
    	{
    		Mesh.DetachComponent(Seats[SeatIndex].MuzzleFlashLight);
    		Mesh.AttachComponentToSocket(Seats[SeatIndex].MuzzleFlashLight, 'PrimaryMuzzleFlash');
    	}
    }
    
    simulated function SpawnImpactEmitter(vector HitLocation, vector HitNormal, const out MaterialImpactEffect ImpactEffect, int SeatIndex)
    {
    	Super.SpawnImpactEmitter(HitLocation, HitNormal, ImpactEffect, SeatIndex);
    
    	if ( SeatIndex == 0 )
    	{
    		if (BeamLight == None || BeamLight.bDeleteMe)
    		{
    			BeamLight = Spawn(class'UTDarkWalkerBeamLight');
    			BeamLight.AmbientSound.Play();
    		}
    		BeamLight.SetLocation(HitLocation + HitNormal*128);
    	}
    }
    
    simulated function KillBeamEmitter()
    {
    	Super.KillBeamEmitter();
    
    	if (BeamLight != None)
    	{
    		BeamLight.Destroy();
    	}
    }
    
    simulated event Destroyed()
    {
    	Super.Destroyed();
    
    	if (BeamLight != None)
    	{
    		BeamLight.Destroy();
    	}
    }
    
    simulated function SetBeamEmitterHidden(bool bHide)
    {
    	Super.SetBeamEmitterHidden(bHide);
    
    	if (bHide && BeamLight != None)
    	{
    		BeamLight.AmbientSound.Stop();
    		BeamLight.Destroy();
    	}
    }
    
    simulated function bool OverrideBeginFire(byte FireModeNum)
    {
    	if (FireModeNum == 1)
    	{
    		if (bSpeakerReady)
    		{
    			PlayHornAttack();
    		}
    		return true;
    	}
    
    	return false;
    }
    
    function byte ChooseFireMode()
    {
    	if (Controller != None && Controller.Enemy != None && bSpeakerReady && VSize2D(Controller.Enemy.Location - Location) <= SpeakerRadius)
    	{
    		return 1;
    	}
    	else
    	{
    		return 0;
    	}
    }
    
    function bool NeedToTurn(vector Targ)
    {
    	// speaker fire is a radius, so if bot wants to do that, don't need to turn
    	return (ChooseFireMode() == 1) ? false : Super.NeedToTurn(Targ);
    }
    
    simulated function PlayHornAttack()
    {
    	local Pawn HitPawn;
    	local vector HornImpulse, HitLocation, HitNormal;
    	local Pawn BoardPawn;
    	local UTVehicle_Scavenger UTScav;
    	local UTPawn OldDriver;
    	local UTVehicle UTV;
    
    	bSpeakerReady = false;
    
    	if (Trace(HitLocation, HitNormal, Location - vect(0,0,600), Location) != None)
    	{
    		DarkwalkerHornEffect.SetTranslation(HitLocation - Location);
    	}
    	else
    	{
    		HitLocation = Location;
    		HitLocation.Z -= 400;
    		DarkwalkerHornEffect.SetTranslation(vect(0,0,-400));
    	}
    	if (WorldInfo.NetMode != NM_DedicatedServer)
    	{
    		PlaySound(HornAttackSound, true);
    		DarkwalkerHornEffect.ActivateSystem();
    	}
    
    	if (Role == ROLE_Authority)
    	{
    		MakeNoise(1.0);
    
    		foreach OverlappingActors(class 'Pawn', HitPawn, SpeakerRadius, HitLocation)
    		{
    			if ( (HitPawn.Mesh != None) && !WorldInfo.GRI.OnSameTeam(HitPawn, self))
    			{
    				// throw him outwards also
    				HornImpulse = HitPawn.Location - HitLocation;
    				HornImpulse.Z = 0;
    				HornImpulse = HornImpulseMag * Normal(HornImpulse);
    				HornImpulse.Z = 250.0;
    
    				if (HitPawn.Physics != PHYS_RigidBody && HitPawn.IsA('UTPawn'))
    				{
    					HitPawn.Velocity += HornImpulse;
    					UTPawn(HitPawn).ForceRagdoll();
    					UTPawn(HitPawn).FeignDeathStartTime = WorldInfo.TimeSeconds + 1.5;
    					HitPawn.LastHitBy = Controller;
    				}
    				else if( UTVehicle_Hoverboard(HitPawn) != none)
    				{
    					HitPawn.Velocity += HornImpulse;
    					BoardPawn = UTVehicle_Hoverboard(HitPawn).Driver; // just in case the board gets destroyed from the ragdoll
    					UTVehicle_Hoverboard(HitPawn).RagdollDriver();
    					HitPawn = BoardPawn;
    					HitPawn.LastHitBy = Controller;
    				}
    				else if ( HitPawn.Physics == PHYS_RigidBody )
    				{
    					UTV = UTVehicle(HitPawn);
    					if(UTV != none)
    					{
    						// Special case for scavenger - force into ball mode for a bit.
    						UTScav = UTVehicle_Scavenger(UTV);
    						if(UTScav != None && UTScav.bDriving)
    						{
    							UTScav.BallStatus.bIsInBallMode = TRUE;
    							UTScav.BallStatus.bBoostOnTransition = FALSE;
    							UTScav.NextBallTransitionTime = WorldInfo.TimeSeconds + 2.0; // Stop player from putting legs out for 2 secs.
    							UTScav.BallModeTransition();
    						}
    						// See if darkwalker forces this player out of vehicle.
    						else if(UTV.bRagdollDriverOnDarkwalkerHorn)
    						{
    							OldDriver = UTPawn(UTV.Driver);
    							if (OldDriver != None)
    							{
    								UTV.DriverLeave(true);
    								OldDriver.Velocity += HornImpulse;
    								OldDriver.ForceRagdoll();
    								OldDriver.FeignDeathStartTime = WorldInfo.TimeSeconds + 1.5;
    								OldDriver.LastHitBy = Controller;
    							}
    						}
    
    						HitPawn.Mesh.AddImpulse(HornImpulse*VehicleHornModifier, HitLocation);
    					}
    					else
    					{
    						HitPawn.Mesh.AddImpulse(HornImpulse, HitLocation,, true);
    					}
    				}
    			}
    		}
    	}
    	SetTimer(SpeakerRechargeTime, false, 'ClearHornTimer');
    }
    
    simulated function ClearHornTimer()
    {
    	bSpeakerReady = true;
    }
    
    simulated event ReplicatedEvent(name VarName)
    {
    	if (VarName == 'bSpeakerReady')
    	{
    		if (!bSpeakerReady)
    		{
    			PlayHornAttack();
    		}
    	}
    	else
    	{
    		Super.ReplicatedEvent(VarName);
    	}
    }
    
    simulated function TeamChanged()
    {
    	local MaterialInterface NewMaterial;
    
    	if( Team < PowerOrbTeamMaterials.length )
    	{
    		NewMaterial = PowerOrbTeamMaterials[Team];
    	}
    	else
    	{
    		NewMaterial = PowerOrbTeamMaterials[0];
    	}
    
    	if (NewMaterial != None)
    	{
    		Mesh.SetMaterial(1, NewMaterial);
    
    		if (DamageMaterialInstance[1] != None)
    		{
    			DamageMaterialInstance[1].SetParent(NewMaterial);
    		}
    	}
    
    	Super.TeamChanged();
    }
    
    
    
    defaultproperties
    {
    	Begin Object Name=CollisionCylinder
    		CollisionHeight=100.0
    		CollisionRadius=140.0
    		Translation=(X=0.0,Y=0.0,Z=50.0)
    	End Object
    
    	Begin Object Name=SVehicleMesh
    		SkeletalMesh=SkeletalMesh'VH_Scarab.Mesh.VH_SK_Scarab'
    		AnimSets(0)=AnimSet'VH_Scarab.Anims.K_VH_Scarab'
    		AnimTreeTemplate=AnimTree'VH_Scarab.Anims.AT_VH_Scarab'
    		PhysicsAsset=PhysicsAsset'VH_Scarab.Mesh.VH_SK_Scarab_Physics'
    		//MorphSets[0]=MorphTargetSet'VH_DarkWalker.Mesh.SK_VH_DarkWalker_Torso_MorphTargets'
    	End Object
    
    	Begin Object Class=AudioComponent Name=WarningSound
    		SoundCue=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_Darkwalker_WarningConeLoop'
    	End Object
    	WarningConeSound=WarningSound
    	Components.Add(WarningSound);
    
    	Seats(0)={( GunClass=class'UTVWeap_DarkWalkerTurret',
    				GunSocket=(MainGun_Fire),
    				GunPivotPoints=(headbone),
    				TurretVarPrefix="",
    				CameraTag=DriverViewSocket,
    				CameraOffset=-280,
    				CameraSafeOffset=(Z=200),
    				DriverDamageMult=0.0,
    				SeatIconPos=(X=0.46,Y=0.2),
    				TurretControls=(MainGunController),
    				CameraBaseOffset=(X=40,Y=0,Z=0),
    				MuzzleFlashLightClass=class'UTDarkWalkerMuzzleFlashLight',
    				WeaponEffects=((SocketName=MainGun_Fire,Offset=(X=0,Y=0),Scale3D=(X=18.0,Y=180.0,Z=18.0)),(SocketName=MainGun_01,Offset=(X=-35,Y=-3),Scale3D=(X=8.0,Y=10.0,Z=10.0)))
    				)}
    
    	// These muzzleflashes are the idle effects it seems, so start them with the engine.
    	VehicleEffects(0)=(EffectStartTag=EngineStart,EffectEndTag=EngineStop,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_MuzzleFlash',EffectSocket=MainGun_00)
    	VehicleEffects(1)=(EffectStartTag=EngineStart,EffectEndTag=EngineStop,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_MuzzleFlash',EffectSocket=MainGun_01)
    
    	VehicleEffects(2)=(EffectStartTag=TurretWeapon03,EffectEndTag=STOP_TurretWeapon00,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_Secondary_MuzzleFlash',EffectSocket=TurretBarrel_00)
    	VehicleEffects(3)=(EffectStartTag=TurretWeapon00,EffectEndTag=STOP_TurretWeapon01,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_Secondary_MuzzleFlash',EffectSocket=TurretBarrel_01)
    	VehicleEffects(4)=(EffectStartTag=TurretWeapon01,EffectEndTag=STOP_TurretWeapon02,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_Secondary_MuzzleFlash',EffectSocket=TurretBarrel_02)
    	VehicleEffects(5)=(EffectStartTag=TurretWeapon02,EffectEndTag=STOP_TurretWeapon03,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_Secondary_MuzzleFlash',EffectSocket=TurretBarrel_03)
    
    	VehicleEffects(6)=(EffectStartTag=EngineStart,EffectEndTag=EngineStop,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_AimBeam',EffectSocket=LT_AimBeamSocket)
    	VehicleEffects(7)=(EffectStartTag=EngineStart,EffectEndTag=EngineStop,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_AimBeam',EffectSocket=RT_AimBeamSocket)
    	VehicleEffects(8)=(EffectStartTag=EngineStart,EffectEndTag=EngineStop,EffectTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_PowerBall',EffectTemplate_Blue=ParticleSystem'VH_Darkwalker.Effects.P_VH_DarkWalker_PowerBall_Blue',EffectSocket=PowerBallSocket)
    	VehicleEffects(9)=(EffectStartTag=DamageSmoke,EffectEndTag=NoDamageSmoke,bRestartRunning=false,EffectTemplate=ParticleSystem'Envy_Effects.Vehicle_Damage.P_Vehicle_Damage_1_DarkWalker',EffectSocket=DamageSmoke01)
    
    	Begin Object Class=ParticleSystemComponent Name=HornEffect
    		Template=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_HornEffect'
    		bAutoActivate=false
    		Translation=(x=0.0,y=0.0,z=-400.0)
    		SecondsBeforeInactive=1.0f
    	End Object
    	Components.Add(HornEffect);
    	DarkwalkerHornEffect=HornEffect;
    
    	// Sounds
    	// Engine sound.
    	Begin Object Class=AudioComponent Name=MantaEngineSound
    		SoundCue=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_EngineLoopCue'
    	End Object
    	EngineSound=MantaEngineSound
    	Components.Add(MantaEngineSound);
    
    	CollisionSound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_CollideCue'
    	EnterVehicleSound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_StartCue'
    	ExitVehicleSound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_StopCue'
    
    	// Scrape sound.
    	Begin Object Class=AudioComponent Name=BaseScrapeSound
    		SoundCue=SoundCue'A_Gameplay.A_Gameplay_Onslaught_MetalScrape01Cue'
    	End Object
    	ScrapeSound=BaseScrapeSound
    	Components.Add(BaseScrapeSound);
    
    	// Initialize sound parameters.
    	EngineStartOffsetSecs=2.0
    	EngineStopOffsetSecs=1.0
    
    	BodyAttachSocketName=Legsoz
    
    	BeamTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_MainGun_Beam'
    	BeamSockets(0)=MainGun_00
    	//BeamSockets(1)=MainGun_01
    	EndPointParamName=LinkBeamEnd
    
    	Begin Object Class=AudioComponent name=BeamAmbientSoundComponent
    		bShouldRemainActiveIfDropped=true
    		bStopWhenOwnerDestroyed=true
    	End Object
    	BeamAmbientSound=BeamAmbientSoundComponent
    	Components.Add(BeamAmbientSoundComponent)
    
    	BeamFireSound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_FireBeamCue'
    	FlagBone=Headbone
    
    	HornAttackSound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_HornCue'
    	SpawnInSound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleFadeInNecris01Cue'
    	SpawnOutSound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleFadeOutNecris01Cue'
    	ExplosionSound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_ExplosionCue'
    
    	BigExplosionTemplates[0]=(Template=ParticleSystem'Envy_Effects.VH_Deaths.P_DarkWalker_Death_Main')
    	BigExplosionSocket=Legsoz
    	BodyType=class'UTWalkerBody_Scarab'
    
    	bSpeakerReady=true
    	SpeakerRadius=750.0f
    	SpeakerRechargeTime=7.0
    	HornImpulseMag=1250.0
    	VehicleHornModifier=5.3f
    	PassengerTeamBeaconOffset=(X=-150.0f,Y=0.0f,Z=0.0f)
    	TargetLocationAdjustment=(Z=150.0)
    
    	ConeParam=ConeScore
    
    	DamageMorphTargets(0)=(InfluenceBone=head,MorphNodeName=MorphNodeW_DamageFront,LinkedMorphNodeName=none,Health=300,DamagePropNames=(Damage3))
    	DamageMorphTargets(1)=(InfluenceBone=RtUpperTailFin,MorphNodeName=MorphNodeW_DamageRear,LinkedMorphNodeName=none,Health=300,DamagePropNames=(Damage2))
    	DamageMorphTargets(2)=(InfluenceBone=LtPanel_Damage,MorphNodeName=none,LinkedMorphNodeName=none,Health=250,DamagePropNames=(Damage1))
    	DamageMorphTargets(3)=(InfluenceBone=RtPanel_Damage,MorphNodeName=none,LinkedMorphNodeName=none,Health=250,DamagePropNames=(Damage1))
    
    	DamageParamScaleLevels(0)=(DamageParamName=Damage1,Scale=2.0)
    	DamageParamScaleLevels(1)=(DamageParamName=Damage2,Scale=1.6)
    	DamageParamScaleLevels(2)=(DamageParamName=Damage3,Scale=2.0)
    
    	HudCoords=(U=644,V=0,UL=-98,VL=129)
    
    	TeamMaterials[0]=MaterialInstanceConstant'VH_Scarab.Scarabmaterial01'
    	TeamMaterials[1]=MaterialInstanceConstant'VH_Scarab.Scarabmaterial01'
    	BurnOutMaterial[0]=MaterialInterface'VH_DarkWalker.Materials.MITV_VH_Darkwalker_Red_BO'
    	BurnOutMaterial[1]=MaterialInterface'VH_DarkWalker.Materials.MITV_VH_Darkwalker_Blue_BO'
    
    	//PowerOrbTeamMaterials[0]=MaterialInterface'VH_DarkWalker.Materials.M_VH_Darkwalker_EnergyCore_Glow'
    	//PowerOrbTeamMaterials[1]=MaterialInterface'VH_DarkWalker.Materials.M_VH_Darkwalker_EnergyCore_Glow_Blue'
    	//PowerOrbBurnoutTeamMaterials[0]=MaterialInterface'VH_DarkWalker.Materials.MITV_VH_Darkwalker_EnergyCore_Glow_BO'
    	//PowerOrbBurnoutTeamMaterials[1]=MaterialInterface'VH_DarkWalker.Materials.MITV_VH_Darkwalker_EnergyCore_Glow_Blue_BO'
    
    
    	//SpawnMaterialLists[0]=(Materials=(MaterialInterface'VH_DarkWalker.Materials.MI_VH_Darkwalker_Spawn_Red'))
    	//SpawnMaterialLists[1]=(Materials=(MaterialInterface'VH_DarkWalker.Materials.MI_VH_Darkwalker_Spawn_Blue'))
    
    	//NeedToPickUpAnnouncement=(AnnouncementSound=SoundNodeWave'A_Announcer_Status.Status.A_StatusAnnouncer_ManTheDarkwalker')
    
    	IconCoords=(U=907,UL=26,V=36,VL=37)
    
    	bHasEnemyVehicleSound=true
    	EnemyVehicleSound(0)=SoundNodeWave'A_Character_IGMale.BotStatus.A_BotStatus_IGMale_EnemyDarkwalker'
    	EnemyVehicleSound(1)=SoundNodeWave'A_Character_Jester.BotStatus.A_BotStatus_Jester_EnemyDarkwalker'
    	EnemyVehicleSound(2)=SoundNodeWave'A_Character_Othello.BotStatus.A_BotStatus_Othello_EnemyDarkwalker'
    	VehicleDestroyedSound(0)=SoundNodeWave'A_Character_IGMale.BotStatus.A_BotStatus_IGMale_EnemyDarkwalkerDestroyed'
    	VehicleDestroyedSound(1)=SoundNodeWave'A_Character_Jester.BotStatus.A_BotStatus_Jester_EnemyDarkwalkerDestroyed'
    	VehicleDestroyedSound(2)=SoundNodeWave'A_Character_Othello.BotStatus.A_BotStatus_Othello_EnemyDarkwalkerDestroyed'
    
    	AIPurpose=AIP_Any
    }
    Code:
    class UTWalkerBody_Scarab extends UTQuadWalkerBody;
    
    /** Light attached to the energy ball. */
    var() protected PointLightComponent EnergyBallLight;
    
    /** Holds energy ball's material so we can modify parameters. */
    var protected transient MaterialInstanceConstant EnergyBallMatInst;
    
    /** Current percentage the energy ball is powered.  Range [0..1]. */
    var private transient float CurrentEnergyBallPowerPct;
    /** Goal energy ball power percentage (to interpolate towards).  Range [0..1]. */
    var private transient float GoalEnergyBallPowerPct;
    
    /** InterpSpeed (for FInterpTo) used for interpolating the energy ball power up and down. */
    var() protected const float EnergyBallPowerInterpSpeed;
    
    /** Color for energy ball light in powered-on state. */
    var() protected const color EnergyBallLightColor_PoweredOn;
    /** Color for energy ball light in powered-off state. */
    var() protected const color EnergyBallLightColor_PoweredOff;
    
    /** Color for blue energy ball light in powered-on state. */
    var() protected const color EnergyBallLightColor_PoweredOn_Blue;
    /** Color for blue energy ball light in powered-off state. */
    var() protected const color EnergyBallLightColor_PoweredOff_Blue;
    
    
    
    /** Brightness for energy ball light in powered-on state. */
    var() protected const float EnergyBallLightBrightness_PoweredOn;
    /** Brightness for energy ball light in powered-off state. */
    var() protected const float EnergyBallLightBrightness_PoweredOff;
    
    /** Made a parameter because having an = in a name literal is verboten for some reason. */
    var protected const Name	EnergyBallMaterialParameterName;
    
    
    /** Emitters for beams connecting powerball to shoulders */
    var protected ParticleSystemComponent	LegAttachBeams[NUM_WALKER_LEGS];
    /** Name of beam endpoint parameter in the particle system */
    var protected const name				LegAttachBeamEndPointParamName;
    
    /** ParticleSystem Templates for the Leg beams **/
    var protected ParticleSystem PS_LegBeamTemplate;
    var protected ParticleSystem PS_LegBeamTemplate_Blue;
    
    /** Names of the top leg bones.  LegAttachBeams will terminate here. */
    var protected const name				TopLegBoneName[NUM_WALKER_LEGS];
    
    /** These keep the previous location of the legs and body so that we don't have to do expensive line traces if we have actually not moved their position **/
    var protected vector PreviousLegLocation[NUM_WALKER_LEGS];
    
    /** camera anim played when foot lands nearby */
    var CameraAnim FootStepShake;
    var float FootStepShakeRadius;
    
    function PostBeginPlay()
    {
    	local int Idx;
    
    	super.PostBeginPlay();
    
    	EnergyBallMatInst = SkeletalMeshComponent.CreateAndSetMaterialInstanceConstant(1);
    	SetEnergyBallPowerPercent(0.f);
    
    	// attach powerball light to the ball
    	SkeletalMeshComponent.AttachComponent(EnergyBallLight, BodyBoneName);
    
    	// attach leg attach beam emitters to the ball
    	for (Idx=0; Idx<NUM_WALKER_LEGS; ++Idx)
    	{
    		SkeletalMeshComponent.AttachComponent(LegAttachBeams[Idx], BodyBoneName);
    	}
    }
    
    final protected function SetEnergyBallPowerPercent(float Pct)
    {
    	local float NewBrightness;
    	local color NewColor;
    
    	if( WalkerVehicle == none )
    	{
    		return;
    	}
    
    	// store it
    	CurrentEnergyBallPowerPct = Pct;
    
    	// set light color and brightness
    	if( WalkerVehicle.GetTeamNum() == 1 )
    	{
    		NewColor = EnergyBallLightColor_PoweredOff_Blue + (EnergyBallLightColor_PoweredOn_Blue - EnergyBallLightColor_PoweredOff) * CurrentEnergyBallPowerPct;
    
    	}
    	else
    	{
    		NewColor = EnergyBallLightColor_PoweredOff + (EnergyBallLightColor_PoweredOn - EnergyBallLightColor_PoweredOff) * CurrentEnergyBallPowerPct;
    	}
    
    
    	NewBrightness = EnergyBallLightBrightness_PoweredOff + (EnergyBallLightBrightness_PoweredOn - EnergyBallLightBrightness_PoweredOff) * CurrentEnergyBallPowerPct;
    
    	//`log( "SetEnergyBallPowerPercent: " $ WalkerVehicle.GetTeamNum() $ " NewBrightness: " $ NewBrightness );
    
    	EnergyBallLight.SetLightProperties(NewBrightness, NewColor);
    
    	// set material param
    	EnergyBallMatInst.SetScalarParameterValue(EnergyBallMaterialParameterName, CurrentEnergyBallPowerPct);
    }
    
    event PlayFootStep(int LegIdx)
    {
    	local UTPlayerController PC;
    	local float Dist;
    
    	Super.PlayFootStep(LegIdx);
    
    	foreach LocalPlayerControllers(class'UTPlayerController', PC)
    	{
    		if (UTVehicleBase(PC.ViewTarget) == None || WalkerVehicle.Seats.Find('SeatPawn', UTVehicleBase(PC.ViewTarget)) == INDEX_NONE)
    		{
    			Dist = VSize(CurrentFootPosition[LegIdx] - PC.ViewTarget.Location);
    			if (Dist < FootStepShakeRadius)
    			{
    				PC.PlayCameraAnim(FootStepShake, 1.0 - (Dist / FootStepShakeRadius));
    			}
    		}
    	}
    }
    
    function Tick(float DeltaTime)
    {
    	local float NewPowerPct, NewBrightness;
    	local int Idx;
    	local vector LegLocation;
    
    	super.Tick(DeltaTime);
    
    	// ball is powered on when driven, powered off otherwise
    	GoalEnergyBallPowerPct = (WalkerVehicle.bDriving && !WalkerVehicle.bDeadVehicle) ? 1.f : 0.f;
    
    	if (GoalEnergyBallPowerPct != CurrentEnergyBallPowerPct)
    	{
    		NewPowerPct = FInterpTo(CurrentEnergyBallPowerPct, GoalEnergyBallPowerPct, DeltaTime, EnergyBallPowerInterpSpeed);
    		SetEnergyBallPowerPercent(NewPowerPct);
    	}
    	else if (WalkerVehicle.bDeadVehicle)
    	{
    		// this will fade light to zero after it gets to the zero-energy color
    		NewBrightness = FInterpTo(EnergyBallLight.Brightness, 0.f, DeltaTime, EnergyBallPowerInterpSpeed);
    		EnergyBallLight.SetLightProperties(NewBrightness);
    		EnergyBallMatInst.SetScalarParameterValue(EnergyBallMaterialParameterName, 0.0f);
    	}
    
    	// set leg attach beam endpoints
    	for (Idx=0; Idx<NUM_WALKER_LEGS; ++Idx)
    	{
    		LegLocation = SkeletalMeshComponent.GetBoneLocation(TopLegBoneName[Idx]);
    
    		if( VSize(PreviousLegLocation[Idx] - LegLocation) > 1.0f )
    		{
    			//`log( "Ticking Walker PSC: " $ LegAttachBeams[Idx] );
    			LegAttachBeams[Idx].SetVectorParameter(LegAttachBeamEndPointParamName, LegLocation );
    			PreviousLegLocation[Idx] = LegLocation;
    		}
    	}
    }
    
    
    /** NOTE:  this is actually what changes the colors on the PowerOrb on the legs of the Walker **/
    simulated function TeamChanged()
    {
    	local int LegIdx;
    	local ParticleSystem PS_LegBeam;
    
    	Super.TeamChanged();
    
    	if( WalkerVehicle.GetTeamNum() == 1 )
    	{
    		PS_LegBeam=PS_LegBeamTemplate_Blue;
    	}
    	else
    	{
    		PS_LegBeam=PS_LegBeamTemplate;
    	}
    
    	for( LegIdx = 0; LegIdx < NUM_WALKER_LEGS; ++LegIdx )
    	{
    		LegAttachBeams[LegIdx].SetTemplate( PS_LegBeam );
    	}
    
    	SetEnergyBallPowerPercent( CurrentEnergyBallPowerPct );
    }
    
    
    defaultproperties
    {
    	bHasCrouchMode=true
    	FootStepEffects[0]=(MaterialType=Dirt,Sound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_FootstepCue',ParticleTemplate=ParticleSystem'VH_Darkwalker.Effects.P_VH_DarkWalker_FootImpact_Dust')
    	FootStepEffects[1]=(MaterialType=Snow,Sound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_FootstepCue',ParticleTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_FootImpact_Snow')
    	FootStepEffects[2]=(MaterialType=Water,Sound=SoundCue'A_Vehicle_DarkWalker.Cue.A_Vehicle_DarkWalker_FootstepCue',ParticleTemplate=ParticleSystem'Envy_Level_Effects_2.Vehicle_Water_Effects.P_DarkWalker_Water_Splash')
    
    	Foo****erEffect=ParticleSystem'Envy_Level_Effects_2.Vehicle_Water_Effects.P_DarkWalker_Water_Splash'
    
    	Begin Object Name=LegMeshComponent
    		SkeletalMesh=SkeletalMesh'VH_Scarab.Mesh.scarab_legs'
    		PhysicsAsset=PhysicsAsset'VH_Scarab.Mesh.VH_SK_ScarabLeg_Physics'
    		AnimSets(0)=AnimSet'VH_Scarab.Anims.K_VH_Scarab'
    		AnimTreeTemplate=AnimTree'VH_Scarab.Anims.AT_VH_ScarabLegs'
    		bUpdateJointsFromAnimation=TRUE
    	End Object
    
    	MinStepDist=820.0
    	MaxLegReach=8750.0
    	LegSpreadFactor=2.6
    
    	CustomGravityScale=0.f
    	FootEmbedDistance=62.0
    
    	LandedFootDistSq=8500.0
    
    	FootStepAnimNodeName[0]="Leg3 Step"
    	FootStepAnimNodeName[1]="Leg2 Step"
    	FootStepAnimNodeName[2]="Leg1 Step"
            FootStepAnimNodeName[3]="Leg0 Step"
    
    	//EnergyBallLight=Light0
    
    	EnergyBallLightColor_PoweredOn=(R=250,G=231,B=126)
    	EnergyBallLightColor_PoweredOff=(R=150,G=50,B=10)
    
    	EnergyBallLightColor_PoweredOn_Blue=(R=89,G=153,B=217)
    	EnergyBallLightColor_PoweredOff_Blue=(R=10,G=50,B=150)
    
    	EnergyBallLightBrightness_PoweredOn=8.f
    	EnergyBallLightBrightness_PoweredOff=6.f
    
    	EnergyBallMaterialParameterName="Scalar"
    
    	EnergyBallPowerInterpSpeed=1.5f
    
    	//PS_LegBeamTemplate=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_PowerBall_Idle'
    	//PS_LegBeamTemplate_Blue=ParticleSystem'VH_DarkWalker.Effects.P_VH_DarkWalker_PowerBall_Idle_Blue'
    
    
    
    
    	//LegAttachBeamEndPointParamName=DarkwalkerLegEnd
    
    	//TopLegBoneName[0]=frontrighthip01
    	//TopLegBoneName[1]=frontlefthip01
    	//TopLegBoneName[2]=frontrighthip
    	//TopLegBoneName[3]=frontlefthip
    
    	FootStepShakeRadius=2000.0
    	FootStepShake=CameraAnim'Camera_FX.DarkWalker.C_VH_DarkWalker_Step_Shake'
    }
    Code:
    class UTVehicleFactory_Scarab extends UTVehicleFactory;
    
    defaultproperties
    {
    	Begin Object Name=SVehicleMesh
    		SkeletalMesh=SkeletalMesh'VH_Scarab.Mesh.VH_SK_Scarab'
    	End Object
    
    	Components.Remove(Sprite)
    
    	Begin Object Name=CollisionCylinder
    		CollisionHeight=+100.0
    		CollisionRadius=+100.0
    	End Object
    
    	VehicleClassPath="UTGameContent.UTVehicle_Scarab_Content"
    }
    if anyone can point out anything wrong please do
    Last edited by skwisdemon666; 07-31-2009 at 04:30 PM.
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  7. #7
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    im not sure why the code things only worked once
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  8. #8
    Marrow Fiend
    Join Date
    Jul 2006
    Location
    UT40k
    Posts
    4,169

    Default

    your missing the / in the last(close) code tag eg:-
    [/CODE]

    if your still having problems check your launch.log
    UT40K:The Chosen - Warhammer 40,000 for UDK
    ut40kgeodav - UT3 Tutorials - Characters - Weapons - Vehicles - FaceFX
    UDK Tutorials - Basics - Vehicles - Characters - Weapons

  9. #9

    Default

    Contact CaptainSnarf. He's made a couple walkers.

  10. #10
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    i get no errors or warnings in compile, dont see anything in the logs
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  11. #11
    Iron Guard
    Join Date
    Mar 2009
    Location
    Dundonald, Northern Ireland
    Posts
    510

    Default

    found your problem
    remove the "abstract" fromt he sart of UTVehicle_Scarab.
    i ran into the same problem with a turret.
    PC Specs
    CPU:Phenom II x4 955 @ 3.55ghz | Mobo: Asus M4A785D-M | CPU Cooler: Stock | Case: An old Antec one :P | OS: 7 Ultimate 32bit | GPU: Powercolour Radeon HD4850 | RAM: 4GB of Kingston DDR2-667 | HDD: WD Caviar 500gb | Monitor: Matsui 19" Lcd TV 1366x768 | Sound: onboard HD Audio | Speakers: Sennheiser HD202 Headphones

  12. #12
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    i think that helped but now in quadwalkerbody its saying "warning, redundant data: baselegdirlocal[Walkerleg_rearleft] and also for the footposveladjscale
    and its still invisible
    Last edited by skwisdemon666; 07-31-2009 at 11:45 PM.
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  13. #13
    Iron Guard
    Join Date
    Mar 2009
    Location
    Dundonald, Northern Ireland
    Posts
    510

    Default

    seriously, still invisible?
    hmmmmmmmmmm.. well the abstract would make it invisible.. but i have no idea whats wrong with it now.. try deleting the line that it says is redundant then recompiling
    PC Specs
    CPU:Phenom II x4 955 @ 3.55ghz | Mobo: Asus M4A785D-M | CPU Cooler: Stock | Case: An old Antec one :P | OS: 7 Ultimate 32bit | GPU: Powercolour Radeon HD4850 | RAM: 4GB of Kingston DDR2-667 | HDD: WD Caviar 500gb | Monitor: Matsui 19" Lcd TV 1366x768 | Sound: onboard HD Audio | Speakers: Sennheiser HD202 Headphones

  14. #14
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    there isn't anything that says its redundant in the code, im gonna re-code it from scratch and make sure i dont screw anything up
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  15. #15
    Boomshot
    Join Date
    Oct 2007
    Posts
    2,300
    Gamer IDs

    Gamertag: Fr0z3nB0nes

    Default

    You said its invisible, does that mean you can still drive it, just not see it, or its not there at all?

    Also, in your factory you have "UTGameContent.UTVehicle_Scarab_Content"

    Are you coding inside UTGameContent, I assume its a TC btw, so maybe its causing conflicts to have the same script name?

  16. #16
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    well, im just trying to get it to work in regular ut3 play right now, and i have made some vehicles sucessfully, i already made the warthog, gauss warthog, and rocket warthog (the black one from halo ce), we are planning on making a TC and releasing some maps and stuff to work in regular ut3 play, and by invisible i mean its not there at all
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  17. #17
    Boomshot
    Join Date
    Oct 2007
    Posts
    2,300
    Gamer IDs

    Gamertag: Fr0z3nB0nes

    Default

    Well I would suggest you just make your own folder so that you don't run into any conflicts. Especially since UTGameContent is one the main script folders.

    Try making it inside of a folder called HaloScarab instead?

    Btw, before you try what Im suggesting do you know if its spawning or not, if it is actually spawning then my suggestion would have no effect. If that is the case are all your packages working, perhaps theres a problem with your skeletal mesh (grasping at strings )

  18. #18
    Marrow Fiend
    Join Date
    Jul 2006
    Location
    UT40k
    Posts
    4,169

    Default

    Basically what we're saying is that to fault find for you we need the content+code, i don't suggest you make it public but try PM'ing a few of the experenced guys and ask if they can help on this one vehicle. a lot of the time it's just something simple that you over look. happens to me all the time
    UT40K:The Chosen - Warhammer 40,000 for UDK
    ut40kgeodav - UT3 Tutorials - Characters - Weapons - Vehicles - FaceFX
    UDK Tutorials - Basics - Vehicles - Characters - Weapons

  19. #19
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    well, you were right about the utgamecontent thing, i put in in the src folder with scarab as its name but its still not in game, if i set the spawner's collision to block all, i can run into the shape of it so its at least picking up the shape of the mesh, i went back to having the front left and back right legs move in one anim node so i could use the regular walker class and eliminate that as an issue, i get a clean compile but still don't work, i will try to get the package together and send it to someone
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  20. #20
    Boomshot
    Join Date
    Oct 2007
    Posts
    2,300
    Gamer IDs

    Gamertag: Fr0z3nB0nes

    Default

    It's a stupid guess but is your material in a package that isn't being found?

    Also can you enter the vehicle?

  21. #21
    Iron Guard
    Join Date
    Jun 2008
    Posts
    818
    Gamer IDs

    Gamertag: Black Fang666

    Default

    the vehicle doesn't spawn, but im assuming it can find the package because the factory has the mesh with its materials, it just doesn't spawn when i start to play
    Want to collaborate? Want to chat UDK? Message me on Skype, Craig Delancy. Check out my UDK Youtube channel: http://www.youtube.com/user/xblBlack...ew=0&flow=grid

  22. #22
    Marrow Fiend
    Join Date
    Jul 2006
    Location
    UT40k
    Posts
    4,169

    Default

    you can send me the package if you want and i'll try to fault find for you, just upload it somewhere and pm me the link
    UT40K:The Chosen - Warhammer 40,000 for UDK
    ut40kgeodav - UT3 Tutorials - Characters - Weapons - Vehicles - FaceFX
    UDK Tutorials - Basics - Vehicles - Characters - Weapons


 

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Copyright ©2009-2011 Epic Games, Inc. All Rights Reserved.
Digital Point modules: Sphinx-based search vBulletin skin by CompletevB.com.