Bot, player, I cannot figure why they have to be mentioned twice in some moments.
In my regens + bonuses I was using a sort of "Pawn.PlayerReplicationInfo" and it works properly with Bot too to not mention properly checking if their team match what I need because I'm not interested to add in stage Monsters with replications to mess up into trash.
If I would write again a controller special for 1 team (as MH) I guess I'll setup things different...
This RPG has now a lot of snippets and errors shown are very... nasty. It's still very... basic - you should waste time in modifications first. Looking at things and logging will make you to understand the route from GameInfo forward. What engine does, how is initialized (this chapter I did not love either) example Botpack has a bad TimeDilation setup - read well, reconsider that if game has a bad start will go wrong by default and this is what I think and why I sustain this ex-theory because I have practiced it already, simply all Skaarj fixations logs went vanished - THINGS suddenly started to work properly. Sadly - happened after a few years of blabbering codes - doing fixes over a bad started root rather that attacking root. SO... reconsider first that you need a bit of experience for coding a game-type, else it will be another one never used by nobody. I'm encouraging you to understand how is called AlwaysKeep CheckReplacement and the rest of Relevance things.
For this case I would add logs in those classes called and see what they do. Did they get called or not ? Why AlwaysKeep is not called since it should be ? You have rammed "IsRelevant()" ? Check again what you did.
Aside:
Code: Select all
function PreBeginPlay()
{
if ( Initialized ) //sanity check to stop multiple loads of the same mutator
return;
if ( NextMutator != None )
NextMutator.PreBeginPlay();
}
Is this useful at something ? Who loads/spawn the same actor ? Unless something evil calls this function with no purpose and then is good a wrapper somehow but I think this is a result of other mods messing calls to our classes making them to run a twice Prebegin PostBegin. If you don't have something harmful at double initialization then you can quit using PrebeginPlay(). Else with doing nothing there, its existence is pretty pointless.
Last time I got rid of things messing with these double starts. How to check ?( - you don't need to believe me). DO a mini-mutator with these functions and add a single log line. See if gets called many times, if yes look what anything else runs in there.
Engine.Mutator
Code: Select all
event PreBeginPlay()
{
//Don't call Actor PreBeginPlay()
}
As a note.
And now if you load a mutator B for sure the log from PrebeginPlay will pop up. Then if you call that again, probably the log will show again - BAD. The only chained calls which should be used are functions from mutator self-Explanatory those having NextMutator added by default. In mutator class function PostBeginPlay doesn't even exist but it was created later in BotPack and messing a twice call to mother PostBeginPlay which engine calls anyway automatically.
Try to understand bad things done and improve them.
And related to another replication.
First I'll wander if I do really need that. An owned actor cannot track things ? I'm talking about an actor with a TAG which can be fast checked as Higor was describing in some iterator topic.
If certain thing seems to not work/not spawn for sure has relevance check not approved. Make a PreBeginPlay() empty to get rid of relevance test else that actor gets discarded. Btw I would write that prebeginplay empty preventing something to be executed as long as function is null.
Don't get as rules what I'm saying, these are my conclusions after toying with a few default modified game-types and the rest of stuff.