UE2:Round Robin: Difference between revisions

From Unreal Wiki, The Unreal Engine Documentation Site
DalinSeivewright (talk | contribs)
No edit summary
DalinSeivewright (talk | contribs)
No edit summary
Line 3: Line 3:


==One-shot Script==
==One-shot Script==
{{Infobox class
| class  = myCustomRoundRobin
| package =
| within  =
| game    = UT2004
| engine  = UE2
| parent1 = Actor
}}
<uscript>
<uscript>
/* A Simple Custom Round Robin Created By Dalin 'MythOpus' Seivewright.
/* A Simple Custom Round Robin Created By Dalin 'MythOpus' Seivewright.
Line 49: Line 58:


==Repeat-Use Script==
==Repeat-Use Script==
{{Infobox class
| class  = RoundRobinTrigger
| package =
| within  =
| game    = UT2004
| engine  = UE2
| parent1 = Info
}}
<uscript>
<uscript>
/*  
/*  

Revision as of 00:10, 7 April 2008

Created due to the fact that the RoundRobin actor present in UE1 has been removed. There are two scripts on this page, in created by User: DalinSeivewright and the other by El Muerte. A round robin will cycle through a series of names and trigger the associated event.

One-shot Script

UT2004 Actor >> myCustomRoundRobin

<uscript> /* A Simple Custom Round Robin Created By Dalin 'MythOpus' Seivewright.

  This RoundRobin has a one time use only but it can be set up
  to do a mass chain of triggering.
  Customize as needed.
  Found At: http://wiki.beyondunreal.com
  • /

class myCustomRoundRobin 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;

} </uscript>

Repeat-Use Script

UT2004 Info >> RoundRobinTrigger

<uscript> /* RoundRobinTrigger, based on myCustomRoundRobin by Dalin 'MythOpus' Seivewright. Written by El Muerte http://wiki.beyondunreal.com/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 } </uscript>

Notes

While these scripts can be useful for a contained and simple actor, the same effect can also be created using a scripted trigger.

Related Topics