I love the smell of UnrealEd crashing in the morning. – tarquin

Legacy:DocAwk/Projects

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

Resources / Scripts[edit]

  • AdvancedMover (UT2004) -> AdvancedMover (UT2004)
    Version: 0.96
    Basic Description: A mover with enhanced functionality. (obvious, right?)

    Current Features:
    1. Can have 256 keyframes with individual move-times.
    2. Move time can be specified for each keyframe.
    3. Can specify whether to use individual MoveTimes or a single "global" MoveTime
    4. Can jump back to Key0 once it reaches the last keyframe and has delayed for its StayOpenTime. (not just in ConstLoop mode)
    5. Can be set to accumulate damage to reach the DamageThreshold
    6. Can specify whether the mover begins locked or not
    7. Can specify whether or not the mover needs to be unlocked only once (the key is no longer required)
    8. Can specify the Key (soon, multiple keys)
    9. Can specify the locked and unlocked sounds and their respective volume, pitch, and radius
    10. Can choose whether or not a key is needed to "open" and/or "close" a mover when set to TriggerToggle
    11. Can be a delay between unlocking and triggering.
    12. Can be set to shake the screen at all "states" (except for "moving")
    13. Can shake the screen at each keyframe.
    14. Events can be called at each keyframe.
    15. Can play sounds at each keyframe, including the ability to change the AmbientSound.
    16. In-Editor help. This is a bit hacky, but there are menus that begin with the word "Help_" that contain info about properties that are new to the AdvancedMover class.
Design journal is available on the website

Dev Discussion[edit]

AMACTION_DisableTrigger (partial)[edit]

class AMACTION_DisableTrigger extends ScriptedAMoverAction;
 
 
var(Actions) bool            bByTag;    // if true, triggers will be disabled based on the value of their Tag, else Triggers will have to be named individually
var(Actions) array<name>     Tags;
var(Actions) array<triggers> Triggers;
// var(Actions) bool            bLog;
 
function bool InitActionFor(ScriptedAMoverController C)
{
   // function DisableTrigger(bool bByTag, array<triggers> Triggers, array<name> Tags)
   C.DisableTrigger(bByTag, Triggers, Tags);
   return false;
}
 
// ...

ScriptedAMoverController[edit]

class ScriptedAMoverController extends controller;
 
// ...
 
function DisableTrigger(bool bByTag, array<triggers> Triggers, array<name> Tags)
{
   local int i;
   local triggers CheckedTrigger;
 
   if(bByTag)
   {
      if(bLog)
         log("Disabling triggers by tag...");
      if(Tags.Length > 0)
      {
         for(i=0; i < Tags.Length; i++)
         {
            CheckedTrigger = none;  //reset the CheckedTrigger var
 
            if(bLog)
               log("Checking for Triggers with tag" @ Tags[i]);
 
            foreach AllActors(class'Triggers', CheckedTrigger, Tags[i])
            {
               CheckedTrigger.Disable('Trigger');
               CheckedTrigger.Disable('Touch');
               if(bLog)
                  log("Disabling" @ CheckedTrigger);
            }
            if(bLog)
            {
               if( (i == Tags.Length-1) && (CheckedTrigger == none) )  //if this is the last iteration and we haven't found a matching trigger+tag
                  warn("No triggers with that tag found!!");
            }
         }
      }
      else
      {
         if(bLog)
            warn("No tags defined!!");
      }
   }
   else
   {
      if(bLog)
         log("Disabling triggers by name...");
      if(Triggers.Length > 0)
      {
         for(i=0; i < Triggers.Length; i++)
         {
            if(bLog)
               log("Checking for" @ Triggers[i]);
            if( ValidTrigger(Triggers[i]) )
            {
               Triggers[i].Disable('Trigger');
               Triggers[i].Disable('Touch');
               if(bLog)
                  log("Trigger" @ Triggers[i] @ "disabled");
            }
            else
            {
               if(bLog)
                  warn(Triggers[i] @ "not found!!");
            }
         }
      }
      else
      {
         if(bLog)
            warn("No triggers named!!");
      }
   }
}
 
// ...
 
function bool ValidTrigger(triggers T)
{
   local triggers CheckedTrigger;
 
   if(bLog)
      log("Will check for trigger" @ T);
   foreach AllActors( class'Triggers', CheckedTrigger )
   {
      if(bLog)
         log("CheckedTrigger =" @ CheckedTrigger);
      if(T == CheckedTrigger)
      {
         if(bLog)
            log(T @ "FOUND!!");
         return true;  // break out of the function and return True idicating that the actor exists
      }
   }
   if(bLog)
      log("Trigger" @ T @ "not found!!");
   return false;       // the actor does not exist
}
 
// ...


  • AdvancedMover (UT2003) -> AdvancedMover (UT2003)

    Basic Description: A mover with enhanced functionality. (obvious, right?)

    Currently on hold while I develop the UT2004 version.

    Design journal is available on the website
  • LockedTrigger (UT2003) -> LockedTrigger (UT2003)

    Basic Description: A Trigger that can require a key to trigger an event.

    Design journal is available on the website
  • CharacterClassSystem1 (UT2003) -> CharacterClassSystem1 (UT2003)

    Still in the works.

    Basic Description: An inventory-driven Character Class mutator based extensively on code/tut written by EvilDrWong.

    Design journal is available on the website


Maps[edit]

  • DM-KatahfuTemple (UT2003) -> DM-KatahfuTemple (UT2003)

    Basic Description: Multi-leveled, Egyptian-Themed DeathMatch map.

    Preview Description: Tournament producers have unveiled their latest arena. This time UT takes you deep into the deserts of Egypt to the ancient Temple of Katahfu. Revived from its millenia of dormancy, this playground of blood will be a grim delight for fans and competitors alike.

    A new version of this map is now being created for UT2004.

    Design journal is available on the website
  • CTF-BattleCruiser (UT2003) -> CTF-BattleCruiser (UT2003)

    This is barely under weigh. And, in fact, will mostly be a UT2004 map instead.



Back to my Personal Page -> Dr.AwkwArD