ApplyLaserState Instigator accessed none fix

This commit is contained in:
Shtoyan 2022-01-21 17:52:41 +04:00
parent f93d1d4761
commit 8609b8fef8

View File

@ -1331,55 +1331,72 @@ function SetNiceData(NicePlainData.Data transferData, optional NiceHumanPawn new
secondaryCharge = class'NicePlainData'.static.GetInt(transferData, "ChargeAmount", 1); secondaryCharge = class'NicePlainData'.static.GetInt(transferData, "ChargeAmount", 1);
ClientSetSndCharge(secondaryCharge); ClientSetSndCharge(secondaryCharge);
} }
simulated function ApplyLaserState(){
simulated function ApplyLaserState()
{
bLaserActive = LaserType > 0; bLaserActive = LaserType > 0;
if(Role < ROLE_Authority) if (Role < ROLE_Authority)
ServerSetLaserType(LaserType); ServerSetLaserType(LaserType);
if(NiceAttachment(ThirdPersonActor) != none) if (NiceAttachment(ThirdPersonActor) != none)
NiceAttachment(ThirdPersonActor).SetLaserType(LaserType); NiceAttachment(ThirdPersonActor).SetLaserType(LaserType);
// Instigator accessed none fix
if (Instigator == none || !Instigator.IsLocallyControlled())
return;
if(!Instigator.IsLocallyControlled()) if (bLaserActive)
return; {
if (LaserDot == none)
if(bLaserActive){ LaserDot = Spawn(LaserDotClass, self);
if(LaserDot == none) LaserDot.SetLaserType(LaserType);
LaserDot = Spawn(LaserDotClass, self); if (altLaserAttachmentBone != '')
LaserDot.SetLaserType(LaserType); {
if(altLaserAttachmentBone != ''){ if (altLaserDot == none)
if(altLaserDot == none) altLaserDot = Spawn(LaserDotClass, self);
altLaserDot = Spawn(LaserDotClass, self); altLaserDot.SetLaserType(LaserType);
altLaserDot.SetLaserType(LaserType); }
} // spawn 1-st person laser attachment for weapon owner
//spawn 1-st person laser attachment for weapon owner if (LaserAttachment == none)
if(LaserAttachment == none){ {
SetBoneRotation(LaserAttachmentBone, LaserAttachmentRotation); SetBoneRotation(LaserAttachmentBone, LaserAttachmentRotation);
LaserAttachment = Spawn(LaserAttachmentClass,,,,); LaserAttachment = Spawn(LaserAttachmentClass,,,,);
AttachToBone(LaserAttachment, LaserAttachmentBone); if (LaserAttachment != none)
if(LaserAttachment != none) {
LaserAttachment.SetRelativeLocation(LaserAttachmentOffset); AttachToBone(LaserAttachment, LaserAttachmentBone);
} LaserAttachment.SetRelativeLocation(LaserAttachmentOffset);
if(altLaserAttachment == none && altLaserAttachmentBone != ''){ }
SetBoneRotation(altLaserAttachmentBone, altLaserAttachmentRotation); }
altLaserAttachment = Spawn(LaserAttachmentClass,,,,); else
AttachToBone(altLaserAttachment, altLaserAttachmentBone); LaserAttachment.bHidden = false;
if(altLaserAttachment != none)
altLaserAttachment.SetRelativeLocation(altLaserAttachmentOffset); if (altLaserAttachment == none && altLaserAttachmentBone != '')
} {
ConstantColor'ScrnTex.Laser.LaserColor'.Color = LaserDot.GetLaserColor(); SetBoneRotation(altLaserAttachmentBone, altLaserAttachmentRotation);
LaserAttachment.bHidden = false; altLaserAttachment = Spawn(LaserAttachmentClass,,,,);
altLaserAttachment.bHidden = false; if (altLaserAttachment != none)
{
AttachToBone(altLaserAttachment, altLaserAttachmentBone);
altLaserAttachment.SetRelativeLocation(altLaserAttachmentOffset);
}
}
else
altLaserAttachment.bHidden = false;
ConstantColor'ScrnTex.Laser.LaserColor'.Color = LaserDot.GetLaserColor();
} }
else{ else
if(LaserAttachment != none) {
LaserAttachment.bHidden = true; if (LaserAttachment != none)
if(altLaserAttachment != none) LaserAttachment.bHidden = true;
altLaserAttachment.bHidden = true; if (altLaserAttachment != none)
if(LaserDot != none) altLaserAttachment.bHidden = true;
LaserDot.Destroy(); if (LaserDot != none)
if(altLaserDot != none) LaserDot.Destroy();
altLaserDot.Destroy(); if (altLaserDot != none)
altLaserDot.Destroy();
} }
} }
simulated function ToggleLaser(){ simulated function ToggleLaser(){
if(!Instigator.IsLocallyControlled()) if(!Instigator.IsLocallyControlled())
return; return;