Ok so I've got this mutator that's supposed to replace regular firebolts and firearrows with my own. It works fine for the server, but if any client joins the game, he never gets past the "-Please Wait'-" message. If he does wait, his logfile gets filled with this repeated crap:
And this goes on at the speed of about 6 megs a minute.
This is all the code from the mutator package:
[code:1:e5b4eb90d9]//================================================== ===========================
// ThProjectileMMsFB.
//================================================== ===========================
class ThProjectileMMsFB expands ThProjectileFireBolt;
var bool bThrowStuffAbout;
function BeginPlay()
{
Super.BeginPlay();
MyFlame.LightRadius = 2;
}
function DoExplosion()
{
local UT_SpriteBallExplosion s;
local ThieveryTorchTrigger tt;
local Actor A;
local float vel;
if (bExploded) return;
bExploded=true;
s = spawn(class'ThSpriteBallExplosion');
s.DrawScale = 2.0;
foreach RadiusActors(class'ThieveryTorchTrigger', tt, 200) {
tt.Relight(Owner);
}
// Fling stuff about
if (bThrowStuffAbout)
{
foreach RadiusActors(class'Actor', A, 300)
{
if (A.bCollideWorld && (A.Role != ROLE_DumbProxy) && !A.IsA('Pawn') && !(ThieveryObject(A).ObjectivePoints > 0))
{
vel = (300 - VSize(Location-A.Location)) * 2;
if (vel > 2)
{
A.Velocity += vel * Normal(A.Location-Location);
if (A.Physics != PHYS_Projectile && A.Physics != PHYS_Falling)
A.SetPhysics(PHYS_Falling);
}
}
}
}
HurtRadius( Damage, 200.0, 'Fire', MomentumTransfer, Location );
}
simulated function ProcessTouch( Actor Other, Vector HitLocation ) {
local int hitdamage;
if ( Other != self && Other != MOwner && !HasLanded && Other!=Owner) {
if ( Role == ROLE_Authority ) {
DoExplosion();
}
if (MyFlame!=none)
MyFlame.destroy();
Destroy();
}
}
//================================================== ===========================
// ThProjectileMMsExpArr.
//================================================== ===========================
class ThProjectileMMsExpArr expands ThProjectileExplosiveArrow;
var bool bThrowStuffAbout;
function BeginPlay()
{
Super.BeginPlay();
MyFlame.LightRadius = 2;
}
function DoExplosion()
{
local UT_SpriteBallExplosion s;
local ThieveryTorchTrigger tt;
local Actor A;
local float vel;
if (bExploded) return;
bExploded=true;
s = spawn(class'ThSpriteBallExplosion');
s.DrawScale = 2.0;
foreach RadiusActors(class'ThieveryTorchTrigger', tt, 200) {
tt.Relight(Owner);
}
// Fling stuff about
if (bThrowStuffAbout)
{
foreach RadiusActors(class'Actor', A, 300)
{
if (A.bCollideWorld && (A.Role != ROLE_DumbProxy) && !A.IsA('Pawn') && !(ThieveryObject(A).ObjectivePoints > 0))
{
vel = (300 - VSize(Location-A.Location)) * 2;
if (vel > 2)
{
A.Velocity += vel * Normal(A.Location-Location);
if (A.Physics != PHYS_Projectile && A.Physics != PHYS_Falling)
A.SetPhysics(PHYS_Falling);
}
}
}
}
HurtRadius( Damage, 200.0, '', MomentumTransfer, Location );
}
simulated function ProcessTouch( Actor Other, Vector HitLocation ) {
local int hitdamage;
if ( Other != self && Other != MOwner && !HasLanded && Other!=Owner) {
if ( Role == ROLE_Authority ) {
DoExplosion();
}
if (MyFlame!=none)
MyFlame.destroy();
Destroy();
}
}
//================================================== ===========================
// SpawnNotifyFireProjs.
//================================================== ===========================
class SpawnNotifyFireProjs expands SpawnNotify;
var bool bReplaceFireBolts, bReplaceExpArrows, bThrowStuffAbout;
event Actor SpawnNotification( Actor A )
{
local vector Aloc;
local rotator Arot;
local Actor Aown, B;
if (A.IsA('ThProjectileFireBolt') && !A.IsA('ThProjectileMMsFB') && bReplaceFireBolts)
{
Aloc = A.Location;
Arot = A.Rotation;
Aown = A.Owner;
B = Spawn(class'ThProjectileMMsFB', Aown,, Aloc, Arot);
B.Instigator = A.Instigator;
ThProjectileMMsFB(B).bThrowStuffAbout = bThrowStuffAbout;
ThProjectileFireBolt(A).CheckForDestroy 0;);
Return B;
}
else if (A.IsA('ThProjectileExplosiveArrow') ; && !A.IsA('ThProjectileMMsExpArr') && bReplaceExpArrows)
{
Aloc = A.Location;
Arot = A.Rotation;
Aown = A.Owner;
B = Spawn(class'ThProjectileMMsExpArr', Aown,, Aloc, Arot);
B.Instigator = A.Instigator;
ThProjectileMMsExpArr(B).bThrowStuffAbout = bThrowStuffAbout;
ThProjectileExplosiveArrow(A).CheckForDest roy();
Return B;
} else
return A;
}
//================================================== ===========================
// MMMsFBs.
//================================================== ===========================
class MMMsFBs expands Mutator config(ThMutators);
var bool Initialized;
var() config bool bReplaceFireBolts, bReplaceExpArrows, bThrowStuffAbout;
function PostBeginPlay()
{
local TorchFlame t;
local int i;
local SpawnNotifyFireProjs sn;
if (Initialized)
Return;
Initialized = true;
// SpawnNotify:
sn = Spawn(class'SpawnNotifyFireProjs');
sn.bReplaceFireBolts = bReplaceFireBolts;
sn.bReplaceExpArrows = bReplaceExpArrows;
sn.bThrowStuffAbout = bThrowStuffAbout;
// log("[MMMsFBs] SpawnNotifyFireProjs spawned.");
}[/code:1:e5b4eb90d9]
What the heck is this happening here?
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0395) Attempt to assigned variable through None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03C8) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03D0) Attempt to assigned variable through None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03DC) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03E4) Attempt to assigned variable through None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03F0) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03F8) Attempt to assigned variable through None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:040D) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0426) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:043F) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0455) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0479) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:048F) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:04B3) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:062A) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0638) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0646) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:065C) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:06E7) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:06FB) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0710) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0725) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:038D) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03C8) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03D0) Attempt to assigned variable through None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03DC) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03E4) Attempt to assigned variable through None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03F0) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:03F8) Attempt to assigned variable through None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:040D) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0426) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:043F) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0455) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0479) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:048F) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:04B3) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:062A) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0638) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0646) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:065C) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:06E7) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:06FB) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0710) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:0725) Accessed None
ScriptWarning: ThieveryPPawn TH-Breandor.ThieveryPPawn2 (Function Engine.PlayerPawn.ReplicateMove:038D) Accessed None
This is all the code from the mutator package:
[code:1:e5b4eb90d9]//================================================== ===========================
// ThProjectileMMsFB.
//================================================== ===========================
class ThProjectileMMsFB expands ThProjectileFireBolt;
var bool bThrowStuffAbout;
function BeginPlay()
{
Super.BeginPlay();
MyFlame.LightRadius = 2;
}
function DoExplosion()
{
local UT_SpriteBallExplosion s;
local ThieveryTorchTrigger tt;
local Actor A;
local float vel;
if (bExploded) return;
bExploded=true;
s = spawn(class'ThSpriteBallExplosion');
s.DrawScale = 2.0;
foreach RadiusActors(class'ThieveryTorchTrigger', tt, 200) {
tt.Relight(Owner);
}
// Fling stuff about
if (bThrowStuffAbout)
{
foreach RadiusActors(class'Actor', A, 300)
{
if (A.bCollideWorld && (A.Role != ROLE_DumbProxy) && !A.IsA('Pawn') && !(ThieveryObject(A).ObjectivePoints > 0))
{
vel = (300 - VSize(Location-A.Location)) * 2;
if (vel > 2)
{
A.Velocity += vel * Normal(A.Location-Location);
if (A.Physics != PHYS_Projectile && A.Physics != PHYS_Falling)
A.SetPhysics(PHYS_Falling);
}
}
}
}
HurtRadius( Damage, 200.0, 'Fire', MomentumTransfer, Location );
}
simulated function ProcessTouch( Actor Other, Vector HitLocation ) {
local int hitdamage;
if ( Other != self && Other != MOwner && !HasLanded && Other!=Owner) {
if ( Role == ROLE_Authority ) {
DoExplosion();
}
if (MyFlame!=none)
MyFlame.destroy();
Destroy();
}
}
//================================================== ===========================
// ThProjectileMMsExpArr.
//================================================== ===========================
class ThProjectileMMsExpArr expands ThProjectileExplosiveArrow;
var bool bThrowStuffAbout;
function BeginPlay()
{
Super.BeginPlay();
MyFlame.LightRadius = 2;
}
function DoExplosion()
{
local UT_SpriteBallExplosion s;
local ThieveryTorchTrigger tt;
local Actor A;
local float vel;
if (bExploded) return;
bExploded=true;
s = spawn(class'ThSpriteBallExplosion');
s.DrawScale = 2.0;
foreach RadiusActors(class'ThieveryTorchTrigger', tt, 200) {
tt.Relight(Owner);
}
// Fling stuff about
if (bThrowStuffAbout)
{
foreach RadiusActors(class'Actor', A, 300)
{
if (A.bCollideWorld && (A.Role != ROLE_DumbProxy) && !A.IsA('Pawn') && !(ThieveryObject(A).ObjectivePoints > 0))
{
vel = (300 - VSize(Location-A.Location)) * 2;
if (vel > 2)
{
A.Velocity += vel * Normal(A.Location-Location);
if (A.Physics != PHYS_Projectile && A.Physics != PHYS_Falling)
A.SetPhysics(PHYS_Falling);
}
}
}
}
HurtRadius( Damage, 200.0, '', MomentumTransfer, Location );
}
simulated function ProcessTouch( Actor Other, Vector HitLocation ) {
local int hitdamage;
if ( Other != self && Other != MOwner && !HasLanded && Other!=Owner) {
if ( Role == ROLE_Authority ) {
DoExplosion();
}
if (MyFlame!=none)
MyFlame.destroy();
Destroy();
}
}
//================================================== ===========================
// SpawnNotifyFireProjs.
//================================================== ===========================
class SpawnNotifyFireProjs expands SpawnNotify;
var bool bReplaceFireBolts, bReplaceExpArrows, bThrowStuffAbout;
event Actor SpawnNotification( Actor A )
{
local vector Aloc;
local rotator Arot;
local Actor Aown, B;
if (A.IsA('ThProjectileFireBolt') && !A.IsA('ThProjectileMMsFB') && bReplaceFireBolts)
{
Aloc = A.Location;
Arot = A.Rotation;
Aown = A.Owner;
B = Spawn(class'ThProjectileMMsFB', Aown,, Aloc, Arot);
B.Instigator = A.Instigator;
ThProjectileMMsFB(B).bThrowStuffAbout = bThrowStuffAbout;
ThProjectileFireBolt(A).CheckForDestroy 0;);
Return B;
}
else if (A.IsA('ThProjectileExplosiveArrow') ; && !A.IsA('ThProjectileMMsExpArr') && bReplaceExpArrows)
{
Aloc = A.Location;
Arot = A.Rotation;
Aown = A.Owner;
B = Spawn(class'ThProjectileMMsExpArr', Aown,, Aloc, Arot);
B.Instigator = A.Instigator;
ThProjectileMMsExpArr(B).bThrowStuffAbout = bThrowStuffAbout;
ThProjectileExplosiveArrow(A).CheckForDest roy();
Return B;
} else
return A;
}
//================================================== ===========================
// MMMsFBs.
//================================================== ===========================
class MMMsFBs expands Mutator config(ThMutators);
var bool Initialized;
var() config bool bReplaceFireBolts, bReplaceExpArrows, bThrowStuffAbout;
function PostBeginPlay()
{
local TorchFlame t;
local int i;
local SpawnNotifyFireProjs sn;
if (Initialized)
Return;
Initialized = true;
// SpawnNotify:
sn = Spawn(class'SpawnNotifyFireProjs');
sn.bReplaceFireBolts = bReplaceFireBolts;
sn.bReplaceExpArrows = bReplaceExpArrows;
sn.bThrowStuffAbout = bThrowStuffAbout;
// log("[MMMsFBs] SpawnNotifyFireProjs spawned.");
}[/code:1:e5b4eb90d9]
What the heck is this happening here?
Comment