Difference between revisions of "Script Events User-Friendly List"

From The DarkMod Wiki
Jump to navigationJump to search
m (categorise)
(the old content was horrible outdated, replaced it with a link to the current list)
Line 1: Line 1:
Below is a list of common and useful Script Events for editing, in a little user-friendlier format than the Doom3 list here [http://www.modwiki.net/wiki/Script_events_%28Doom_3%29]. However it doesn't list all events and all details, so refer to the Doom3 list for more details. (This list is only for the most common & useful events for map editing IMO, with the syntax & a little description of its editing value all in one place.)
#REDIRECT [[TDM_Script_Reference]]
Note: Arrow-brackets like <this> means to put the name or number you want in this slot; things in parentheses mean the event wants arguments to run; X is an arbitrary variable with the datatype in front of it.
Some useful system commands are:
"'''sys.FadeIn(<color>, <time>)'''" and "'''sys.FadeOut(<color>, <time>)'''" (fade screen in/out to/from RGB color. '0 0 0' is black),
"'''string X = sys.getCvar(<cvar>);'''" (gives the script a cvar value),
"'''entity X = sys.getEntity("<entity-id>");'''" (returns the name of the entity & now
you can act on X as if it's the entity itself, which it is.)
"'''float X = sys.getTime();'''" (returns the game-time at that moment. Useful for timing events.)
"'''sys.setCamera($<camera>);'''" (switch view to custom camera, for cinematic or periscope, etc),
"'''sys.setCvar(<cvar>,<value>);'''" (to set a Cvar by hand),
"'''sys.trigger($<item>);'''" (triggers an item)
"'''sys.wait(<time>);'''" (pauses the script before continuing, useful for timing events)
"'''sys.print ("Message " + variable + "\n");'''" or '''sys.println("msg");''' (Prints console msg, for debugging.)
"'''entity X = sys.spawn("atdm:<item>");'''" (spawn a thing called X, place it with '''X.setOrigin(<vector>);''')
"'''thread <scriptobject>();'''" (calls a new script thread to start up)
"'''sys.threadname( "killme" );'''" and "'''sys.killthread( "killme" );'''"
(kills the thread if it's not otherwise ending; don't let them run forever if possible. Scripts sap processing).
Useful entity commands are:
"'''$<item>.activate($player1);'''", (activate an item)
"'''frob_item($<item>);'''", (frob an item)
"'''<datatype> X = $<item>.Get<datatype>Key("<property>");'''" (returns the value of a spawnarg,
Watch that the data-types match: vector, float, int, entity.),
"'''string X = $<item>.getKey("<property>");'''. (The generic getKey that returns the value as a string),
"'''string X = $<item>.getName();'''",
"'''vector X = $<item>.getOrigin();'''",
"'''entity X = $<item>.getTarget(n);'''" (n=the target number),
"'''vector X = $<item>.getAngles();'''" (returns the angle a thing is facing)
"'''vector X = $<item>.getAngularVelocity();'''" (returns its spin)
"'''vector X = $<item>.getLinearVelocity();'''" (returns its velocity)
"'''$<item>.remove();'''", (removes entity from game)
"'''$<item>.setKey("<property>",<value>);'''" (sets the value of a spawnarg property.
Note that many spawnargs only activate at spawntime, not when they're changed.)
"'''$<item>.setModel("models/Model.lwo");'''" (gives the entity a new model)
"'''$<item>.setSkin("skins/SkinName");'''" (gives it a new skin)
"'''$<item>.setAngles('<vector>');'''" (positions the thing at the angle you want)
"'''$<item>.setAngularVelocity('<vector>');'''" (gives the thing a spin)
"'''$<item>.setLinearVelocity('<vector>');'''" (gives the thing a shove)
"'''$<item>.setOrigin('<vector>');'''" (places or teleports entity to 'X Y Z').
"'''$<item>.setName("yoMamma");'''" (renames the entity).
"'''$<item>.setFrobable(n);'''" (n=0 makes it unfrobable, n=1 makes it frobable. isFrobable returns true/false.)
"'''$<item>.becomeNonSolid();'''" (make an object non-solid)
Commands on specific objects (doors, lights, forcefield, inventory)
'''$<Door1>.Lock();''' and '''$<Door1>.Unlock();'''. 
'''$<item>.Open();''' and '''$<item>.Close();''' (Used for doors & buttons)
'''float X = $<door>.isLocked();''' and '''float X = $<door>.isOpen();''' (returns true if so)
'''$<light>.Off();''' and '''$<light>.On();''' (turn a light on or off)
'''$<light>.FadeInLight(<time>);''' and '''$<light>.FadeOutLight(<time>);''' (fade the light in/out)
'''$<forcefield>.Toggle();''' (toggles a forcefield on and off.)
'''$player1.addInvItem(inv_item);''' and '''$player1.replaceInvItem(oldItem, newItem);''' (For inventory.)
(note: If <newItem> is the $null_entity, <oldItem> is just removed from inventory.)
For example, to remove a key from inventory: '''$player1.replaceInvItem ($key1, $null_entity);'''
Functions for moving objects around (this section should be expanded)
'''$<item>.move (<direction>, <units>);''' (moves the thing, like an elevator.
see: [http://www.modwiki.net/wiki/Move_%28script_event%29] for details.
Set sounds, speed or time, accel, and decel in advance, see below.
Also see moveSound, moveTo, moveToPos, stopMoving, isMoving)
'''$<item>.rotate ('<vector rotate-axis>');''' (makes the thing continuously spin on axis,
Also see: rotateDownTo, rotateOnce, rotateTo, rotateUpTo, stopRotating, isRotating for variations)
'''$<item>.speed (<float speed>);''' (sets the speed the thing moves, also see:
accelSound, accelTime, accelTo, decelSound, decelTime, decelTo, time for more control)
Common and useful AI commands are (I don't know if TDM AI respect all these. Expert opinion please?):
"'''float X = $<AIname/player1>.getHealth();'''" (returns AI/player health)
"'''$<AI/player1>.setHealth(<health>);'''" (set AI/player health)
"'''$<AI>.disableClip();'''" (disable clip so he can go through stuff like a ghost(?). enableClip puts it back)
(There's also enableGravity/disableGravity and enableAFPush/disableAFPush where AF is articulated figure.)
"'''$<AI>.kill();'''" (kill the bastard)
"'''$<AI>.lookAt(<entity>);'''" (make the AI look at a thing)
"'''$<AI>.turnTo('<vector>');'''" (turn the AI to a direction)
"'''$<AI>.turnToEntity(<entity>);'''" (turn AI to a thing, there's also "FaceEnemy" and "FaceEntity")
"'''$<AI>.moveTo<X>(<entity or vector>);'''" (where X is "enemy", "entity", or "position")
"'''$<AI>.setEnemy(<entity>);'''" (Sets the enemy. There's also getEnemy.)
"'''$<AI>.stopThinking();'''" (stops the AI's thinking and puts him in wait mode; not sure how to start it again).
I haven't put in script commands for animations. If you want to see those, refer to the Doom3 list.

Latest revision as of 18:31, 13 August 2014