Need assistance with a small weapon replacement mutator:
Posted: Thu 29 Sep , 2011 12:36 am
Hey guys, i want to use this mutator because i have messed up a bit with it already and suited it to my server needs, the mutator is called swaptoolv11, however there is a slight problem with it right now, it changes inventory weapons for players, bots and even monsters, and thats actually my problem really, it shouldnt change weapons for monsters as it makes the server crash because of that.
I know where its doing that change in the inventory i know where to block it but i just dont know what if statement i must use to filter monsters, to make it easier for you i have bolded the key section where it needs to be filtered, technically all i am looking for is something like:
If (Actor != Monster)
{
if ( NextMutator != None )
return NextMutator.GetInventoryClassOverride(InventoryClassName);
return InventoryClassName;
}
Thats kinda it, sorry if this is as easy as i think it is, i just dont know what to replace if (actor != monster) with...
Thanks in advance!
I know where its doing that change in the inventory i know where to block it but i just dont know what if statement i must use to filter monsters, to make it easier for you i have bolded the key section where it needs to be filtered, technically all i am looking for is something like:
If (Actor != Monster)
{
if ( NextMutator != None )
return NextMutator.GetInventoryClassOverride(InventoryClassName);
return InventoryClassName;
}
Code: Select all
//==============================================================================
// SwapTool for Unreal Tournament 2004
// Version 1.1
// 2/3/2005
// Author - Matt Miller a.k.a. T-Bone
//==============================================================================
class MutSwapTool1A extends Mutator
config(SwapToolV111A);
var config int bSwapWeapon[17];
var config string WeaponClassName[17];
var class<Weapon> WeaponClass[17];
var string WeaponAmmoName[12];
var config int bSwapVehicle[17];
var config string VehicleClassName[9];
var class<SVehicle> VehicleClass[9];
var class<Weapon> StandardWeaponClass[18];
var string StandardWeaponAmmoName[12];
var class<Weapon> DummyWeaponClass;
var string DummyWeaponClassName;
var class<SVehicle> BPVehicleClass[3];
var class<Weapon> CustomWeaponClassFix[2];
var string CustomAmmoClassFix[2];
// Add third party weapon/vehicle packages to Server Packages list
event PreBeginPlay()
{
local array<string> ServerPackageNames;
local string CurPackage;
local bool bNonRepeat;
local int i, j;
Super.PreBeginPlay();
for (i=0; i<17; i++)
{
if ( InStr(WeaponClassName[i], ".") != -1 && bool(bSwapWeapon[i]) )
{
CurPackage = Left(WeaponClassName[i], InStr(WeaponClassName[i], ".") );
if (CurPackage != "XWeapons" && CurPackage != "UTClassic" && CurPackage != "Onslaught" && CurPackage != "OnslaughtFull")
{
bNonRepeat = True;
for (j=0; j < ServerPackageNames.Length; j++)
{
if (CurPackage == ServerPackageNames[j])
{
bNonRepeat = False;
break;
}
}
if (bNonRepeat)
ServerPackageNames[ServerPackageNames.Length] = CurPackage;
}
}
}
for (i=0; i<9; i++)
{
if ( InStr(VehicleClassName[i], ".") != -1 && bool(bSwapVehicle[i]) )
{
CurPackage = Left(VehicleClassName[i], InStr(VehicleClassName[i], ".") );
if (CurPackage != "Onslaught" && CurPackage != "OnslaughtFull" && CurPackage != "OnslaughtBP")
{
bNonRepeat = True;
for (j=0; j < ServerPackageNames.Length; j++)
{
if (CurPackage == ServerPackageNames[j])
{
bNonRepeat = False;
break;
}
}
if (bNonRepeat)
ServerPackageNames[ServerPackageNames.Length] = CurPackage;
}
}
}
for (i=0; i < ServerPackageNames.Length; i++)
{
AddToPackageMap(ServerPackageNames[i]);
}
}
function PostBeginPlay()
{
local int i;
Super.PostBeginPlay();
// Load Weapons
for (i=0; i < 17; i++)
{
if (WeaponClassName[i] ~= "none" || !bool(bSwapWeapon[i]) )
WeaponClass[i] = None;
else
WeaponClass[i] = class<Weapon>(DynamicLoadObject(WeaponClassName[i],class'Class'));
}
// Get Ammo Class Names
for (i=2; i < 14; i++)
{
if ( (WeaponClass[i] != None) && (WeaponClass[i].default.FireModeClass[0] != None)
&& (WeaponClass[i].default.FireModeClass[0].default.AmmoClass != None)
&& (WeaponClass[i].default.FireModeClass[0].default.AmmoClass.default.PickupClass != None) )
WeaponAmmoName[i-2] = string(WeaponClass[i].default.FireModeClass[0].default.AmmoClass.default.PickupClass);
else if ( WeaponClass[i] == CustomWeaponClassFix[0] )
WeaponAmmoName[i-2] = CustomAmmoClassFix[0];
else if ( WeaponClass[i] == CustomWeaponClassFix[1] )
WeaponAmmoName[i-2] = CustomAmmoClassFix[1];
else
WeaponAmmoName[i-2] = "none";
}
// Load Vehicles
for (i=0; i < 9; i++)
{
if (VehicleClassName[i] ~= "none" || !bool(bSwapVehicle[i]) )
VehicleClass[i] = None;
else
VehicleClass[i] = class<SVehicle>(DynamicLoadObject(VehicleClassName[i],class'Class'));
}
// Load BPVehicles
BPVehicleClass[0] = class<SVehicle>(DynamicLoadObject("OnslaughtBP.ONSDualAttackCraft",class'Class',True));
BPVehicleClass[1] = class<SVehicle>(DynamicLoadObject("OnslaughtBP.ONSArtillery",class'Class',True));
BPVehicleClass[2] = class<SVehicle>(DynamicLoadObject("OnslaughtBP.ONSShockTank",class'Class',True));
SetTimer(0.1,False);
}
function Timer()
{
local ONSVehicleFactory Factory;
foreach AllActors(class'ONSVehicleFactory', Factory)
{
switch (Factory.VehicleClass)
{
// Replace Manta
case Class'Onslaught.ONSHoverBike':
if (bool(bSwapVehicle[0]))
{
if (VehicleClass[0] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[0];
}
break;
// Replace Scorpion
case Class'Onslaught.ONSRV':
if (bool(bSwapVehicle[1]))
{
if (VehicleClass[1] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[1];
}
break;
// Replace Hellbender
case Class'Onslaught.ONSPRV':
if (bool(bSwapVehicle[2]))
{
if (VehicleClass[2] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[2];
}
break;
// Replace Raptor
case Class'Onslaught.ONSAttackCraft':
if (bool(bSwapVehicle[3]))
{
if (VehicleClass[3] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[3];
}
break;
// Replace Goliath
case Class'Onslaught.ONSHoverTank':
if (bool(bSwapVehicle[4]))
{
if (VehicleClass[4] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[4];
}
break;
// Replace Leviathan
case Class'OnslaughtFull.ONSMobileAssaultStation':
if (bool(bSwapVehicle[5]))
{
if (VehicleClass[5] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[5];
}
break;
// Replace Cicada
case BPVehicleClass[0]:
if (bool(bSwapVehicle[6]))
{
if (VehicleClass[6] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[6];
}
break;
// Replace SPMA
case BPVehicleClass[1]:
if (bool(bSwapVehicle[7]))
{
if (VehicleClass[7] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[7];
}
break;
// Replace Paladin
case BPVehicleClass[2]:
if (bool(bSwapVehicle[8]))
{
if (VehicleClass[8] == None)
{
Factory.Deactivate();
Factory.bNeverActivate = True;
}
else
Factory.VehicleClass = VehicleClass[8];
}
break;
}
}
}
function string GetInventoryClassOverride(string InventoryClassName)
{
local int i;
// Replace default weapons in LMS
for (i=0; i < 3; i++)
{
if ( InventoryClassName == string(StandardWeaponClass[i]) )
{
if (bool(bSwapWeapon[i]))
{
if ( WeaponClass[i] != None )
InventoryClassName = WeaponClassName[i];
else
InventoryClassName = DummyWeaponClassName;
}
if ( i == 17 )
{
InventoryClassName = WeaponClassName[5];
}
break;
}
}
if ( NextMutator != None )
return NextMutator.GetInventoryClassOverride(InventoryClassName);
return InventoryClassName;
}
function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
local WeaponLocker L;
local int i, j;
bSuperRelevant = 0;
// Swap out default weapon pickups with our weapon pickups
if ( Other.IsA('xWeaponBase') )
{
for (i=2; i < 17; i++)
{
if ( xWeaponBase(Other).WeaponType == StandardWeaponClass[i] )
{
if (bool(bSwapWeapon[i]))
{
if ( WeaponClass[i] != None )
{
xWeaponBase(Other).WeaponType = WeaponClass[i];
return True;
}
else
{
xWeaponBase(Other).WeaponType = DummyWeaponClass;
xWeaponBase(Other).bHidden = True;
if (xWeaponBase(Other).myEmitter != None)
xWeaponBase(Other).myEmitter.Destroy();
}
}
break;
}
}
}
// Swap out default ammo pickups with our ammo pickups
// AmbientGlow mess is just my way of tagging ammo that has already been replaced
else if ( Other.IsA('Ammo') && Other.AmbientGlow != 117 )
{
for (i=0; i < 12; i++)
{
if (string(Other.Class) == StandardWeaponAmmoName[i])
{
if (bool(bSwapWeapon[i+2]) && WeaponAmmoName[i] != StandardWeaponAmmoName[i])
{
if (WeaponAmmoName[i] != "none")
ReplaceWith(Other, WeaponAmmoName[i]);
return False;
}
break;
}
}
}
// Swap out default weapons inside lockers with our weapons
else if (WeaponLocker(Other) != None)
{
L = WeaponLocker(Other);
for (j = 0; j < L.Weapons.Length; j++)
{
for (i=0; i < 17; i++)
{
if ( L.Weapons[j].WeaponClass == StandardWeaponClass[i] )
{
if (bool(bSwapWeapon[i]))
{
if (WeaponClass[i] != None)
L.Weapons[j].WeaponClass = WeaponClass[i];
else
L.Weapons[j].WeaponClass = DummyWeaponClass;
}
break;
}
}
}
}
return True;
}
function bool ReplaceWith(actor Other, string aClassName)
{
local Actor A;
local class<Actor> aClass;
if ( aClassName == "" )
return true;
aClass = class<Actor>(DynamicLoadObject(aClassName, class'Class'));
if ( class<Ammo>(aClass) != None )
class<Ammo>(aClass).Default.AmbientGlow = 117; // Tag replacement ammo
if ( aClass != None )
A = Spawn(aClass,Other.Owner,Other.tag,Other.Location, Other.Rotation);
if ( Other.IsA('Pickup') )
{
if ( Pickup(Other).MyMarker != None )
{
Pickup(Other).MyMarker.markedItem = Pickup(A);
if ( Pickup(A) != None )
{
Pickup(A).MyMarker = Pickup(Other).MyMarker;
A.SetLocation(A.Location
+ (A.CollisionHeight - Other.CollisionHeight) * vect(0,0,1));
}
Pickup(Other).MyMarker = None;
}
else if ( A.IsA('Pickup') )
Pickup(A).Respawntime = 0.0;
}
class<Ammo>(aClass).Default.AmbientGlow = 128;
if ( A != None )
{
A.event = Other.event;
A.tag = Other.tag;
return true;
}
return false;
}
defaultproperties
{
CustomWeaponClassFix(0)=Class'ChaosUT.Claw'
CustomWeaponClassFix(1)=Class'ChaosUT.CGL'
StandardWeaponClass(0)=Class'XWeapons.Translauncher'
StandardWeaponClass(1)=Class'XWeapons.ShieldGun'
StandardWeaponClass(2)=Class'XWeapons.AssaultRifle'
StandardWeaponClass(3)=Class'XWeapons.BioRifle'
StandardWeaponClass(4)=Class'XWeapons.ShockRifle'
StandardWeaponClass(5)=Class'XWeapons.LinkGun'
StandardWeaponClass(6)=Class'XWeapons.Minigun'
StandardWeaponClass(7)=Class'XWeapons.FlakCannon'
StandardWeaponClass(8)=Class'XWeapons.RocketLauncher'
StandardWeaponClass(9)=Class'XWeapons.SniperRifle'
StandardWeaponClass(10)=Class'UTClassic.ClassicSniperRifle'
StandardWeaponClass(11)=Class'Onslaught.ONSMineLayer'
StandardWeaponClass(12)=Class'Onslaught.ONSGrenadeLauncher'
StandardWeaponClass(13)=Class'Onslaught.ONSAVRiL'
StandardWeaponClass(14)=Class'OnslaughtFull.ONSPainter'
StandardWeaponClass(15)=Class'XWeapons.Painter'
StandardWeaponClass(16)=Class'XWeapons.Redeemer'
StandardWeaponClass(17)=Class'UT2004RPG.RPGLinkGun'
CustomAmmoClassFix(0)="ChaosUT.ClawProxyAmmoPickup"
CustomAmmoClassFix(1)="ChaosUT.CGLStandardAmmoPickup"
StandardWeaponAmmoName(0)="XWeapons.AssaultAmmoPickup"
StandardWeaponAmmoName(1)="XWeapons.BioAmmoPickup"
StandardWeaponAmmoName(2)="XWeapons.ShockAmmoPickup"
StandardWeaponAmmoName(3)="XWeapons.LinkAmmoPickup"
StandardWeaponAmmoName(4)="XWeapons.MinigunAmmoPickup"
StandardWeaponAmmoName(5)="XWeapons.FlakAmmoPickup"
StandardWeaponAmmoName(6)="XWeapons.RocketAmmoPickup"
StandardWeaponAmmoName(7)="XWeapons.SniperAmmoPickup"
StandardWeaponAmmoName(8)="UTClassic.ClassicSniperAmmoPickup"
StandardWeaponAmmoName(9)="Onslaught.ONSMineAmmoPickup"
StandardWeaponAmmoName(10)="Onslaught.ONSGrenadeAmmoPickup"
StandardWeaponAmmoName(11)="Onslaught.ONSAVRiLAmmoPickup"
DummyWeaponClass=Class'SwapToolV111A.STDummyW1A'
DummyWeaponClassName="SwapToolV111A.STDummyW1A"
ConfigMenuClassName="SwapToolV111A.SwapToolConfig1A"
GroupName="SwapTool1A"
FriendlyName="SwapTool1A"
Description="Swap out default weapons and vehicles with those of your choosing.||version 1A based on V1.1"
}
Thats kinda it, sorry if this is as easy as i think it is, i just dont know what to replace if (actor != monster) with...
Thanks in advance!