Since I wasted my whole sunday in trying to create a trigger which calls 100 events at the same time on the map startup. I gave up and ask you for help.
I need such a trigger for fixing emitter triggering in multiplayer.

100 events having different names? Why do you need so many?a trigger which calls 100 events at the same time on the map startup.
Could you elaborate on what exactly you want to achieve?I need such a trigger for fixing emitter triggering in multiplayer.

I didn't ever use emitters, but, as far as I can see, there are special emitter classes for network game: NetworkEmitter, NetworkBeamEmitter, NetworkMeshEmitter, etc. They transfer information about server-side calls to Trigger to network clients. What emitter classes do you use in your project?There is a little annoying bug with the emitters.
There is no common way to trigger emitters in multiplayer.
I couldn't find anything special in StochasticTrigger that might affect network game.I figured something strange out. If you trigger emitters with a stochastic trigger with the state "Always Active" the emitter triggering works also in multiplayer
If you want a reliably working solution, we should figure out what issues with network replication you have in the first place.I also only need to call some triggered emitters at once on the startup of the map to get them work in multiplayer.
Even if some classes in Emitter.u don't offer a proper synchronization between client and server, you can write your own subclasses that would perform such synchronization.But maybe the better way is someone fixes the triggering behavior of the emitters in multiplayer



227i has it as well. Now I tell what's going on.Okay I figured out that it is a 227j bug!
Code: Select all
simulated function PostNetBeginPlay()
{
if( TriggerAction==ETR_ToggleDisabled && (RepCounter & 1)!=0 )
EmTrigger();
ClientRepCounter = RepCounter;
bNetNotify = True;
}
simulated function PostNetReceive()
{
if ( ClientRepCounter!=RepCounter )
{
ClientRepCounter = RepCounter;
if ( RepCounter==0 )
Reset();
else EmTrigger();
}
}
....
function Trigger( Actor Other, Pawn EventInstigator )
{
if ( Level.NetMode!=NM_DedicatedServer )
EmTrigger();
if ( ++RepCounter==255 )
RepCounter = 1;
}Code: Select all
simulated event PostBeginPlay()
{
super.PostBeginPlay();
bNetNotify = true;
}
Code: Select all
// the base class function is broken and useless
event PostNetBeginPlay() {}
simulated event PostNetReceive()
{
if (ClientRepCounter != RepCounter)
{
if (RepCounter == 0)
Reset();
else if (TriggerAction != ETR_ToggleDisabled || ((RepCounter - ClientRepCounter) & 1) != 0)
EmTrigger();
ClientRepCounter = RepCounter;
}
}"lincoln is pleased" -unreal 2humbug

Then you can say goodbye to custom workarounds like this:This fix should be included with the next 227j release!!
Code: Select all
var bool bEmit;
simulated event PostNetBeginPlay()
{
// intentionally empty
}
simulated event Tick(float DeltaTime)
{
if (Level.NetMode == NM_Client && RepCounter != int(bEmit))
{
EmTrigger();
bEmit = bool(RepCounter);
}
}
function Trigger( Actor Other, Pawn EventInstigator )
{
if (Level.NetMode != NM_DedicatedServer)
EmTrigger();
RepCounter = 1 - RepCounter;
}