Gah - a solution with more questions. – EntropicLqd


From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

Custom Round Robin[edit]

For Use In UT2004/03 Code and Maps.

UT2004 :: Actor >> MythCustomRoundRobin


Just a simple script to help mappers and coders out. A One time use 'RoundRobin' that goes down the list in it's Dynamic array and triggers off all the events during the specified timeinterval.

The Script[edit]

/* A Simple Custom Round Robin Created By Dalin 'MythOpus' Seivewright.
   This RoundRobin has a one time use only however but it can be set up
   to do a mass chain of triggering.  Use As Needed :D
   If you want, you could always state who wrote it... but if you'd rather not
   At least state that you got it from 
class MythCustomRoundRobin extends Actor
var() array<name> Targets; //The things you wish to trigger (it's a dynamic array)
var() float TriggerSeconds; //The number of seconds between each triggering
var bool bTriggered; //Internally Set Bool (Ignore It)
function PostBeginPlay()
  SetTimer(TriggerSeconds, TRUE);
simulated function Timer()
        //If this RoundRobin has been triggered and the dynamic array's lenght is not 0
        if((bTriggered) && (Targets.Length != 0) )
          TriggerEvent(Targets[0], self, None); //Always trigger the first item in the array
          Targets.Remove(0,1); //remove the item that has just been triggered
        else if(Targets.Length == 0)
          SetTimer(0.0, FALSE); //If there is nothing left in the dynamic array.. just disable the timer.
simulated function Trigger( Actor Other, Pawn EventInstigator )
     //When this actor is triggered, it will set bTriggered as true so the timer can
     //Trigger all it's targets and remove them from the array.
       bTriggered = TRUE;


El Muerte: isn't something like the following more useful (you can use it more than once and stuff like it). It combines both the roundrobin trigger and your relationaltrigger

	RoundRobinTrigger, based on MythCustomRoundRobin by Dalin 'MythOpus' Seivewright.
class RoundRobinTrigger extends Info placeable;
/** The things you wish to trigger (it's a dynamic array) */
var() array<name> Targets;
/** The number of seconds between each triggering */
var() float TriggerSeconds;
/** all targets will be triggered after eachother, with TriggerSeconds being the interval. Otherwise the targets will be subsequently triggered when triggered */
var() bool TimedTrigger;
/** current index in the targets to trigger */
var int TriggerIndex;
function Reset()
	if (TimedTrigger) SetTimer(0.0, false);
	TriggerIndex = 0;
event Timer()
	if (TriggerIndex < Targets.length) TriggerNext();
	else Reset();
function TriggerNext()
	TriggerEvent(Targets[TriggerIndex++], self, None);
function Trigger( Actor Other, Pawn EventInstigator )
	if (TimedTrigger) SetTimer(TriggerSeconds, true);
	else Timer(); // call timer just once

Wormbo: Did you know you could build these from ScriptedTriggers as well?

MythOpus: I realize that you can now :D But I hate scripted triggers as they take so long for me to set up. I'm lazy.