CustomRoundRobin
Custom Round Robin
For Use In UT2004/03 Code and Maps.
Description
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
/* 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 THE UNREAL WIKI! = wiki.beyondunreal.com */ class MythCustomRoundRobin extends Actor placeable; 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; }
Comments
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. http://wiki.beyondunreal.com/wiki/CustomRoundRobin */ 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 }
MythOpus: Well, I learn something everyday Yes that would be more useful. I did not know that you could increment like how you did though. Targets[TriggerIndex++] Perhaps we should make another page called "Better Than Custom Round Robin Written By Dalin" ?
Wormbo: Did you know you could build these from ScriptedTriggers as well?
MythOpus: I realize that you can now But I hate scripted triggers as they take so long for me to set up. I'm lazy.