| Home Page | Recent Changes

CustomRoundRobin

Custom Round Robin

For Use In UT2004/03 Code and Maps.

UT2004 :: Actor >> MythCustomRoundRobin

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 :D Yes that would be more useful. I did not know that you could increment like how you did though. Targets[TriggerIndex++] :D 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 :D But I hate scripted triggers as they take so long for me to set up. I'm lazy.


Category Custom Class

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In