https://wiki.beyondunreal.com/w/api.php?action=feedcontributions&user=Eliot&feedformat=atom Unreal Wiki - User contributions [en] 2017-11-17T23:56:04Z User contributions MediaWiki 1.25.1 https://wiki.beyondunreal.com/UE3:PlayerController_(UDK)?diff=45988 UE3:PlayerController (UDK) 2014-05-14T12:42:02Z <p>Eliot: Reverted edits by Tongauaee (Talk) to last revision by Wormbo</p> <hr /> <div>{{infobox class<br /> | package = Engine<br /> | parent1 = Controller<br /> | parent2 = Actor<br /> | parent3 = Object<br /> | interface1 = Interface_NavigationHandle<br /> }}<br /> {{autogenerated}}<br /> PlayerController<br /> <br /> PlayerControllers are used by human players to control pawns.<br /> <br /> This is a built-in Unreal class and it shouldn't be modified.<br /> for the change in Possess().<br /> <br /> ==Constants==<br /> ====MAXPOSITIONERRORSQUARED====<br /> '''Value:''' 3.0<br /> <br /> MAXPOSITIONERRORSQUARED is the square of the max position error that is accepted (not corrected) in net play<br /> <br /> ====MAXNEARZEROVELOCITYSQUARED====<br /> '''Value:''' 9.0<br /> <br /> MAXNEARZEROVELOCITYSQUARED is the square of the max velocity that is considered zero (not corrected) in net play<br /> <br /> ====MAXVEHICLEPOSITIONERRORSQUARED====<br /> '''Value:''' 900.0<br /> <br /> MAXVEHICLEPOSITIONERRORSQUARED is the square of the max position error that is accepted (not corrected) in net play when driving a vehicle<br /> <br /> ====CLIENTADJUSTUPDATECOST====<br /> '''Value:''' 180.0<br /> <br /> CLIENTADJUSTUPDATECOST is the bandwidth cost in bytes of sending a client adjustment update. 180 is greater than the actual cost, but represents a tweaked value reserving enough bandwidth for<br /> other updates sent to the client. Increase this value to reduce client adjustment update frequency, or if the amount of data sent in the clientadjustment() call increases<br /> <br /> ====MAXCLIENTUPDATEINTERVAL====<br /> '''Value:''' 0.25<br /> <br /> MAXCLIENTUPDATEINTERVAL is the maximum time between movement updates from the client before the server forces an update.<br /> <br /> ==Properties==<br /> ===Property group 'Camera'===<br /> ====PlayerCamera====<br /> '''Type:''' {{cl|Camera}}<br /> <br /> '''[[Variables#Modifiers|Modifiers]]:''' editinline<br /> <br /> Camera associated with this Player Controller<br /> <br /> ===Property group 'PlayerController'===<br /> ====PlayerInput====<br /> '''Type:''' {{cl|PlayerInput}}<br /> <br /> '''[[Variables#Modifiers|Modifiers]]:''' transient, editinline<br /> <br /> Object within playercontroller that manages player input.<br /> <br /> ===Internal variables===<br /> See {{cl|PlayerController internal variables}}.<br /> <br /> ===Default values===<br /> {| class=&quot;list defaults&quot;<br /> ! Property<br /> ! Value<br /> |-<br /> | {{tl|bCanDoSpecial||Controller properties}}<br /> | True<br /> |-<br /> | {{tl|bIsPlayer||Controller properties}}<br /> | True<br /> |-<br /> | {{tl|CollisionComponent||Actor}}<br /> | {{cl|CylinderComponent}}'{{tl|CollisionCylinder}}'<br /> |-<br /> | {{tl|Components||Actor internal variables}}[1]<br /> | {{cl|CylinderComponent}}'{{tl|CollisionCylinder}}'<br /> |-<br /> | {{tl|NetPriority||Actor internal variables}}<br /> | 3.0<br /> |}<br /> <br /> ===Subobjects===<br /> ====CollisionCylinder====<br /> '''Class:''' {{cl|CylinderComponent|Engine}}<br /> <br /> {| class=&quot;list defaults&quot;<br /> ! Property<br /> ! Value<br /> |-<br /> | {{tl|ReplacementPrimitive||PrimitiveComponent properties}}<br /> | None<br /> |}<br /> <br /> ====Sprite====<br /> '''Class:''' {{cl|SpriteComponent|Engine}}<br /> <br /> '''Inherits from:''' {{tl|Sprite|Controller|properties}}<br /> <br /> {| class=&quot;list defaults&quot;<br /> ! Property<br /> ! Value<br /> |-<br /> | {{tl|ReplacementPrimitive||PrimitiveComponent properties}}<br /> | None<br /> |}<br /> <br /> ==Enums==<br /> ====EInputMatchAction====<br /> How to match an input action<br /> ; IMA_GreaterThan : &lt;!-- enter enum value description --&gt;<br /> ; IMA_LessThan : &lt;!-- enter enum value description --&gt;<br /> <br /> ====EInputTypes====<br /> Type of inputs the matching code recognizes<br /> ; IT_XAxis : &lt;!-- enter enum value description --&gt;<br /> ; IT_YAxis : &lt;!-- enter enum value description --&gt;<br /> <br /> ====EProgressMessageType====<br /> Different types of progress messages<br /> ; PMT_Clear : Clears existing progress messages<br /> ; PMT_Information : No change in connection status - simply update the text being displayed<br /> ; PMT_AdminMessage : Message from the server admin<br /> ; PMT_DownloadProgress : Updates the amount remaining on a package download<br /> ; PMT_ConnectionFailure : Indicates that the connection to the server was lost<br /> ; PMT_SocketFailure : Indicates that an unrecoverable error was encountered by an open network socket. In cases where the socket in question was<br /> the endpoint for the connection to the server, a PMT_ConnectionFailure event will generally be fired as well, probably during<br /> the next frame.<br /> <br /> ==Structs==<br /> ===ClientAdjustment===<br /> '''[[Structs#Modifiers|Modifiers]]:''' native<br /> <br /> &lt;!-- enter struct description --&gt;<br /> ; [[float]] TimeStamp : &lt;!-- enter variable description --&gt;<br /> ; {{tl|EPhysics|Actor|enums}} newPhysics : &lt;!-- enter variable description --&gt;<br /> ; {{tl|Vector|Object|structs}} NewLoc : &lt;!-- enter variable description --&gt;<br /> ; {{tl|Vector|Object|structs}} NewVel : &lt;!-- enter variable description --&gt;<br /> ; {{cl|Actor}} NewBase : &lt;!-- enter variable description --&gt;<br /> ; {{tl|Vector|Object|structs}} NewFloor : &lt;!-- enter variable description --&gt;<br /> ; [[byte]] bAckGoodMove : &lt;!-- enter variable description --&gt;<br /> <br /> ===DebugTextInfo===<br /> '''[[Structs#Modifiers|Modifiers]]:''' native<br /> <br /> List of actors and debug text to draw,<br /> <br /> '''See:''' AddDebugText(), RemoveDebugText(), and DrawDebugTextList()<br /> ; {{cl|Actor}} SrcActor : Actor to draw DebugText over<br /> ; {{tl|Vector|Object|structs}} SrcActorOffset : Offset from SrcActor.Location to apply<br /> ; {{tl|Vector|Object|structs}} SrcActorDesiredOffset : Desired offset to interpolate to<br /> ; [[string]] DebugText : Text to display<br /> ; [[float]] TimeRemaining : Time remaining for the debug text, -1.f == infinite<br /> ; [[float]] Duration : Duration used to lerp desired offset<br /> ; {{tl|Color|Object|structs}} TextColor : Text color<br /> ; [[bool]] bAbsoluteLocation : whether the offset should be treated as absolute world location of the string<br /> <br /> ===InputEntry===<br /> '''[[Structs#Modifiers|Modifiers]]:''' native<br /> <br /> Individual entry to input matching sequences<br /> ; {{tl|EInputTypes}} Type : Type of input to match<br /> ; [[float]] Value : Min value required to consider as a valid match<br /> ; [[float]] TimeDelta : Max amount of time since last match before sequence resets<br /> ; {{tl|EInputMatchAction}} Action : What type of match is this?<br /> <br /> ===InputMatchRequest===<br /> '''[[Structs#Modifiers|Modifiers]]:''' native<br /> <br /> Contains information to match a series of a inputs and call the given<br /> function upon a match. Processed by PlayerInput, defined in the<br /> PlayerController.<br /> ; [[array]]&lt;{{tl|InputEntry}}&gt; Inputs : Number of inputs to match, in sequence<br /> ; {{cl|Actor}} MatchActor : Actor to call below functions on<br /> ; [[name]] MatchFuncName : Name of function to call upon successful match<br /> ; [[delegate]]&lt;{{tl|InputMatchDelegate}}&gt; MatchDelegate : &lt;!-- enter variable description --&gt;<br /> ; [[name]] FailedFuncName : Name of function to call upon a failed partial match<br /> ; [[name]] RequestName : Name of this input request, mainly for debugging<br /> ; [[int]] MatchIdx : Current index into Inputs that is being matched<br /> ; [[float]] LastMatchTime : Last time an input entry in Inputs was matched<br /> <br /> ==Delegates==<br /> ====CanUnpause====<br /> {{code|delegate [[bool]]&amp;nbsp;'''CanUnpause''' ()}}<br /> <br /> Callback the server uses to determine if the unpause can happen<br /> <br /> ====InputMatchDelegate====<br /> {{code|delegate '''InputMatchDelegate''' ()}}<br /> <br /> &lt;!-- enter delegate description --&gt;<br /> <br /> ==Functions==<br /> ===Static native functions===<br /> ====GetPlayerControllerFromNetId====<br /> {{code|native static function {{cl|PlayerController}}&amp;nbsp;'''GetPlayerControllerFromNetId''' ({{tl|UniqueNetId|OnlineSubsystem|structs}}&amp;nbsp;'''PlayerNetId''')}}<br /> <br /> Returns the player controller associated with this net id<br /> <br /> '''Parameters:'''<br /> * ''PlayerNetId'' - the id to search for <br /> <br /> '''Returns:'''<br /> :the player controller if found, otherwise none<br /> <br /> ===Other static functions===<br /> ====GetPartyGameTypeName====<br /> {{code|static function [[string]]&amp;nbsp;'''GetPartyGameTypeName''' ()}}<br /> <br /> Returns the party game info name for this game<br /> <br /> ====GetPartyMapName====<br /> {{code|static function [[string]]&amp;nbsp;'''GetPartyMapName''' ()}}<br /> <br /> Returns the party map name for this game<br /> <br /> ===Exec functions===<br /> See {{cl|PlayerController exec functions}}.<br /> <br /> ===Native functions===<br /> See {{cl|PlayerController native functions}}.<br /> <br /> ===Events===<br /> See {{cl|PlayerController events}}.<br /> <br /> ===Other instance functions===<br /> See {{cl|PlayerController instance functions}}.<br /> <br /> ==States==<br /> See {{cl|PlayerController states}}.</div> Eliot https://wiki.beyondunreal.com/Kismet_2?diff=45986 Kismet 2 2014-05-13T18:41:05Z <p>Eliot: UE4 Blueprints was K2 in UDK?</p> <hr /> <div>'''Kismet 2'''{{confirm}} or '''K2''' is a [[wp:visual programming|visual programming]] feature. K2 is not confirmed by '''Epic Games''' and is therefor pure speculation from the community. K2 first popped up in the recent [[UDK]] builds starting with the K2 modifiers such as [[K2Call]] found in various classes. There are as well many new classes with the K2 prefix that are very suspect to be related to a new upcoming visual programming feature for the UDK.<br /> <br /> By looking at the classes it's clear that this is designed for a visual programming feature for UDK, they can be found in UDK-2010-07 and UDK-2010-08 in the Engine folder of Development\Source. Some of these classes are named '''K2Node_Code''', '''K2Node_ForLoop''', '''K2Node_Func''' and '''K2Node_IfElse'''.<br /> <br /> ==Unreal Engine 4==<br /> Indicated by the source code of UE4 it is clear that K2 is the codename of Blueprint.<br /> <br /> [[Category:Programming articles]][[Category:Mapping articles]]</div> Eliot https://wiki.beyondunreal.com/UZ2_file?diff=45965 UZ2 file 2014-03-30T14:05:52Z <p>Eliot: Added a related link.</p> <hr /> <div>The file extension '''.uz2''' identifies a file, usually an [[Unreal package]], that was compressed by an [[Unreal Engine 2]] game. It is the equivalent to Unreal Engine 1's [[UZ file]] and Unreal Engine 3's [[UZ3 file]]. UZ2 files are usually stored on &quot;redirect servers&quot;, i.e. HTTP servers the game client can fetch packages from that a game server requires.<br /> <br /> [[Category:File formats]]<br /> <br /> ==Usage==<br /> The .uz2 format is a general-purpose compression format, i.e. it is not limited to Unreal packages. To compress a file into UZ2, run the command<br /> UCC Compress ''path\to\file.ext''<br /> from a Windows command prompt. This will create a compressed file in the same directory that has the .uz2 extension appended.<br /> <br /> To decompress a UZ2 file, use the command<br /> UCC Decompress ''path\to\file.ext.uz2''<br /> and the decompressed file with be created in the same directory but with the .uz2 extension removed.<br /> <br /> Note that UCC Compress and UCC Decompress will override any existing file without warning!<br /> <br /> There are also 3rd-party tools for compressing or decompressing UZ2 files, like elmuerte's TinyUZ2 or various &quot;cache manager&quot; tools for UT2003 and UT2004.<br /> <br /> ==File format==<br /> The format of UZ2 files is relatively simple. It doesn't have any kind of header and consists of a series of chunks, each of which looks as follows:<br /> {| cellspacing=&quot;4&quot; cellpadding=&quot;3&quot; <br /> !Field<br /> !Type<br /> !Length<br /> !Value range<br /> |-<br /> |Compressed chunk size<br /> |int<br /> |style=&quot;text-align:right&quot;| 4 Bytes<br /> |style=&quot;text-align:right&quot;| 0-33096<br /> |-<br /> |Uncompressed chunk size<br /> |int<br /> |style=&quot;text-align:right&quot;| 4 Bytes<br /> |style=&quot;text-align:right&quot;| 0-32768<br /> |-<br /> |Compressed data<br /> |bytes<br /> |style=&quot;text-align:right&quot;| 0-33096 Bytes<br /> |<br /> |}<br /> In other words, every chunk starts with the length of the compressed data and the length of the data when it is decompressed, followed by the actual compressed data. The last chunk's compressed data must end exactly at the end of the file. The compression format is defined by the Zlib library's &lt;code&gt;compress()&lt;/code&gt; and &lt;code&gt;uncompress()&lt;/code&gt; functions. Each chunk is compressed independently from the others.<br /> <br /> UZ2 files created by the Unreal Engine 2 will consist almost only of chunks that decompress into 32768 Bytes of data, except for the very last chunk, which may be smaller. (The chunks aren't 32768 Bytes themselves, but decompress into 32768 Bytes.)<br /> <br /> ==UZ2 files in .NET==<br /> As mentioned above, the compressed chunk data is usually created by the Zlib library, which is written in C. However, if you are using the .NET framework, you probably don't want to link to unmanaged code. Fortunately the Zlib functionality was ported to managed code as part of the [https://dotnetzip.codeplex.com/ DotNetZip library]. Unfortunately it doesn't really include a lightweight implementation of Zlib's plain &lt;code&gt;compress()&lt;/code&gt; and &lt;code&gt;uncompress()&lt;/code&gt; functions.<br /> <br /> Fortunately, it is quite easy to build the same functionality with DotNetZip's public interface and the following C# code:<br /> &lt;source language=C#&gt;<br /> using Ionic.Zlib;<br /> <br /> public static int Compress(byte[] dest, int destStart, byte[] source, int sourceStart, int sourceLen)<br /> {<br /> var codec = new ZlibCodec(CompressionMode.Compress)<br /> {<br /> InputBuffer = source,<br /> NextIn = sourceStart,<br /> AvailableBytesIn = sourceLen,<br /> OutputBuffer = dest,<br /> NextOut = destStart,<br /> AvailableBytesOut = dest.Length - destStart,<br /> };<br /> <br /> codec.InitializeDeflate(); // if you want, you can even set a compression level here<br /> int err = codec.Deflate(FlushType.Finish);<br /> if (err != ZlibConstants.Z_STREAM_END)<br /> {<br /> codec.EndDeflate();<br /> throw new ZlibException();<br /> }<br /> var numBytes = (int) codec.TotalBytesOut;<br /> codec.EndDeflate();<br /> return numBytes;<br /> }<br /> <br /> public static int Uncompress(byte[] dest, int destStart, byte[] source, int sourceStart, int sourceLen)<br /> {<br /> var codec = new ZlibCodec(CompressionMode.Decompress)<br /> {<br /> InputBuffer = source,<br /> NextIn = sourceStart,<br /> AvailableBytesIn = sourceLen,<br /> OutputBuffer = dest,<br /> NextOut = destStart,<br /> AvailableBytesOut = dest.Length - destStart<br /> };<br /> <br /> codec.InitializeInflate();<br /> int err = codec.Inflate(FlushType.Finish);<br /> if (err != ZlibConstants.Z_STREAM_END)<br /> {<br /> codec.EndInflate();<br /> throw new ZlibException();<br /> }<br /> var numBytes = (int) codec.TotalBytesOut;<br /> codec.EndInflate();<br /> return numBytes;<br /> }<br /> &lt;/source&gt;<br /> <br /> ==Links==<br /> * [http://www.unrealadmin.org/forums/showthread.php?t=30406 UnrealDeps] A powerful tool for server admins, developed by Mc.Gugi. Includes source code for compressing and decompressing uz1, uz2, and uz3 files.</div> Eliot https://wiki.beyondunreal.com/User:Eliot/monobook.css?diff=45964 User:Eliot/monobook.css 2014-03-30T14:00:15Z <p>Eliot: Little tweaks.</p> <hr /> <div>/*<br /> ** MediaWiki 'monobook' style sheet for CSS2-capable browsers.<br /> ** Copyright Gabriel Wicke - http://wikidev.net/<br /> ** License: GPL (http://www.gnu.org/copyleft/gpl.html)<br /> **<br /> ** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John<br /> ** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart &amp; Tom Croucher,<br /> ** Michael Zeltner and Geir Bækholt)<br /> ** All you guys rock :)<br /> */<br /> <br /> #p-navigation, #p-search, #p-tb{<br /> font-size:125%;<br /> margin-bottom:4px;<br /> width:140px;<br /> }<br /> <br /> #p-navigation .pBody, #p-search .pBody, #p-tb .pBody {;<br /> font-size:75%;<br /> background: #fdfdfd;<br /> border-radius:4px;<br /> border:1px solid #ededed;<br /> }<br /> <br /> div.pBody{<br /> padding-top:8px;<br /> }<br /> <br /> #column-content {<br /> width: 100%;<br /> float: right;<br /> margin: 0 0 .6em -12.2em;<br /> padding: 0;<br /> }<br /> <br /> #column-one {<br /> padding-top: 160px;<br /> }<br /> #content {<br /> margin: 2.8em 0 0 12.2em;<br /> padding: 8px 1em 1em 1em;<br /> position: relative;<br /> z-index: 2;<br /> background: #fdfdfd;<br /> border: 1px solid #ededed;<br /> border-right: none;<br /> line-height: 1.5em;<br /> border-radius:4px;<br /> color:#242424;<br /> }<br /> /* the left column width is specified in class .portlet */<br /> <br /> /* Font size:<br /> ** We take advantage of keyword scaling- browsers won't go below 9px<br /> ** More at http://www.w3.org/2003/07/30-font-size<br /> ** http://style.cleverchimp.com/font_size_intervals/altintervals.html<br /> */<br /> <br /> body {<br /> background: #eeeeee;<br /> color: #242424;<br /> margin: 0;<br /> padding: 0;<br /> font-size: 70%;<br /> }<br /> <br /> /* scale back up to a sane default */<br /> #globalWrapper {<br /> width: 100%;<br /> padding: 0;<br /> font-size:110%;<br /> }<br /> .visualClear {<br /> clear: both;<br /> }<br /> <br /> /* general styles */<br /> <br /> table {<br /> /* we don't want the bottom borders of &lt;h2&gt;s to be visible through<br /> floated tables */<br /> background-color: white;<br /> }<br /> fieldset table {<br /> /* but keep table layouts in forms clean... */<br /> background: none;<br /> }<br /> a {<br /> text-decoration: none;<br /> color: #242288;<br /> background: none;<br /> }<br /> a:visited {<br /> color: #585858;<br /> }<br /> a:active {<br /> color: #686868;<br /> }<br /> a:hover {<br /> color:black;<br /> text-decoration: underline;<br /> }<br /> a.stub {<br /> color: #772233;<br /> }<br /> a.new, #p-personal a.new {<br /> color: #ba0000;<br /> }<br /> a.new:visited, #p-personal a.new:visited {<br /> color: #a55858;<br /> }<br /> <br /> #p-navigation a, #p-search a, #p-tb a{<br /> color:#222;<br /> }<br /> <br /> #p-navigation a:visited, #p-search a:visited, #p-tb a:visited{<br /> color:#222;<br /> }<br /> <br /> img {<br /> border: none;<br /> vertical-align: middle;<br /> }<br /> p {<br /> margin: .4em 0 .5em 0;<br /> line-height: 1.5em;<br /> }<br /> p img {<br /> margin: 0;<br /> }<br /> <br /> hr {<br /> height: 1px;<br /> color: #aaa;<br /> background-color: #aaa;<br /> border: 0;<br /> margin: .2em 0 .2em 0;<br /> }<br /> <br /> h1, h2, h3, h4, h5, h6 {<br /> color: #242222;<br /> background: none;<br /> font-weight: bold;<br /> font-size:1.1em;<br /> margin: 0;<br /> padding-top: .5em;<br /> padding-bottom: 8px;<br /> border-bottom: 2px solid #542222;<br /> }<br /> h1 { font-size: 188%; }<br /> h1 .editsection { font-size: 53%; }<br /> h2 { font-size: 150%; }<br /> h2 .editsection { font-size: 67%; }<br /> h3, h4, h5, h6 {<br /> border-bottom: none;<br /> font-weight: bold;<br /> }<br /> h3 { font-size: 132%; }<br /> h3 .editsection { font-size: 76%; font-weight: normal; }<br /> h4 { font-size: 116%; }<br /> h4 .editsection { font-size: 86%; font-weight: normal; }<br /> h5 { font-size: 100%; }<br /> h5 .editsection { font-weight: normal; }<br /> h6 { font-size: 80%; }<br /> h6 .editsection { font-size: 125%; font-weight: normal; }<br /> <br /> ul {<br /> list-style-type: square;<br /> margin: .3em 0 0 1.5em;<br /> padding: 0;<br /> list-style-image: url(bullet.gif);<br /> }<br /> ol {<br /> margin: .3em 0 0 3.2em;<br /> padding: 0;<br /> list-style-image: none;<br /> }<br /> li {<br /> margin-bottom: .1em;<br /> }<br /> dt {<br /> font-weight: bold;<br /> margin-bottom: .1em;<br /> }<br /> dl {<br /> margin-top: .2em;<br /> margin-bottom: .5em;<br /> }<br /> dd {<br /> line-height: 1.5em;<br /> margin-left: 2em;<br /> margin-bottom: .1em;<br /> }<br /> <br /> fieldset {<br /> border: 1px solid #2f6fab;<br /> margin: 1em 0 1em 0;<br /> padding: 0 1em 1em;<br /> line-height: 1.5em;<br /> }<br /> fieldset.nested {<br /> margin: 0 0 0.5em 0;<br /> padding: 0 0.5em 0.5em;<br /> }<br /> legend {<br /> padding: .5em;<br /> font-size: 95%;<br /> }<br /> form {<br /> border: none;<br /> margin: 0;<br /> }<br /> <br /> textarea {<br /> width: 100%;<br /> padding: .1em;<br /> }<br /> <br /> input.historysubmit {<br /> padding: 0 .3em .3em .3em !important;<br /> font-size: 94%;<br /> cursor: pointer;<br /> height: 1.7em !important;<br /> margin-left: 1.6em;<br /> }<br /> select {<br /> vertical-align: top;<br /> }<br /> abbr, acronym, .explain {<br /> border-bottom: 1px dotted black;<br /> color: black;<br /> background: none;<br /> cursor: help;<br /> }<br /> q {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }<br /> /* disabled for now<br /> blockquote {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }*/<br /> code {<br /> background-color: white;<br /> border-radius: 4px;<br /> border:1px dashed #ededed;<br /> font-size: 1.2em;<br /> }<br /> pre {<br /> padding: 1em;<br /> border: 1px dashed #ededed;<br /> color: black;<br /> background-color: white;<br /> line-height: 1.1em;<br /> font-size: 1.2em;<br /> }<br /> <br /> /*<br /> ** the main content area<br /> */<br /> <br /> #siteSub {<br /> display: none;<br /> }<br /> #jump-to-nav {<br /> display: none;<br /> }<br /> <br /> #contentSub, #contentSub2 {<br /> font-size: 84%;<br /> line-height: 1.2em;<br /> margin: 0 0 1.4em 1em;<br /> color: #7d7d7d;<br /> width: auto;<br /> }<br /> span.subpages {<br /> display: block;<br /> }<br /> <br /> /* Some space under the headers in the content area */<br /> #bodyContent h1, #bodyContent h2 {<br /> margin-bottom: .6em;<br /> }<br /> #bodyContent h3, #bodyContent h4, #bodyContent h5 {<br /> margin-bottom: .3em;<br /> }<br /> #firstHeading {<br /> margin-bottom: .1em;<br /> /* These two rules hack around bug 2013 (fix for more limited bug 11325).<br /> When bug 2013 is fixed properly, they should be removed. */<br /> line-height: 1.2em;<br /> padding-bottom: 0;<br /> }<br /> <br /> /* user notification thing */<br /> .usermessage {<br /> background-color: #ffce7b;<br /> border: 1px solid #ffa500;<br /> color: black;<br /> font-weight: bold;<br /> margin: 2em 0 1em;<br /> padding: .5em 1em;<br /> vertical-align: middle;<br /> }<br /> #siteNotice {<br /> text-align: center;<br /> font-size: 95%;<br /> padding: 0 .9em;<br /> }<br /> #siteNotice p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .success {<br /> color: green;<br /> font-size: larger;<br /> }<br /> .error {<br /> color: red;<br /> font-size: larger;<br /> }<br /> .errorbox, .successbox {<br /> font-size: larger;<br /> border: 2px solid;<br /> padding: .5em 1em;<br /> float: left;<br /> margin-bottom: 2em;<br /> color: #000;<br /> }<br /> .errorbox {<br /> border-color: red;<br /> background-color: #fff2f2;<br /> }<br /> .successbox {<br /> border-color: green;<br /> background-color: #dfd;<br /> }<br /> .errorbox h2, .successbox h2 {<br /> font-size: 1em;<br /> font-weight: bold;<br /> display: inline;<br /> margin: 0 .5em 0 0;<br /> border: none;<br /> }<br /> <br /> .catlinks {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> margin-top: 1em;<br /> clear: both;<br /> }<br /> /* currently unused, intended to be used by a metadata box<br /> in the bottom-right corner of the content area */<br /> .documentDescription {<br /> /* The summary text describing the document */<br /> font-weight: bold;<br /> display: block;<br /> margin: 1em 0;<br /> line-height: 1.5em;<br /> }<br /> .documentByLine {<br /> text-align: right;<br /> font-size: 90%;<br /> clear: both;<br /> font-weight: normal;<br /> color: #76797c;<br /> }<br /> <br /> /* emulate center */<br /> .center {<br /> width: 100%;<br /> text-align: center;<br /> }<br /> *.center * {<br /> margin-left: auto;<br /> margin-right: auto;<br /> }<br /> /* small for tables and similar */<br /> .small, .small * {<br /> font-size: 94%;<br /> }<br /> table.small {<br /> font-size: 100%;<br /> }<br /> <br /> /*<br /> ** content styles<br /> */<br /> <br /> #toc,<br /> .toc,<br /> .mw-warning {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> #toc h2,<br /> .toc h2 {<br /> display: inline;<br /> border: none;<br /> padding: 0;<br /> font-size: 100%;<br /> font-weight: bold;<br /> }<br /> #toc #toctitle,<br /> .toc #toctitle,<br /> #toc .toctitle,<br /> .toc .toctitle {<br /> text-align: center;<br /> }<br /> #toc ul,<br /> .toc ul {<br /> list-style-type: none;<br /> list-style-image: none;<br /> margin-left: 0;<br /> padding-left: 0;<br /> text-align: left;<br /> }<br /> #toc ul ul,<br /> .toc ul ul {<br /> margin: 0 0 0 2em;<br /> }<br /> #toc .toctoggle,<br /> .toc .toctoggle {<br /> font-size: 94%;<br /> }<br /> <br /> .mw-warning {<br /> margin-left: 50px;<br /> margin-right: 50px;<br /> text-align: center;<br /> }<br /> <br /> /* images */<br /> div.floatright, table.floatright {<br /> clear: right;<br /> float: right;<br /> position: relative;<br /> margin: 0 0 .5em .5em;<br /> border: 0;<br /> /*<br /> border: .5em solid white;<br /> border-width: .5em 0 .8em 1.4em;<br /> */<br /> }<br /> div.floatright p { font-style: italic; }<br /> div.floatleft, table.floatleft {<br /> float: left;<br /> clear: left;<br /> position: relative;<br /> margin: 0 .5em .5em 0;<br /> border: 0;<br /> /*<br /> margin: .3em .5em .5em 0;<br /> border: .5em solid white;<br /> border-width: .5em 1.4em .8em 0;<br /> */<br /> }<br /> div.floatleft p { font-style: italic; }<br /> /* thumbnails */<br /> div.thumb {<br /> margin-bottom: .5em;<br /> border-style: solid;<br /> border-color: white;<br /> width: auto;<br /> }<br /> div.thumbinner {<br /> border: 1px solid #ccc;<br /> padding: 3px !important;<br /> background-color: #f9f9f9;<br /> font-size: 94%;<br /> text-align: center;<br /> overflow: hidden;<br /> }<br /> html .thumbimage {<br /> border: 1px solid #ccc;<br /> }<br /> html .thumbcaption {<br /> border: none;<br /> text-align: left;<br /> line-height: 1.4em;<br /> padding: 3px !important;<br /> font-size: 94%;<br /> }<br /> div.magnify {<br /> float: right;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.magnify a, div.magnify img {<br /> display: block;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.tright {<br /> clear: right;<br /> float: right;<br /> border-width: .5em 0 .8em 1.4em;<br /> }<br /> div.tleft {<br /> float: left;<br /> clear: left;<br /> margin-right: .5em;<br /> border-width: .5em 1.4em .8em 0;<br /> }<br /> img.thumbborder {<br /> border: 1px solid #dddddd;<br /> }<br /> .hiddenStructure {<br /> display: none;<br /> }<br /> <br /> /*<br /> ** classes for special content elements like town boxes<br /> ** intended to be referenced directly from the wiki src<br /> */<br /> <br /> /*<br /> ** User styles<br /> */<br /> /* table standards */<br /> table.rimage {<br /> float: right;<br /> position: relative;<br /> margin-left: 1em;<br /> margin-bottom: 1em;<br /> text-align: center;<br /> }<br /> .toccolours {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> <br /> /*<br /> ** edit views etc<br /> */<br /> .special li {<br /> line-height: 1.4em;<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> /*<br /> ** keep the whitespace in front of the ^=, hides rule from konqueror<br /> ** this is css3, the validator doesn't like it when validating as css2<br /> */<br /> #bodyContent a.external,<br /> #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background: url(external.png) center right no-repeat;<br /> }<br /> .rtl #bodyContent a.external,<br /> .rtl #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background-image: url(external-rtl.png);<br /> }<br /> #bodyContent a[href ^=&quot;https://&quot;],<br /> .link-https {<br /> background: url(lock_icon.gif) center right no-repeat;<br /> padding: 0 16px;<br /> }<br /> #bodyContent a[href ^=&quot;mailto:&quot;],<br /> .link-mailto {<br /> background: url(mail_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;news://&quot;] {<br /> background: url(news_icon.png) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;ftp://&quot;],<br /> .link-ftp {<br /> background: url(file_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;irc://&quot;],<br /> #bodyContent a.extiw[href ^=&quot;irc://&quot;],<br /> .link-irc {<br /> background: url(discussionitem_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogg&quot;], #bodyContent a.external[href $=&quot;.OGG&quot;],<br /> #bodyContent a.external[href $=&quot;.mid&quot;], #bodyContent a.external[href $=&quot;.MID&quot;],<br /> #bodyContent a.external[href $=&quot;.midi&quot;], #bodyContent a.external[href $=&quot;.MIDI&quot;],<br /> #bodyContent a.external[href $=&quot;.mp3&quot;], #bodyContent a.external[href $=&quot;.MP3&quot;],<br /> #bodyContent a.external[href $=&quot;.wav&quot;], #bodyContent a.external[href $=&quot;.WAV&quot;],<br /> #bodyContent a.external[href $=&quot;.wma&quot;], #bodyContent a.external[href $=&quot;.WMA&quot;],<br /> .link-audio {<br /> background: url(&quot;audio.png&quot;) center right no-repeat;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogm&quot;], #bodyContent a.external[href $=&quot;.OGM&quot;],<br /> #bodyContent a.external[href $=&quot;.avi&quot;], #bodyContent a.external[href $=&quot;.AVI&quot;],<br /> #bodyContent a.external[href $=&quot;.mpeg&quot;], #bodyContent a.external[href $=&quot;.MPEG&quot;],<br /> #bodyContent a.external[href $=&quot;.mpg&quot;], #bodyContent a.external[href $=&quot;.MPG&quot;],<br /> .link-video {<br /> background: url(&quot;video.png&quot;) center right no-repeat;<br /> }<br /> #bodyContent a.external[href $=&quot;.pdf&quot;], #bodyContent a.external[href $=&quot;.PDF&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf#&quot;], #bodyContent a.external[href *=&quot;.PDF#&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf?&quot;], #bodyContent a.external[href *=&quot;.PDF?&quot;],<br /> .link-document {<br /> background: url(&quot;document.png&quot;) center right no-repeat;<br /> }<br /> <br /> /* for rtl wikis */<br /> .rtl #bodyContent a.external {<br /> background-position: left;<br /> padding-right: 0;<br /> }<br /> .rtl a.feedlink {<br /> background-position: right;<br /> padding-right: 16px;<br /> padding-left: 0;<br /> }<br /> <br /> /* correction for ltr wikis */<br /> .ltr #bodyContent a.external {<br /> padding-left: 0;<br /> }<br /> <br /> /* disable interwiki styling */<br /> #bodyContent a.extiw,<br /> #bodyContent a.extiw:active {<br /> color: #36b;<br /> background: none;<br /> padding: 0;<br /> }<br /> #bodyContent a.external {<br /> color: #36b;<br /> }<br /> /* this can be used in the content area to switch off<br /> special external link styling */<br /> #bodyContent .plainlinks a {<br /> background: none !important;<br /> padding: 0 !important;<br /> }<br /> /*<br /> ** Structural Elements<br /> */<br /> <br /> /*<br /> ** general portlet styles (elements in the quickbar)<br /> */<br /> .portlet {<br /> border: none;<br /> margin: 0 0 .5em;<br /> padding: 0;<br /> float: none;<br /> width: 11.6em;<br /> overflow: hidden;<br /> }<br /> .portlet h4 {<br /> font-size: 95%;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .portlet h5 {<br /> background: none repeat scroll 0% 0% rgb(64, 64, 64);<br /> text-transform: lowercase;<br /> font-size: 91%;<br /> white-space: nowrap;<br /> display: block;<br /> padding: 0px 4px 4px;<br /> border-top-left-radius: 4px;<br /> border-top-right-radius: 4px;<br /> color: white;<br /> height: 15px;<br /> font-weight: bold;<br /> border-bottom:1px solid black;<br /> }<br /> <br /> .portlet h6 {<br /> background: #ffae2e;<br /> border: 1px solid #2f6fab;<br /> border-style: solid solid none solid;<br /> padding: 0 1em 0 1em;<br /> text-transform: lowercase;<br /> display: block;<br /> font-size: 1em;<br /> height: 1.2em;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .pBody {<br /> font-size: 90%;<br /> color: black;<br /> border-collapse: collapse;<br /> border: 1px solid #ededed;<br /> padding: 0 .8em .3em .5em;<br /> padding-top:8px;<br /> }<br /> .portlet h1,<br /> .portlet h2,<br /> .portlet h3,<br /> .portlet h4 {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .portlet ul {<br /> line-height: 1.5em;<br /> list-style-type: square;<br /> list-style-image: url(bullet.gif);<br /> font-size: 95%;<br /> }<br /> .portlet li {<br /> padding: 0;<br /> margin: 0;<br /> }<br /> <br /> /*<br /> ** Logo properties<br /> */<br /> <br /> #p-logo {<br /> top: 0;<br /> left: 0;<br /> position: absolute; /*needed to use z-index */<br /> z-index: 3;<br /> height: 155px;<br /> width: 12em;<br /> overflow: visible;<br /> }<br /> #p-logo h5 {<br /> display: none;<br /> }<br /> #p-logo a,<br /> #p-logo a:hover {<br /> display: block;<br /> height: 155px;<br /> width: 12.2em;<br /> background-repeat: no-repeat;<br /> background-position: 35% 50% !important;<br /> text-decoration: none;<br /> }<br /> <br /> /*<br /> ** Search portlet<br /> */<br /> #p-search {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> input.searchButton {<br /> margin-top: 1px;<br /> font-size: 95%;<br /> }<br /> #searchGoButton {<br /> padding-left: .5em;<br /> padding-right: .5em;<br /> font-weight: bold;<br /> }<br /> #searchInput {<br /> width: 10.9em;<br /> margin: 0;<br /> font-size: 95%;<br /> }<br /> #p-search .pBody {<br /> padding: .5em .4em .4em .4em;<br /> text-align: center;<br /> }<br /> #p-search #searchform div div {<br /> margin-top: .4em;<br /> font-size: 95%;<br /> }<br /> /*<br /> ** the personal toolbar<br /> */<br /> #p-personal {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> z-index: 0;<br /> }<br /> #p-personal {<br /> width: 100%;<br /> white-space: nowrap;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> background: none;<br /> overflow: visible;<br /> line-height: 1.2em;<br /> }<br /> #p-personal h5 {<br /> display: none;<br /> }<br /> #p-personal .portlet,<br /> #p-personal .pBody {<br /> z-index: 0;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> overflow: visible;<br /> background: none;<br /> }<br /> /* this is the ul contained in the portlet */<br /> #p-personal ul {<br /> border: none;<br /> line-height: 1.4em;<br /> color: #2f6fab;<br /> padding: 0 2em 0 3em;<br /> margin: 0;<br /> text-align: right;<br /> list-style: none;<br /> z-index: 0;<br /> background: none;<br /> cursor: default;<br /> }<br /> #p-personal li {<br /> z-index: 0;<br /> border: none;<br /> padding: 0;<br /> display: inline;<br /> color: #2f6fab;<br /> margin-left: 1em;<br /> line-height: 1.2em;<br /> background: none;<br /> }<br /> #p-personal li a {<br /> text-decoration: none;<br /> color: #005896;<br /> padding-bottom: .2em;<br /> background: none;<br /> }<br /> #p-personal li a:hover {<br /> background-color: none;<br /> padding-bottom: .2em;<br /> text-decoration: none;<br /> }<br /> #p-personal li.active a:hover {<br /> background-color: none;<br /> }<br /> /* the icon in front of the user name, single quotes<br /> in bg url to hide it from iemac */<br /> li#pt-userpage,<br /> li#pt-anonuserpage,<br /> li#pt-login {<br /> background: url(user.gif) top left no-repeat;<br /> padding-left: 20px;<br /> text-transform: none;<br /> }<br /> #p-personal ul {<br /> text-transform: lowercase;<br /> }<br /> #p-personal li.active {<br /> font-weight: bold;<br /> }<br /> /*<br /> ** the page-related actions- page/talk, edit etc<br /> */<br /> #p-cactions {<br /> position: absolute;<br /> top: 1.3em;<br /> left: 11.5em;<br /> margin: 0;<br /> white-space: nowrap;<br /> width: 76%;<br /> line-height: 1.1em;<br /> overflow: visible;<br /> background: none;<br /> border-collapse: collapse;<br /> padding-left: 1em;<br /> list-style: none;<br /> font-size: 95%;<br /> }<br /> #p-cactions ul {<br /> list-style: none;<br /> }<br /> #p-cactions li {<br /> display: inline;<br /> border: 1px solid #ededed;<br /> border-bottom: none;<br /> padding:4px;<br /> background: white;<br /> border-top-left-radius:4px;<br /> border-top-right-radius:4px;<br /> }<br /> #p-cactions li.selected {<br /> border-color: darkblue;<br /> padding: 4px;<br /> font-weight: bold;<br /> background: white;<br /> }<br /> #p-cactions li:hover {<br /> border-color: #adadad;<br /> background: white;<br /> }<br /> #p-cactions li a {<br /> color: #002bb8;<br /> border: none;<br /> padding: 4px;<br /> position: relative;<br /> z-index: 0;<br /> margin: 0;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions li.selected a {<br /> z-index: 3;<br /> padding: 0 1em .2em!important;<br /> background:none;<br /> }<br /> #p-cactions .new a {<br /> color: #ba0000;<br /> }<br /> #p-cactions li a:hover {<br /> z-index: 3;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions h5 {<br /> display: none;<br /> }<br /> #p-cactions li.istalk {<br /> margin-right: 0;<br /> }<br /> #p-cactions li.istalk a {<br /> padding-right: .5em;<br /> }<br /> #p-cactions #ca-addsection a {<br /> padding-left: .4em;<br /> padding-right: .4em;<br /> }<br /> /* offsets to distinguish the tab groups */<br /> li#ca-talk {<br /> margin-right: 1.6em;<br /> }<br /> li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {<br /> margin-left: 1.6em;<br /> }<br /> #p-cactions .pBody {<br /> font-size: 1em;<br /> background-color: transparent;<br /> color: inherit;<br /> border-collapse: inherit;<br /> border: 0;<br /> padding: 0;<br /> }<br /> #p-cactions .hiddenStructure {<br /> display: none;<br /> }<br /> #p-cactions li a {<br /> text-transform: lowercase;<br /> }<br /> <br /> #p-lang {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> <br /> /* TODO: #t-iscite is only used by the Cite extension, come up with some<br /> * system which allows extensions to add to this file on the fly<br /> */<br /> #t-ispermalink, #t-iscite {<br /> color: #999;<br /> }<br /> /*<br /> ** footer<br /> */<br /> #footer {<br /> background-color: white;<br /> border-top: 1px solid #ededed;<br /> border-bottom: 1px solid #ededed;<br /> margin: .6em 0 1em 0;<br /> padding: 8px;<br /> text-align: center;<br /> min-height:0;<br /> }<br /> #footer li {<br /> display: inline;<br /> margin: 0 1.3em;<br /> }<br /> #f-poweredbyico, #f-copyrightico {<br /> margin: 0 8px;<br /> position: relative;<br /> top: -2px; /* Bump it up just a tad */<br /> }<br /> #f-poweredbyico {<br /> float: right;<br /> height: 1%;<br /> }<br /> #f-copyrightico {<br /> float: left;<br /> height: 1%;<br /> }<br /> <br /> /* js pref toc */<br /> #preftoc {<br /> margin: 0;<br /> padding: 0;<br /> width: 100%;<br /> clear: both;<br /> }<br /> #preftoc li {<br /> background-color: #f0f0f0;<br /> color: #000;<br /> }<br /> #preftoc li {<br /> margin: 1px -2px 1px 2px;<br /> float: left;<br /> padding: 2px 0 3px 0;<br /> border: 1px solid #fff;<br /> border-right-color: #716f64;<br /> border-bottom: 0;<br /> position: relative;<br /> white-space: nowrap;<br /> list-style-type: none;<br /> list-style-image: none;<br /> z-index: 3;<br /> }<br /> #preftoc li.selected {<br /> font-weight: bold;<br /> background-color: #f9f9f9;<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> cursor: default;<br /> top: 1px;<br /> padding-top: 2px;<br /> margin-right: -3px;<br /> }<br /> #preftoc &gt; li.selected {<br /> top: 2px;<br /> }<br /> #preftoc a,<br /> #preftoc a:active {<br /> display: block;<br /> color: #000;<br /> padding: 0 .7em;<br /> position: relative;<br /> text-decoration: none;<br /> }<br /> #preftoc li.selected a {<br /> cursor: default;<br /> text-decoration: none;<br /> }<br /> #prefcontrol {<br /> padding-top: 2em;<br /> clear: both;<br /> }<br /> #preferences {<br /> margin: 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em;<br /> background-color: #F9F9F9;<br /> }<br /> .prefsection {<br /> border: none;<br /> padding: 0;<br /> margin: 0;<br /> }<br /> .prefsection fieldset {<br /> border: 1px solid #aaa;<br /> float: left;<br /> margin-right: 2em;<br /> }<br /> .prefsection legend {<br /> font-weight: bold; <br /> }<br /> .prefsection table, .prefsection legend {<br /> background-color: #F9F9F9;<br /> }<br /> .mainLegend {<br /> display: none;<br /> }<br /> div.prefsectiontip {<br /> font-size: x-small;<br /> padding: .2em 2em;<br /> color: #666;<br /> }<br /> .btnSavePrefs {<br /> font-weight: bold;<br /> padding-left: .3em;<br /> padding-right: .3em;<br /> }<br /> <br /> .preferences-login {<br /> clear: both;<br /> margin-bottom: 1.5em;<br /> }<br /> <br /> .prefcache {<br /> font-size: 90%;<br /> margin-top: 2em;<br /> }<br /> <br /> div#userloginForm form,<br /> div#userlogin form#userlogin2 {<br /> margin: 0 3em 1em 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em 2em;<br /> background-color: #f9f9f9;<br /> float: left;<br /> }<br /> .rtl div#userloginForm form,<br /> .rtl div#userlogin form#userlogin2 {<br /> float: right;<br /> }<br /> <br /> div#userloginForm table,<br /> div#userlogin form#userlogin2 table {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> div#userloginForm h2,<br /> div#userlogin form#userlogin2 h2 {<br /> padding-top: 0;<br /> }<br /> <br /> div#userlogin .captcha,<br /> div#userloginForm .captcha {<br /> border: 1px solid #bbb;<br /> padding: 1.5em 2em;<br /> background-color: white;<br /> }<br /> <br /> #loginend, #signupend {<br /> clear: both;<br /> }<br /> <br /> #userloginprompt, #languagelinks {<br /> font-size: 85%;<br /> }<br /> <br /> #login-sectiontip {<br /> font-size: 85%;<br /> line-height: 1.2;<br /> padding-top: 2em;<br /> }<br /> <br /> #userlogin .loginText, #userlogin .loginPassword {<br /> width: 12em;<br /> }<br /> <br /> #userloginlink a, #wpLoginattempt, #wpCreateaccount {<br /> font-weight: bold;<br /> }<br /> <br /> /*<br /> ** IE/Mac fixes, hope to find a validating way to move this<br /> ** to a separate stylesheet. This would work but doesn't validate:<br /> ** @import(&quot;IEMacFixes.css&quot;);<br /> */<br /> /* tabs: border on the a, not the div */<br /> * &gt; html #p-cactions li { border: none; }<br /> * &gt; html #p-cactions li a {<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> }<br /> * &gt; html #p-cactions li.selected a { border-color: #fabd23; }<br /> /* footer icons need a fixed width */<br /> * &gt; html #f-poweredbyico,<br /> * &gt; html #f-copyrightico { width: 88px; }<br /> * &gt; html #bodyContent,<br /> * &gt; html #bodyContent pre {<br /> overflow-x: auto;<br /> width: 100%;<br /> padding-bottom: 25px;<br /> }<br /> <br /> /* more IE fixes */<br /> /* float/negative margin brokenness */<br /> * html #footer {margin-top: 0;}<br /> * html #column-content {<br /> display: inline;<br /> margin-bottom: 0;<br /> }<br /> * html div.editsection { font-size: smaller; }<br /> #pagehistory li.selected { position: relative; }<br /> <br /> /* Mac IE 5.0 fix; floated content turns invisible */<br /> * &gt; html #column-content {<br /> float: none;<br /> }<br /> * &gt; html #column-one {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> }<br /> * &gt; html #footer {<br /> margin-left: 13.2em;<br /> }<br /> .redirectText {<br /> font-size: 150%;<br /> margin: 5px;<br /> }<br /> <br /> .printfooter {<br /> display: none;<br /> }<br /> <br /> .not-patrolled {<br /> background-color: #ffa;<br /> }<br /> div.patrollink {<br /> clear: both;<br /> font-size: 75%;<br /> text-align: right;<br /> }<br /> span.newpage, span.minor, span.bot {<br /> font-weight: bold;<br /> }<br /> span.unpatrolled {<br /> font-weight: bold;<br /> color: red;<br /> }<br /> <br /> .sharedUploadNotice {<br /> font-style: italic;<br /> }<br /> <br /> span.updatedmarker {<br /> color: black;<br /> background-color: #0f0;<br /> }<br /> <br /> table.gallery {<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> padding: 2px;<br /> background-color: white;<br /> }<br /> <br /> table.gallery tr {<br /> vertical-align: top;<br /> }<br /> <br /> table.gallery td {<br /> vertical-align: top;<br /> background-color: #f9f9f9;<br /> border: solid 2px white;<br /> }<br /> /* Keep this temporarily so that cached pages will display right */<br /> table.gallery td.galleryheader {<br /> text-align: center;<br /> font-weight: bold;<br /> }<br /> table.gallery caption {<br /> font-weight: bold;<br /> }<br /> <br /> div.gallerybox {<br /> margin: 2px;<br /> }<br /> <br /> div.gallerybox div.thumb {<br /> text-align: center;<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> }<br /> <br /> div.gallerytext {<br /> overflow: hidden;<br /> font-size: 94%;<br /> padding: 2px 4px;<br /> }<br /> <br /> span.comment {<br /> font-style: italic;<br /> }<br /> <br /> span.changedby {<br /> font-size: 95%;<br /> }<br /> <br /> .previewnote {<br /> text-indent: 3em;<br /> color: #c00;<br /> border-bottom: 1px solid #aaa;<br /> padding-bottom: 1em;<br /> margin-bottom: 1em;<br /> }<br /> <br /> .previewnote p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> .editExternally {<br /> border: 1px solid gray;<br /> background-color: #ffffff;<br /> padding: 3px;<br /> margin-top: 0.5em;<br /> float: left;<br /> font-size: small;<br /> text-align: center;<br /> }<br /> .editExternallyHelp {<br /> font-style: italic;<br /> color: gray;<br /> }<br /> <br /> .toggle {<br /> margin-left: 2em;<br /> text-indent: -2em;<br /> }<br /> <br /> /* Classes for EXIF data display */<br /> table.mw_metadata {<br /> font-size: 0.8em;<br /> margin-left: 0.5em;<br /> margin-bottom: 0.5em;<br /> width: 300px;<br /> }<br /> <br /> table.mw_metadata caption {<br /> font-weight: bold;<br /> }<br /> <br /> table.mw_metadata th {<br /> font-weight: normal;<br /> }<br /> <br /> table.mw_metadata td {<br /> padding: 0.1em;<br /> }<br /> <br /> table.mw_metadata {<br /> border: none;<br /> border-collapse: collapse;<br /> }<br /> <br /> table.mw_metadata td, table.mw_metadata th {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> padding-left: 0.1em;<br /> padding-right: 0.1em;<br /> }<br /> <br /> table.mw_metadata th {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> table.mw_metadata td {<br /> background-color: #fcfcfc;<br /> }<br /> <br /> table.collapsed tr.collapsable {<br /> display: none;<br /> }<br /> <br /> <br /> /* filetoc */<br /> ul#filetoc {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> margin-bottom: 0.5em;<br /> margin-left: 0;<br /> margin-right: 0;<br /> }<br /> <br /> #filetoc li {<br /> display: inline;<br /> list-style-type: none;<br /> padding-right: 2em;<br /> }<br /> <br /> input#wpSummary {<br /> width: 80%;<br /> }<br /> <br /> /* @bug 1714 */<br /> input#wpSave, input#wpDiff {<br /> margin-right: 0.33em;<br /> }<br /> <br /> #wpSave {<br /> font-weight: bold;<br /> }<br /> <br /> /* Classes for article validation */<br /> <br /> table.revisionform_default {<br /> border: 1px solid #000000;<br /> }<br /> <br /> table.revisionform_focus {<br /> border: 1px solid #000000;<br /> background-color:#00BBFF;<br /> }<br /> <br /> tr.revision_tr_default {<br /> background-color:#EEEEEE;<br /> }<br /> <br /> tr.revision_tr_first {<br /> background-color:#DDDDDD;<br /> }<br /> <br /> p.revision_saved {<br /> color: green;<br /> font-weight:bold;<br /> }<br /> <br /> #mw_trackbacks {<br /> border: solid 1px #bbbbff;<br /> background-color: #eeeeff;<br /> padding: 0.2em;<br /> }<br /> <br /> <br /> /* Allmessages table */<br /> <br /> #allmessagestable th {<br /> background-color: #b2b2ff;<br /> }<br /> <br /> #allmessagestable tr.orig {<br /> background-color: #ffe2e2;<br /> }<br /> <br /> #allmessagestable tr.new {<br /> background-color: #e2ffe2;<br /> }<br /> <br /> #allmessagestable tr.def {<br /> background-color: #f0f0ff;<br /> }<br /> <br /> <br /> /* noarticletext */<br /> div.noarticletext {<br /> border: 1px solid #ccc;<br /> background: #fff;<br /> padding: .2em 1em;<br /> color: #000;<br /> }<br /> <br /> div#searchTargetContainer {<br /> left: 10px;<br /> top: 10px;<br /> width: 90%;<br /> background: white;<br /> }<br /> <br /> div#searchTarget {<br /> padding: 3px;<br /> margin: 5px;<br /> background: #F0F0F0;<br /> border: solid 1px blue;<br /> }<br /> <br /> div#searchTarget ul li {<br /> list-style: none;<br /> }<br /> <br /> div#searchTarget ul li:before {<br /> color: orange;<br /> content: &quot;\00BB \0020&quot;;<br /> }<br /> <br /> div#searchTargetHide {<br /> float:right;<br /> border:solid 1px black;<br /> background:#DCDCDC;<br /> padding:2px;<br /> }<br /> <br /> #powersearch p {<br /> margin-top:0px;<br /> }<br /> <br /> div.multipageimagenavbox {<br /> border: solid 1px silver;<br /> padding: 4px;<br /> margin: 1em;<br /> background: #f0f0f0;<br /> }<br /> <br /> div.multipageimagenavbox div.thumb {<br /> border: none;<br /> margin-left: 2em;<br /> margin-right: 2em;<br /> }<br /> <br /> div.multipageimagenavbox hr {<br /> margin: 6px;<br /> }<br /> <br /> table.multipageimage td {<br /> text-align: center;<br /> }<br /> <br /> /** Special:Version */<br /> <br /> table#sv-ext, table#sv-hooks, table#sv-software {<br /> margin: 1em;<br /> padding:0em;<br /> }<br /> <br /> #sv-ext td, #sv-hooks td, #sv-software td,<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> border: 1px solid #A0A0A0;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> background-color: #F0F0F0;<br /> color: black;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> tr.sv-space{<br /> height: 0.8em;<br /> border:none;<br /> }<br /> tr.sv-space td { display: none; }<br /> <br /> /*<br /> Table pager (e.g. Special:Imagelist)<br /> - remove underlines from the navigation link<br /> - collapse borders<br /> - set the borders to outsets (similar to Special:Allmessages)<br /> - remove line wrapping for all td and th, set background color<br /> - restore line wrapping for the last two table cells (description and size)<br /> */<br /> .TablePager { min-width: 80%; }<br /> .TablePager_nav a { text-decoration: none; }<br /> .TablePager { border-collapse: collapse; }<br /> .TablePager, .TablePager td, .TablePager th { <br /> border: 1px solid #aaaaaa;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> .TablePager th { background-color: #eeeeff }<br /> .TablePager td { background-color: #ffffff }<br /> .TablePager tr:hover td { background-color: #eeeeff }<br /> <br /> .imagelist td, .imagelist th { white-space: nowrap }<br /> .imagelist .TablePager_col_links { background-color: #eeeeff }<br /> .imagelist .TablePager_col_img_description { white-space: normal }<br /> .imagelist th.TablePager_sort { background-color: #ccccff }<br /> <br /> .templatesUsed { margin-top: 1.5em; }<br /> <br /> .mw-summary-preview {<br /> margin: 0.1em 0;<br /> }<br /> <br /> /* Friendlier slave lag warnings */<br /> div.mw-lag-warn-normal,<br /> div.mw-lag-warn-high {<br /> padding: 3px;<br /> text-align: center;<br /> margin: 3px auto;<br /> }<br /> div.mw-lag-warn-normal {<br /> border: 1px solid #FFCC66;<br /> background-color: #FFFFCC;<br /> }<br /> div.mw-lag-warn-high {<br /> font-weight: bold;<br /> border: 2px solid #FF0033;<br /> background-color: #FFCCCC;<br /> }<br /> <br /> .MediaTransformError {<br /> background-color: #ccc;<br /> padding: 0.1em;<br /> }<br /> .MediaTransformError td {<br /> text-align: center;<br /> vertical-align: middle;<br /> font-size: 90%;<br /> }<br /> <br /> /** Special:Search stuff */<br /> div#mw-search-interwiki-caption {<br /> text-align: center;<br /> font-weight: bold;<br /> font-size: 95%;<br /> }<br /> <br /> .mw-search-interwiki-project {<br /> font-size: 97%;<br /> text-align: left;<br /> padding-left: 0.2em;<br /> padding-right: 0.15em;<br /> padding-bottom: 0.2em;<br /> padding-top: 0.15em;<br /> background: #cae8ff;<br /> }<br /> <br /> /* God-damned hack for the crappy layout */<br /> .os-suggest {<br /> font-size: 110%;<br /> }<br /> <br /> table.ambox {<br /> margin: 0;<br /> border-width: 1px;<br /> border-style: dashed;<br /> }<br /> <br /> <br /> table.ambox-serious {<br /> border-color: rgb(187, 34, 34);<br /> background-color: #fdeeee;<br /> border-radius:4px;<br /> }<br /> <br /> table.infobox {<br /> float: right;<br /> width: 300px;<br /> margin: 1em 0px 1em 1em;<br /> border-radius: 4px 4px 4px 4px;<br /> border: 1px dashed rgb(237, 237, 237);<br /> background-color: rgb(253, 253, 253);<br /> }<br /> <br /> .uscript.source-uscript .de1, <br /> .uscript.source-uscript .de2{<br /> font-size:1.2em;<br /> }</div> Eliot https://wiki.beyondunreal.com/Unreal_package?diff=45963 Unreal package 2014-03-29T22:07:05Z <p>Eliot: /* Links */ Added a few links.</p> <hr /> <div>An '''Unreal package''' is a file that stores various kinds of data for Unreal Engine games, for example textures, sounds, map data and [[UnrealScript]] byte code. Many files types used by Unreal Engine games, such as .u, .utx, .uax, .umx, .unr, .ut2, .ut3 or .upk are Unreal Packages and internally have the same structure. Others like .int (localization file for international/English), .ucl (UT2004 cache library), .ka (Karma data), .ogg (OGG Vorbis music) or .dll (native code library) are not Unreal packages. One big difference between package files and non-package files is that network clients can download package files automatically if the server indicates that they are required, whereas non-package files cannot be downloaded this way.<br /> <br /> [[Category:File formats]]<br /> <br /> ==Package file format==<br /> The package file format has evolved over time, but as long as the object types stored in the package file are known, older package format version are still readable for newer games. Obviously there's a limit to this compatibility. For example, [[UT]]'s UnrealScript byte code format is different from that of e.g. [[UT2003]] and there is no built-in backward compatibility for this difference. As a result, UT2003 may be able to load UT's .uax and .utx files, but not UT .u files. Also while there's no general restriction against loading newer package file versions, the version number was usually increased for good reasons.<br /> <br /> ===Data types===<br /> Generally Unreal package files use [[wp:little endian|little endian]] byte order. That means, a byte sequence 01 02 03 04 corresponds to the 4 byte value 0x04030201.<br /> <br /> Commonly used data types are:<br /> ;BYTE:An 8 bit numeric value, usually unsigned.<br /> ;WORD:A 16 bit numeric value, often unsigned.<br /> ;DWORD/INT:A 32 bit numeric value, either signed (INT) or unsigned (DWORD), sometimes used as bit flags field.<br /> ;QWORD:A 64 bit numeric value, usually unsigned as bit flags field.<br /> ;FLOAT:A 32 bit IEEE 754 single precision floating point value.<br /> ;DOUBLE:A 64 bit IEEE 753 double precision floating point value.<br /> ;INDEX:A compact index value with a varying length of 1 to 5 bytes for representing signed 32 bit integer values. This type of value is only used before package file version 178 and has been replaced with DWORD or INT values afterwards. (See [[#Compact index format|Compact index format]] below.)<br /> ;GUID:A 128 bit GUID value.<br /> ;ASCIIZ:A zero-terminated string of 8 bit characters.<br /> ;UNICODEZ:A zero-terminated string of 16 bit characters.<br /> ;STRING:An INDEX value (DWORD in UE3) as string length and type followed by either an ASCIIZ or UNICODEZ string. The length value's sign determines whether the string is stored using 8 bit (positive) or 16 bit (negative) characters. The length always refers to the number of characters, not the number of bytes, to follow and includes any trailing null character. Note that the empty string theoretically has three representations: length 0, length 1 and an ASCII null character, or length -1 and a Unicode null character. In practice the length 0 representation will be preferred.<br /> <br /> ====Compact index format====<br /> The compact index format is a special way to store signed 32 bit values so they don't occupy as much space if their absolute value is relatively low. This format is used in many places in UE1 and UE2 packages, such as dynamic array lengths and name or object references, but became obsolete in UE3 where cooked package content can be compressed.<br /> <br /> The rule of thumb for compact index values is: Lower absolute values can be stored with fewer bytes, the sign is stored separately. The sign and up to 6 value bits can be stored in the first byte, every additional byte stores up to 7 bits. That means, the values -63..63 are stored using a single byte, the values -8191..-64 and 64..8191 can be stored in two bytes, and so on.<br /> <br /> The bits of the first byte:<br /> 7 6 5 4 3 2 1 0<br /> Sign More? V5 V4 V3 V2 V1 V0<br /> V''x'' are the absolute value's bits, &quot;More?&quot; is a flag signaling whether more bytes will follow and Sign is the value's sign bit. The second byte, if necessary, looks as follows:<br /> 7 6 5 4 3 2 1 0<br /> More? V12 V11 V10 V9 V8 V7 V6<br /> The same notions as above apply. Values bits 13..19 are stored in byte 3, 20..26 in byte 4 and 27..30 in byte 5. Bit 31 would be the sign bit, which is already stored in byte 1. Data bits 4..7 in byte 5 are always zero. In practice, compact index values will usually occur in their 1 to 3 byte forms, rarely in the 4 byte form and probably never in their 5 byte form.<br /> <br /> ====Object references====<br /> The import table, export table and many other places in a package file reference objects. Such references are stored as compact index value in UE1 and 2 and as DWORD value in UE3. Object references are resolved as follows:<br /> * If the reference is zero, no object is referenced, i.e. NULL/None.<br /> * If the reference is positive, the object must be looked up in the [[#Export table|export table]] at index &lt;code&gt;reference-1&lt;/code&gt;.<br /> * If the reference is negative, the object must be looked up in the [[#Import table|import table]] at index &lt;code&gt;1-reference&lt;/code&gt;.<br /> <br /> ===Package header===<br /> Unreal package files always start with a header section that provides information about the content of the package. (Thanks to [[User:Eliot|Eliot]] for the [http://eliotvu.com/page/unreal-package-file-format header fields introduces in UE3].)<br /> <br /> The package header is structured as follows:<br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || DWORD || Package file tag || Always the byte sequence 0xC1 0x83 0x2A 0x9E or the value 0x9E2A83C1.<br /> |-<br /> | || WORD || Package file version || The package file format version. (Used in the version columns on this page.)<br /> * UT v346 writes version 69<br /> * UT2004 v3369 writes version 128<br /> * UT3 v2.1 writes version 512<br /> * UE4 writes version -1 to -3, and is then followed by another two DWORDs(if negative!) in this particular order: &quot;UE3Version&quot; (writes 868), &quot;UE4Version&quot; (writes ~100 - ~300).<br /> |-<br /> | || WORD || Licensee version || Licensees may modify the package format. Their changes may render packages incompatible to standard packages, so they have this field as a separate way to handle their own change history.<br /> * UT writes version 0<br /> * UT2003 writes version 28<br /> * UT2004 writes version 29<br /> * UT3 writes version 0<br /> |-<br /> | &gt;= 249 || DWORD || Header size ||<br /> |-<br /> | &gt;= 269 || STRING || Folder name ||<br /> |-<br /> | || DWORD || Package flags ||<br /> |-<br /> | || DWORD || Name count || The number of entries in the package's name table.<br /> |-<br /> | || DWORD || Name offset || The byte position of the name table in the package file.<br /> |-<br /> | || DWORD || Export count || The number of entries in the package's export table.<br /> |-<br /> | || DWORD || Export offset || The byte position of the export table in the package file.<br /> |-<br /> | || DWORD || Import count || The number of entries in the package's import table.<br /> |-<br /> | || DWORD || Import offset || The byte position of the import table in the package file.<br /> |-<br /> | &lt; 68 || DWORD || Heritage count || The number of entries in the package's heritage table.<br /> |-<br /> | &lt; 68 || DWORD || Heritage offset || The byte position of the heritage table in the package file.<br /> |-<br /> | &gt;= 415 || DWORD || Depends offset || The byte position of the dependencies table in the package file. The number of entries is equal to Export count. (I may be wrong, could be Import count, but I am using Export count in UE Library so that has confused me, although it is commented out!).<br /> |-<br /> | &gt;= 623 || DWORD/DWORD/DWORD || ImportExportGuidsOffset, ImportGuidsCount, ExportGuidsCount ||<br /> |-<br /> | &gt;= 584 || DWORD || ThumbnailTableOffset ||<br /> |-<br /> | &gt;= 68 || GUID || Package GUID || The package's GUID that is used e.g. in the [[package map]]. Before file version 68 the last GUID from the heritage table defines the package's GUID.<br /> |-<br /> | &gt;= 68 || DWORD || Generation count || This package's generation number.<br /> |-<br /> | &gt;= 68 || x * GenerationInfo || Generation info list || List of generation infos (see [[#Generation infos|Generation infos]] below) for generations 1..GenerationCount, i.e. Generation Count values.<br /> |-<br /> | &gt;= 245 || DWORD || Engine version || (Optional: Engine licensee version)<br /> |-<br /> | &gt;= 277 || DWORD || Cooker version || (Optional: Cooker licensee version)<br /> |-<br /> | &gt;= 334 (cooked) || DWORD || Compression flags ||<br /> |-<br /> | &gt;= 334 (cooked) || DWORD || Compressed chunks count ||<br /> |-<br /> | &gt;= 334 (cooked) || x * CompressedChunk || Compressed chunks list || List of compressed chunks (see [[#Compressed chunks|Compressed chunks]] below) in the package.<br /> |-<br /> | &gt;= ??? || Array of Strings || An array of other cooked packages || Related to cooking.<br /> |-<br /> | &gt;= ??? || ??? || ??? || Related to textures.<br /> |}<br /> <br /> ===Generation infos===<br /> Generation infos tell, how many export and name table entries previous versions of a package contained. This information is used for [[package map]] negotiation between the server and client in network games if they have different versions of a package.<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || DWORD || Export count || The number of export table entries in that generation of the package.<br /> |-<br /> | || DWORD || Name count || The number of name table entries in that generation of the package.<br /> |-<br /> | &gt;= 322 || DWORD || Net object count || <br /> |}<br /> <br /> ===Heritage table===<br /> Package versions less than 68 contain a heritage table instead of the generation infos. The number of entries and its size is specified in the package header.<br /> <br /> The heritage table is nothing more but a list of GUID values of previous package generations. Any &quot;post-heritage&quot; engine that encounters a package with a heritage table will pick the last heritage entry as the package's GUID and assume the generation number 1.<br /> <br /> ===Compressed chunks===<br /> Cooked Unreal Engine 3 packages can be compressed. The compressed chunks list maps the compressed parts of the file to uncompressed offset values. Every part of the package, except the header, can be part of a compressed chunk. The offsets specified in the package header actually refer to uncompressed positions.<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Type !! Name !! Description<br /> |-<br /> | DWORD || Uncompressed offset || The start offset of this chunk in the completely uncompressed package.<br /> |-<br /> | DWORD || Uncompressed chunk size || The uncompressed size of this chunk.<br /> |-<br /> | DWORD || Compressed offset || The start offset of this chunk in the compressed package file.<br /> |-<br /> | DWORD || Compressed chunk size || The compressed size of this chunk.<br /> |}<br /> <br /> ===Name table===<br /> The name table specifies [[name]] values used throughout the package. The size and position of the name table is specified in the package header. Its entries are structured as follows:<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || STRING || Name string || The string this name represents.<br /> |-<br /> | &lt; 141 || DWORD || Name flags || Flags associated with this name.<br /> |-<br /> | &gt;= 141 || QWORD || Name flags || Flags associated with this name.<br /> |}<br /> <br /> Generally the name table does not contain any duplicate entries, including no different capitalizations. The only exception may be the name 'None', which may be occur several times if the package was conformed to a previous version. Names in the name table are grouped by the generation they were added in. Every generation's name group starts with a new 'None' name. The indices of additional 'None' names correspond to the name counts of previous generations in the package header's generation info list.<br /> <br /> ===Export table===<br /> {{todo|<br /> *Fill in descriptions of unknown fields.<br /> }}<br /> The export table specifies all objects the package contains. The size and position of the export table is specified in the package header. Its entries are structured as follows:<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || INDEX || Class || The class of this object. None means this is a class itself.<br /> |-<br /> | || INDEX || Super || The object this object inherits from. Only used for struct, states, classes and functions.<br /> |-<br /> | || INT || Outer || The object containing this object. Resources may be contained in groups (which are subpackages), functions may be contained in states or classes, and so on.<br /> |-<br /> | || INDEX || Name || The index of this object's name in the name table.<br /> |-<br /> | &gt;= 220 || INT || Archetype || The object's archetype reference.<br /> |-<br /> | &lt; 195 || DWORD || Object flags || This object's flags.<br /> |-<br /> | &gt;= 195 || QWORD || Object flags || This object's flags.<br /> |-<br /> | || INDEX || Serial size || The size of this object's data in the package file. Some objects do not include any data.<br /> |-<br /> | (serial size &gt; 0) || INDEX || Serial offset || The position of this object's data in the package file. This field is only present if the serial size is non-zero.<br /> |-<br /> | &gt;= 220, &lt; 543 || INT || ??? count ||<br /> |-<br /> | &gt;= 220, &lt; 543 || x * 12 bytes || ??? ||<br /> |-<br /> | &gt;= 247 || DWORD || Export flags ||<br /> |-<br /> | &gt;= 322 || INT || ??? count ||<br /> |-<br /> | &gt;= 322 || x * DWORD || ??? ||<br /> |-<br /> | &gt;= 322 || 16 bytes || ??? ||<br /> |-<br /> | &gt;= 487 || INT || ??? ||<br /> |}<br /> <br /> Exported objects implicitly form a tree with the package as implicit root (it is not included in the export table), but the export table entries are not strictly stored in any tree traversal order.<br /> <br /> Like the name table, the export table may contain null objects if the package was conformed to an older version. Their indices correspond to the export counts of previous package generations. <br /> <br /> ===Import table===<br /> The import table specifies objects from other packages that are required by objects in this package in some way. The size and position of the import table is specified in the package header. Its entries are structured as follows:<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Type !! Name !! Description<br /> |-<br /> | INDEX || Package || The package to import this object from. Zero if the imported object is a package itself.<br /> |-<br /> | INDEX || Class || The class of the imported object.<br /> |-<br /> | INT || Outer || The object containing this imported object. Resources may be contained in groups (which are subpackages), functions may be contained in states or classes, and so on.<br /> |-<br /> | INDEX || Name || The index of the imported object's name in this package's name table.<br /> |}<br /> <br /> Imported objects form trees with their package as root, but the import table entries are not strictly stored in any tree traversal order. Packages may import a package with the same name to reference native-only classes that don't have any UnrealScript parts. For example the Core package imports another package called Core containing classes such as Class or ClassProperty.<br /> <br /> ==Links==<br /> * [http://eliotvu.com/page/unreal-package-file-format Unreal Package File Format] by Eliot van Uytfanghe<br /> * [http://eliotvu.com/portfolio/view/21/ue-explorer UE Explorer] by Eliot van Uytfanghe - includes a .NET library for reading Unreal package files<br /> * [http://www.acordero.org/projects/unreal-tournament-package-tool/ Unreal Tournament Package Tool] by Antonio Cordero Balcázar - reads UE1 and UE2 packages<br /> * [http://sourceforge.net/projects/utpackages/ UT Packages] by Antonio Cordero Balcázar - Delphi library for reading UE1/2 packages<br /> * [http://www.scribd.com/doc/54572848/UT-Package-File-Format UT Package File Format] by Antonio Cordero Balcázar - File format documentation for UT and UT2004.<br /> * [http://wiki.tesnexus.com/index.php/UPK_File_Format_-_XCOM:EU_2012 UPK File Format] by the XCOM Community - File format explained by various sources.</div> Eliot https://wiki.beyondunreal.com/Unreal_package?diff=45962 Unreal package 2014-03-24T18:59:37Z <p>Eliot: /* Package header */ Added additional data and some answers to unknown data, as well abit of info on UE4. Adding full documentation for UE4 may make things confusing!</p> <hr /> <div>An '''Unreal package''' is a file that stores various kinds of data for Unreal Engine games, for example textures, sounds, map data and [[UnrealScript]] byte code. Many files types used by Unreal Engine games, such as .u, .utx, .uax, .umx, .unr, .ut2, .ut3 or .upk are Unreal Packages and internally have the same structure. Others like .int (localization file for international/English), .ucl (UT2004 cache library), .ka (Karma data), .ogg (OGG Vorbis music) or .dll (native code library) are not Unreal packages. One big difference between package files and non-package files is that network clients can download package files automatically if the server indicates that they are required, whereas non-package files cannot be downloaded this way.<br /> <br /> [[Category:File formats]]<br /> <br /> ==Package file format==<br /> The package file format has evolved over time, but as long as the object types stored in the package file are known, older package format version are still readable for newer games. Obviously there's a limit to this compatibility. For example, [[UT]]'s UnrealScript byte code format is different from that of e.g. [[UT2003]] and there is no built-in backward compatibility for this difference. As a result, UT2003 may be able to load UT's .uax and .utx files, but not UT .u files. Also while there's no general restriction against loading newer package file versions, the version number was usually increased for good reasons.<br /> <br /> ===Data types===<br /> Generally Unreal package files use [[wp:little endian|little endian]] byte order. That means, a byte sequence 01 02 03 04 corresponds to the 4 byte value 0x04030201.<br /> <br /> Commonly used data types are:<br /> ;BYTE:An 8 bit numeric value, usually unsigned.<br /> ;WORD:A 16 bit numeric value, often unsigned.<br /> ;DWORD/INT:A 32 bit numeric value, either signed (INT) or unsigned (DWORD), sometimes used as bit flags field.<br /> ;QWORD:A 64 bit numeric value, usually unsigned as bit flags field.<br /> ;FLOAT:A 32 bit IEEE 754 single precision floating point value.<br /> ;DOUBLE:A 64 bit IEEE 753 double precision floating point value.<br /> ;INDEX:A compact index value with a varying length of 1 to 5 bytes for representing signed 32 bit integer values. This type of value is only used before package file version 178 and has been replaced with DWORD or INT values afterwards. (See [[#Compact index format|Compact index format]] below.)<br /> ;GUID:A 128 bit GUID value.<br /> ;ASCIIZ:A zero-terminated string of 8 bit characters.<br /> ;UNICODEZ:A zero-terminated string of 16 bit characters.<br /> ;STRING:An INDEX value (DWORD in UE3) as string length and type followed by either an ASCIIZ or UNICODEZ string. The length value's sign determines whether the string is stored using 8 bit (positive) or 16 bit (negative) characters. The length always refers to the number of characters, not the number of bytes, to follow and includes any trailing null character. Note that the empty string theoretically has three representations: length 0, length 1 and an ASCII null character, or length -1 and a Unicode null character. In practice the length 0 representation will be preferred.<br /> <br /> ====Compact index format====<br /> The compact index format is a special way to store signed 32 bit values so they don't occupy as much space if their absolute value is relatively low. This format is used in many places in UE1 and UE2 packages, such as dynamic array lengths and name or object references, but became obsolete in UE3 where cooked package content can be compressed.<br /> <br /> The rule of thumb for compact index values is: Lower absolute values can be stored with fewer bytes, the sign is stored separately. The sign and up to 6 value bits can be stored in the first byte, every additional byte stores up to 7 bits. That means, the values -63..63 are stored using a single byte, the values -8191..-64 and 64..8191 can be stored in two bytes, and so on.<br /> <br /> The bits of the first byte:<br /> 7 6 5 4 3 2 1 0<br /> Sign More? V5 V4 V3 V2 V1 V0<br /> V''x'' are the absolute value's bits, &quot;More?&quot; is a flag signaling whether more bytes will follow and Sign is the value's sign bit. The second byte, if necessary, looks as follows:<br /> 7 6 5 4 3 2 1 0<br /> More? V12 V11 V10 V9 V8 V7 V6<br /> The same notions as above apply. Values bits 13..19 are stored in byte 3, 20..26 in byte 4 and 27..30 in byte 5. Bit 31 would be the sign bit, which is already stored in byte 1. Data bits 4..7 in byte 5 are always zero. In practice, compact index values will usually occur in their 1 to 3 byte forms, rarely in the 4 byte form and probably never in their 5 byte form.<br /> <br /> ====Object references====<br /> The import table, export table and many other places in a package file reference objects. Such references are stored as compact index value in UE1 and 2 and as DWORD value in UE3. Object references are resolved as follows:<br /> * If the reference is zero, no object is referenced, i.e. NULL/None.<br /> * If the reference is positive, the object must be looked up in the [[#Export table|export table]] at index &lt;code&gt;reference-1&lt;/code&gt;.<br /> * If the reference is negative, the object must be looked up in the [[#Import table|import table]] at index &lt;code&gt;1-reference&lt;/code&gt;.<br /> <br /> ===Package header===<br /> Unreal package files always start with a header section that provides information about the content of the package. (Thanks to [[User:Eliot|Eliot]] for the [http://eliotvu.com/page/unreal-package-file-format header fields introduces in UE3].)<br /> <br /> The package header is structured as follows:<br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || DWORD || Package file tag || Always the byte sequence 0xC1 0x83 0x2A 0x9E or the value 0x9E2A83C1.<br /> |-<br /> | || WORD || Package file version || The package file format version. (Used in the version columns on this page.)<br /> * UT v346 writes version 69<br /> * UT2004 v3369 writes version 128<br /> * UT3 v2.1 writes version 512<br /> * UE4 writes version -1 to -3, and is then followed by another two DWORDs(if negative!) in this particular order: &quot;UE3Version&quot; (writes 868), &quot;UE4Version&quot; (writes ~100 - ~300).<br /> |-<br /> | || WORD || Licensee version || Licensees may modify the package format. Their changes may render packages incompatible to standard packages, so they have this field as a separate way to handle their own change history.<br /> * UT writes version 0<br /> * UT2003 writes version 28<br /> * UT2004 writes version 29<br /> * UT3 writes version 0<br /> |-<br /> | &gt;= 249 || DWORD || Header size ||<br /> |-<br /> | &gt;= 269 || STRING || Folder name ||<br /> |-<br /> | || DWORD || Package flags ||<br /> |-<br /> | || DWORD || Name count || The number of entries in the package's name table.<br /> |-<br /> | || DWORD || Name offset || The byte position of the name table in the package file.<br /> |-<br /> | || DWORD || Export count || The number of entries in the package's export table.<br /> |-<br /> | || DWORD || Export offset || The byte position of the export table in the package file.<br /> |-<br /> | || DWORD || Import count || The number of entries in the package's import table.<br /> |-<br /> | || DWORD || Import offset || The byte position of the import table in the package file.<br /> |-<br /> | &lt; 68 || DWORD || Heritage count || The number of entries in the package's heritage table.<br /> |-<br /> | &lt; 68 || DWORD || Heritage offset || The byte position of the heritage table in the package file.<br /> |-<br /> | &gt;= 415 || DWORD || Depends offset || The byte position of the dependencies table in the package file. The number of entries is equal to Export count. (I may be wrong, could be Import count, but I am using Export count in UE Library so that has confused me, although it is commented out!).<br /> |-<br /> | &gt;= 623 || DWORD/DWORD/DWORD || ImportExportGuidsOffset, ImportGuidsCount, ExportGuidsCount ||<br /> |-<br /> | &gt;= 584 || DWORD || ThumbnailTableOffset ||<br /> |-<br /> | &gt;= 68 || GUID || Package GUID || The package's GUID that is used e.g. in the [[package map]]. Before file version 68 the last GUID from the heritage table defines the package's GUID.<br /> |-<br /> | &gt;= 68 || DWORD || Generation count || This package's generation number.<br /> |-<br /> | &gt;= 68 || x * GenerationInfo || Generation info list || List of generation infos (see [[#Generation infos|Generation infos]] below) for generations 1..GenerationCount, i.e. Generation Count values.<br /> |-<br /> | &gt;= 245 || DWORD || Engine version || (Optional: Engine licensee version)<br /> |-<br /> | &gt;= 277 || DWORD || Cooker version || (Optional: Cooker licensee version)<br /> |-<br /> | &gt;= 334 (cooked) || DWORD || Compression flags ||<br /> |-<br /> | &gt;= 334 (cooked) || DWORD || Compressed chunks count ||<br /> |-<br /> | &gt;= 334 (cooked) || x * CompressedChunk || Compressed chunks list || List of compressed chunks (see [[#Compressed chunks|Compressed chunks]] below) in the package.<br /> |-<br /> | &gt;= ??? || Array of Strings || An array of other cooked packages || Related to cooking.<br /> |-<br /> | &gt;= ??? || ??? || ??? || Related to textures.<br /> |}<br /> <br /> ===Generation infos===<br /> Generation infos tell, how many export and name table entries previous versions of a package contained. This information is used for [[package map]] negotiation between the server and client in network games if they have different versions of a package.<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || DWORD || Export count || The number of export table entries in that generation of the package.<br /> |-<br /> | || DWORD || Name count || The number of name table entries in that generation of the package.<br /> |-<br /> | &gt;= 322 || DWORD || Net object count || <br /> |}<br /> <br /> ===Heritage table===<br /> Package versions less than 68 contain a heritage table instead of the generation infos. The number of entries and its size is specified in the package header.<br /> <br /> The heritage table is nothing more but a list of GUID values of previous package generations. Any &quot;post-heritage&quot; engine that encounters a package with a heritage table will pick the last heritage entry as the package's GUID and assume the generation number 1.<br /> <br /> ===Compressed chunks===<br /> Cooked Unreal Engine 3 packages can be compressed. The compressed chunks list maps the compressed parts of the file to uncompressed offset values. Every part of the package, except the header, can be part of a compressed chunk. The offsets specified in the package header actually refer to uncompressed positions.<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Type !! Name !! Description<br /> |-<br /> | DWORD || Uncompressed offset || The start offset of this chunk in the completely uncompressed package.<br /> |-<br /> | DWORD || Uncompressed chunk size || The uncompressed size of this chunk.<br /> |-<br /> | DWORD || Compressed offset || The start offset of this chunk in the compressed package file.<br /> |-<br /> | DWORD || Compressed chunk size || The compressed size of this chunk.<br /> |}<br /> <br /> ===Name table===<br /> The name table specifies [[name]] values used throughout the package. The size and position of the name table is specified in the package header. Its entries are structured as follows:<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || STRING || Name string || The string this name represents.<br /> |-<br /> | &lt; 141 || DWORD || Name flags || Flags associated with this name.<br /> |-<br /> | &gt;= 141 || QWORD || Name flags || Flags associated with this name.<br /> |}<br /> <br /> Generally the name table does not contain any duplicate entries, including no different capitalizations. The only exception may be the name 'None', which may be occur several times if the package was conformed to a previous version. Names in the name table are grouped by the generation they were added in. Every generation's name group starts with a new 'None' name. The indices of additional 'None' names correspond to the name counts of previous generations in the package header's generation info list.<br /> <br /> ===Export table===<br /> {{todo|<br /> *Fill in descriptions of unknown fields.<br /> }}<br /> The export table specifies all objects the package contains. The size and position of the export table is specified in the package header. Its entries are structured as follows:<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Version !! Type !! Name !! Description<br /> |-<br /> | || INDEX || Class || The class of this object. None means this is a class itself.<br /> |-<br /> | || INDEX || Super || The object this object inherits from. Only used for struct, states, classes and functions.<br /> |-<br /> | || INT || Outer || The object containing this object. Resources may be contained in groups (which are subpackages), functions may be contained in states or classes, and so on.<br /> |-<br /> | || INDEX || Name || The index of this object's name in the name table.<br /> |-<br /> | &gt;= 220 || INT || Archetype || The object's archetype reference.<br /> |-<br /> | &lt; 195 || DWORD || Object flags || This object's flags.<br /> |-<br /> | &gt;= 195 || QWORD || Object flags || This object's flags.<br /> |-<br /> | || INDEX || Serial size || The size of this object's data in the package file. Some objects do not include any data.<br /> |-<br /> | (serial size &gt; 0) || INDEX || Serial offset || The position of this object's data in the package file. This field is only present if the serial size is non-zero.<br /> |-<br /> | &gt;= 220, &lt; 543 || INT || ??? count ||<br /> |-<br /> | &gt;= 220, &lt; 543 || x * 12 bytes || ??? ||<br /> |-<br /> | &gt;= 247 || DWORD || Export flags ||<br /> |-<br /> | &gt;= 322 || INT || ??? count ||<br /> |-<br /> | &gt;= 322 || x * DWORD || ??? ||<br /> |-<br /> | &gt;= 322 || 16 bytes || ??? ||<br /> |-<br /> | &gt;= 487 || INT || ??? ||<br /> |}<br /> <br /> Exported objects implicitly form a tree with the package as implicit root (it is not included in the export table), but the export table entries are not strictly stored in any tree traversal order.<br /> <br /> Like the name table, the export table may contain null objects if the package was conformed to an older version. Their indices correspond to the export counts of previous package generations. <br /> <br /> ===Import table===<br /> The import table specifies objects from other packages that are required by objects in this package in some way. The size and position of the import table is specified in the package header. Its entries are structured as follows:<br /> <br /> {| class=&quot;list&quot; cellspacing=&quot;5&quot;<br /> ! Type !! Name !! Description<br /> |-<br /> | INDEX || Package || The package to import this object from. Zero if the imported object is a package itself.<br /> |-<br /> | INDEX || Class || The class of the imported object.<br /> |-<br /> | INT || Outer || The object containing this imported object. Resources may be contained in groups (which are subpackages), functions may be contained in states or classes, and so on.<br /> |-<br /> | INDEX || Name || The index of the imported object's name in this package's name table.<br /> |}<br /> <br /> Imported objects form trees with their package as root, but the import table entries are not strictly stored in any tree traversal order. Packages may import a package with the same name to reference native-only classes that don't have any UnrealScript parts. For example the Core package imports another package called Core containing classes such as Class or ClassProperty.<br /> <br /> ==Links==<br /> * [http://eliotvu.com/page/unreal-package-file-format Unreal Package File Format] by Eliot van Uytfanghe<br /> * [http://eliotvu.com/portfolio/view/21/ue-explorer UE Explorer] by Eliot van Uytfanghe - includes a .NET library for reading Unreal package files<br /> * [http://www.acordero.org/projects/unreal-tournament-package-tool/ Unreal Tournament Package Tool] by Antonio Cordero Balcázar - reads UE1 and UE2 packages<br /> * [http://sourceforge.net/projects/utpackages/ UT Packages] by Antonio Cordero Balcázar - Delphi library for reading UE1/2 packages</div> Eliot https://wiki.beyondunreal.com/Main_Page?diff=45954 Main Page 2014-03-10T19:01:19Z <p>Eliot: Reordered the content. Would be nice if the download warning could be moved to the right on top of the recent edits. This edit brings the content straight to the visitor.</p> <hr /> <div>{| cellpadding=&quot;0&quot; cellspacing=&quot;10px&quot; style=&quot;width:100%;&quot;<br /> | id=&quot;topic-list&quot; style=&quot;vertical-align:top;&quot; |<br /> '''Welcome to the {{SITENAME}}.''' This site's goal is to provide comprehensive documentation of the [[Unreal Editor]], [[UnrealScript]] and all technical aspects of the [[Unreal Engine]].<br /> <br /> If you came here as a player and are looking for details about the Unreal series of games, head over to BeyondUnreal's [[Liandri:|Liandri Archives]]. If you are a server administrator looking for information about running servers for Unreal series games, try the [[uadmin:|Unreal Admin Wiki]] instead.<br /> <br /> {{ambox|type=serious|text=Please refrain from using an offline reader or similar tools to download the entire Unreal Wiki. These tools put an insane stress on the server and will most likely get you banned immediately. The Unreal Wiki has a very dynamic nature, but if you want to download a recent snapshot, try our downloadable [[Project:Offline Wiki|Offline Wiki]] archive.}}<br /> __NOTOC__ __NOEDITSECTION__<br /> ==Content==<br /> The quickest way to find what you're looking for usually is the search box on the left. Otherwise, try one of the topical starting points below.&lt;br/&gt;<br /> Miss the old {{SITENAME}} content? Head over to the [[Legacy:Home Page|old home page]] and start browsing from there, if you want.<br /> <br /> ===General topics===<br /> * [[Unreal Engine overview]]<br /> * [[:Category:Applications|All applications]]<br /> <br /> {|style=&quot;width:100%;&quot;<br /> |-valign=&quot;top&quot;<br /> |<br /> ===Mapping===<br /> * [[Unreal Editor overview]]<br /> * [[Mapping concepts]]<br /> * [[:Category:Mapping tutorials|Mapping tutorials]]<br /> * [[:Category:Mapping tools|Mapping tools]]<br /> * [[:Category:Mapping articles|All mapping articles]]<br /> |<br /> ===UnrealScript===<br /> * [[UnrealScript overview]]<br /> * [[:Category:Classes|UnrealScript API]]<br /> * [[:Category:Programming tutorials|UnrealScript tutorials]]<br /> * [[:Category:UnrealScript utils|UnrealScript utils]]<br /> * [[:Category:Programming articles|All programming articles]]<br /> |<br /> ===Modeling===<br /> * [[Modeling overview]]<br /> * [[:Category:Modeling tutorials|Modeling tutorials]]<br /> * [[:Category:Modeling articles|All modeling articles]]<br /> |}<br /> ===IRC===<br /> * [irc://irc.enterthegame.com/unrealwiki #UnrealWiki]<br /> * [irc://irc.enterthegame.com/unrealscript #UnrealScript]<br /> * [irc://irc.enterthegame.com/unrealed #UnrealEd] <br /> <br /> <br /> As you may notice, there are still a lot of red links, even here on the main page. This is a side effect of our [[Project:MediaWiki conversion|switch]] to the [[wp:MediaWiki|MediaWiki]] engine and we need '''[[Project:Helping out|your help]]''' to get up to speed again.<br /> <br /> Still can't find what you were looking for? You can browse through all of the [[:Category:Article categories|articles by category]].<br /> <br /> ==Community==<br /> The [[Project:Community Portal|Community Portal]] is the general place to find out what's going on and what needs to be done on the {{SITENAME}}.<br /> <br /> New to the {{SITENAME}}? This is a community project and you are invited to join by [[Special:Userlogin|registering]]. We've provided some tips on [[Project:Getting started|how to get started]] so you can immediately start contributing.<br /> <br /> | style=&quot;vertical-align:top;&quot; |&lt;!-- begin recent edits --&gt;<br /> {| class=&quot;infobox infobox-pages&quot; id=&quot;recent-edits&quot; style=&quot;width:300px;float:none;margin-left:auto;&quot;<br /> |-<br /> | style=&quot;text-align:center;font-size:smaller;&quot; |''See [[Special:Recentchanges|Recent changes]] for all changes.''<br /> |-<br /> ! Recent Updates<br /> |-<br /> |&lt;dpl&gt;<br /> namespace=|UE1|UE2|UE3|Legacy<br /> count=5<br /> ordermethod=lastedit<br /> order=descending<br /> mode=userformat<br /> adduser=true<br /> addeditdate=true<br /> userdateformat=g:ia D, M j<br /> format=&lt;ul&gt;,&lt;li&gt;[[%PAGE%|%TITLE%]]&lt;br /&gt;&lt;span style=&quot;font-size: smaller;&quot;&gt;%DATE% - [[Special:Contributions/%USER%|%USER%]]&lt;/span&gt;,&lt;/li&gt;,&lt;/ul&gt;<br /> noresultsheader=''None''<br /> &lt;/dpl&gt;<br /> |-<br /> ! New Pages<br /> |-<br /> |&lt;dpl&gt;<br /> namespace=|UE1|UE2|UE3<br /> count=5<br /> ordermethod=firstedit<br /> order=descending<br /> adduser=true<br /> addeditdate=true<br /> userdateformat=g:ia D, M j<br /> format=&lt;ul&gt;,&lt;li&gt;[[%PAGE%|%TITLE%]]&lt;br /&gt;&lt;span style=&quot;font-size: smaller;&quot;&gt;%DATE% - [[Special:Contributions/%USER%|%USER%]]&lt;/span&gt;,&lt;/li&gt;,&lt;/ul&gt;<br /> noresultsheader=''None''<br /> &lt;/dpl&gt;<br /> |-<br /> ! Recent Discussion<br /> |-<br /> |&lt;dpl&gt;<br /> namespace=Talk|UE1_talk|UE2_talk|UE3_talk|Unreal_Wiki_talk|Category_talk|Legacy_talk|Template_talk<br /> count=5<br /> ordermethod=lastedit<br /> order=descending<br /> mode=userformat<br /> adduser=true<br /> addeditdate=true<br /> userdateformat=g:ia D, M j<br /> format=&lt;ul&gt;,&lt;li&gt;[[%PAGE%|%TITLE%]]&lt;br /&gt;&lt;span style=&quot;font-size: smaller;&quot;&gt;%DATE% - [[Special:Contributions/%USER%|%USER%]]&lt;/span&gt;,&lt;/li&gt;,&lt;/ul&gt;<br /> noresultsheader=''None''<br /> &lt;/dpl&gt;<br /> |}<br /> |}</div> Eliot https://wiki.beyondunreal.com/Talk:Everything_you_ever_wanted_to_know_about_replication_(but_were_afraid_to_ask)?diff=45953 Talk:Everything you ever wanted to know about replication (but were afraid to ask) 2014-03-10T18:51:13Z <p>Eliot: /* Name type */</p> <hr /> <div>Ah sorry for changing that i thought dynamic would make more sense and have still the same meaning so i dealt with it just like typos and adding categories to someone else his article. --Eliot 19:28, 13 August 2010 (UTC)<br /> <br /> == So if I get this right.... ==<br /> <br /> Ok if I understand this correctly:<br /> <br /> 1. The &lt;uscript&gt;replication{}&lt;/uscript&gt; block is used to update variables on the client(s). When this happens, depends on the variable used in the if-statement (ie bNetInitial) surrounding the variable.<br /> <br /> <br /> <br /> 2. To execute something after a variable is updated, mark the variable for replication notifications using 'repnotify': &lt;uscript&gt;var repnotify int myRepInt&lt;/uscript&gt;<br /> This calls the &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)&lt;/uscript&gt; function.<br /> &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)<br /> {<br /> if(VarName == 'myRepInt')<br /> {<br /> myActionOnRepIntChange();<br /> }<br /> else<br /> {<br /> super.ReplicatedEvent(VarName);<br /> }<br /> }&lt;/uscript&gt;<br /> <br /> <br /> <br /> 3. If we execute a function on the client (function has to be marked simulated for this) and it needs to be done on the server aswell (to update/notify change to all others),<br /> we need a reliable (or unreliable if it's not that big of a deal if it doesn't happen) server function (containing the same logic as the client function).<br /> &lt;uscript&gt;<br /> exec setMyRepInt()<br /> {<br /> initMyRepInt();<br /> }<br /> <br /> simulated function initMyRepInt()<br /> {<br /> myRepInt = 10;<br /> <br /> if(Role &lt; Role_Authority)<br /> {<br /> serverInitMyRepInt();<br /> }<br /> }<br /> <br /> reliable server function serverInitMyRepInt()<br /> {<br /> myRepInt = 10;<br /> }<br /> &lt;/uscript&gt;<br /> <br /> I hope this is correct and that if it is the code may enhance the tutorial/QA/overview of replication for others.<br /> {{unsigned|Omar007|19:49, 12 October 2011}}<br /> <br /> <br /> ----<br /> <br /> <br /> Yes, that's correct, but it's highly UE3-specific. In earlier engine generations replication of functions is specified in the replication block as well and repnotify/ReplicatedEvent() do not exist. —[[User:Wormbo|Wormbo]] 19:41, 12 October 2011 (UTC)<br /> <br /> <br /> ----<br /> <br /> <br /> Yes that is true. I wrote this with the UDK replication syntax in mind as that is what I needed to know for sure ;)<br /> <br /> Greatly appreciate you writing this document and confirming my verification question.<br /> <br /> --[[User:Omar007|Omar007]] 21:06, 12 October 2011 (UTC)<br /> <br /> <br /> ==Name type==<br /> Is it just me doing something wrong or is the replicating of Name variable types not possible? When I send a Name variable from server to client the client may receive 'bTrackMouse' when the server actually sent 'foo', it seems that the engine just sends the name index instead of sending the new name string for the client to register to its internal Names list, either that or I am doing it wrong?<br /> --[[User:Eliot|Eliot]] 12:31, 10 March 2014 (UTC)<br /> <br /> :Replicating names should work, as long as you don't use names from dynamically loaded packages or even names created at runtime. Names are just sent as name table index. —[[User:Wormbo|Wormbo]] 17:29, 10 March 2014 (UTC)<br /> <br /> ::Thanks for confirming my suspicion Wormbo!, that explains why QueueAnnouncement works. --[[User:Eliot|Eliot]] 18:50, 10 March 2014 (UTC)</div> Eliot https://wiki.beyondunreal.com/Talk:Everything_you_ever_wanted_to_know_about_replication_(but_were_afraid_to_ask)?diff=45952 Talk:Everything you ever wanted to know about replication (but were afraid to ask) 2014-03-10T18:50:43Z <p>Eliot: /* Name type */</p> <hr /> <div>Ah sorry for changing that i thought dynamic would make more sense and have still the same meaning so i dealt with it just like typos and adding categories to someone else his article. --Eliot 19:28, 13 August 2010 (UTC)<br /> <br /> == So if I get this right.... ==<br /> <br /> Ok if I understand this correctly:<br /> <br /> 1. The &lt;uscript&gt;replication{}&lt;/uscript&gt; block is used to update variables on the client(s). When this happens, depends on the variable used in the if-statement (ie bNetInitial) surrounding the variable.<br /> <br /> <br /> <br /> 2. To execute something after a variable is updated, mark the variable for replication notifications using 'repnotify': &lt;uscript&gt;var repnotify int myRepInt&lt;/uscript&gt;<br /> This calls the &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)&lt;/uscript&gt; function.<br /> &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)<br /> {<br /> if(VarName == 'myRepInt')<br /> {<br /> myActionOnRepIntChange();<br /> }<br /> else<br /> {<br /> super.ReplicatedEvent(VarName);<br /> }<br /> }&lt;/uscript&gt;<br /> <br /> <br /> <br /> 3. If we execute a function on the client (function has to be marked simulated for this) and it needs to be done on the server aswell (to update/notify change to all others),<br /> we need a reliable (or unreliable if it's not that big of a deal if it doesn't happen) server function (containing the same logic as the client function).<br /> &lt;uscript&gt;<br /> exec setMyRepInt()<br /> {<br /> initMyRepInt();<br /> }<br /> <br /> simulated function initMyRepInt()<br /> {<br /> myRepInt = 10;<br /> <br /> if(Role &lt; Role_Authority)<br /> {<br /> serverInitMyRepInt();<br /> }<br /> }<br /> <br /> reliable server function serverInitMyRepInt()<br /> {<br /> myRepInt = 10;<br /> }<br /> &lt;/uscript&gt;<br /> <br /> I hope this is correct and that if it is the code may enhance the tutorial/QA/overview of replication for others.<br /> {{unsigned|Omar007|19:49, 12 October 2011}}<br /> <br /> <br /> ----<br /> <br /> <br /> Yes, that's correct, but it's highly UE3-specific. In earlier engine generations replication of functions is specified in the replication block as well and repnotify/ReplicatedEvent() do not exist. —[[User:Wormbo|Wormbo]] 19:41, 12 October 2011 (UTC)<br /> <br /> <br /> ----<br /> <br /> <br /> Yes that is true. I wrote this with the UDK replication syntax in mind as that is what I needed to know for sure ;)<br /> <br /> Greatly appreciate you writing this document and confirming my verification question.<br /> <br /> --[[User:Omar007|Omar007]] 21:06, 12 October 2011 (UTC)<br /> <br /> <br /> ==Name type==<br /> Is it just me doing something wrong or is the replicating of Name variable types not possible? When I send a Name variable from server to client the client may receive 'bTrackMouse' when the server actually sent 'foo', it seems that the engine just sends the name index instead of sending the new name string for the client to register to its internal Names list, either that or I am doing it wrong?<br /> --[[User:Eliot|Eliot]] 12:31, 10 March 2014 (UTC)<br /> <br /> :Replicating names should work, as long as you don't use names from dynamically loaded packages or even names created at runtime. Names are just sent as name table index. —[[User:Wormbo|Wormbo]] 17:29, 10 March 2014 (UTC)<br /> <br /> ::Thanks for confirming my suspicion, that explains why QueueAnnouncement works. Wormbo. --[[User:Eliot|Eliot]] 18:50, 10 March 2014 (UTC)</div> Eliot https://wiki.beyondunreal.com/Talk:Everything_you_ever_wanted_to_know_about_replication_(but_were_afraid_to_ask)?diff=45950 Talk:Everything you ever wanted to know about replication (but were afraid to ask) 2014-03-10T12:31:38Z <p>Eliot: </p> <hr /> <div>Ah sorry for changing that i thought dynamic would make more sense and have still the same meaning so i dealt with it just like typos and adding categories to someone else his article. --Eliot 19:28, 13 August 2010 (UTC)<br /> <br /> == So if I get this right.... ==<br /> <br /> Ok if I understand this correctly:<br /> <br /> 1. The &lt;uscript&gt;replication{}&lt;/uscript&gt; block is used to update variables on the client(s). When this happens, depends on the variable used in the if-statement (ie bNetInitial) surrounding the variable.<br /> <br /> <br /> <br /> 2. To execute something after a variable is updated, mark the variable for replication notifications using 'repnotify': &lt;uscript&gt;var repnotify int myRepInt&lt;/uscript&gt;<br /> This calls the &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)&lt;/uscript&gt; function.<br /> &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)<br /> {<br /> if(VarName == 'myRepInt')<br /> {<br /> myActionOnRepIntChange();<br /> }<br /> else<br /> {<br /> super.ReplicatedEvent(VarName);<br /> }<br /> }&lt;/uscript&gt;<br /> <br /> <br /> <br /> 3. If we execute a function on the client (function has to be marked simulated for this) and it needs to be done on the server aswell (to update/notify change to all others),<br /> we need a reliable (or unreliable if it's not that big of a deal if it doesn't happen) server function (containing the same logic as the client function).<br /> &lt;uscript&gt;<br /> exec setMyRepInt()<br /> {<br /> initMyRepInt();<br /> }<br /> <br /> simulated function initMyRepInt()<br /> {<br /> myRepInt = 10;<br /> <br /> if(Role &lt; Role_Authority)<br /> {<br /> serverInitMyRepInt();<br /> }<br /> }<br /> <br /> reliable server function serverInitMyRepInt()<br /> {<br /> myRepInt = 10;<br /> }<br /> &lt;/uscript&gt;<br /> <br /> I hope this is correct and that if it is the code may enhance the tutorial/QA/overview of replication for others.<br /> {{unsigned|Omar007|19:49, 12 October 2011}}<br /> <br /> <br /> ----<br /> <br /> <br /> Yes, that's correct, but it's highly UE3-specific. In earlier engine generations replication of functions is specified in the replication block as well and repnotify/ReplicatedEvent() do not exist. —[[User:Wormbo|Wormbo]] 19:41, 12 October 2011 (UTC)<br /> <br /> <br /> ----<br /> <br /> <br /> Yes that is true. I wrote this with the UDK replication syntax in mind as that is what I needed to know for sure ;)<br /> <br /> Greatly appreciate you writing this document and confirming my verification question.<br /> <br /> --[[User:Omar007|Omar007]] 21:06, 12 October 2011 (UTC)<br /> <br /> <br /> ==Name type==<br /> Is it just me doing something wrong or is the replicating of Name variable types not possible? When I send a Name variable from server to client the client may receive 'bTrackMouse' when the server actually sent 'foo', it seems that the engine just sends the name index instead of sending the new name string for the client to register to its internal Names list, either that or I am doing it wrong?<br /> --[[User:Eliot|Eliot]] 12:31, 10 March 2014 (UTC)</div> Eliot https://wiki.beyondunreal.com/Talk:Everything_you_ever_wanted_to_know_about_replication_(but_were_afraid_to_ask)?diff=45949 Talk:Everything you ever wanted to know about replication (but were afraid to ask) 2014-03-10T12:31:14Z <p>Eliot: </p> <hr /> <div>Ah sorry for changing that i thought dynamic would make more sense and have still the same meaning so i dealt with it just like typos and adding categories to someone else his article. --Eliot 19:28, 13 August 2010 (UTC)<br /> <br /> == So if I get this right.... ==<br /> <br /> Ok if I understand this correctly:<br /> <br /> 1. The &lt;uscript&gt;replication{}&lt;/uscript&gt; block is used to update variables on the client(s). When this happens, depends on the variable used in the if-statement (ie bNetInitial) surrounding the variable.<br /> <br /> <br /> <br /> 2. To execute something after a variable is updated, mark the variable for replication notifications using 'repnotify': &lt;uscript&gt;var repnotify int myRepInt&lt;/uscript&gt;<br /> This calls the &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)&lt;/uscript&gt; function.<br /> &lt;uscript&gt;simulated event ReplicatedEvent(name VarName)<br /> {<br /> if(VarName == 'myRepInt')<br /> {<br /> myActionOnRepIntChange();<br /> }<br /> else<br /> {<br /> super.ReplicatedEvent(VarName);<br /> }<br /> }&lt;/uscript&gt;<br /> <br /> <br /> <br /> 3. If we execute a function on the client (function has to be marked simulated for this) and it needs to be done on the server aswell (to update/notify change to all others),<br /> we need a reliable (or unreliable if it's not that big of a deal if it doesn't happen) server function (containing the same logic as the client function).<br /> &lt;uscript&gt;<br /> exec setMyRepInt()<br /> {<br /> initMyRepInt();<br /> }<br /> <br /> simulated function initMyRepInt()<br /> {<br /> myRepInt = 10;<br /> <br /> if(Role &lt; Role_Authority)<br /> {<br /> serverInitMyRepInt();<br /> }<br /> }<br /> <br /> reliable server function serverInitMyRepInt()<br /> {<br /> myRepInt = 10;<br /> }<br /> &lt;/uscript&gt;<br /> <br /> I hope this is correct and that if it is the code may enhance the tutorial/QA/overview of replication for others.<br /> {{unsigned|Omar007|19:49, 12 October 2011}}<br /> <br /> <br /> ----<br /> <br /> <br /> Yes, that's correct, but it's highly UE3-specific. In earlier engine generations replication of functions is specified in the replication block as well and repnotify/ReplicatedEvent() do not exist. —[[User:Wormbo|Wormbo]] 19:41, 12 October 2011 (UTC)<br /> <br /> <br /> ----<br /> <br /> <br /> Yes that is true. I wrote this with the UDK replication syntax in mind as that is what I needed to know for sure ;)<br /> <br /> Greatly appreciate you writing this document and confirming my verification question.<br /> <br /> --[[User:Omar007|Omar007]] 21:06, 12 October 2011 (UTC)<br /> <br /> <br /> Is it just me doing something wrong or is the replicating of Name variable types not possible? When I send a Name variable from server to client the client may receive 'bTrackMouse' when the server actually sent 'foo', it seems that the engine just sends the name index instead of sending the new name string for the client to register to its internal Names list, either that or I am doing it wrong?<br /> --[[User:Eliot|Eliot]] 12:31, 10 March 2014 (UTC)</div> Eliot https://wiki.beyondunreal.com/Import?diff=45945 Import 2014-02-27T21:03:57Z <p>Eliot: New page for the keyword &quot;Import&quot;, does anybody else know about this? This seems to compile and have an affect on the data in the compiled .u files, but the practical uses seems questionable!</p> <hr /> <div>The [[UnrealScript]] keyword &quot;'''Import'''&quot; provides a way to define imports at the [[class]]es' scope. This keyword is officially undocumented and nowhere used by [[Epic Games]], although it is available and compilable in the [[Unreal Engine]] 1 and 2. The keyword has been used by some licensees of the Unreal Engine.<br /> <br /> ==Syntax==<br /> The import syntax looks like this:<br /> '''import''' '''package|enum|struct|class''' [[type]] ''['''from''' package]''';'''<br /> <br /> ===Importing packages===<br /> '''import''' '''package''' Engine''';'''<br /> <br /> ''Note'': Works but the purpose of this is unknown.<br /> <br /> <br /> ===Importing [[enum]]s===<br /> '''import''' '''enum''' EDrawType '''from''' Engine''';'''<br /> <br /> ''Note'': Crashes the the compiler, maybe wrong code?<br /> <br /> ===Example===<br /> A complete example:<br /> class MyActor extends Actor;<br /> import package Engine;<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/User:Eliot?diff=45491 User:Eliot 2013-09-25T19:34:41Z <p>Eliot: Added description for AccessPlus(An admin utility)</p> <hr /> <div>Welcome to Eliot's UnrealWiki page. I'm known for the Trials community modding work that I've done for Unreal Tournament 2004. <br /> <br /> This page is a collection of UT2004 mods I have made or contributed.<br /> <br /> ==Contact==<br /> ; ''Website'': [http://eliotvu.com http://EliotVU.com] - Resume, Blog, Forum, and Portfolio<br /> ; ''Forum'': ''Eliot'' on [http://epicgames.com/member.php?u=1262617 Epic Games Forums]<br /> <br /> ==Mutators==<br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/LevelConfigManager|LevelConfigManager]]''' ''(2006-2009)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :An [[UnrealEd]] Mutator allowing you to modify the map gameplay to your choice.<br /> <br /> :'''Comment:''' This is a very often used [[UE2:Mutator (UT2004)|mutator]] in Assault Trial maps and is usually a must use today; mainly because of the '''DefaultWeapons''' feature.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/3/levelconfigmanager EliotVU.com](w/''source'')<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/MutNoAutoFire|MutNoAutoFire]]''' ''(2006-2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :Replaces those annoying ShieldGun's that auto fire when being close to a player of your team, '''Note''':Replaces the [[UE2:Pawn (UT2004)|pawn]] class if it is [[UE2:xPawn (UT2004)|xpawn]] or UTComp_Pawn, will not function properly if other mutators replacing the pawn class are running!<br /> <br /> :'''Comment:''' This is a very often used mutator in Assault Trial servers because this [[UE2:Mutator (UT2004)|mutator]] fixes common exploits of the game such as [[UE2:Mover (UT2004)|movers]] not moving anymore in some cases and as well kills people that try to glitch through idling [[UE2:Mover (UT2004)|movers]](such as non-complex doors), this [[UE2:Mutator (UT2004)|mutator]] as well lets you configure the color of the [[UE2:ShieldGun (UT2004)|ShieldGun]] and let you choose your own suicide message and many more.<br /> <br /> :'''Credits:''' [[User:.:..:|.:..:]] for contributing ideas and features.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/4/mutnoautofire EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/MutBestTimes|MutBestTimes]]''' ''(2005-2012)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :Records Best MapTime completion, Player Rankings, Website stats([http://elitetrial.clanservers.com/WebBTimes.html Example]), Client Spawn and (Solo Trial mode, Group Trial mode support) and many more small features.<br /> <br /> :'''Comment:''' Private trials [[UE2:Mutator (UT2004)|mutator]] for my favorite servers.<br /> <br /> :'''Credits:''' [[User:.:..:|.:..:]] he made the very first version/s''(2005-2006)'' of this mutator then retired, which I continued then''(2007)'', [[User:Gugi|Gugi]] for fixing some iteration issue in the custom VotingHandler that they experienced only on their server.<br /> <br /> :'''Stats:''' [http://elitetrial.clanservers.com/WebBTimes/ WebBTimes] An UnrealScript generated page displaying all map records on the web. <br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/MutAccessPlus|AccessPlus]]''' ''(2006)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :An administrator mutator. AccessPlus was an '''admin''' utility designed for the once called UT2X community server. AccessPlus was based on '''AdminPlus''', adding dozen more admin commands to manage your server.<br /> <br /> :What made '''AccessPlus''' unique is that it keeps track of all players connecting to the server and each of his/her alias name, upon connecting every name ever used will be to displayed to the server players and admins. Additionally the server will alert when a player connecting is downloading a file directly from the server, which is useful because it is an indication that a file is not redirected, the file being downloaded will be messaged.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MultiDodgeShieldGun''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :This gun is an extension of the modified ShieldGun of ''MutNoAutoFire'', the difference is that whenever you hit a wall you will be able to dodge once again, the purpose of this is to make it possible for mappers to make more new and fresh Trial maps for dedicated players.<br /> <br /> :'''Comment:''' This mod has a hardcoded dependency on a specific version of MutNoAutoFire; the version of this mod is equal to the mutator version it depends on.<br /> <br /> :'''Credits:''' .:..: for an replication issue and Lt.Ryan for the idea suggestion.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutDodgeJump''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :Allows players to jump again after they have dodged once (optional).<br /> <br /> :'''Comment:''' MutDodgeJump was the first second mutator released for [[UT3]]. The mutator was very well accepted by the community however old-skool players from [[UT]] did not for obvious reasons.<br /> <br /> :'''Credits:''' Mysterial for explaining some replication.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/33/mutdodgejump EliotVU.com]<br /> <br /> :'''Discussion''' [http://utforums.epicgames.com/showthread.php?t=585114 DodgeJump on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''UTTrials''' ''(17-11-2007)''&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :This was the awaited Trials gametype for UT3 which was unfortunately canceled due the lack of UT3 interest. This gametype adds back the Objectives system of Assault to UT3 for usage in Trial maps. The gametype supports records, DodgeJump, Enhanced ImpactHammer, Enhanced Scoreboard(and HUD) and many other essential features that UT3 Trials might have liked as well introducing a new Trial mode such as Survival, the gametype was planned to support 3 Trial modes: Solo(Like BT), Team(Like UT2K4) and Survival(New).<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutXMasPresents''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> <br /> :Presents from Santa will be available throughout the maps played on your server.<br /> <br /> :'''Credits:''' [[Legacy:Soto|Vincent]] for making the meshes provided with this mutator.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/34/mutxmaspresents EliotVU.com]<br /> <br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=590571 MutXMasPresents on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutEmoticons''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :Replaces the current played gametype HUD with a SmileyHud which replaces common used text smileys such as ':)' to a smiley image like on chat programs such as MSN.<br /> <br /> :'''Credits:''' [[User:.:..:|.:..:]] The HUD ''code'' was written by him for his Unreal 1 port and InvasionX which I converted to a mutator with replicated configurable smileys.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/38/mutemoticons EliotVU.com]<br /> <br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=595516 MutEmoticons on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutCacheExtractor''' ''(2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :Lets you extract cache files from within the game even online!<br /> <br /> :'''Comment:''' This is a [[UE2:Mutator (UT2004)|mutator]] that should be hosted on the server.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/35/mutcacheextractor-ingame-cache-extractor EliotVU.com]<br /> <br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?p=26997032#post26997032 MutCacheExtractor on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''TrialGroup''' ''((21-29)-04-2010)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :Provides functionality for mappers to integrate a group system which an external mutator is supposed to support for actually usage.<br /> <br /> :'''Comment:''' Provides several actors for trial mappers to make a team-trial map possible without cheating.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/36/trialgroup EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MomentumReflectorGun''' ''((3-6)-07-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :The Momentum Reflector Gun is a subclass of the LinkGun but instead of killing opponents, the gun is used to climb upon walls using precise aiming that may or may not require advanced skills depending on the challenge available in Trial maps.<br /> <br /> :'''Comment:''' This gun is a imitation of the Quake 3 Plasma Gun, for the use of wall climbing see: [[wp:DeFRaG#Weapon_techniques|Weapon Techniques]].<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/37/momentum-reflector-gun EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutEquipmentLevel''' ''(13-09-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :This mutator removes all the initial weapons you spawn with, except for the ShieldGun. Once a kill is made you will lose the ShieldGun and earn the AssaultRifle and so on. Once you suicide(or accident) you de-level meaning you'd lose the AssaultRifle and start again with the ShieldGun, you as well lose your score. Winning is not affected by this mutator.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;background-color: #fefefe; border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''TrialGroup_Extra''' ''(20-03-2011)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :See above: TrialGroup. Adds an additional GroupLinkedTriggerVolume for TrialGroup Level Designers. This volume provides the L.D the ability to make more complex challenges for Group Trial players, by linking several volumes together which all have to be filled with a partition of the players of that group in order to trigger the event and move on to the followed up challenge.<br /> &lt;/div&gt;<br /> <br /> ==UT2004 Maps==<br /> '''AS-MD-Scorpion-Escape''' ''(2004)''<br /> :'''Description:''' An normal assault story map where you start off with vehicles(the scorpions) where you have to break through several blocking environments such as crates that are blocking the drivers path, as well survive from the defenders that try make you fail.<br /> :'''Versions:''' Beta(1,2,3,4,5).<br /> :'''Credits:''' Jamie1224 for adding bot support and tweaking minor things.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=389359 AS-MD-Scorpion-Escape-Beta5 on Epic Games forums]<br /> <br /> '''AS-RoomTrials''' originally named '''AS-MD-RoomTrials''' ''(2004)''<br /> :'''Description:''' In this trials level you have to solve several trial rooms to escape the building.<br /> :'''Versions:''' Beta(2,3,4,5,6,7), V1, V2 and V3.<br /> :'''Influences:''' In early versions there was a glitch which allowed you to land on the top of spikes, it was meant to wall dodge over these however soon ''hqf'' found out you can glitch those spikes and thus was later used on purpose in his map '''AS-TheEgyptianPyramid''', from there on this became a basic idea used in many trial maps.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=416526 AS-MD-RoomTrials-V1 on Epic Games forums] or [http://utforums.epicgames.com/showthread.php?t=402344 AS-MD-RoomTrials-Beta5 on Epic Games forums], hehe good times...<br /> <br /> '''AS-LifeTrials''' originally named '''AS-MD-LifeTrials''' ''(2005)''<br /> :'''Versions:''' V1 and V1B. <br /> <br /> '''AS-Antaro-Trial''' ''(2005)''<br /> <br /> '''AS-Fact-Trial''' ''(2005)''<br /> <br /> '''AS-Mayan-Secret-UG-Trials''' ''(2006)''<br /> :'''Versions:''' Beta(01,02,03,04)<br /> <br /> '''AS-AbaddonTrials''' ''(2006)''<br /> :'''Description:''' Solve the challenges of Abaddon!<br /> :'''Custom Dependencies:''' ''DPM2Base'', ''AbaddonShield'' and ''EliotTFAMap''.<br /> <br /> '''AS-EgyptianRoomTrials''' ''(2006)''<br /> <br /> '''AS-ShieldGunTech''' ''(2006)''<br /> :'''Description:''' Complete the 6 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V1, V1-Fixed and Final.<br /> <br /> '''AS-ShieldGunBase''' ''(2006)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V(1,2,2-Easy,3,4,4B).<br /> :'''Credits:''' [[User:Mr Evil|Mr Evil]] for BootsOfJumping.<br /> <br /> '''AS-PortalTrials''' ''(2006)''<br /> :'''Description:''' Solve some complex thinking challenges with the PortalGun!<br /> :'''Credits:''' [[Legacy:Shambler|Shambler]] for making the PortalGun, see [http://utforums.epicgames.com/showthread.php?t=530848&amp;highlight=Portalgun PortalGun].<br /> <br /> '''AS-Constructor-BuildZone_Alpha''' ''(2006)''<br /> :'''Description:''' This was the first UT2004 map where you could create things with the [[UE2:Mutator (UT2004)|mutator]] ConstructorGun!<br /> :'''Versions:''' Alpha, V2-Night and V2B-Night.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for making the ConstructorGun and expanding this map by adding an outside.<br /> <br /> '''AS-ShieldGunSensitivity''' ''(2007)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!, but in this one you must watch out for dangerous surfaces!<br /> <br /> '''AS-BloodOnTheFloor''' ''(2008)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-QuickChallenge-NAME-NUMBER Series''' ''(2008)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-BlackHeaven''' ''(2009)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-Solo-Eliot'sTrial''' ''(2009)''<br /> :'''Description:''' Mystic abaddon trial base in the darkness, found on the planet AbissoDno.<br /> :'''Credits:''' iMouNdeee, Billa, Vinc3h and f`.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14432341/AS-Solo-EliotsTrial Download from www.filefront.com]. Depedencies not included!<br /> :'''Custom Dependencies:''' ''LevelConfigManagerV2C'', ''LevelConfigManagerV2E'', ''DoorsMod'', ''AmbModern'' and ''DoorsAnc''.<br /> <br /> '''AS-Solo-TechChallenge-NUMBER Series''' ''(2009)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-Solo-CratesBase''' ''(2009)''<br /> :'''Description:''' A really short map made for the purpose of setting time records.<br /> <br /> ==Textures==<br /> ===TechTexPackage===<br /> TechTexPackage is a simple theme originally designed for '''AS-ShieldGunTech''' which shortly became very popular and is used today on almost every new trials map, some people call it as the ''Trials Theme'' because it fits trials very well, though this theme is perfectly usable for any other gametypes.<br /> <br /> Most of the content in the texture packages are Shaders which are usually based on the base texture with an added special effect that is self-made or standard from the UT2004 packages such as '''XEffectMat''' etc, all texture resolutions are max ''512x512''.<br /> <br /> '''TechTexPackage''' ''(2.461KB)'' ''(2006)''<br /> :'''Textures:''' 17, most are build upon the base texture included in this package, this applies as well to the other TechPackages.<br /> <br /> '''TechTexPackage2''' ''(2.397KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''TechTexPackage3''' ''(2.054KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''.<br /> <br /> '''TechTexPackage4''' ''(2.052KB)'' ''(2007)''<br /> :'''Textures:''' 3.<br /> :'''Custom Dependencies:''' ''TechTexPackage'' and ''TechTexPackage3''. <br /> <br /> '''TechTexPackage5''' ''(5.153KB)'' ''(2008-2009)''<br /> :'''Textures:''' 26. <br /> :'''Custom Dependencies:''' ''TechTexPackage'', ''TechTexPackage2'', ''TechTexPackage3'' and ''TechTexPackage4''.<br /> <br /> '''TechTexPackage6''' ''(2.051KB)'' ''(unreleased)'' ''(2010)''<br /> :'''Textures:''' 7. <br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''Credits:''' Epic Games because many stock textures were merged together to make certain themes fit together with this theme, Billa for contributing [[Shader]]s and suggesting design ideas.<br /> '''Download Mirrors:'''<br /> : * [http://www.filefront.com/17134664/TechTexPackage-1-5/ Download from www.filefront.com]<br /> <br /> '''Screenshots:'''<br /> : * [http://screenshot.xfire.com/s/107620730-3.jpg Screen 1 of Tech Textures in use inc the MutBestTimes scoreboard] <br /> : * [http://screenshot.xfire.com/s/102840427-3.jpg Screen 2] [http://screenshot.xfire.com/s/108066806-3.jpg Screen 3] [http://screenshot.xfire.com/s/108066812-3.jpg Screen 4] [http://screenshot.xfire.com/s/108066816-3.jpg Screen 5] [http://screenshot.xfire.com/s/108066821-3.jpg Screen 6] [http://screenshot.xfire.com/s/108066825-3.jpg Screen 7]<br /> : * [http://screenshot.xfire.com/s/108066828-3.jpg Screen 8] [http://screenshot.xfire.com/s/108066837-3.jpg Screen 9] [http://screenshot.xfire.com/s/108066842-3.jpg Screen 10] [http://screenshot.xfire.com/s/108066845-3.jpg Screen 11] [http://screenshot.xfire.com/s/108066850-3.jpg Screen 12] [http://screenshot.xfire.com/s/108066853-3.jpg Screen 13] [http://screenshot.xfire.com/s/108066861-3.jpg Screen 14]<br /> <br /> ;TechTexPackage 1<br /> : * [http://screenshot.xfire.com/s/108066791-3.jpg Screen 1] [http://screenshot.xfire.com/s/108066801-3.jpg Screen 2]<br /> <br /> ==Tutorials==<br /> * [[User:Eliot/UE2:AddingCustomTabsToPlayerLoginMenu_(UT2004)|AddingCustomTabsToPlayerLoginMenu]]&lt;sup&gt;UT2004&lt;/sup&gt;<br /> * [[User:Eliot/Modify Players|Modify Players]]<br /> * [[Legacy:VertexToolTutorial|VertexToolTutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UE2:InfoPod (Tutorial)|InfoPod Tutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UnrealScript Hello World]]<br /> <br /> ==Utils==<br /> * [[User:Eliot/ColorTags Operators|ColorTags Operators]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> <br /> ==Projects==<br /> ===UE Explorer=== <br /> See [[User:Eliot/UE Explorer|UE Explorer]]<br /> <br /> '''Purpose:''' The purpose of this application was to learn C#, .NET and especially the UnrealPackage format.</div> Eliot https://wiki.beyondunreal.com/User:Eliot?diff=45490 User:Eliot 2013-09-25T19:09:44Z <p>Eliot: /* Mutators */ Improved item styling.</p> <hr /> <div>Welcome to my personal page, if you don't know me yet, well to begin I live in [[wp:Belgium|Belgium]] and my name is '''Eliot Van Uytfanghe''', I'm usually playing with my real name '''Eliot'''. I have been playing the [[Unreal Tournament]] series since [[UT]] Classic, and I started developing maps for [[UT2004]] since its release, and eventually somewhere around 2006 I started programming in [[UnrealScript]] to develop mutators and other minor things, mainly for the Trials community.<br /> <br /> Since november 27 2009; I have started to make some programs with [[wp:C#|C#]] for the purpose of learning C# and making myself more familiar with the [[Unreal Engine]] file formats, I have started developing '''UE Explorer''' this program has multiple utilities such as a [[color tags]] Generator with preview, Cache Extractor and best of all a powerful UnrealScript decompiler that supports [[Unreal]] to [[Unreal Development Kit]] etc.<br /> <br /> ==Contact==<br /> ; ''Website:'' [http://eliotvu.com Eliot]<br /> ; ''Forum:'' [http://utforums.epicgames.com/member.php?u=1262617 Epic Games Forums]<br /> <br /> ==Mutators==<br /> &lt;div style=&quot;border:1px solid #ededed;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/LevelConfigManager|LevelConfigManager]]''' ''(2006-2009)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' A [[UnrealEd]] Mutator allowing you to modify the map gameplay to your choice.<br /> <br /> :'''Comment:''' This is a very often used [[UE2:Mutator (UT2004)|mutator]] in Assault Trial maps and is usually a must use today; mainly because of the '''DefaultWeapons''' feature.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/3/levelconfigmanager EliotVU.com](w/''source'')<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/MutNoAutoFire|MutNoAutoFire]]''' ''(2006-2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces those annoying ShieldGun's that auto fire when being close to a player of your team, '''Note''':Replaces the [[UE2:Pawn (UT2004)|pawn]] class if it is [[UE2:xPawn (UT2004)|xpawn]] or UTComp_Pawn, will not function properly if other mutators replacing the pawn class are running!<br /> <br /> :'''Comment:''' This is a very often used mutator in Assault Trial servers because this [[UE2:Mutator (UT2004)|mutator]] fixes common exploits of the game such as [[UE2:Mover (UT2004)|movers]] not moving anymore in some cases and as well kills people that try to glitch through idling [[UE2:Mover (UT2004)|movers]](such as non-complex doors), this [[UE2:Mutator (UT2004)|mutator]] as well lets you configure the color of the [[UE2:ShieldGun (UT2004)|ShieldGun]] and let you choose your own suicide message and many more.<br /> <br /> :'''Credits:''' [[User:.:..:|.:..:]] for contributing ideas and features.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/4/mutnoautofire EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/MutBestTimes|MutBestTimes]]''' ''(2005-2012)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Records Best MapTime completion, Player Rankings, Website stats([http://elitetrial.clanservers.com/WebBTimes.html Example]), Client Spawn and (Solo Trial mode, Group Trial mode support) and many more small features.<br /> <br /> :'''Comment:''' Private trials [[UE2:Mutator (UT2004)|mutator]] for my favorite servers.<br /> <br /> :'''Credits:''' [[User:.:..:|.:..:]] he made the very first version/s''(2005-2006)'' of this mutator then retired, which I continued then''(2007)'', [[User:Gugi|Gugi]] for fixing some iteration issue in the custom VotingHandler that they experienced only on their server.<br /> <br /> :'''Stats:''' [http://elitetrial.clanservers.com/WebBTimes/ WebBTimes] An UnrealScript generated page displaying all map records on the web. <br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''[[User:Eliot/MutAccessPlus|AccessPlus]]''' ''(2006)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Comment:''' Private admin [[UE2:Mutator (UT2004)|mutator]] for our ut2x server but now used by the public though there was never a official release. This mutator is made by [[User:.:..:|.:..:]], I only contributed to it because it was made for our server.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MultiDodgeShieldGun''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This gun is an extension of the modified ShieldGun of ''MutNoAutoFire'', the difference is that whenever you hit a wall you will be able to dodge once again, the purpose of this is to make it possible for mappers to make more new and fresh Trial maps for dedicated players.<br /> <br /> :'''Comment:''' This mod has a hardcoded dependency on a specific version of MutNoAutoFire; the version of this mod is equal to the mutator version it depends on.<br /> <br /> :'''Credits:''' .:..: for an replication issue and Lt.Ryan for the idea suggestion.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutDodgeJump''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Allows players to jump again after they have dodged once (optional).<br /> <br /> :'''Comment:''' MutDodgeJump was the first second mutator released for [[UT3]]. The mutator was very well accepted by the community however old-skool players from [[UT]] did not for obvious reasons.<br /> <br /> :'''Credits:''' Mysterial for explaining some replication.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/33/mutdodgejump EliotVU.com]<br /> <br /> :'''Discussion''' [http://utforums.epicgames.com/showthread.php?t=585114 DodgeJump on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''UTTrials''' ''(17-11-2007)''&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This was the awaited Trials gametype for UT3 which was unfortunately canceled due the lack of UT3 interest. This gametype adds back the Objectives system of Assault to UT3 for usage in Trial maps. The gametype supports records, DodgeJump, Enhanced ImpactHammer, Enhanced Scoreboard(and HUD) and many other essential features that UT3 Trials might have liked as well introducing a new Trial mode such as Survival, the gametype was planned to support 3 Trial modes: Solo(Like BT), Team(Like UT2K4) and Survival(New).<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutXMasPresents''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> <br /> :'''Description:''' Presents from Santa will be available throughout the maps played on your server.<br /> <br /> :'''Credits:''' [[Legacy:Soto|Vincent]] for making the meshes provided with this mutator.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/34/mutxmaspresents EliotVU.com]<br /> <br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=590571 MutXMasPresents on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutEmoticons''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces the current played gametype HUD with a SmileyHud which replaces common used text smileys such as ':)' to a smiley image like on chat programs such as MSN.<br /> <br /> :'''Credits:''' [[User:.:..:|.:..:]] The HUD ''code'' was written by him for his Unreal 1 port and InvasionX which I converted to a mutator with replicated configurable smileys.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/38/mutemoticons EliotVU.com]<br /> <br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=595516 MutEmoticons on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutCacheExtractor''' ''(2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Let's you extract cache files from within the game even online!<br /> <br /> :'''Comment:''' This is a [[UE2:Mutator (UT2004)|mutator]] that should be hosted on the server.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/35/mutcacheextractor-ingame-cache-extractor EliotVU.com]<br /> <br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?p=26997032#post26997032 MutCacheExtractor on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''TrialGroup''' ''((21-29)-04-2010)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Provides functionality for mappers to integrate a group system which an external mutator is supposed to support for actually usage.<br /> <br /> :'''Comment:''' Provides several actors for trial mappers to make a team-trial map possible without cheating.<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/36/trialgroup EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MomentumReflectorGun''' ''((3-6)-07-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' The Momentum Reflector Gun is a subclass of the LinkGun but instead of killing opponents, the gun is used to climb upon walls using precise aiming that may or may not require advanced skills depending on the challenge available in Trial maps.<br /> <br /> :'''Comment:''' This gun is a imitation of the Quake 3 Plasma Gun, for the use of wall climbing see: [[wp:DeFRaG#Weapon_techniques|Weapon Techniques]].<br /> <br /> :'''Download:''' [http://eliotvu.com/portfolio/view/37/momentum-reflector-gun EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''MutEquipmentLevel''' ''(13-09-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This mutator removes all the initial weapons you spawn with, except for the ShieldGun. Once a kill is made you will lose the ShieldGun and earn the AssaultRifle and so on. Once you suicide(or accident) you de-level meaning you'd lose the AssaultRifle and start again with the ShieldGun, you as well lose your score. Winning is not affected by this mutator.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #ededed; margin-top: 8px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:10px;&quot;&gt;<br /> '''TrialGroup_Extra''' ''(20-03-2011)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' See above: TrialGroup. Adds an additional GroupLinkedTriggerVolume for TrialGroup Level Designers. This volume provides the L.D the ability to make more complex challenges for Group Trial players, by linking several volumes together which all have to be filled with a partition of the players of that group in order to trigger the event and move on to the followed up challenge.<br /> &lt;/div&gt;<br /> <br /> ==UT2004 Maps==<br /> '''AS-MD-Scorpion-Escape''' ''(2004)''<br /> :'''Description:''' An normal assault story map where you start off with vehicles(the scorpions) where you have to break through several blocking environments such as crates that are blocking the drivers path, as well survive from the defenders that try make you fail.<br /> :'''Versions:''' Beta(1,2,3,4,5).<br /> :'''Credits:''' Jamie1224 for adding bot support and tweaking minor things.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=389359 AS-MD-Scorpion-Escape-Beta5 on Epic Games forums]<br /> <br /> '''AS-RoomTrials''' originally named '''AS-MD-RoomTrials''' ''(2004)''<br /> :'''Description:''' In this trials level you have to solve several trial rooms to escape the building.<br /> :'''Versions:''' Beta(2,3,4,5,6,7), V1, V2 and V3.<br /> :'''Influences:''' In early versions there was a glitch which allowed you to land on the top of spikes, it was meant to wall dodge over these however soon ''hqf'' found out you can glitch those spikes and thus was later used on purpose in his map '''AS-TheEgyptianPyramid''', from there on this became a basic idea used in many trial maps.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=416526 AS-MD-RoomTrials-V1 on Epic Games forums] or [http://utforums.epicgames.com/showthread.php?t=402344 AS-MD-RoomTrials-Beta5 on Epic Games forums], hehe good times...<br /> <br /> '''AS-LifeTrials''' originally named '''AS-MD-LifeTrials''' ''(2005)''<br /> :'''Versions:''' V1 and V1B. <br /> <br /> '''AS-Antaro-Trial''' ''(2005)''<br /> <br /> '''AS-Fact-Trial''' ''(2005)''<br /> <br /> '''AS-Mayan-Secret-UG-Trials''' ''(2006)''<br /> :'''Versions:''' Beta(01,02,03,04)<br /> <br /> '''AS-AbaddonTrials''' ''(2006)''<br /> :'''Description:''' Solve the challenges of Abaddon!<br /> :'''Custom Dependencies:''' ''DPM2Base'', ''AbaddonShield'' and ''EliotTFAMap''.<br /> <br /> '''AS-EgyptianRoomTrials''' ''(2006)''<br /> <br /> '''AS-ShieldGunTech''' ''(2006)''<br /> :'''Description:''' Complete the 6 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V1, V1-Fixed and Final.<br /> <br /> '''AS-ShieldGunBase''' ''(2006)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V(1,2,2-Easy,3,4,4B).<br /> :'''Credits:''' [[User:Mr Evil|Mr Evil]] for BootsOfJumping.<br /> <br /> '''AS-PortalTrials''' ''(2006)''<br /> :'''Description:''' Solve some complex thinking challenges with the PortalGun!<br /> :'''Credits:''' [[Legacy:Shambler|Shambler]] for making the PortalGun, see [http://utforums.epicgames.com/showthread.php?t=530848&amp;highlight=Portalgun PortalGun].<br /> <br /> '''AS-Constructor-BuildZone_Alpha''' ''(2006)''<br /> :'''Description:''' This was the first UT2004 map where you could create things with the [[UE2:Mutator (UT2004)|mutator]] ConstructorGun!<br /> :'''Versions:''' Alpha, V2-Night and V2B-Night.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for making the ConstructorGun and expanding this map by adding an outside.<br /> <br /> '''AS-ShieldGunSensitivity''' ''(2007)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!, but in this one you must watch out for dangerous surfaces!<br /> <br /> '''AS-BloodOnTheFloor''' ''(2008)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-QuickChallenge-NAME-NUMBER Series''' ''(2008)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-BlackHeaven''' ''(2009)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-Solo-Eliot'sTrial''' ''(2009)''<br /> :'''Description:''' Mystic abaddon trial base in the darkness, found on the planet AbissoDno.<br /> :'''Credits:''' iMouNdeee, Billa, Vinc3h and f`.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14432341/AS-Solo-EliotsTrial Download from www.filefront.com]. Depedencies not included!<br /> :'''Custom Dependencies:''' ''LevelConfigManagerV2C'', ''LevelConfigManagerV2E'', ''DoorsMod'', ''AmbModern'' and ''DoorsAnc''.<br /> <br /> '''AS-Solo-TechChallenge-NUMBER Series''' ''(2009)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-Solo-CratesBase''' ''(2009)''<br /> :'''Description:''' A really short map made for the purpose of setting time records.<br /> <br /> ==Textures==<br /> ===TechTexPackage===<br /> TechTexPackage is a simple theme originally designed for '''AS-ShieldGunTech''' which shortly became very popular and is used today on almost every new trials map, some people call it as the ''Trials Theme'' because it fits trials very well, though this theme is perfectly usable for any other gametypes.<br /> <br /> Most of the content in the texture packages are Shaders which are usually based on the base texture with an added special effect that is self-made or standard from the UT2004 packages such as '''XEffectMat''' etc, all texture resolutions are max ''512x512''.<br /> <br /> '''TechTexPackage''' ''(2.461KB)'' ''(2006)''<br /> :'''Textures:''' 17, most are build upon the base texture included in this package, this applies as well to the other TechPackages.<br /> <br /> '''TechTexPackage2''' ''(2.397KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''TechTexPackage3''' ''(2.054KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''.<br /> <br /> '''TechTexPackage4''' ''(2.052KB)'' ''(2007)''<br /> :'''Textures:''' 3.<br /> :'''Custom Dependencies:''' ''TechTexPackage'' and ''TechTexPackage3''. <br /> <br /> '''TechTexPackage5''' ''(5.153KB)'' ''(2008-2009)''<br /> :'''Textures:''' 26. <br /> :'''Custom Dependencies:''' ''TechTexPackage'', ''TechTexPackage2'', ''TechTexPackage3'' and ''TechTexPackage4''.<br /> <br /> '''TechTexPackage6''' ''(2.051KB)'' ''(unreleased)'' ''(2010)''<br /> :'''Textures:''' 7. <br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''Credits:''' Epic Games because many stock textures were merged together to make certain themes fit together with this theme, Billa for contributing [[Shader]]s and suggesting design ideas.<br /> '''Download Mirrors:'''<br /> : * [http://www.filefront.com/17134664/TechTexPackage-1-5/ Download from www.filefront.com]<br /> <br /> '''Screenshots:'''<br /> : * [http://screenshot.xfire.com/s/107620730-3.jpg Screen 1 of Tech Textures in use inc the MutBestTimes scoreboard] <br /> : * [http://screenshot.xfire.com/s/102840427-3.jpg Screen 2] [http://screenshot.xfire.com/s/108066806-3.jpg Screen 3] [http://screenshot.xfire.com/s/108066812-3.jpg Screen 4] [http://screenshot.xfire.com/s/108066816-3.jpg Screen 5] [http://screenshot.xfire.com/s/108066821-3.jpg Screen 6] [http://screenshot.xfire.com/s/108066825-3.jpg Screen 7]<br /> : * [http://screenshot.xfire.com/s/108066828-3.jpg Screen 8] [http://screenshot.xfire.com/s/108066837-3.jpg Screen 9] [http://screenshot.xfire.com/s/108066842-3.jpg Screen 10] [http://screenshot.xfire.com/s/108066845-3.jpg Screen 11] [http://screenshot.xfire.com/s/108066850-3.jpg Screen 12] [http://screenshot.xfire.com/s/108066853-3.jpg Screen 13] [http://screenshot.xfire.com/s/108066861-3.jpg Screen 14]<br /> <br /> ;TechTexPackage 1<br /> : * [http://screenshot.xfire.com/s/108066791-3.jpg Screen 1] [http://screenshot.xfire.com/s/108066801-3.jpg Screen 2]<br /> <br /> ==Tutorials==<br /> * [[User:Eliot/UE2:AddingCustomTabsToPlayerLoginMenu_(UT2004)|AddingCustomTabsToPlayerLoginMenu]]&lt;sup&gt;UT2004&lt;/sup&gt;<br /> * [[User:Eliot/Modify Players|Modify Players]]<br /> * [[Legacy:VertexToolTutorial|VertexToolTutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UE2:InfoPod (Tutorial)|InfoPod Tutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UnrealScript Hello World]]<br /> <br /> ==Utils==<br /> * [[User:Eliot/ColorTags Operators|ColorTags Operators]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> <br /> ==Projects==<br /> ===UE Explorer=== <br /> See [[User:Eliot/UE Explorer|UE Explorer]]<br /> <br /> '''Purpose:''' The purpose of this application was to learn C#, .NET and especially the UnrealPackage format.</div> Eliot https://wiki.beyondunreal.com/User:Eliot?diff=45489 User:Eliot 2013-09-25T19:01:44Z <p>Eliot: /* Contact */ Removed obsolete details.</p> <hr /> <div>Welcome to my personal page, if you don't know me yet, well to begin I live in [[wp:Belgium|Belgium]] and my name is '''Eliot Van Uytfanghe''', I'm usually playing with my real name '''Eliot'''. I have been playing the [[Unreal Tournament]] series since [[UT]] Classic, and I started developing maps for [[UT2004]] since its release, and eventually somewhere around 2006 I started programming in [[UnrealScript]] to develop mutators and other minor things, mainly for the Trials community.<br /> <br /> Since november 27 2009; I have started to make some programs with [[wp:C#|C#]] for the purpose of learning C# and making myself more familiar with the [[Unreal Engine]] file formats, I have started developing '''UE Explorer''' this program has multiple utilities such as a [[color tags]] Generator with preview, Cache Extractor and best of all a powerful UnrealScript decompiler that supports [[Unreal]] to [[Unreal Development Kit]] etc.<br /> <br /> ==Contact==<br /> ; ''Website:'' [http://eliotvu.com Eliot]<br /> ; ''Forum:'' [http://utforums.epicgames.com/member.php?u=1262617 Epic Games Forums]<br /> <br /> ==Mutators==<br /> &lt;div style=&quot;background-color:#DDDDCD;&quot;&gt;<br /> &lt;div style=&quot;border:1px solid #222222;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/LevelConfigManager|LevelConfigManager]]''' ''(2006-2009)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' A [[UnrealEd]] Mutator allowing you to modify the map gameplay to your choice.<br /> :'''Comment:''' This is a very often used [[UE2:Mutator (UT2004)|mutator]] in Assault Trial maps and is usually a must use today; mainly because of the '''DefaultWeapons''' feature.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/3/levelconfigmanager EliotVU.com](w/''source'')<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutNoAutoFire|MutNoAutoFire]]''' ''(2006-2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces those annoying ShieldGun's that auto fire when being close to a player of your team, '''Note''':Replaces the [[UE2:Pawn (UT2004)|pawn]] class if it is [[UE2:xPawn (UT2004)|xpawn]] or UTComp_Pawn, will not function properly if other mutators replacing the pawn class are running!<br /> :'''Comment:''' This is a very often used mutator in Assault Trial servers because this [[UE2:Mutator (UT2004)|mutator]] fixes common exploits of the game such as [[UE2:Mover (UT2004)|movers]] not moving anymore in some cases and as well kills people that try to glitch through idling [[UE2:Mover (UT2004)|movers]](such as non-complex doors), this [[UE2:Mutator (UT2004)|mutator]] as well lets you configure the color of the [[UE2:ShieldGun (UT2004)|ShieldGun]] and let you choose your own suicide message and many more.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for contributing ideas and features.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/4/mutnoautofire EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutBestTimes|MutBestTimes]]''' ''(2005-2012)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Records Best MapTime completion, Player Rankings, Website stats([http://elitetrial.clanservers.com/WebBTimes.html Example]), Client Spawn and (Solo Trial mode, Group Trial mode support) and many more small features.<br /> :'''Comment:''' Private trials [[UE2:Mutator (UT2004)|mutator]] for my favorite servers.<br /> :'''Credits:''' [[User:.:..:|.:..:]] he made the very first version/s''(2005-2006)'' of this mutator then retired, which I continued then''(2007)'', [[User:Gugi|Gugi]] for fixing some iteration issue in the custom VotingHandler that they experienced only on their server.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutAccessPlus|AccessPlus]]''' ''(2006)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Comment:''' Private admin [[UE2:Mutator (UT2004)|mutator]] for our ut2x server but now used by the public though there was never a official release. This mutator is made by [[User:.:..:|.:..:]], I only contributed to it because it was made for our server.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MultiDodgeShieldGun''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This gun is an extension of the modified ShieldGun of ''MutNoAutoFire'', the difference is that whenever you hit a wall you will be able to dodge once again, the purpose of this is to make it possible for mappers to make more new and fresh Trial maps for dedicated players.<br /> :'''Comment:''' This mod has a hardcoded dependency on a specific version of MutNoAutoFire; the version of this mod is equal to the mutator version it depends on.<br /> :'''Credits:''' .:..: for an replication issue and Lt.Ryan for the idea suggestion.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutDodgeJump''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Allows players to jump again after they have dodged once (optional).<br /> :'''Comment:''' MutDodgeJump was the first second mutator released for [[UT3]]. The mutator was very well accepted by the community however old-skool players from [[UT]] did not for obvious reasons.<br /> :'''Credits:''' Mysterial for explaining some replication.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/33/mutdodgejump EliotVU.com]<br /> :'''Discussion''' [http://utforums.epicgames.com/showthread.php?t=585114 DodgeJump on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''UTTrials''' ''(17-11-2007)''&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This was the awaited Trials gametype for UT3 which was unfortunately canceled due the lack of UT3 interest. This gametype adds back the Objectives system of Assault to UT3 for usage in Trial maps. The gametype supports records, DodgeJump, Enhanced ImpactHammer, Enhanced Scoreboard(and HUD) and many other essential features that UT3 Trials might have liked as well introducing a new Trial mode such as Survival, the gametype was planned to support 3 Trial modes: Solo(Like BT), Team(Like UT2K4) and Survival(New).<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutXMasPresents''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Presents from Santa will be available throughout the maps played on your server.<br /> :'''Credits:''' [[Legacy:Soto|Vincent]] for making the meshes provided with this mutator.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/34/mutxmaspresents EliotVU.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=590571 MutXMasPresents on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutEmoticons''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces the current played gametype HUD with a SmileyHud which replaces common used text smileys such as ':)' to a smiley image like on chat programs such as MSN.<br /> :'''Credits:''' [[User:.:..:|.:..:]] The HUD ''code'' was written by him for his Unreal 1 port and InvasionX which I converted to a mutator with replicated configurable smileys.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/38/mutemoticons EliotVU.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=595516 MutEmoticons on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutCacheExtractor''' ''(2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Let's you extract cache files from within the game even online!<br /> :'''Comment:''' This is a [[UE2:Mutator (UT2004)|mutator]] that should be hosted on the server.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/35/mutcacheextractor-ingame-cache-extractor EliotVU.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?p=26997032#post26997032 MutCacheExtractor on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''TrialGroup''' ''((21-29)-04-2010)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Provides functionality for mappers to integrate a group system which an external mutator is supposed to support for actually usage.<br /> :'''Comment:''' Provides several actors for trial mappers to make a team-trial map possible without cheating.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/36/trialgroup EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MomentumReflectorGun''' ''((3-6)-07-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' The Momentum Reflector Gun is a subclass of the LinkGun but instead of killing opponents, the gun is used to climb upon walls using precise aiming that may or may not require advanced skills depending on the challenge available in Trial maps.<br /> :'''Comment:''' This gun is a imitation of the Quake 3 Plasma Gun, for the use of wall climbing see: [[wp:DeFRaG#Weapon_techniques|Weapon Techniques]].<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/37/momentum-reflector-gun EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutEquipmentLevel''' ''(13-09-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This mutator removes all the initial weapons you spawn with, except for the ShieldGun. Once a kill is made you will lose the ShieldGun and earn the AssaultRifle and so on. Once you suicide(or accident) you de-level meaning you'd lose the AssaultRifle and start again with the ShieldGun, you as well lose your score. Winning is not affected by this mutator.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''TrialGroup_Extra''' ''(20-03-2011)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' See above: TrialGroup. Adds an additional GroupLinkedTriggerVolume for TrialGroup Level Designers. This volume provides the L.D the ability to make more complex challenges for Group Trial players, by linking several volumes together which all have to be filled with a partition of the players of that group in order to trigger the event and move on to the followed up challenge.<br /> &lt;/div&gt;<br /> &lt;/div&gt;<br /> <br /> ==UT2004 Maps==<br /> '''AS-MD-Scorpion-Escape''' ''(2004)''<br /> :'''Description:''' An normal assault story map where you start off with vehicles(the scorpions) where you have to break through several blocking environments such as crates that are blocking the drivers path, as well survive from the defenders that try make you fail.<br /> :'''Versions:''' Beta(1,2,3,4,5).<br /> :'''Credits:''' Jamie1224 for adding bot support and tweaking minor things.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=389359 AS-MD-Scorpion-Escape-Beta5 on Epic Games forums]<br /> <br /> '''AS-RoomTrials''' originally named '''AS-MD-RoomTrials''' ''(2004)''<br /> :'''Description:''' In this trials level you have to solve several trial rooms to escape the building.<br /> :'''Versions:''' Beta(2,3,4,5,6,7), V1, V2 and V3.<br /> :'''Influences:''' In early versions there was a glitch which allowed you to land on the top of spikes, it was meant to wall dodge over these however soon ''hqf'' found out you can glitch those spikes and thus was later used on purpose in his map '''AS-TheEgyptianPyramid''', from there on this became a basic idea used in many trial maps.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=416526 AS-MD-RoomTrials-V1 on Epic Games forums] or [http://utforums.epicgames.com/showthread.php?t=402344 AS-MD-RoomTrials-Beta5 on Epic Games forums], hehe good times...<br /> <br /> '''AS-LifeTrials''' originally named '''AS-MD-LifeTrials''' ''(2005)''<br /> :'''Versions:''' V1 and V1B. <br /> <br /> '''AS-Antaro-Trial''' ''(2005)''<br /> <br /> '''AS-Fact-Trial''' ''(2005)''<br /> <br /> '''AS-Mayan-Secret-UG-Trials''' ''(2006)''<br /> :'''Versions:''' Beta(01,02,03,04)<br /> <br /> '''AS-AbaddonTrials''' ''(2006)''<br /> :'''Description:''' Solve the challenges of Abaddon!<br /> :'''Custom Dependencies:''' ''DPM2Base'', ''AbaddonShield'' and ''EliotTFAMap''.<br /> <br /> '''AS-EgyptianRoomTrials''' ''(2006)''<br /> <br /> '''AS-ShieldGunTech''' ''(2006)''<br /> :'''Description:''' Complete the 6 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V1, V1-Fixed and Final.<br /> <br /> '''AS-ShieldGunBase''' ''(2006)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V(1,2,2-Easy,3,4,4B).<br /> :'''Credits:''' [[User:Mr Evil|Mr Evil]] for BootsOfJumping.<br /> <br /> '''AS-PortalTrials''' ''(2006)''<br /> :'''Description:''' Solve some complex thinking challenges with the PortalGun!<br /> :'''Credits:''' [[Legacy:Shambler|Shambler]] for making the PortalGun, see [http://utforums.epicgames.com/showthread.php?t=530848&amp;highlight=Portalgun PortalGun].<br /> <br /> '''AS-Constructor-BuildZone_Alpha''' ''(2006)''<br /> :'''Description:''' This was the first UT2004 map where you could create things with the [[UE2:Mutator (UT2004)|mutator]] ConstructorGun!<br /> :'''Versions:''' Alpha, V2-Night and V2B-Night.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for making the ConstructorGun and expanding this map by adding an outside.<br /> <br /> '''AS-ShieldGunSensitivity''' ''(2007)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!, but in this one you must watch out for dangerous surfaces!<br /> <br /> '''AS-BloodOnTheFloor''' ''(2008)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-QuickChallenge-NAME-NUMBER Series''' ''(2008)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-BlackHeaven''' ''(2009)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-Solo-Eliot'sTrial''' ''(2009)''<br /> :'''Description:''' Mystic abaddon trial base in the darkness, found on the planet AbissoDno.<br /> :'''Credits:''' iMouNdeee, Billa, Vinc3h and f`.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14432341/AS-Solo-EliotsTrial Download from www.filefront.com]. Depedencies not included!<br /> :'''Custom Dependencies:''' ''LevelConfigManagerV2C'', ''LevelConfigManagerV2E'', ''DoorsMod'', ''AmbModern'' and ''DoorsAnc''.<br /> <br /> '''AS-Solo-TechChallenge-NUMBER Series''' ''(2009)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-Solo-CratesBase''' ''(2009)''<br /> :'''Description:''' A really short map made for the purpose of setting time records.<br /> <br /> ==Textures==<br /> ===TechTexPackage===<br /> TechTexPackage is a simple theme originally designed for '''AS-ShieldGunTech''' which shortly became very popular and is used today on almost every new trials map, some people call it as the ''Trials Theme'' because it fits trials very well, though this theme is perfectly usable for any other gametypes.<br /> <br /> Most of the content in the texture packages are Shaders which are usually based on the base texture with an added special effect that is self-made or standard from the UT2004 packages such as '''XEffectMat''' etc, all texture resolutions are max ''512x512''.<br /> <br /> '''TechTexPackage''' ''(2.461KB)'' ''(2006)''<br /> :'''Textures:''' 17, most are build upon the base texture included in this package, this applies as well to the other TechPackages.<br /> <br /> '''TechTexPackage2''' ''(2.397KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''TechTexPackage3''' ''(2.054KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''.<br /> <br /> '''TechTexPackage4''' ''(2.052KB)'' ''(2007)''<br /> :'''Textures:''' 3.<br /> :'''Custom Dependencies:''' ''TechTexPackage'' and ''TechTexPackage3''. <br /> <br /> '''TechTexPackage5''' ''(5.153KB)'' ''(2008-2009)''<br /> :'''Textures:''' 26. <br /> :'''Custom Dependencies:''' ''TechTexPackage'', ''TechTexPackage2'', ''TechTexPackage3'' and ''TechTexPackage4''.<br /> <br /> '''TechTexPackage6''' ''(2.051KB)'' ''(unreleased)'' ''(2010)''<br /> :'''Textures:''' 7. <br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''Credits:''' Epic Games because many stock textures were merged together to make certain themes fit together with this theme, Billa for contributing [[Shader]]s and suggesting design ideas.<br /> '''Download Mirrors:'''<br /> : * [http://www.filefront.com/17134664/TechTexPackage-1-5/ Download from www.filefront.com]<br /> <br /> '''Screenshots:'''<br /> : * [http://screenshot.xfire.com/s/107620730-3.jpg Screen 1 of Tech Textures in use inc the MutBestTimes scoreboard] <br /> : * [http://screenshot.xfire.com/s/102840427-3.jpg Screen 2] [http://screenshot.xfire.com/s/108066806-3.jpg Screen 3] [http://screenshot.xfire.com/s/108066812-3.jpg Screen 4] [http://screenshot.xfire.com/s/108066816-3.jpg Screen 5] [http://screenshot.xfire.com/s/108066821-3.jpg Screen 6] [http://screenshot.xfire.com/s/108066825-3.jpg Screen 7]<br /> : * [http://screenshot.xfire.com/s/108066828-3.jpg Screen 8] [http://screenshot.xfire.com/s/108066837-3.jpg Screen 9] [http://screenshot.xfire.com/s/108066842-3.jpg Screen 10] [http://screenshot.xfire.com/s/108066845-3.jpg Screen 11] [http://screenshot.xfire.com/s/108066850-3.jpg Screen 12] [http://screenshot.xfire.com/s/108066853-3.jpg Screen 13] [http://screenshot.xfire.com/s/108066861-3.jpg Screen 14]<br /> <br /> ;TechTexPackage 1<br /> : * [http://screenshot.xfire.com/s/108066791-3.jpg Screen 1] [http://screenshot.xfire.com/s/108066801-3.jpg Screen 2]<br /> <br /> ==Tutorials==<br /> * [[User:Eliot/UE2:AddingCustomTabsToPlayerLoginMenu_(UT2004)|AddingCustomTabsToPlayerLoginMenu]]&lt;sup&gt;UT2004&lt;/sup&gt;<br /> * [[User:Eliot/Modify Players|Modify Players]]<br /> * [[Legacy:VertexToolTutorial|VertexToolTutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UE2:InfoPod (Tutorial)|InfoPod Tutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UnrealScript Hello World]]<br /> <br /> ==Utils==<br /> * [[User:Eliot/ColorTags Operators|ColorTags Operators]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> <br /> ==Projects==<br /> ===UE Explorer=== <br /> See [[User:Eliot/UE Explorer|UE Explorer]]<br /> <br /> '''Purpose:''' The purpose of this application was to learn C#, .NET and especially the UnrealPackage format.</div> Eliot https://wiki.beyondunreal.com/User:Eliot?diff=45488 User:Eliot 2013-09-25T17:05:30Z <p>Eliot: Link download to official site.</p> <hr /> <div>Welcome to my personal page, if you don't know me yet, well to begin I live in [[wp:Belgium|Belgium]] and my name is '''Eliot Van Uytfanghe''', I'm usually playing with my real name '''Eliot'''. I have been playing the [[Unreal Tournament]] series since [[UT]] Classic, and I started developing maps for [[UT2004]] since its release, and eventually somewhere around 2006 I started programming in [[UnrealScript]] to develop mutators and other minor things, mainly for the Trials community.<br /> <br /> Since november 27 2009; I have started to make some programs with [[wp:C#|C#]] for the purpose of learning C# and making myself more familiar with the [[Unreal Engine]] file formats, I have started developing '''UE Explorer''' this program has multiple utilities such as a [[color tags]] Generator with preview, Cache Extractor and best of all a powerful UnrealScript decompiler that supports [[Unreal]] to [[Unreal Development Kit]] etc.<br /> <br /> ==Contact==<br /> ; Website: [http://eliotvu.com Eliot]<br /> ; Forum: ''Eliot'' on [http://utforums.epicgames.com/member.php?u=1262617 Epic Games Forums] and [http://forums.beyondunreal.com/member.php?u=49361 Beyondunreal Forums]<br /> ; IRC: ''Eliot'' on [irc://irc.enterthegame.com/unrealscript #unrealscript on EnterTheGame] and [irc://irc.enterthegame.com/unrealwiki #unrealwiki on EnterTheGame]<br /> ; Xfire: [http://www.xfire.com/profile/eliots/ Eliots]<br /> ; Server: ''Eliot'' on UT2004 [http://elitetrial.clanservers.com/WebBTimes/index.php Elite Trial Records]<br /> <br /> ==Mutators==<br /> &lt;div style=&quot;background-color:#DDDDCD;&quot;&gt;<br /> &lt;div style=&quot;border:1px solid #222222;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/LevelConfigManager|LevelConfigManager]]''' ''(2006-2009)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' A [[UnrealEd]] Mutator allowing you to modify the map gameplay to your choice.<br /> :'''Comment:''' This is a very often used [[UE2:Mutator (UT2004)|mutator]] in Assault Trial maps and is usually a must use today; mainly because of the '''DefaultWeapons''' feature.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/3/levelconfigmanager EliotVU.com](w/''source'')<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutNoAutoFire|MutNoAutoFire]]''' ''(2006-2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces those annoying ShieldGun's that auto fire when being close to a player of your team, '''Note''':Replaces the [[UE2:Pawn (UT2004)|pawn]] class if it is [[UE2:xPawn (UT2004)|xpawn]] or UTComp_Pawn, will not function properly if other mutators replacing the pawn class are running!<br /> :'''Comment:''' This is a very often used mutator in Assault Trial servers because this [[UE2:Mutator (UT2004)|mutator]] fixes common exploits of the game such as [[UE2:Mover (UT2004)|movers]] not moving anymore in some cases and as well kills people that try to glitch through idling [[UE2:Mover (UT2004)|movers]](such as non-complex doors), this [[UE2:Mutator (UT2004)|mutator]] as well lets you configure the color of the [[UE2:ShieldGun (UT2004)|ShieldGun]] and let you choose your own suicide message and many more.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for contributing ideas and features.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/4/mutnoautofire EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutBestTimes|MutBestTimes]]''' ''(2005-2012)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Records Best MapTime completion, Player Rankings, Website stats([http://elitetrial.clanservers.com/WebBTimes.html Example]), Client Spawn and (Solo Trial mode, Group Trial mode support) and many more small features.<br /> :'''Comment:''' Private trials [[UE2:Mutator (UT2004)|mutator]] for my favorite servers.<br /> :'''Credits:''' [[User:.:..:|.:..:]] he made the very first version/s''(2005-2006)'' of this mutator then retired, which I continued then''(2007)'', [[User:Gugi|Gugi]] for fixing some iteration issue in the custom VotingHandler that they experienced only on their server.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutAccessPlus|AccessPlus]]''' ''(2006)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Comment:''' Private admin [[UE2:Mutator (UT2004)|mutator]] for our ut2x server but now used by the public though there was never a official release. This mutator is made by [[User:.:..:|.:..:]], I only contributed to it because it was made for our server.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MultiDodgeShieldGun''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This gun is an extension of the modified ShieldGun of ''MutNoAutoFire'', the difference is that whenever you hit a wall you will be able to dodge once again, the purpose of this is to make it possible for mappers to make more new and fresh Trial maps for dedicated players.<br /> :'''Comment:''' This mod has a hardcoded dependency on a specific version of MutNoAutoFire; the version of this mod is equal to the mutator version it depends on.<br /> :'''Credits:''' .:..: for an replication issue and Lt.Ryan for the idea suggestion.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutDodgeJump''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Allows players to jump again after they have dodged once (optional).<br /> :'''Comment:''' MutDodgeJump was the first second mutator released for [[UT3]]. The mutator was very well accepted by the community however old-skool players from [[UT]] did not for obvious reasons.<br /> :'''Credits:''' Mysterial for explaining some replication.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/33/mutdodgejump EliotVU.com]<br /> :'''Discussion''' [http://utforums.epicgames.com/showthread.php?t=585114 DodgeJump on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''UTTrials''' ''(17-11-2007)''&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This was the awaited Trials gametype for UT3 which was unfortunately canceled due the lack of UT3 interest. This gametype adds back the Objectives system of Assault to UT3 for usage in Trial maps. The gametype supports records, DodgeJump, Enhanced ImpactHammer, Enhanced Scoreboard(and HUD) and many other essential features that UT3 Trials might have liked as well introducing a new Trial mode such as Survival, the gametype was planned to support 3 Trial modes: Solo(Like BT), Team(Like UT2K4) and Survival(New).<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutXMasPresents''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Presents from Santa will be available throughout the maps played on your server.<br /> :'''Credits:''' [[Legacy:Soto|Vincent]] for making the meshes provided with this mutator.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/34/mutxmaspresents EliotVU.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=590571 MutXMasPresents on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutEmoticons''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces the current played gametype HUD with a SmileyHud which replaces common used text smileys such as ':)' to a smiley image like on chat programs such as MSN.<br /> :'''Credits:''' [[User:.:..:|.:..:]] The HUD ''code'' was written by him for his Unreal 1 port and InvasionX which I converted to a mutator with replicated configurable smileys.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/38/mutemoticons EliotVU.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=595516 MutEmoticons on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutCacheExtractor''' ''(2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Let's you extract cache files from within the game even online!<br /> :'''Comment:''' This is a [[UE2:Mutator (UT2004)|mutator]] that should be hosted on the server.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/35/mutcacheextractor-ingame-cache-extractor EliotVU.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?p=26997032#post26997032 MutCacheExtractor on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''TrialGroup''' ''((21-29)-04-2010)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Provides functionality for mappers to integrate a group system which an external mutator is supposed to support for actually usage.<br /> :'''Comment:''' Provides several actors for trial mappers to make a team-trial map possible without cheating.<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/36/trialgroup EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MomentumReflectorGun''' ''((3-6)-07-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' The Momentum Reflector Gun is a subclass of the LinkGun but instead of killing opponents, the gun is used to climb upon walls using precise aiming that may or may not require advanced skills depending on the challenge available in Trial maps.<br /> :'''Comment:''' This gun is a imitation of the Quake 3 Plasma Gun, for the use of wall climbing see: [[wp:DeFRaG#Weapon_techniques|Weapon Techniques]].<br /> :'''Download:''' [http://eliotvu.com/portfolio/view/37/momentum-reflector-gun EliotVU.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutEquipmentLevel''' ''(13-09-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This mutator removes all the initial weapons you spawn with, except for the ShieldGun. Once a kill is made you will lose the ShieldGun and earn the AssaultRifle and so on. Once you suicide(or accident) you de-level meaning you'd lose the AssaultRifle and start again with the ShieldGun, you as well lose your score. Winning is not affected by this mutator.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''TrialGroup_Extra''' ''(20-03-2011)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' See above: TrialGroup. Adds an additional GroupLinkedTriggerVolume for TrialGroup Level Designers. This volume provides the L.D the ability to make more complex challenges for Group Trial players, by linking several volumes together which all have to be filled with a partition of the players of that group in order to trigger the event and move on to the followed up challenge.<br /> &lt;/div&gt;<br /> &lt;/div&gt;<br /> <br /> ==UT2004 Maps==<br /> '''AS-MD-Scorpion-Escape''' ''(2004)''<br /> :'''Description:''' An normal assault story map where you start off with vehicles(the scorpions) where you have to break through several blocking environments such as crates that are blocking the drivers path, as well survive from the defenders that try make you fail.<br /> :'''Versions:''' Beta(1,2,3,4,5).<br /> :'''Credits:''' Jamie1224 for adding bot support and tweaking minor things.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=389359 AS-MD-Scorpion-Escape-Beta5 on Epic Games forums]<br /> <br /> '''AS-RoomTrials''' originally named '''AS-MD-RoomTrials''' ''(2004)''<br /> :'''Description:''' In this trials level you have to solve several trial rooms to escape the building.<br /> :'''Versions:''' Beta(2,3,4,5,6,7), V1, V2 and V3.<br /> :'''Influences:''' In early versions there was a glitch which allowed you to land on the top of spikes, it was meant to wall dodge over these however soon ''hqf'' found out you can glitch those spikes and thus was later used on purpose in his map '''AS-TheEgyptianPyramid''', from there on this became a basic idea used in many trial maps.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=416526 AS-MD-RoomTrials-V1 on Epic Games forums] or [http://utforums.epicgames.com/showthread.php?t=402344 AS-MD-RoomTrials-Beta5 on Epic Games forums], hehe good times...<br /> <br /> '''AS-LifeTrials''' originally named '''AS-MD-LifeTrials''' ''(2005)''<br /> :'''Versions:''' V1 and V1B. <br /> <br /> '''AS-Antaro-Trial''' ''(2005)''<br /> <br /> '''AS-Fact-Trial''' ''(2005)''<br /> <br /> '''AS-Mayan-Secret-UG-Trials''' ''(2006)''<br /> :'''Versions:''' Beta(01,02,03,04)<br /> <br /> '''AS-AbaddonTrials''' ''(2006)''<br /> :'''Description:''' Solve the challenges of Abaddon!<br /> :'''Custom Dependencies:''' ''DPM2Base'', ''AbaddonShield'' and ''EliotTFAMap''.<br /> <br /> '''AS-EgyptianRoomTrials''' ''(2006)''<br /> <br /> '''AS-ShieldGunTech''' ''(2006)''<br /> :'''Description:''' Complete the 6 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V1, V1-Fixed and Final.<br /> <br /> '''AS-ShieldGunBase''' ''(2006)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V(1,2,2-Easy,3,4,4B).<br /> :'''Credits:''' [[User:Mr Evil|Mr Evil]] for BootsOfJumping.<br /> <br /> '''AS-PortalTrials''' ''(2006)''<br /> :'''Description:''' Solve some complex thinking challenges with the PortalGun!<br /> :'''Credits:''' [[Legacy:Shambler|Shambler]] for making the PortalGun, see [http://utforums.epicgames.com/showthread.php?t=530848&amp;highlight=Portalgun PortalGun].<br /> <br /> '''AS-Constructor-BuildZone_Alpha''' ''(2006)''<br /> :'''Description:''' This was the first UT2004 map where you could create things with the [[UE2:Mutator (UT2004)|mutator]] ConstructorGun!<br /> :'''Versions:''' Alpha, V2-Night and V2B-Night.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for making the ConstructorGun and expanding this map by adding an outside.<br /> <br /> '''AS-ShieldGunSensitivity''' ''(2007)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!, but in this one you must watch out for dangerous surfaces!<br /> <br /> '''AS-BloodOnTheFloor''' ''(2008)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-QuickChallenge-NAME-NUMBER Series''' ''(2008)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-BlackHeaven''' ''(2009)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-Solo-Eliot'sTrial''' ''(2009)''<br /> :'''Description:''' Mystic abaddon trial base in the darkness, found on the planet AbissoDno.<br /> :'''Credits:''' iMouNdeee, Billa, Vinc3h and f`.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14432341/AS-Solo-EliotsTrial Download from www.filefront.com]. Depedencies not included!<br /> :'''Custom Dependencies:''' ''LevelConfigManagerV2C'', ''LevelConfigManagerV2E'', ''DoorsMod'', ''AmbModern'' and ''DoorsAnc''.<br /> <br /> '''AS-Solo-TechChallenge-NUMBER Series''' ''(2009)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-Solo-CratesBase''' ''(2009)''<br /> :'''Description:''' A really short map made for the purpose of setting time records.<br /> <br /> ==Textures==<br /> ===TechTexPackage===<br /> TechTexPackage is a simple theme originally designed for '''AS-ShieldGunTech''' which shortly became very popular and is used today on almost every new trials map, some people call it as the ''Trials Theme'' because it fits trials very well, though this theme is perfectly usable for any other gametypes.<br /> <br /> Most of the content in the texture packages are Shaders which are usually based on the base texture with an added special effect that is self-made or standard from the UT2004 packages such as '''XEffectMat''' etc, all texture resolutions are max ''512x512''.<br /> <br /> '''TechTexPackage''' ''(2.461KB)'' ''(2006)''<br /> :'''Textures:''' 17, most are build upon the base texture included in this package, this applies as well to the other TechPackages.<br /> <br /> '''TechTexPackage2''' ''(2.397KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''TechTexPackage3''' ''(2.054KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''.<br /> <br /> '''TechTexPackage4''' ''(2.052KB)'' ''(2007)''<br /> :'''Textures:''' 3.<br /> :'''Custom Dependencies:''' ''TechTexPackage'' and ''TechTexPackage3''. <br /> <br /> '''TechTexPackage5''' ''(5.153KB)'' ''(2008-2009)''<br /> :'''Textures:''' 26. <br /> :'''Custom Dependencies:''' ''TechTexPackage'', ''TechTexPackage2'', ''TechTexPackage3'' and ''TechTexPackage4''.<br /> <br /> '''TechTexPackage6''' ''(2.051KB)'' ''(unreleased)'' ''(2010)''<br /> :'''Textures:''' 7. <br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''Credits:''' Epic Games because many stock textures were merged together to make certain themes fit together with this theme, Billa for contributing [[Shader]]s and suggesting design ideas.<br /> '''Download Mirrors:'''<br /> : * [http://www.filefront.com/17134664/TechTexPackage-1-5/ Download from www.filefront.com]<br /> <br /> '''Screenshots:'''<br /> : * [http://screenshot.xfire.com/s/107620730-3.jpg Screen 1 of Tech Textures in use inc the MutBestTimes scoreboard] <br /> : * [http://screenshot.xfire.com/s/102840427-3.jpg Screen 2] [http://screenshot.xfire.com/s/108066806-3.jpg Screen 3] [http://screenshot.xfire.com/s/108066812-3.jpg Screen 4] [http://screenshot.xfire.com/s/108066816-3.jpg Screen 5] [http://screenshot.xfire.com/s/108066821-3.jpg Screen 6] [http://screenshot.xfire.com/s/108066825-3.jpg Screen 7]<br /> : * [http://screenshot.xfire.com/s/108066828-3.jpg Screen 8] [http://screenshot.xfire.com/s/108066837-3.jpg Screen 9] [http://screenshot.xfire.com/s/108066842-3.jpg Screen 10] [http://screenshot.xfire.com/s/108066845-3.jpg Screen 11] [http://screenshot.xfire.com/s/108066850-3.jpg Screen 12] [http://screenshot.xfire.com/s/108066853-3.jpg Screen 13] [http://screenshot.xfire.com/s/108066861-3.jpg Screen 14]<br /> <br /> ;TechTexPackage 1<br /> : * [http://screenshot.xfire.com/s/108066791-3.jpg Screen 1] [http://screenshot.xfire.com/s/108066801-3.jpg Screen 2]<br /> <br /> ==Tutorials==<br /> * [[User:Eliot/UE2:AddingCustomTabsToPlayerLoginMenu_(UT2004)|AddingCustomTabsToPlayerLoginMenu]]&lt;sup&gt;UT2004&lt;/sup&gt;<br /> * [[User:Eliot/Modify Players|Modify Players]]<br /> * [[Legacy:VertexToolTutorial|VertexToolTutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UE2:InfoPod (Tutorial)|InfoPod Tutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UnrealScript Hello World]]<br /> <br /> ==Utils==<br /> * [[User:Eliot/ColorTags Operators|ColorTags Operators]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> <br /> ==Projects==<br /> ===UE Explorer=== <br /> See [[User:Eliot/UE Explorer|UE Explorer]]<br /> <br /> '''Purpose:''' The purpose of this application was to learn C#, .NET and especially the UnrealPackage format.</div> Eliot https://wiki.beyondunreal.com/Variables?diff=45403 Variables 2013-05-16T08:48:14Z <p>Eliot: /* Local variables */</p> <hr /> <div>[[wp:Variable#Computer programming|Variables]] are named storage slots for pieces of data. All [[UnrealScript]] variables are [[wp:static typing|staticly-typed]], that means you can only store a specific type of data in them and the type of data is defined in the variable [[wp:declaration (computer science)|declaration]].<br /> <br /> There are three basic types of variables in UnrealScript:<br /> * Class variables, which can only be declared at the [[class]] [[wp:Scope (programming)|scope]], before any function, operator, delegate or [[state]] declaration.<br /> * Struct members, which are declared inside their [[struct]]'s declaration block.<br /> * Local variables, which can be declared at the start of [[function]], [[state]], [[operator]] and [[delegate]] bodies before any code statements. (For readability's sake, this article will imply operators and delegates when it mentions functions, unless otherwise noted.)<br /> <br /> ==Declaration==<br /> A simple class or struct member variable declaration looks like this:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''''';'''<br /> The ''variablename'' can be any combination of the letters A-Z (case-insensitive), the digits 0-9 and the underscore character _ with two restrictions:<br /> * The name may not start with a digit.<br /> * The name must be shorter than 64 characters.<br /> The ''type'' can not only be a type specification, but also a [[struct]] or [[enum]] declaration.<br /> <br /> You can declare multiple variables of the same type in one declaration:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename1''',''' variablename2''',''' ...''';'''<br /> Each of the variable names may optionally have an array size specification to create a [[static array]]:<br /> variablename'''['''arraysize''']'''<br /> You can mix static arrays and non-array variables in a single declaration. The array size only applies to the variable you appended it to.<br /> <br /> ===Editable variables===<br /> To make the variable accessible from within [[UnrealEd]]'s property windows, use the following syntax:<br /> '''var('''''[groupname[,subgroup&lt;sup&gt;3&lt;/sup&gt;]]''''')''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''';'''<br /> The ''groupname'' must be an identifier if specified. If omitted, the class name is used as group name. For struct members, the group name has no effect.<br /> <br /> ===Local variables===<br /> Local variable declarations in [[function]] bodies are similar, but a bit simpler:<br /> '''local''' [[type]] variablename''';'''<br /> Local variables must be declared at the very top of the function body, between the &lt;code&gt;{&lt;/code&gt; and the first line of &quot;executable&quot; code.<br /> <br /> You can declare static arrays and multiple variables of the same type as described for class and struct variables above. The ''type'' must be an existing type. It is not allowed to declare new structs or enums here.<br /> <br /> After declaration, a local variable is initially null, which can mean different things, depending on the variable type. (Zero for numeric types, False, empty string or array, None, etc.)<br /> <br /> <br /> '''Note''': As of UDK 2011-06+?{{confirm}} it is also possible to declare local variables in [[state]]s. Local variables must be declared before [[ignores]].<br /> <br /> ==Modifiers==<br /> For class and struct variables you are allowed to specify one or more variable modifiers. These change the way the variable works in certain situations.<br /> {{Infobox EngineVersion|modifier}}<br /> <br /> ===Inner type modifiers===<br /> You can also specify variable modifiers for the inner type of a [[dynamic array]] declaration. This compiler feature is available in all engine versions, but doesn't have any effect before [[Unreal Engine 3]]. The only currently known instances of this are several variables in two classes of the [[UDK]]'s Engine package ([[UE3:NxForceField (UDK)|NxForceField]] and [[UE3:NxGenericForceFieldBrush (UDK)|NxGenericForceFieldBrush]], both using &lt;code&gt;[[array]]&lt;const native transient [[pointer]]&gt;&lt;/code&gt;), so this feature might only work at all in newer versions of Unreal Engine 3. '''Note''': All inner modifiers are as well implicity added to the variable modifiers, so for example if you were to add [[EditConst]] the actual variable would as well act upon [[EditConst]].<br /> <br /> ===Access modifiers===<br /> The following modifiers only apply to class variables and specify, which other classes are allowed to access the variable. The access rules are enforced by the compiler.<br /> ; Const&lt;sup&gt;S&lt;/sup&gt;: Prevents any changes to this variable from within UnrealScript. You are still allowed to specify a value in the [[defaultproperties]] block and access the variable's value in your code. This property is mostly used to protect variables with a special meaning to native code. Classes with '''const''' variables usually have a corresponding setter function for each variable.<br /> ; Deprecated&lt;sup&gt;2,3&lt;/sup&gt;: Signals that this variable should no longer be used. Accessing deprecated variables will throw a compiler warning. [[Unreal Engine 3]] will load the value of a '''deprecated''' variable, but ignore it during save.<br /> ; Private&lt;sup&gt;S,2,3&lt;/sup&gt;: Private variables can only be accessed from within the class they were declared in. Other classes, even subclasses, can't access them.<br /> ; PrivateWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''private''' access modifier. Causes the variable to be treated as private for writing, but public for reading.<br /> ; Protected&lt;sup&gt;S,2,3&lt;/sup&gt;: Access to protected variables is only allowed from within the same class and its subclasses. Sibling classes, parent classes and other, unrelated classes can't &quot;see&quot; protected variables.<br /> ; ProtectedWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''protected''' access modifier. Causes the variable to be treated as protected for writing, but public for reading.<br /> ; Public&lt;sup&gt;S,2,3&lt;/sup&gt;: The default access rule. If no other access rule is specified, this is one is implied. Public variables can be accessed from any other class. Usually you will see this modifier in Unreal Engine 3, along with a native code snippet. One of the most common examples is &lt;code&gt;public{private}&lt;/code&gt;, which means the variable is declared as public for UnrealScript, but as private for native code.<br /> <br /> ===Modifiers affecting values===<br /> These modifiers affect the default value of the variable in some way.<br /> <br /> ; Automated&lt;sup&gt;UT2004&lt;/sup&gt;: Only meaningful for object variables in [[UE2:GUIMultiComponent (UT2004)|GUIMultiComponent]] classes. Indicates that any [[UE2:GUIComponent (UT2004)|GUIComponent]] object(s) referenced by this variable should automatically be added to the [[UE2:GUIMultiComponent_(UT2004)#Controls|Controls]] array. Also works for [[static array|static]] and [[dynamic arrays]]. Objects that aren't GUIComponents are ignored.<br /> ::''Implies'': '''noexport''', '''editinline''', '''editinlineuse''' and '''editinlinenotify''', and FYI: any object variable(even parameters and locals) referencing GUIComponents implies '''export''' and '''editinline'''.<br /> ; Config&lt;sup&gt;S&lt;/sup&gt;: Makes the variable configurable. The default variable value is read from an [[Legacy:INI_File|INI file]] when the class is loaded. Each subclass has its own version of the variable value in its INI file section. If the class is declared with the [[PerObjectConfig]] modifier, the initial instance value of the variable is read from a separate INI section for that object instance.<br /> ; DataBinding&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s data store system.<br /> ; DuplicateTransient&lt;sup&gt;3&lt;/sup&gt;: Similar to '''transient''' (see below) but applies to object duplication.<br /> ; GlobalConfig&lt;sup&gt;S&lt;/sup&gt;: Similar to the '''config''' modifier, but a '''globalconfig''' variable's default value is always read from the INI section of its declaring class, even for subclasses.<br /> ::''Implies'': '''config'''<br /> ; Input: Attaches the variable to the input system. This is only meaningful for float and byte variables, which can be tied to axis and button input respectively. Input variables are only filled for the local player actor.<br /> ; Instanced&lt;sup&gt;3&lt;/sup&gt;: Only meaningful for reference variables. Subobjects assigned to instanced variables are duplicated when an instance of the class is created.<br /> ::''Implies'': '''export''' and '''editinline''' even on non-reference variables.<br /> ; Localized&lt;sup&gt;S&lt;/sup&gt;: Makes the variable localizable. The default value of the variable is read from a [[localization file]] when the class is loaded. Each subclass can have its own localized versions of the variable value. In [[Unreal Engine 1]] and [[Unreal Engine 2|2]] and if the class is declared as [[PerObjectLocalized]] in [[Unreal Engine 3]], each instance of the class can have its own set of localized variable values. This is useful for actors placed in a map.<br /> ::''Implies'': '''const'''&lt;sup&gt;3&lt;/sup&gt;<br /> ; Transient&lt;sup&gt;S&lt;/sup&gt;: The variables is set to its null value when initializing object instances. The variable's value is never saved to disk in any way.<br /> ; Travel&lt;sup&gt;1,2&lt;/sup&gt;: For single player gametypes where a player advances from one map to the next, carrying over all inventory items. Instance variables marked as '''travel''' will keep their value across the map change. Only has an effect for the PlayerPawn in UE1 (or the PlayerController and its Pawn in UE2) and its Inventory chain.<br /> <br /> ===Modifiers affecting UnrealEd===<br /> These modifiers have some kind of effect in [[UnrealEd]], usually in the actor properties window.<br /> <br /> ; EdFindable&lt;sup&gt;S,2&lt;/sup&gt;: Adds a 'Find' button to the variable in the property window, which can be used to select an actor from the UnrealEd viewports. For obvious reasons this only makes sense for variables of type Actor or any of its subclasses.<br /> ; EditConst&lt;sup&gt;S&lt;/sup&gt;: The variable is read-only in the property window.<br /> ; EditConstArray&lt;sup&gt;S,2&lt;/sup&gt;, editfixedsize&lt;sup&gt;S,3&lt;/sup&gt;: For dynamic arrays, removes the buttons from the properties window that would change the array length.<br /> ; EditHIde&lt;sup&gt;S,3+&lt;/sup&gt;: Hide in [[UnrealEd]] property lists.{{confirm}}<br /> ; EditInline&lt;sup&gt;S,2,3&lt;/sup&gt;: Only meaningful for object variables. Displays the referenced object's properties as a subgroup below the variable in the property window. If the variable has the value None, a drop-down list of allowed ([[editinlinenew]], non-[[abstract]]) classes can be used to create a new object which is assigned to this variable.<br /> ; EditInlineUse&lt;sup&gt;S,2,3&lt;/sup&gt;: Same as '''editinline''', but also adds a 'Use' button to the variable to apply the object selected in the relevant browser for this type of object. Note that the 'Use' button is always available in [[Unreal Engine 3]].<br /> ; EditorOnly&lt;sup&gt;3+&lt;/sup&gt;: The variable value is only loaded for [[UnrealEd]].<br /> ; EditorTextBox&lt;sup&gt;S?,3+&lt;/sup&gt;: Replaces the usual input box with a button for opening a separate dialog with a multi-line text box for entering. Probably only useful for [[string]] variables.<br /> ; Interp&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s [[Matinee]] system. Only really meaningful for float and vector variables.<br /> ; NoClear&lt;sup&gt;S,3&lt;/sup&gt;: Instructs the editor to prevent the user from setting this variable to None. Only really meaningful for object variables.<br /> ; NoImport&lt;sup&gt;S,3&lt;/sup&gt;: The variable's value will not be imported from text representation, i.e. when importing from a [[T3D file]] or pasting from clipboard.<br /> ; NonTransactional&lt;sup&gt;S,3&lt;/sup&gt;: The variable is not affected by UnrealEd's undo/redo features.<br /> ; SerializeText&lt;sup&gt;3+&lt;/sup&gt;: Variable will not be saved, but will be transfered during copy-paste operations (which are done through text). Works only on native variables.<br /> ::''Requirements'': '''Native'''<br /> <br /> ===Other modifiers===<br /> The following modifiers don't really fit into any of the above categories.<br /> ; cache&lt;sup&gt;UT2004&lt;/sup&gt;: Marks properties of certain classes that should be included in [[UCL file]] entries for that class. This is used e.g. for weapon and mutator names and descriptions.<br /> ; editinlinenotify&lt;sup&gt;S,2&lt;/sup&gt;: Seems to provide special feedback to native code if the variable is edited in a property window. Seems only relevant for native classes and implies '''editinline'''.<br /> ; export&lt;sup&gt;S,2,3&lt;/sup&gt;: For object properties. Objects assigned to this variable are exported as subobjects when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; init&lt;sup&gt;S,3&lt;/sup&gt;: Changes the way string and dynamic array variables are exported to headers for native classes. Default values for this kind of variable are ignored when creating instances of the class.<br /> ; native: The variable is loaded and saved in native code. Only valid in native classes.<br /> ; noexport&lt;sup&gt;S,2,3&lt;/sup&gt;: Prevents the variable's value from being exported when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; notforconsole&lt;sup&gt;3+&lt;/sup&gt;: The variable value is discarded on console platforms.<br /> ; repretry&lt;sup&gt;3+&lt;/sup&gt;: If replication of this variable was not successful the replication will be tried again.<br /> ; repnotify&lt;sup&gt;3&lt;/sup&gt;: Can be used on replicated actor variables to instruct the engine to call the [[UE3:Actor events (UT3)#ReplicatedEvent|ReplicatedEvent]] function whenever a value was received for the variable.<br /> <br /> ===Modifiers with unknown effect===<br /> The effects of these modifiers are not known yet.<br /> ; Archetype&lt;sup&gt;3&lt;/sup&gt;: Effect unknown. Used only for the [[UE3:UIPrefabInstance (UT3)#SourcePrefab|UIPrefabInstance.SourcePrefab]] variable in UT3.<br /> ; CrossLevelActive&lt;sup&gt;3+&lt;/sup&gt;: See below.<br /> ; CrossLevelPassive&lt;sup&gt;3+&lt;/sup&gt;: Probably related to level streaming or multiple levels loaded at the same time.<br /> <br /> ==Initial values==<br /> The initial values of class variables can be specified in the [[defaultproperties]] block. The initial value can be different in subclasses without affecting the value of parent classes. Some class variables, for example Name, Outer, Tag or Location, are initialized with other values when an instance of the class is created.<br /> <br /> Initial values of struct members can be specified in thee [[structdefaultproperties]]. In structs that extend other structs, the initial value can differ from the value in the parent struct. Since structs are data types and only exist as values of other variables, initial member values for those variables may differ from the default struct member value.<br /> <br /> The initial value of a local variable is always the null value for the declared variable [[type]]. The initial value for function parameters is the value passed in when the function is called. Omitted optional parameters initially contain the type's null value. In [[Unreal Engine 3]] it is also possible to specify a different initial value for omitted optional parameters.<br /> <br /> ==Accessing variables==<br /> Class variables can be accessed directly by just specifying their name from instance functions, state code or the [[replication block]] inside the declaring class or any of its subclasses.<br /> <br /> The default value for a class variable can be accessed directly by using the keyword '''default''' and the context operator '.' from anywhere inside the class, including static functions:<br /> '''default.'''variablename<br /> The default value of another class can be accessed by providing a different class context to the '''default''' keyword:<br /> objectreference'''.default.'''variablename<br /> The object reference can be an [[Literals#Objects|object literal]] or an object reference variable. If the type of the object reference is a Class or a [[class limiter]], that class is used, otherwise the referenced object's class type is used to access the default variable value. When using an object literal is usually doesn't make sense to use a non-class literal because you usually know the class of the referenced object and the engine really doesn't care about the actual object if it is only interested in the class anyway.<br /> <br /> Struct member variables and class variables of other classes or other instances of the same class can be accessed with the context operator '.', like in the following example:<br /> &lt;uscript&gt;<br /> function float getX(vector V)<br /> {<br /> return V.X;<br /> }<br /> &lt;/uscript&gt;<br /> This accesses the struct member variable ''X'' of the vector value passed to the function as parameter ''V''. The parameter ''V'' is a local variable to the function ''getX''. Local variables can only be accessed inside their containing function.<br /> <br /> Variables accessed as described in this section can be used as an [[wp:lvalue|L-value]], i.e. used on the left side of an assignment operator or as an [[out]] parameter in a function call.<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/Variables?diff=45402 Variables 2013-05-14T23:03:52Z <p>Eliot: Local variables also work in States since UDK 2011.</p> <hr /> <div>[[wp:Variable#Computer programming|Variables]] are named storage slots for pieces of data. All [[UnrealScript]] variables are [[wp:static typing|staticly-typed]], that means you can only store a specific type of data in them and the type of data is defined in the variable [[wp:declaration (computer science)|declaration]].<br /> <br /> There are three basic types of variables in UnrealScript:<br /> * Class variables, which can only be declared at the [[class]] [[wp:Scope (programming)|scope]], before any function, operator, delegate or [[state]] declaration.<br /> * Struct members, which are declared inside their [[struct]]'s declaration block.<br /> * Local variables, which can be declared at the start of [[function]], [[state]], [[operator]] and [[delegate]] bodies before any code statements. (For readability's sake, this article will imply operators and delegates when it mentions functions, unless otherwise noted.)<br /> <br /> ==Declaration==<br /> A simple class or struct member variable declaration looks like this:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''''';'''<br /> The ''variablename'' can be any combination of the letters A-Z (case-insensitive), the digits 0-9 and the underscore character _ with two restrictions:<br /> * The name may not start with a digit.<br /> * The name must be shorter than 64 characters.<br /> The ''type'' can not only be a type specification, but also a [[struct]] or [[enum]] declaration.<br /> <br /> You can declare multiple variables of the same type in one declaration:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename1''',''' variablename2''',''' ...''';'''<br /> Each of the variable names may optionally have an array size specification to create a [[static array]]:<br /> variablename'''['''arraysize''']'''<br /> You can mix static arrays and non-array variables in a single declaration. The array size only applies to the variable you appended it to.<br /> <br /> ===Editable variables===<br /> To make the variable accessible from within [[UnrealEd]]'s property windows, use the following syntax:<br /> '''var('''''[groupname[,subgroup&lt;sup&gt;3&lt;/sup&gt;]]''''')''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''';'''<br /> The ''groupname'' must be an identifier if specified. If omitted, the class name is used as group name. For struct members, the group name has no effect.<br /> <br /> ===Local variables===<br /> Local variable declarations in [[function]] bodies are similar, but a bit simpler:<br /> '''local''' [[type]] variablename''';'''<br /> Local variables must be declared at the very top of the function body, between the &lt;code&gt;{&lt;/code&gt; and the first line of &quot;executable&quot; code.<br /> <br /> You can declare static arrays and multiple variables of the same type as described for class and struct variables above. The ''type'' must be an existing type. It is not allowed to declare new structs or enums here.<br /> <br /> After declaration, a local variable is initially null, which can mean different things, depending on the variable type. (Zero for numeric types, False, empty string or array, None, etc.)<br /> <br /> <br /> '''Note''': As of UDK 2011-??{{confirm}} it is also possible to declare local variables in [[state]]s. Local variables must be declared before [[ignores]].<br /> <br /> ==Modifiers==<br /> For class and struct variables you are allowed to specify one or more variable modifiers. These change the way the variable works in certain situations.<br /> {{Infobox EngineVersion|modifier}}<br /> <br /> ===Inner type modifiers===<br /> You can also specify variable modifiers for the inner type of a [[dynamic array]] declaration. This compiler feature is available in all engine versions, but doesn't have any effect before [[Unreal Engine 3]]. The only currently known instances of this are several variables in two classes of the [[UDK]]'s Engine package ([[UE3:NxForceField (UDK)|NxForceField]] and [[UE3:NxGenericForceFieldBrush (UDK)|NxGenericForceFieldBrush]], both using &lt;code&gt;[[array]]&lt;const native transient [[pointer]]&gt;&lt;/code&gt;), so this feature might only work at all in newer versions of Unreal Engine 3. '''Note''': All inner modifiers are as well implicity added to the variable modifiers, so for example if you were to add [[EditConst]] the actual variable would as well act upon [[EditConst]].<br /> <br /> ===Access modifiers===<br /> The following modifiers only apply to class variables and specify, which other classes are allowed to access the variable. The access rules are enforced by the compiler.<br /> ; Const&lt;sup&gt;S&lt;/sup&gt;: Prevents any changes to this variable from within UnrealScript. You are still allowed to specify a value in the [[defaultproperties]] block and access the variable's value in your code. This property is mostly used to protect variables with a special meaning to native code. Classes with '''const''' variables usually have a corresponding setter function for each variable.<br /> ; Deprecated&lt;sup&gt;2,3&lt;/sup&gt;: Signals that this variable should no longer be used. Accessing deprecated variables will throw a compiler warning. [[Unreal Engine 3]] will load the value of a '''deprecated''' variable, but ignore it during save.<br /> ; Private&lt;sup&gt;S,2,3&lt;/sup&gt;: Private variables can only be accessed from within the class they were declared in. Other classes, even subclasses, can't access them.<br /> ; PrivateWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''private''' access modifier. Causes the variable to be treated as private for writing, but public for reading.<br /> ; Protected&lt;sup&gt;S,2,3&lt;/sup&gt;: Access to protected variables is only allowed from within the same class and its subclasses. Sibling classes, parent classes and other, unrelated classes can't &quot;see&quot; protected variables.<br /> ; ProtectedWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''protected''' access modifier. Causes the variable to be treated as protected for writing, but public for reading.<br /> ; Public&lt;sup&gt;S,2,3&lt;/sup&gt;: The default access rule. If no other access rule is specified, this is one is implied. Public variables can be accessed from any other class. Usually you will see this modifier in Unreal Engine 3, along with a native code snippet. One of the most common examples is &lt;code&gt;public{private}&lt;/code&gt;, which means the variable is declared as public for UnrealScript, but as private for native code.<br /> <br /> ===Modifiers affecting values===<br /> These modifiers affect the default value of the variable in some way.<br /> <br /> ; Automated&lt;sup&gt;UT2004&lt;/sup&gt;: Only meaningful for object variables in [[UE2:GUIMultiComponent (UT2004)|GUIMultiComponent]] classes. Indicates that any [[UE2:GUIComponent (UT2004)|GUIComponent]] object(s) referenced by this variable should automatically be added to the [[UE2:GUIMultiComponent_(UT2004)#Controls|Controls]] array. Also works for [[static array|static]] and [[dynamic arrays]]. Objects that aren't GUIComponents are ignored.<br /> ::''Implies'': '''noexport''', '''editinline''', '''editinlineuse''' and '''editinlinenotify''', and FYI: any object variable(even parameters and locals) referencing GUIComponents implies '''export''' and '''editinline'''.<br /> ; Config&lt;sup&gt;S&lt;/sup&gt;: Makes the variable configurable. The default variable value is read from an [[Legacy:INI_File|INI file]] when the class is loaded. Each subclass has its own version of the variable value in its INI file section. If the class is declared with the [[PerObjectConfig]] modifier, the initial instance value of the variable is read from a separate INI section for that object instance.<br /> ; DataBinding&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s data store system.<br /> ; DuplicateTransient&lt;sup&gt;3&lt;/sup&gt;: Similar to '''transient''' (see below) but applies to object duplication.<br /> ; GlobalConfig&lt;sup&gt;S&lt;/sup&gt;: Similar to the '''config''' modifier, but a '''globalconfig''' variable's default value is always read from the INI section of its declaring class, even for subclasses.<br /> ::''Implies'': '''config'''<br /> ; Input: Attaches the variable to the input system. This is only meaningful for float and byte variables, which can be tied to axis and button input respectively. Input variables are only filled for the local player actor.<br /> ; Instanced&lt;sup&gt;3&lt;/sup&gt;: Only meaningful for reference variables. Subobjects assigned to instanced variables are duplicated when an instance of the class is created.<br /> ::''Implies'': '''export''' and '''editinline''' even on non-reference variables.<br /> ; Localized&lt;sup&gt;S&lt;/sup&gt;: Makes the variable localizable. The default value of the variable is read from a [[localization file]] when the class is loaded. Each subclass can have its own localized versions of the variable value. In [[Unreal Engine 1]] and [[Unreal Engine 2|2]] and if the class is declared as [[PerObjectLocalized]] in [[Unreal Engine 3]], each instance of the class can have its own set of localized variable values. This is useful for actors placed in a map.<br /> ::''Implies'': '''const'''&lt;sup&gt;3&lt;/sup&gt;<br /> ; Transient&lt;sup&gt;S&lt;/sup&gt;: The variables is set to its null value when initializing object instances. The variable's value is never saved to disk in any way.<br /> ; Travel&lt;sup&gt;1,2&lt;/sup&gt;: For single player gametypes where a player advances from one map to the next, carrying over all inventory items. Instance variables marked as '''travel''' will keep their value across the map change. Only has an effect for the PlayerPawn in UE1 (or the PlayerController and its Pawn in UE2) and its Inventory chain.<br /> <br /> ===Modifiers affecting UnrealEd===<br /> These modifiers have some kind of effect in [[UnrealEd]], usually in the actor properties window.<br /> <br /> ; EdFindable&lt;sup&gt;S,2&lt;/sup&gt;: Adds a 'Find' button to the variable in the property window, which can be used to select an actor from the UnrealEd viewports. For obvious reasons this only makes sense for variables of type Actor or any of its subclasses.<br /> ; EditConst&lt;sup&gt;S&lt;/sup&gt;: The variable is read-only in the property window.<br /> ; EditConstArray&lt;sup&gt;S,2&lt;/sup&gt;, editfixedsize&lt;sup&gt;S,3&lt;/sup&gt;: For dynamic arrays, removes the buttons from the properties window that would change the array length.<br /> ; EditHIde&lt;sup&gt;S,3+&lt;/sup&gt;: Hide in [[UnrealEd]] property lists.{{confirm}}<br /> ; EditInline&lt;sup&gt;S,2,3&lt;/sup&gt;: Only meaningful for object variables. Displays the referenced object's properties as a subgroup below the variable in the property window. If the variable has the value None, a drop-down list of allowed ([[editinlinenew]], non-[[abstract]]) classes can be used to create a new object which is assigned to this variable.<br /> ; EditInlineUse&lt;sup&gt;S,2,3&lt;/sup&gt;: Same as '''editinline''', but also adds a 'Use' button to the variable to apply the object selected in the relevant browser for this type of object. Note that the 'Use' button is always available in [[Unreal Engine 3]].<br /> ; EditorOnly&lt;sup&gt;3+&lt;/sup&gt;: The variable value is only loaded for [[UnrealEd]].<br /> ; EditorTextBox&lt;sup&gt;S?,3+&lt;/sup&gt;: Replaces the usual input box with a button for opening a separate dialog with a multi-line text box for entering. Probably only useful for [[string]] variables.<br /> ; Interp&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s [[Matinee]] system. Only really meaningful for float and vector variables.<br /> ; NoClear&lt;sup&gt;S,3&lt;/sup&gt;: Instructs the editor to prevent the user from setting this variable to None. Only really meaningful for object variables.<br /> ; NoImport&lt;sup&gt;S,3&lt;/sup&gt;: The variable's value will not be imported from text representation, i.e. when importing from a [[T3D file]] or pasting from clipboard.<br /> ; NonTransactional&lt;sup&gt;S,3&lt;/sup&gt;: The variable is not affected by UnrealEd's undo/redo features.<br /> ; SerializeText&lt;sup&gt;3+&lt;/sup&gt;: Variable will not be saved, but will be transfered during copy-paste operations (which are done through text). Works only on native variables.<br /> ::''Requirements'': '''Native'''<br /> <br /> ===Other modifiers===<br /> The following modifiers don't really fit into any of the above categories.<br /> ; cache&lt;sup&gt;UT2004&lt;/sup&gt;: Marks properties of certain classes that should be included in [[UCL file]] entries for that class. This is used e.g. for weapon and mutator names and descriptions.<br /> ; editinlinenotify&lt;sup&gt;S,2&lt;/sup&gt;: Seems to provide special feedback to native code if the variable is edited in a property window. Seems only relevant for native classes and implies '''editinline'''.<br /> ; export&lt;sup&gt;S,2,3&lt;/sup&gt;: For object properties. Objects assigned to this variable are exported as subobjects when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; init&lt;sup&gt;S,3&lt;/sup&gt;: Changes the way string and dynamic array variables are exported to headers for native classes. Default values for this kind of variable are ignored when creating instances of the class.<br /> ; native: The variable is loaded and saved in native code. Only valid in native classes.<br /> ; noexport&lt;sup&gt;S,2,3&lt;/sup&gt;: Prevents the variable's value from being exported when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; notforconsole&lt;sup&gt;3+&lt;/sup&gt;: The variable value is discarded on console platforms.<br /> ; repretry&lt;sup&gt;3+&lt;/sup&gt;: If replication of this variable was not successful the replication will be tried again.<br /> ; repnotify&lt;sup&gt;3&lt;/sup&gt;: Can be used on replicated actor variables to instruct the engine to call the [[UE3:Actor events (UT3)#ReplicatedEvent|ReplicatedEvent]] function whenever a value was received for the variable.<br /> <br /> ===Modifiers with unknown effect===<br /> The effects of these modifiers are not known yet.<br /> ; Archetype&lt;sup&gt;3&lt;/sup&gt;: Effect unknown. Used only for the [[UE3:UIPrefabInstance (UT3)#SourcePrefab|UIPrefabInstance.SourcePrefab]] variable in UT3.<br /> ; CrossLevelActive&lt;sup&gt;3+&lt;/sup&gt;: See below.<br /> ; CrossLevelPassive&lt;sup&gt;3+&lt;/sup&gt;: Probably related to level streaming or multiple levels loaded at the same time.<br /> <br /> ==Initial values==<br /> The initial values of class variables can be specified in the [[defaultproperties]] block. The initial value can be different in subclasses without affecting the value of parent classes. Some class variables, for example Name, Outer, Tag or Location, are initialized with other values when an instance of the class is created.<br /> <br /> Initial values of struct members can be specified in thee [[structdefaultproperties]]. In structs that extend other structs, the initial value can differ from the value in the parent struct. Since structs are data types and only exist as values of other variables, initial member values for those variables may differ from the default struct member value.<br /> <br /> The initial value of a local variable is always the null value for the declared variable [[type]]. The initial value for function parameters is the value passed in when the function is called. Omitted optional parameters initially contain the type's null value. In [[Unreal Engine 3]] it is also possible to specify a different initial value for omitted optional parameters.<br /> <br /> ==Accessing variables==<br /> Class variables can be accessed directly by just specifying their name from instance functions, state code or the [[replication block]] inside the declaring class or any of its subclasses.<br /> <br /> The default value for a class variable can be accessed directly by using the keyword '''default''' and the context operator '.' from anywhere inside the class, including static functions:<br /> '''default.'''variablename<br /> The default value of another class can be accessed by providing a different class context to the '''default''' keyword:<br /> objectreference'''.default.'''variablename<br /> The object reference can be an [[Literals#Objects|object literal]] or an object reference variable. If the type of the object reference is a Class or a [[class limiter]], that class is used, otherwise the referenced object's class type is used to access the default variable value. When using an object literal is usually doesn't make sense to use a non-class literal because you usually know the class of the referenced object and the engine really doesn't care about the actual object if it is only interested in the class anyway.<br /> <br /> Struct member variables and class variables of other classes or other instances of the same class can be accessed with the context operator '.', like in the following example:<br /> &lt;uscript&gt;<br /> function float getX(vector V)<br /> {<br /> return V.X;<br /> }<br /> &lt;/uscript&gt;<br /> This accesses the struct member variable ''X'' of the vector value passed to the function as parameter ''V''. The parameter ''V'' is a local variable to the function ''getX''. Local variables can only be accessed inside their containing function.<br /> <br /> Variables accessed as described in this section can be used as an [[wp:lvalue|L-value]], i.e. used on the left side of an assignment operator or as an [[out]] parameter in a function call.<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/User_talk:Wormbo/Random_useful_code_snippets?diff=45361 User talk:Wormbo/Random useful code snippets 2013-04-09T10:04:31Z <p>Eliot: Created page with 'Nice super exploit usage! Although I have no use for it, but it's cool to see such things anyway. Btw did you ever checkout that proof of concept I sent you years ago? The one th…'</p> <hr /> <div>Nice super exploit usage! Although I have no use for it, but it's cool to see such things anyway. Btw did you ever checkout that proof of concept I sent you years ago? The one that used this exploit to modify the value of pointer values of existing pointers that point to functions in ???.dll files. What it did was modify the pointer to point to the MessageBox function and then revert that after usage so the game obviously won't break. --[[User:Eliot|Eliot]] 10:04, 9 April 2013 (UTC)</div> Eliot https://wiki.beyondunreal.com/MonkeyBuild?diff=45352 MonkeyBuild 2013-04-01T18:08:16Z <p>Eliot: Replaced broken link with a specific version of MonkeyBuild.</p> <hr /> <div>'''MonkeyBuild''' is a free tool for UnrealScript developers that simplifies compilation, testing and publishing (publishing only in [[Legacy:Unreal_Engine_3|Unreal Engine 3]]). It works in all versions of the Unreal Engine and with most games (even those which are not from the Unreal series).<br /> <br /> This tool is a sequencer, which can create and save sequence scripts that can be later executed in a single click. Although it's primary use is UnrealScript compilation ([[Legacy:Ucc|UCC]] make without the need of a batch file or command prompt), MonkeyBuild can do a lot more - like, automatically delete or back up old files, run the game with the mutator on for testing and open the log afterwards; it can also do even UnrealScript unrelated tasks, such as moving files and opening programs. It can also cook projects in [[Unreal Tournament 3]].<br /> <br /> The program already comes with a set of example scripts to help you get started and automatically tries to detect any Unreal Engine games installed on the computer.<br /> <br /> Created by Free Monkey Interactive.<br /> <br /> :[http://www.gamefront.com/files/6361627/MonkeyBuild_v3_0_0_71 Download MonkeyBuild here.]<br /> <br /> ==Functions==<br /> These are the types of sequences that can be used in MonkneyBuild:<br /> <br /> *Execute - runs any program you specify with any arguments you want. MonkeyBuild can wait until the program ends before continuing with the sequence.<br /> *Wait - adds a delay of the specified length.<br /> *Delete File(s) - deletes a specified file or a group of files (using wildcards).<br /> *Copy File(s) - copies a specified file or a group of files to a specified destination.<br /> *Move File(s) - moves a specified file or a group of files to a specified destination.<br /> *Compile Scripts (MAKE) - Compiles scripts using the UCC Make command. Additional arguments can be added.<br /> *Conform Packages - Runs a &quot;conform&quot; command to make one UnrealScript package network compatible with an older version of the same package. Note that MonkeyBuild will halt sequences if this command is not successful (for example, if one of the files cannot be found).<br /> *Cook Packages (UE3 only) - Cooks Unreal Engine 3 packages to optimize them and allow them to be played on a console.<br /> *Run Game - Runs the executable for the selected game. MonkeyBuild will wait until you exit the game before performing any more commands.<br /> *Run Server - Runs a server for the selected game. Can be used to [[Legacy:Launch_A_Local_Netgame|launch local netgames]].<br /> <br /> [[Category:Applications]]</div> Eliot https://wiki.beyondunreal.com/Legacy:UT_Package_Tool?diff=45351 Legacy:UT Package Tool 2013-04-01T18:03:59Z <p>Eliot: Redirect to the non-legacy article.</p> <hr /> <div>#Redirect [[UTPT]]</div> Eliot https://wiki.beyondunreal.com/User:Eliot/UE_Explorer?diff=45350 User:Eliot/UE Explorer 2013-04-01T18:00:55Z <p>Eliot: Add features, external links, and applications category.</p> <hr /> <div>UE Explorer is an UnrealScript decompiler for Unreal Engine 1, 2 and 3. Written in [[wp:C#|C#]] with a straight forward user-friendly UI(User Interface). Giving you an easily organized TreeView so that you can decompile each Field individually.<br /> <br /> The tool supports all games from Epic Games and most games built on the Unreal Development Kit(UDK).<br /> <br /> [http://eliotvu.com/portfolio/view/21/ue-explorer#Supported%20Versions You can view the latest support table on Eliot's Portfolio]<br /> <br /> ==Features==<br /> * Can decompile UnrealScript from all engine generations<br /> * Comments are fetched from the MetaData object and inserted into the decompiled code if available!<br /> * DefaultProperties<br /> ** All basic data types<br /> ** Structs and Arrays<br /> ** Archetypes/Subobjects<br /> * Shows a detailed dependency treeview showing which content is used from a dependent package<br /> * Export all classes using the commandline<br /> * Export sounds to .WAV from Unreal Engine 2 games<br /> * Inbuilt Hex-Viewer(Find out easily where an object or table is located in the package)<br /> * View Tokens mode for decompiled bytecode to easily understand the token sequence of code if you're interested in hex-editing code<br /> * Hex-Viewer will auto-generate and visually show where each bytecode token starts at<br /> <br /> ==External links==<br /> * [http://eliotvu.com/portfolio/view/21/ue-explorer#Download UE Explorer Download]<br /> * [http://eliotvu.com/portfolio/view/21/ue-explorer UE Explorer Website]<br /> * [http://eliotvu.com/forum/ UE Explorer Forum]<br /> <br /> [[Category:Applications]]</div> Eliot https://wiki.beyondunreal.com/Template:Navbox_unrealscript?diff=45330 Template:Navbox unrealscript 2013-03-12T20:56:00Z <p>Eliot: Add FilterEditorOnly</p> <hr /> <div>{{navbox<br /> | name = navbox unrealscript<br /> | title = [[UnrealScript reference]]<br /> <br /> | group1 = Declarations<br /> | list1 = [[Preprocessor]]&amp;nbsp;&amp;bull; [[Classes]]&amp;nbsp;&amp;bull; [[Interfaces]]&amp;nbsp;&amp;bull; [[Cpptext]]&amp;nbsp;&amp;bull; [[Constants]]&amp;nbsp;&amp;bull; [[Enums]]&amp;nbsp;&amp;bull; [[Structs]]&amp;nbsp;&amp;bull; [[Variables]]&amp;nbsp;([[Metadata]])&amp;nbsp;&amp;bull; [[Replication block]]&amp;nbsp;&amp;bull; [[Operators]]&amp;nbsp;&amp;bull; [[Delegates]]&amp;nbsp;&amp;bull; [[Functions]]&amp;nbsp;&amp;bull; [[States]]&amp;nbsp;&amp;bull; [[Defaultproperties]]&amp;nbsp;([[Subobjects]])<br /> <br /> | group2 = [[Types]]<br /> | list2 = [[Types#Bool|bool]]&amp;nbsp;&amp;bull; [[Types#Byte|byte]]&amp;nbsp;&amp;bull; [[Types#Float|float]]&amp;nbsp;&amp;bull; [[Types#Int|int]]&amp;nbsp;&amp;bull; [[Types#Name|name]]&amp;nbsp;&amp;bull; [[Types#String|string]]&amp;nbsp;&amp;bull; [[Types#Reference types|Object]]&amp;nbsp;&amp;bull; [[Class_limiter#Class|Class]]&amp;nbsp;&amp;bull; [[Enums]]&amp;nbsp;&amp;bull; [[Structs]]&amp;nbsp;([[Vector]]&amp;nbsp;&amp;sdot; [[Rotator]]&amp;nbsp;&amp;sdot; [[Color]])&amp;nbsp;&amp;bull; [[Static arrays]]&amp;nbsp;&amp;bull; [[Dynamic arrays]]&amp;nbsp;&amp;bull; [[Delegates]]&amp;nbsp;&amp;bull; [[Typecasting]]<br /> <br /> | group3 = [[Literals]]<br /> | list3 = [[Literals#Boolean values|Boolean]]&amp;nbsp;&amp;bull; [[Literals#Float numbers|Float]]&amp;nbsp;&amp;bull; [[Literals#Integer numbers|Integer]]&amp;nbsp;&amp;bull; [[Literals#Names|Names]]&amp;nbsp;&amp;bull; [[Literals#Objects|Objects]] ([[None]]&amp;nbsp;&amp;sdot; [[Self]])&amp;nbsp;&amp;bull; [[Literals#Vectors|Vectors]]&amp;nbsp;&amp;bull; [[Literals#Rotators|Rotators]]&amp;nbsp;&amp;bull; [[Literals#Strings|Strings]]<br /> <br /> | group4 = [[Flow control|Flow]]<br /> | list4 = [[GoTo statement|GoTo]]&amp;nbsp;&amp;bull; [[If statement|If]]&amp;nbsp;&amp;bull; [[Assert statement|Assert]]&amp;nbsp;&amp;bull; [[Return statement|Return]]&amp;nbsp;&amp;bull; [[Stop statement|Stop]]&amp;nbsp;&amp;bull; [[Switch statement|Switch]]&amp;nbsp;&amp;bull; [[While loop|While]]&amp;nbsp;&amp;bull; [[Do...Until loop|Do...Until]]&amp;nbsp;&amp;bull; [[For loop|For]]&amp;nbsp;&amp;bull; [[ForEach loop|ForEach]]&amp;nbsp;&amp;bull; [[Break statement|Break]]&amp;nbsp;&amp;bull; [[Continue statement|Continue]]&amp;nbsp;&amp;bull; [[FilterEditorOnly]]<br /> <br /> | group5 = [[Specifiers]]<br /> | list5 = [[Function call specifiers#Super|Super]]&amp;nbsp;&amp;bull; [[Function call specifiers#Global|Global]]&amp;nbsp;&amp;bull; [[Functions#Syntax 3|Static]]&amp;nbsp;&amp;bull; [[Variables#Accessing variables|Default]]&amp;nbsp;&amp;bull; [[Constants#Usage|Const]]<br /> <br /> | group6 = [[UnrealScript]]<br /> | list6 = [[UnrealScript syntax|Syntax]]&amp;nbsp;&amp;bull; [[UC File|.UC]]&amp;nbsp;&amp;bull; [[UCI File|.UCI]]&amp;nbsp;&amp;bull; [[UPKG File|.UPKG]]&amp;nbsp;&amp;bull; [[Comments]]&amp;nbsp;&amp;bull; [[Compiler directives|#directives]]&amp;nbsp;&amp;bull; [[Native coding|Native]]<br /> }}&lt;includeonly&gt;<br /> {{#ifeq:{{#sub:{{PAGENAME}}|0|12}}|UnrealScript|[[Category:UnrealScript reference| {{PAGENAME}}]]|[[Category:UnrealScript reference|{{PAGENAME}}]]}}<br /> &lt;/includeonly&gt;&lt;noinclude&gt;<br /> {{documentation}}<br /> &lt;/noinclude&gt;</div> Eliot https://wiki.beyondunreal.com/Types?diff=45328 Types 2013-03-11T20:09:24Z <p>Eliot: /* Name */ Hyphen are also allowed.</p> <hr /> <div>[[UnrealScript]] is a strongly-typed language and has various built-in data types. UnrealScript types can be divided in three general groups: primitive types, reference types and composite types.<br /> <br /> ==Primitive types==<br /> A primitive type only consists of a single and usually simple value. Variables declared of a primitive type directly contain that value and when assigning that value to another variable or passing it to a function call, a new copy of the value is created. Modifications to that copy have absolutely no effect on the original value still stored in the source variable.<br /> <br /> ===Int===<br /> UnrealScript has two integer types and '''int''' is the larger of them. Int values are integer numbers in the range -2147483648 to 2147483647, in other words signed 32 bit values.<br /> <br /> [[Literals#Integer numbers|Int literals]] can be specified in decimal or hexadecimal notation. Values exceeding the allowed range are truncated to the least significant 32 bits. For example the hexadecimal literal 0x100000005 actually represents the value 5.<br /> <br /> ===Byte===<br /> The smaller of UnrealScript's two integer types is '''byte'''. Byte values are integer numbers in the range 0 to 255, in other words unsigned 8 bit values.<br /> <br /> Any [[Literals#Integer numbers|int literal]] can also be used in &quot;byte context&quot;. If the value is outside the allowed range it will be truncated to the 8 least significant bits. For example the hexadecimal literal 0x100 (256) actually represents the value 0 and the decimal literal -1 represents the value 255.<br /> <br /> ===Bool===<br /> UnrealScript's [[wp:boolean|boolean]] type is '''bool''' and allows the values ''true'' and ''false''. These are also the names of the [[Literals#Boolean values|boolean literals]].<br /> <br /> The bool type has some restrictions in UnrealScript. For example it's not possible to declare [[#Static array|static]] or [[#Dynamic array|dynamic arrays]] of bool values in [[Unreal Engine]] generations 1 and 2 or to use the parameter modifier &quot;out&quot; on bool parameters in [[function declaration]]s. Starting with Unreal Engine 3 dynamic arrays of bool are supported, even though the [[udn3:UnrealScriptReference|UnrealScript reference on UDN]] disagrees.<br /> <br /> ===Float===<br /> UnrealScript has a [[wp:single precision|single precision]] [[wp:floating point|floating point]] type called '''float'''. The possible float values are distributed over the huge range of about 3.403·10&lt;sup&gt;38&lt;/sup&gt; to -3.403·10&lt;sup&gt;38&lt;/sup&gt;. The smallest possible value greater than 0 is about 1.175·10&lt;sup&gt;-38&lt;/sup&gt;. Generally, float values have a precision of about 6 or 7 decimal digits.<br /> <br /> [[Literals#Float numbers|Float literals]] can either be specified in decimal or scientific notation. For example the literal 1.2e3 means 1.2·10&lt;sup&gt;3&lt;/sup&gt; = 1200. Note that float literals must always contain the decimal point, even when using scientific notation, and must always start with a number or with the minus sign followed by a number. Unfortunately, negative exponents are not allowed in scientific notation. A hexadecimal representation like in Java is not supported.<br /> <br /> If a floating point operation has a result that exceeds the highest or lowest possible number, the return value has the special value of positive or negative infinity respectively. Invalid operations such as division by zero or adding positive and negative infinity return the special value ''NaN'', &quot;Not a Number&quot;. Be careful about those three special values as they will propagate. That means, if you subtract, add, multiply or divide infinity values, the result will be infinity again. If you perform an operation with the ''NaN'' value, the result will either be ''NaN'' again or (for comparison operators) something totally unexpected. For example if you perform the operation &lt;code&gt;a = x / 0&lt;/code&gt;, variable a will contain ''NaN''. Now the comparison &lt;code&gt;a == a&lt;/code&gt; will actually return the value ''false''! Unlike ''NaN'', infinity values will behave as expected if used in comparison operations, that is positive infinity is greater than any other value, negative infinity is smaller than any other value.<br /> <br /> ''Technical information:'' As specified in the [[wp:IEEE floating-point standard|IEEE floating-point standard]], the float type internally has a length of 32 bits and consists of a 23 bit fraction part, an 8 bit exponent and one sign bit. Especially the 23 bit fraction part (called the &quot;mantissa&quot;) imposes a limit on floating point precision. When large int values greater than 2&lt;sup&gt;23&lt;/sup&gt; or smaller than -2&lt;sup&gt;23&lt;/sup&gt; are [[typecast]]ed to float, they may get rounded.<br /> <br /> ===String===<br /> UnrealScript has a character string data type called '''string'''. Strings can contain any combination of [[wp:Unicode|Unicode]] characters.<br /> <br /> [[Literals#Strings|String literals]] are enclosed in double quotes and may not extends past the end of a line. Technically string literals (but not values) are allowed to have a length of up to 1023 characters. Internally strings are zero-terminated, which means no string can contain the null character because it would be recognized as the end of the string.<br /> <br /> String values are immutable and UnrealScript neither provides &quot;character&quot; type nor allows direct access to individual string characters. There are, however, functions for extracting substrings and returning the Unicode value of the first character of a string. There's also a function for returning a string of length 1 containing a character corresponding to a specified Unicode value.<br /> <br /> Very early builds of [[Unreal Engine 1]] had a fixed-length string type, which was declared with the syntax &lt;code&gt;string[''length'']&lt;/code&gt;. This type is no longer supported and only mentioned here in case you run into its declaration in old code snippets.<br /> <br /> In [[Unreal Engine 2]] (or at least [[UT2004]]) there also is an undocumented type called '''button''' that is an alias for the standard string type, but implies the [[Cache]] variable modifier. It is not actually used in stock code and there's no reason for you to ever declare a variable with the ''cache'' modifier, so this is purely informative.<br /> <br /> ===Name===<br /> The data type '''name''' is a very unusual one. To the programmer it appears a lot like a case-insensitive string with very limited character set. Every object and every class has a name, but names are also used for a variety of other things, such as identifying [[states]], code [[labels]], trigger events or bones of a [[skeletal mesh]].<br /> <br /> [[Literals#Names|Name literals]] are enclosed in single quotes and may contain the letters A to Z, both upper and lowercase, the numbers 0 to 9, the underscore character _, the hyphen character -, and the space character. This could be represented in [[wp:regular expression|regex]] as &lt;code&gt;([a-zA-Z0-9_\- ]*)&lt;/code&gt;. Names are limited to a length of up to 63 characters.<br /> <br /> Internally names are represented as int values, which makes sense since names are used in many places and would take up a lot of space if represented as strings. At runtime, the first mentioned string representation of a name is stored in the global name table. Whenever a name value is to a string through [[typecasting]], the string representation from the name table is used. This means that even though you could use the name literal &lt;code&gt;'cOnTrOlLeR'&lt;/code&gt; in your code, it would most likely be represented by the string &lt;code&gt;Controller&lt;/code&gt; instead, because that's the spelling used for the name of the class with that name.<br /> <br /> Newer builds of the [[Unreal Engine 3]] provides an additional way for specifying values of type name via the '''NameOf'''() pseudo-function. Similar to the [[ArrayCount]]() pseudo-function, NameOf() is replaced with a name constant by the compiler. The parameter for NameOf() is either a variable or function name for use in ReplicatedEvent() or with the various Timer management functions.<br /> <br /> ===Enum===<br /> {{main|Enums}}<br /> An '''enum''' type is a named list of identifiers that act as [[Literals#Enums|literals]] for the values of the enum type. UnrealScript's enumerated types are a bit like &quot;glorified integer values&quot;, similar to C++ enumerations. The first value of an enum type corresponds to 0, the second value to 1, and so on.<br /> <br /> ==Reference types==<br /> Unlike [[variables]] of primitive types, variables declared as a reference type only contain a [[wp:reference (computer science)|reference]] to the actual data. When assigning a reference type value to a variable or passing it to function calls, only the reference, not the referenced data, is copied. As a result it is possible that two reference type variables point to the same data and changes made to the data through one variable are immediately visible through the other.<br /> <br /> ===Object===<br /> An object reference does not contain an object, it only points to (i.e. &quot;reference&quot;) an instance of an object. That means the object reference's value actually is a pointer, not an object. Different object references may point to the same object. An object reference may also point to no object at all.<br /> <br /> Object references can be restricted to instances of a certain class. For example, an object reference might only accept instances of the class WebApplication, which also includes instances of WebApplication subclasses like UTServerAdmin.<br /> <br /> [[Literals#Objects|Object literals]] start with the name of the object's class, followed by the qualified or unqualified name of the object instance to reference, enclosed in single quotes. It is also possible to specify a literal for the empty object reference with the keyword &lt;code&gt;None&lt;/code&gt;. Another special object literal is the keyword &lt;code&gt;Self&lt;/code&gt;, which references the object instance executing the current function or state code. It is not available in [[static functions]], because those functions are not executed in the context of an object instance but of an object class.<br /> <br /> ===Actor===<br /> Actor references are basically the same as object references, just restricted to Actor or one of its subclasses. The only difference to non-actor references is, that the Actor class provides a ''Destroy'' method. This method not only gets rid of the actor instance it was called on, but also implicitly sets all references to that actor instance to ''none''.<br /> <br /> Most of your object references will probably be actor references, but apart from ''None'' and ''Self'' you will rarely encounter object literals of type Actor or one of its subclasses. In fact, Actor-type object literals are forbidden in UnrealScript code prior to [[Unreal Engine 3]]. Mappers sometimes see actor literals in the property window of various level objects, but UnrealScript programmers usually won't use them. Most actor literals in Unreal Engine 3 source code are [[archetypes]] in exported [[defaultproperties]] blocks.<br /> <br /> ===Interface===<br /> {{main|Interfaces}}<br /> Interface references are also object references, but restricted to an interface type. This kind of reference can point to any object instance of a class [[implements|implementing]] that interface.<br /> <br /> ===Class===<br /> {{main|Classes}}<br /> A class reference is very similar to an object reference, except that it is restricted to the type Class. Class references can be further restricted to a certain meta class, that means the type of referenced class. Such a restricted class reference is called a '''class limiter''' and is denoted by the keyword &lt;code&gt;Class&lt;/code&gt; followed by the name of the meta class in angle brackets. For example &lt;code&gt;&lt;nowiki&gt;class&lt;Info&gt;&lt;/nowiki&gt;&lt;/code&gt; denotes a reference that can point to the class Info or one of its subclasses.<br /> <br /> Class literals are specified in the same way as other object literals. The type of reference, here ''class'', followed by the class name, optionally qualified with the containing package name, and enclosed in single quotes. For example &lt;code&gt;class'Info'&lt;/code&gt; or &lt;code&gt;class'Engine.Info'&lt;/code&gt; references the Info class located in the Engine package. The special object literal ''None'' can be used for class references and means &quot;no class&quot;.<br /> <br /> One important restriction of class references is the lack of interface support. Classes implementing a certain interface can be anywhere in the class hierarchy, but class limiters only support direct inheritance. This means, that if you want a reference to classes implementing a certain interface, you need to use a generic class reference or the class limiter &lt;code&gt;&lt;nowiki&gt;class&lt;Object&gt;&lt;/nowiki&gt;&lt;/code&gt;. A reference of type &lt;code&gt;&lt;nowiki&gt;class&lt;Interface&gt;&lt;/nowiki&gt;&lt;/code&gt; would only allow references to the interface class itself (or any of its subinterfaces), but not to any class implementing the interface!<br /> <br /> ===Delegate===<br /> {{main|Delegates}}<br /> Delegates were introduced in Unreal Engine 2 and are '''function references'''. In Unreal Engine 2, delegates could only be declared using function syntax and replacing the keyword ''Function'' with the keyword ''Delegate''. Unreal Engine 3 also provides a notation similar to class limiters or dynamic arrays that can be used as variable or parameter type. This notation starts with the keyword &lt;code&gt;Delegate&lt;/code&gt;, followed by the name of a prototype delegate function declaration in angle brackets.<br /> <br /> [[Literals#Functions|Function literals]] are only used for delegate assignments and look more like a variable access than a literal. Basically you reference the object instance containing the function you want to assign to a delegate property (unless, of course, the function is contained in the same object instance as the code doing the assignment), followed by a dot and the pure function name without anything afterwards. As with object references, the keyword ''None'' means &quot;no function&quot;. For delegate function declarations this means the default body, if available, is executed when the delegate is called.<br /> <br /> ===Pointer===<br /> Also starting with Unreal Engine 2, UnrealScript has a generic [[wp:Pointer_(computing)|pointer]] data type, but it only serves as a placeholder for pointer variables in [[native code]]. UnrealScript itself provides no way to access or modify pointer properties.<br /> <br /> ==Composite types==<br /> Unlike all the other types described above, a composite type can contain more than one value. The composite types available in UnrealScript all work similar to primitive types: assigning them to other variables or passing them in function calls creates a copy of the data.<br /> <br /> ===Struct===<br /> {{main|Structs}}<br /> Structs (or structures) are a composition of a fixed number of values that may have different types. Struct types are no reference types, that means they are stored directly in the variable and copied as a whole when assigned to variables or passed as function parameters or returned as function result. Struct values are always replicated as a unit, but for a few structs like vector or rotator replication is not accurate due to bandwidth optimizations. Struct values may not be allowed for replication if the struct type is too large to fit in one network packet.<br /> <br /> Except for [[Literals#Vectors|vectors]] and [[Literals#Rotators|rotators]], there is no way to specify a complete struct value directly in code.<br /> <br /> ===Static array===<br /> {{main|Static arrays}}<br /> Static arrays are a composition of a fixed number of values with identical type. Static arrays can be passed as a whole as function parameters, though this will cause all values to be copied. They can't be assigned to variables or returned as function results, though. For replication, each element is considered separately. It is not possible to declare a static array of type bool or of a dynamic array type. Static arrays of a struct type containing bools or dynamic arrays are no problem, though. There are no literals for static arrays.<br /> <br /> ===Dynamic array===<br /> {{main|Dynamic arrays}}<br /> Dynamic arrays are also a composition of multiple values of the same type, but the actual number of values may change over time. Dynamic arrays can be assigned to variables, passed as function parameters and returned as function results, but every time the entire array is copied. They do not support replication at all.<br /> <br /> In [[Unreal Engine 1]], dynamic arrays can be declared, but there's no way to access them. Only starting with [[Unreal Engine 3]], dynamic arrays of type bool can be used. (You can declare dynamic bool arrays in Unreal Engine 2, but they don't work.) It is not possible to directly use a dynamic array type in other static or dynamic arrays. It is possible to wrap other arrays or bool variables in a struct type and create a dynamic array of that struct type, though. Function parameters that are dynamic arrays may not be optional. There are no literals for dynamic arrays.<br /> <br /> ===Multi-dimensional arrays===<br /> {{main|multi-dimensional arrays}}<br /> Multi-dimensional and jagged arrays are not supported in UnrealScript. You can work around that either by using an array of [[structs]] that contain an array or by performing index arithmetics on any kind of one-dimensional array.<br /> <br /> ===Map===<br /> See [[wp:Associative_array|Associative array]], [[wp:Map_(C%2B%2B)|C++ Map]] and [http://www.google.be/search?q=c%23+dictionary C# Dictionary].<br /> <br /> In [[Unreal Engine 1]] and 2 you cannot use this feature yet so says the compiler error (''Error, Map are not supported in UnrealScript yet'').<br /> <br /> In [[Unreal Engine 3]] you can declare maps however you cannot access them yet with UnrealScript.<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/Classes?diff=45310 Classes 2013-01-29T00:22:30Z <p>Eliot: /* Native implementation modifiers */ Added NativeOnly modifier.</p> <hr /> <div>A [[wp:class (computer science)|class]] is a &quot;blueprint&quot; to create objects, which are also called ''instances'' of that class.<br /> {{expand}}<br /> <br /> ==Declaration==<br /> Class declarations generally look as follows:<br /> '''class''' ''classname'' '''[[extends]]''' ''parentclass'' ['''[[within]]''' ''outerclass''] [[#Modifiers|[''modifiers'']]] ''';'''<br /> The class name is a standard identifier, which means it must start with a letter or underscore &lt;code&gt;_&lt;/code&gt;, can only contain letters, digits and the underscore character and has a length limit of 63 characters in total. The class name must be unique among all objects (this includes group names and ungrouped resources like textures) within a package. While class names are not required to be unique throughout the engine, it is strongly recommended you do not reuse any existing class names.<br /> <br /> The [[extends clause]] is mandatory for all classes, except the [[Object]] class, which is the root of the class hierarchy and the only class without a parent class. The [[within clause]] is optional and available starting with [[Unreal Engine 2]]. If specified, instances of this class can only be created within instances of the specified outer class. The class names specified in the extends and within clauses can optionally be qualified with a package name, though this is only necessary if you don't use unique class names.<br /> <br /> ==Modifiers==<br /> {{Infobox EngineVersion|modifier}}<br /> ;Abstract: No instances can be created of this class.<br /> ;CacheExempt&lt;sup&gt;UT2004&lt;/sup&gt;: This class should not be exported to [[UCL file]]s. Only has an effect for classes that are exported by default.<br /> ;Config(''name''): Specifies the configuration file name to use for the ''config'' and ''globalconfig'' [[variables]] in this class. This modifier is inherited. Loading and saving configurable variable values only has an effect if the class or one of its parent classes includes this modifier. In [[Unreal Engine 1]] and [[Unreal Engine 2|2]] the special config names ''System'' and ''User'' are mapped to the system and user INI files, e.g. UnrealTournament.ini or UT2004.ini and User.ini or whatever is specified via the &lt;code&gt;ini=...&lt;/code&gt; or &lt;code&gt;userini=...&lt;/code&gt; command line parameters. Similarly the special config names ''Editor'', ''EditorUserSettings'', ''Engine'', ''Game'', ''Input'', ''MapLists'', ''UI'' and ''Vote'' are mapped to whatever is specified via the &lt;code&gt;engineini=...&lt;/code&gt;, &lt;code&gt;editorini=...&lt;/code&gt;, etc. command line parameters.<br /> ;DependsOn(''classname'')&lt;sup&gt;2&lt;/sup&gt;: Specifies a class that must be parsed before this one. This is only necessary if the class is in the same package and declares a [[struct]] or [[enum]] type this class wants to use. Note that parent classes and implemented interfaces are always parsed before child classes. Only one class can be specified in the ''dependson'' definition, but you can add multiple ''dependson'' definitions per class declaration.&lt;br/&gt;'''Important:''' The compiler is quite sensitive to bad ''dependson'' definitions. If the compiler gets stuck or crashes at the &quot;Analyzing...&quot; stage, make sure your ''dependson'' definitons specify valid class names in the same package and do not create circular dependencies.<br /> ;DependsOn(''classname,...'')&lt;sup&gt;3&lt;/sup&gt;: Same as the UE2 version, but allows a list of class names.<br /> ;Deprecated&lt;sup&gt;3&lt;/sup&gt;: Marks the entire class as [[wp:deprecated|deprecated]]. The compiler will issue a warning if your code uses deprecated classes or instances of them. When saving packages, instances of deprecated classes might not be stored in the package file anymore.<br /> ;Guid(''A,B,C,D'')&lt;sup&gt;2&lt;/sup&gt;[[Types#Int|int]]: The [[wp:Guid|guid]] the class will use that is saved to disk. This was intended to be used with the [[wp:Component Object Model|Component Object Model]], and although the [[wp:IUnknown|IUnknown]] interface is implemented natively for all UnrealScript classes, this feature was never actually finished.<br /> ;Implements(''interface'')&lt;sup&gt;3&lt;/sup&gt;: This class implements the specified [[interface]]. That means the class must implement all functions defined in the interface.<br /> ;Instanced&lt;sup&gt;2&lt;/sup&gt;: [[Subobjects]] of this class or any subclass act as templates. Whenever instances of the class defining the subobject are created, a duplicate of the subobject is created and assigned to the corresponding properties of the new instance.<br /> ;Localized&lt;sup&gt;1&lt;/sup&gt;: The class has '''localized''' members, this is automatic applied in newer engine builds.<br /> ;ParseConfig&lt;sup&gt;2&lt;/sup&gt;: The config file name for this class can be specified at the command line via the parameter &lt;code&gt;''classname'''''='''...&lt;/code&gt;<br /> ;PerObjectConfig: Each instance of this class has its own section in configuration files. The non-static SaveConfig() function doesn't propagate the instance values to default values.<br /> ;PerObjectLocalized&lt;sup&gt;3&lt;/sup&gt;: Each instance of this class can have its own section in [[localization files]]. (In earlier engine generations this is always the case.)<br /> ;SafeReplace&lt;sup&gt;1,2&lt;/sup&gt;: Instances of this class can safely be replaced by some kind of default instance if a specific instance is unavailable. This is only used for [[Textures]], which are replaced by the default texture if the specific texture object does not exist.<br /> ;Transient, NonTransient&lt;sup&gt;3&lt;/sup&gt;: Whether instances of this class should be marked as &quot;transient&quot;. Transient objects can only exist at runtime, but not in package files. This modifier is inherited by subclasses, but it can only be removed from subclasses in [[Unreal Engine 3]] via the ''nontransient'' modifier. By default classes are not transient, for obvious reasons.<br /> <br /> ===Editor-related modifiers===<br /> ;AutoCollapseCategories(''name,...'')&lt;sup&gt;3&lt;/sup&gt;, DontAutoCollapseCategories(''name,...'')&lt;sup&gt;3&lt;/sup&gt;: Automatic collapses the specified variable category, categories with no name can be specified by inputting the class's name where the variable is declared in. This is just like ''CollapseCategories'' but can specify which category.<br /> ;AutoExpandCategories(''name,...'')&lt;sup&gt;3&lt;/sup&gt;: Automatic expands the specified variable category, categories with no name can be specified by inputting the class's name where the variable is declared in.<br /> ;ClassGroup(''name,...'')&lt;sup&gt;3 - UDK-2010-11&lt;/sup&gt;: Indicates that this class and its subclasses should be shown in the specified groups in the editor's Actor Classes browser when '''Group View''' is enabled.<br /> ;CollapseCategories&lt;sup&gt;2,3&lt;/sup&gt;, DontCollapseCategories&lt;sup&gt;2,3&lt;/sup&gt;: Whether to hide variable group headers (i.e. collapse variable groups) in property windows. This modifier is inherited and ''dontcollapsecategories'' is the default.<br /> ;DontSortCategories(''name,...'')&lt;sup&gt;3 - UDK&lt;/sup&gt;: ???.<br /> ;EditInlineNew&lt;sup&gt;2,3&lt;/sup&gt;, NotEditInlineNew&lt;sup&gt;2,3&lt;/sup&gt;: Whether instances of this class can be created for editable object variables via a button in the properties window. The editor allows you to select a non-abstract ''editinlinenew'' class via a drop-down list.<br /> ;ForceScriptOrder(true/false)&lt;sup&gt;3x3&lt;/sup&gt;: Forces the ''property window'' to display properties from this class in order as declared in the class.<br /> ;HideCategories(''name,...'')&lt;sup&gt;2,3&lt;/sup&gt;, ShowCategories(''name,...'')&lt;sup&gt;2,3&lt;/sup&gt;: Whether to hide the specified property groups from property windows. By default all property groups are displayed. The special group name ''None'' contains all properties not belonging to any specific group. This special group is only included in the properties window if it was opened via debug console commands from within the game.<br /> ;HideDropdown&lt;sup&gt;2,3&lt;/sup&gt;: Hide this class from various drop-down lists in the editor, e.g. for properties of [[Type#Class|type class]]. [[UT2004]] also provides the static [[UE2:Actor (UT2004)#ShouldBeHidden|Actor.ShouldBeHidden]]() function for actor classes that returns whether the class was declared with the ''hidedropdown'' modifier.<br /> ;NoUserCreate&lt;sup&gt;1&lt;/sup&gt;: Instances of this class can not be created in the editor. Unlike the newer ''placeable'' modifier, ''nousercreate'' is not inherited.<br /> ;Placeable&lt;sup&gt;2,3&lt;/sup&gt;, NotPlaceable&lt;sup&gt;2,3&lt;/sup&gt;: Whether instances of this class can be created in the editor. This modifier is inherited to subclasses and the default is ''notplaceable''.<br /> <br /> ===Native implementation modifiers===<br /> ;DllBind(''libraryname'')&lt;sup&gt;UDK&lt;/sup&gt;: Enables the [[udn3:DLLBind|DLLBind]] feature for this class. The class can implement [[functions]] that call [[wp:C (programming language)|C]] functions with the same name in the specified [[wp:dynamic-link library|dynamic-link library]].<br /> ;ExportStructs&lt;sup&gt;2,3&lt;/sup&gt;: All [[structs]] declared in this non-native class should be exported to native header files. Structs declared in ''native'' classes or with the ''native'' modifier are also exported without this modifier.<br /> ;Inherits(''classname'')&lt;sup&gt;3&lt;/sup&gt;: The native implementation of this class not only inherits from the native implementation of its parent class, but also from the specified [[wp:C++|C++]] class.<br /> ;Intrinsic&lt;sup&gt;1,2&lt;/sup&gt;: See '''Native'''.<br /> ;Native: This class contains some kind of native code. A class may only be declared as native if it has a native parent class. A C++ declaration for this class is exported to &lt;code&gt;''packagename''Classes.h&lt;/code&gt; at compile time unless the ''noexport'' modifier is specified. The exported C++ declaration includes all variables, structs, enums, delegates and any functions declared with the ''native'' or ''event'' modifier.<br /> ;Native(''prefix'')&lt;sup&gt;3&lt;/sup&gt;: Same as ''native'', except that the native C++ declaration of this class is exported to &lt;code&gt;''prefix''Classes.h&lt;/code&gt; instead.<br /> ;NativeOnly&lt;sup&gt;3&lt;/sup&gt;: This class cannot contain non-native functions. And other classes cannot access this class's properties. NativeOnly classes cannot extend non-native classes.<br /> ::''Implies'': '''Native'''<br /> ;NativeReplication: The conditions for replicating variables contained in this class are specified in native code. The [[replication block]] usually only contains an approximate representation of these conditions so UnrealScript programmers can see what is going on. This does not affect conditions for function replication.<br /> ;NoExport: Prevents exporting headers for this ''native'' class. Classes with the ''noexport'' modifier use manually created native header files instead.<br /> <br /> ==Native class code==<br /> Like native [[struct#Native struct code|struct]]s, some classes in [[Unreal Engine 2]] and 3 games may contain native code snippets([[cpptext]]) in UnrealScript. These declarations do not affect UnrealScript directly, but they are exported when auto-generating native headers while compiling UnrealScript classes.<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/User_talk:Eliot/monobook.css?diff=45303 User talk:Eliot/monobook.css 2012-12-30T22:40:10Z <p>Eliot: A screenshot is inside.</p> <hr /> <div>[http://prntscr.com/no0v6 screenshot of this skin!] --[[User:Eliot|Eliot]] 22:40, 30 December 2012 (UTC)</div> Eliot https://wiki.beyondunreal.com/User:Eliot/monobook.css?diff=45302 User:Eliot/monobook.css 2012-12-30T22:38:07Z <p>Eliot: </p> <hr /> <div>/*<br /> ** MediaWiki 'monobook' style sheet for CSS2-capable browsers.<br /> ** Copyright Gabriel Wicke - http://wikidev.net/<br /> ** License: GPL (http://www.gnu.org/copyleft/gpl.html)<br /> **<br /> ** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John<br /> ** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart &amp; Tom Croucher,<br /> ** Michael Zeltner and Geir Bækholt)<br /> ** All you guys rock :)<br /> */<br /> <br /> #p-navigation, #p-search, #p-tb{<br /> font-size:125%;<br /> margin-bottom:4px;<br /> width:140px;<br /> }<br /> <br /> #p-navigation .pBody, #p-search .pBody, #p-tb .pBody {;<br /> font-size:75%;<br /> background: #fdfdfd;<br /> border-radius:4px;<br /> border:1px solid #ededed;<br /> }<br /> <br /> div.pBody{<br /> padding-top:8px;<br /> }<br /> <br /> #column-content {<br /> width: 100%;<br /> float: right;<br /> margin: 0 0 .6em -12.2em;<br /> padding: 0;<br /> }<br /> <br /> #column-one {<br /> padding-top: 160px;<br /> }<br /> #content {<br /> margin: 2.8em 0 0 12.2em;<br /> padding: 8px 1em 1em 1em;<br /> position: relative;<br /> z-index: 2;<br /> background: #fdfdfd;<br /> border: 1px solid #ededed;<br /> border-right: none;<br /> line-height: 1.5em;<br /> border-radius:4px;<br /> color:#242424;<br /> }<br /> /* the left column width is specified in class .portlet */<br /> <br /> /* Font size:<br /> ** We take advantage of keyword scaling- browsers won't go below 9px<br /> ** More at http://www.w3.org/2003/07/30-font-size<br /> ** http://style.cleverchimp.com/font_size_intervals/altintervals.html<br /> */<br /> <br /> body {<br /> background: #eeeeee;<br /> color: #242424;<br /> margin: 0;<br /> padding: 0;<br /> font-size: 70%;<br /> }<br /> <br /> /* scale back up to a sane default */<br /> #globalWrapper {<br /> width: 100%;<br /> padding: 0;<br /> font-size:110%;<br /> }<br /> .visualClear {<br /> clear: both;<br /> }<br /> <br /> /* general styles */<br /> <br /> table {<br /> /* we don't want the bottom borders of &lt;h2&gt;s to be visible through<br /> floated tables */<br /> background-color: white;<br /> }<br /> fieldset table {<br /> /* but keep table layouts in forms clean... */<br /> background: none;<br /> }<br /> a {<br /> text-decoration: none;<br /> color: #242288;<br /> background: none;<br /> }<br /> a:visited {<br /> color: #585858;<br /> }<br /> a:active {<br /> color: #686868;<br /> }<br /> a:hover {<br /> color:black;<br /> text-decoration: underline;<br /> }<br /> a.stub {<br /> color: #772233;<br /> }<br /> a.new, #p-personal a.new {<br /> color: #ba0000;<br /> }<br /> a.new:visited, #p-personal a.new:visited {<br /> color: #a55858;<br /> }<br /> <br /> #p-navigation a, #p-search a, #p-tb a{<br /> color:#222;<br /> }<br /> <br /> #p-navigation a:visited, #p-search a:visited, #p-tb a:visited{<br /> color:#222;<br /> }<br /> <br /> img {<br /> border: none;<br /> vertical-align: middle;<br /> }<br /> p {<br /> margin: .4em 0 .5em 0;<br /> line-height: 1.5em;<br /> }<br /> p img {<br /> margin: 0;<br /> }<br /> <br /> hr {<br /> height: 1px;<br /> color: #aaa;<br /> background-color: #aaa;<br /> border: 0;<br /> margin: .2em 0 .2em 0;<br /> }<br /> <br /> h1, h2, h3, h4, h5, h6 {<br /> color: #242222;<br /> background: none;<br /> font-weight: bold;<br /> font-size:1.1em;<br /> margin: 0;<br /> padding-top: .5em;<br /> padding-bottom: 8px;<br /> border-bottom: 2px solid #542222;<br /> }<br /> h1 { font-size: 188%; }<br /> h1 .editsection { font-size: 53%; }<br /> h2 { font-size: 150%; }<br /> h2 .editsection { font-size: 67%; }<br /> h3, h4, h5, h6 {<br /> border-bottom: none;<br /> font-weight: bold;<br /> }<br /> h3 { font-size: 132%; }<br /> h3 .editsection { font-size: 76%; font-weight: normal; }<br /> h4 { font-size: 116%; }<br /> h4 .editsection { font-size: 86%; font-weight: normal; }<br /> h5 { font-size: 100%; }<br /> h5 .editsection { font-weight: normal; }<br /> h6 { font-size: 80%; }<br /> h6 .editsection { font-size: 125%; font-weight: normal; }<br /> <br /> ul {<br /> list-style-type: square;<br /> margin: .3em 0 0 1.5em;<br /> padding: 0;<br /> list-style-image: url(bullet.gif);<br /> }<br /> ol {<br /> margin: .3em 0 0 3.2em;<br /> padding: 0;<br /> list-style-image: none;<br /> }<br /> li {<br /> margin-bottom: .1em;<br /> }<br /> dt {<br /> font-weight: bold;<br /> margin-bottom: .1em;<br /> }<br /> dl {<br /> margin-top: .2em;<br /> margin-bottom: .5em;<br /> }<br /> dd {<br /> line-height: 1.5em;<br /> margin-left: 2em;<br /> margin-bottom: .1em;<br /> }<br /> <br /> fieldset {<br /> border: 1px solid #2f6fab;<br /> margin: 1em 0 1em 0;<br /> padding: 0 1em 1em;<br /> line-height: 1.5em;<br /> }<br /> fieldset.nested {<br /> margin: 0 0 0.5em 0;<br /> padding: 0 0.5em 0.5em;<br /> }<br /> legend {<br /> padding: .5em;<br /> font-size: 95%;<br /> }<br /> form {<br /> border: none;<br /> margin: 0;<br /> }<br /> <br /> textarea {<br /> width: 100%;<br /> padding: .1em;<br /> }<br /> <br /> input.historysubmit {<br /> padding: 0 .3em .3em .3em !important;<br /> font-size: 94%;<br /> cursor: pointer;<br /> height: 1.7em !important;<br /> margin-left: 1.6em;<br /> }<br /> select {<br /> vertical-align: top;<br /> }<br /> abbr, acronym, .explain {<br /> border-bottom: 1px dotted black;<br /> color: black;<br /> background: none;<br /> cursor: help;<br /> }<br /> q {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }<br /> /* disabled for now<br /> blockquote {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }*/<br /> code {<br /> background-color: white;<br /> border-radius: 4px;<br /> border:1px dashed #ededed;<br /> font-size: 1.2em;<br /> }<br /> pre {<br /> padding: 1em;<br /> border: 1px dashed #ededed;<br /> color: black;<br /> background-color: white;<br /> line-height: 1.1em;<br /> font-size: 1.2em;<br /> }<br /> <br /> /*<br /> ** the main content area<br /> */<br /> <br /> #siteSub {<br /> display: none;<br /> }<br /> #jump-to-nav {<br /> display: none;<br /> }<br /> <br /> #contentSub, #contentSub2 {<br /> font-size: 84%;<br /> line-height: 1.2em;<br /> margin: 0 0 1.4em 1em;<br /> color: #7d7d7d;<br /> width: auto;<br /> }<br /> span.subpages {<br /> display: block;<br /> }<br /> <br /> /* Some space under the headers in the content area */<br /> #bodyContent h1, #bodyContent h2 {<br /> margin-bottom: .6em;<br /> }<br /> #bodyContent h3, #bodyContent h4, #bodyContent h5 {<br /> margin-bottom: .3em;<br /> }<br /> #firstHeading {<br /> margin-bottom: .1em;<br /> /* These two rules hack around bug 2013 (fix for more limited bug 11325).<br /> When bug 2013 is fixed properly, they should be removed. */<br /> line-height: 1.2em;<br /> padding-bottom: 0;<br /> }<br /> <br /> /* user notification thing */<br /> .usermessage {<br /> background-color: #ffce7b;<br /> border: 1px solid #ffa500;<br /> color: black;<br /> font-weight: bold;<br /> margin: 2em 0 1em;<br /> padding: .5em 1em;<br /> vertical-align: middle;<br /> }<br /> #siteNotice {<br /> text-align: center;<br /> font-size: 95%;<br /> padding: 0 .9em;<br /> }<br /> #siteNotice p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .success {<br /> color: green;<br /> font-size: larger;<br /> }<br /> .error {<br /> color: red;<br /> font-size: larger;<br /> }<br /> .errorbox, .successbox {<br /> font-size: larger;<br /> border: 2px solid;<br /> padding: .5em 1em;<br /> float: left;<br /> margin-bottom: 2em;<br /> color: #000;<br /> }<br /> .errorbox {<br /> border-color: red;<br /> background-color: #fff2f2;<br /> }<br /> .successbox {<br /> border-color: green;<br /> background-color: #dfd;<br /> }<br /> .errorbox h2, .successbox h2 {<br /> font-size: 1em;<br /> font-weight: bold;<br /> display: inline;<br /> margin: 0 .5em 0 0;<br /> border: none;<br /> }<br /> <br /> .catlinks {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> margin-top: 1em;<br /> clear: both;<br /> }<br /> /* currently unused, intended to be used by a metadata box<br /> in the bottom-right corner of the content area */<br /> .documentDescription {<br /> /* The summary text describing the document */<br /> font-weight: bold;<br /> display: block;<br /> margin: 1em 0;<br /> line-height: 1.5em;<br /> }<br /> .documentByLine {<br /> text-align: right;<br /> font-size: 90%;<br /> clear: both;<br /> font-weight: normal;<br /> color: #76797c;<br /> }<br /> <br /> /* emulate center */<br /> .center {<br /> width: 100%;<br /> text-align: center;<br /> }<br /> *.center * {<br /> margin-left: auto;<br /> margin-right: auto;<br /> }<br /> /* small for tables and similar */<br /> .small, .small * {<br /> font-size: 94%;<br /> }<br /> table.small {<br /> font-size: 100%;<br /> }<br /> <br /> /*<br /> ** content styles<br /> */<br /> <br /> #toc,<br /> .toc,<br /> .mw-warning {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> #toc h2,<br /> .toc h2 {<br /> display: inline;<br /> border: none;<br /> padding: 0;<br /> font-size: 100%;<br /> font-weight: bold;<br /> }<br /> #toc #toctitle,<br /> .toc #toctitle,<br /> #toc .toctitle,<br /> .toc .toctitle {<br /> text-align: center;<br /> }<br /> #toc ul,<br /> .toc ul {<br /> list-style-type: none;<br /> list-style-image: none;<br /> margin-left: 0;<br /> padding-left: 0;<br /> text-align: left;<br /> }<br /> #toc ul ul,<br /> .toc ul ul {<br /> margin: 0 0 0 2em;<br /> }<br /> #toc .toctoggle,<br /> .toc .toctoggle {<br /> font-size: 94%;<br /> }<br /> <br /> .mw-warning {<br /> margin-left: 50px;<br /> margin-right: 50px;<br /> text-align: center;<br /> }<br /> <br /> /* images */<br /> div.floatright, table.floatright {<br /> clear: right;<br /> float: right;<br /> position: relative;<br /> margin: 0 0 .5em .5em;<br /> border: 0;<br /> /*<br /> border: .5em solid white;<br /> border-width: .5em 0 .8em 1.4em;<br /> */<br /> }<br /> div.floatright p { font-style: italic; }<br /> div.floatleft, table.floatleft {<br /> float: left;<br /> clear: left;<br /> position: relative;<br /> margin: 0 .5em .5em 0;<br /> border: 0;<br /> /*<br /> margin: .3em .5em .5em 0;<br /> border: .5em solid white;<br /> border-width: .5em 1.4em .8em 0;<br /> */<br /> }<br /> div.floatleft p { font-style: italic; }<br /> /* thumbnails */<br /> div.thumb {<br /> margin-bottom: .5em;<br /> border-style: solid;<br /> border-color: white;<br /> width: auto;<br /> }<br /> div.thumbinner {<br /> border: 1px solid #ccc;<br /> padding: 3px !important;<br /> background-color: #f9f9f9;<br /> font-size: 94%;<br /> text-align: center;<br /> overflow: hidden;<br /> }<br /> html .thumbimage {<br /> border: 1px solid #ccc;<br /> }<br /> html .thumbcaption {<br /> border: none;<br /> text-align: left;<br /> line-height: 1.4em;<br /> padding: 3px !important;<br /> font-size: 94%;<br /> }<br /> div.magnify {<br /> float: right;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.magnify a, div.magnify img {<br /> display: block;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.tright {<br /> clear: right;<br /> float: right;<br /> border-width: .5em 0 .8em 1.4em;<br /> }<br /> div.tleft {<br /> float: left;<br /> clear: left;<br /> margin-right: .5em;<br /> border-width: .5em 1.4em .8em 0;<br /> }<br /> img.thumbborder {<br /> border: 1px solid #dddddd;<br /> }<br /> .hiddenStructure {<br /> display: none;<br /> }<br /> <br /> /*<br /> ** classes for special content elements like town boxes<br /> ** intended to be referenced directly from the wiki src<br /> */<br /> <br /> /*<br /> ** User styles<br /> */<br /> /* table standards */<br /> table.rimage {<br /> float: right;<br /> position: relative;<br /> margin-left: 1em;<br /> margin-bottom: 1em;<br /> text-align: center;<br /> }<br /> .toccolours {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> <br /> /*<br /> ** edit views etc<br /> */<br /> .special li {<br /> line-height: 1.4em;<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> /*<br /> ** keep the whitespace in front of the ^=, hides rule from konqueror<br /> ** this is css3, the validator doesn't like it when validating as css2<br /> */<br /> #bodyContent a.external,<br /> #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background: url(external.png) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> .rtl #bodyContent a.external,<br /> .rtl #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background-image: url(external-rtl.png);<br /> }<br /> #bodyContent a[href ^=&quot;https://&quot;],<br /> .link-https {<br /> background: url(lock_icon.gif) center right no-repeat;<br /> padding: 0 16px;<br /> }<br /> #bodyContent a[href ^=&quot;mailto:&quot;],<br /> .link-mailto {<br /> background: url(mail_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;news://&quot;] {<br /> background: url(news_icon.png) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;ftp://&quot;],<br /> .link-ftp {<br /> background: url(file_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;irc://&quot;],<br /> #bodyContent a.extiw[href ^=&quot;irc://&quot;],<br /> .link-irc {<br /> background: url(discussionitem_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogg&quot;], #bodyContent a.external[href $=&quot;.OGG&quot;],<br /> #bodyContent a.external[href $=&quot;.mid&quot;], #bodyContent a.external[href $=&quot;.MID&quot;],<br /> #bodyContent a.external[href $=&quot;.midi&quot;], #bodyContent a.external[href $=&quot;.MIDI&quot;],<br /> #bodyContent a.external[href $=&quot;.mp3&quot;], #bodyContent a.external[href $=&quot;.MP3&quot;],<br /> #bodyContent a.external[href $=&quot;.wav&quot;], #bodyContent a.external[href $=&quot;.WAV&quot;],<br /> #bodyContent a.external[href $=&quot;.wma&quot;], #bodyContent a.external[href $=&quot;.WMA&quot;],<br /> .link-audio {<br /> background: url(&quot;audio.png&quot;) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogm&quot;], #bodyContent a.external[href $=&quot;.OGM&quot;],<br /> #bodyContent a.external[href $=&quot;.avi&quot;], #bodyContent a.external[href $=&quot;.AVI&quot;],<br /> #bodyContent a.external[href $=&quot;.mpeg&quot;], #bodyContent a.external[href $=&quot;.MPEG&quot;],<br /> #bodyContent a.external[href $=&quot;.mpg&quot;], #bodyContent a.external[href $=&quot;.MPG&quot;],<br /> .link-video {<br /> background: url(&quot;video.png&quot;) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> #bodyContent a.external[href $=&quot;.pdf&quot;], #bodyContent a.external[href $=&quot;.PDF&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf#&quot;], #bodyContent a.external[href *=&quot;.PDF#&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf?&quot;], #bodyContent a.external[href *=&quot;.PDF?&quot;],<br /> .link-document {<br /> background: url(&quot;document.png&quot;) center right no-repeat;<br /> padding: 0 12px;<br /> }<br /> <br /> /* for rtl wikis */<br /> .rtl #bodyContent a.external {<br /> background-position: left;<br /> padding-right: 0;<br /> }<br /> .rtl a.feedlink {<br /> background-position: right;<br /> padding-right: 16px;<br /> padding-left: 0;<br /> }<br /> <br /> /* correction for ltr wikis */<br /> .ltr #bodyContent a.external {<br /> padding-left: 0;<br /> }<br /> <br /> /* disable interwiki styling */<br /> #bodyContent a.extiw,<br /> #bodyContent a.extiw:active {<br /> color: #36b;<br /> background: none;<br /> padding: 0;<br /> }<br /> #bodyContent a.external {<br /> color: #36b;<br /> }<br /> /* this can be used in the content area to switch off<br /> special external link styling */<br /> #bodyContent .plainlinks a {<br /> background: none !important;<br /> padding: 0 !important;<br /> }<br /> /*<br /> ** Structural Elements<br /> */<br /> <br /> /*<br /> ** general portlet styles (elements in the quickbar)<br /> */<br /> .portlet {<br /> border: none;<br /> margin: 0 0 .5em;<br /> padding: 0;<br /> float: none;<br /> width: 11.6em;<br /> overflow: hidden;<br /> }<br /> .portlet h4 {<br /> font-size: 95%;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .portlet h5 {<br /> background: none repeat scroll 0% 0% rgb(64, 64, 64);<br /> text-transform: lowercase;<br /> font-size: 91%;<br /> white-space: nowrap;<br /> display: block;<br /> padding: 0px 4px 4px;<br /> border-top-left-radius: 4px;<br /> border-top-right-radius: 4px;<br /> color: white;<br /> height: 15px;<br /> font-weight: bold;<br /> border-bottom:1px solid black;<br /> }<br /> <br /> .portlet h6 {<br /> background: #ffae2e;<br /> border: 1px solid #2f6fab;<br /> border-style: solid solid none solid;<br /> padding: 0 1em 0 1em;<br /> text-transform: lowercase;<br /> display: block;<br /> font-size: 1em;<br /> height: 1.2em;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .pBody {<br /> font-size: 90%;<br /> color: black;<br /> border-collapse: collapse;<br /> border: 1px solid #ededed;<br /> padding: 0 .8em .3em .5em;<br /> padding-top:8px;<br /> }<br /> .portlet h1,<br /> .portlet h2,<br /> .portlet h3,<br /> .portlet h4 {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .portlet ul {<br /> line-height: 1.5em;<br /> list-style-type: square;<br /> list-style-image: url(bullet.gif);<br /> font-size: 95%;<br /> }<br /> .portlet li {<br /> padding: 0;<br /> margin: 0;<br /> }<br /> <br /> /*<br /> ** Logo properties<br /> */<br /> <br /> #p-logo {<br /> top: 0;<br /> left: 0;<br /> position: absolute; /*needed to use z-index */<br /> z-index: 3;<br /> height: 155px;<br /> width: 12em;<br /> overflow: visible;<br /> }<br /> #p-logo h5 {<br /> display: none;<br /> }<br /> #p-logo a,<br /> #p-logo a:hover {<br /> display: block;<br /> height: 155px;<br /> width: 12.2em;<br /> background-repeat: no-repeat;<br /> background-position: 35% 50% !important;<br /> text-decoration: none;<br /> }<br /> <br /> /*<br /> ** Search portlet<br /> */<br /> #p-search {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> input.searchButton {<br /> margin-top: 1px;<br /> font-size: 95%;<br /> }<br /> #searchGoButton {<br /> padding-left: .5em;<br /> padding-right: .5em;<br /> font-weight: bold;<br /> }<br /> #searchInput {<br /> width: 10.9em;<br /> margin: 0;<br /> font-size: 95%;<br /> }<br /> #p-search .pBody {<br /> padding: .5em .4em .4em .4em;<br /> text-align: center;<br /> }<br /> #p-search #searchform div div {<br /> margin-top: .4em;<br /> font-size: 95%;<br /> }<br /> /*<br /> ** the personal toolbar<br /> */<br /> #p-personal {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> z-index: 0;<br /> }<br /> #p-personal {<br /> width: 100%;<br /> white-space: nowrap;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> background: none;<br /> overflow: visible;<br /> line-height: 1.2em;<br /> }<br /> #p-personal h5 {<br /> display: none;<br /> }<br /> #p-personal .portlet,<br /> #p-personal .pBody {<br /> z-index: 0;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> overflow: visible;<br /> background: none;<br /> }<br /> /* this is the ul contained in the portlet */<br /> #p-personal ul {<br /> border: none;<br /> line-height: 1.4em;<br /> color: #2f6fab;<br /> padding: 0 2em 0 3em;<br /> margin: 0;<br /> text-align: right;<br /> list-style: none;<br /> z-index: 0;<br /> background: none;<br /> cursor: default;<br /> }<br /> #p-personal li {<br /> z-index: 0;<br /> border: none;<br /> padding: 0;<br /> display: inline;<br /> color: #2f6fab;<br /> margin-left: 1em;<br /> line-height: 1.2em;<br /> background: none;<br /> }<br /> #p-personal li a {<br /> text-decoration: none;<br /> color: #005896;<br /> padding-bottom: .2em;<br /> background: none;<br /> }<br /> #p-personal li a:hover {<br /> background-color: none;<br /> padding-bottom: .2em;<br /> text-decoration: none;<br /> }<br /> #p-personal li.active a:hover {<br /> background-color: none;<br /> }<br /> /* the icon in front of the user name, single quotes<br /> in bg url to hide it from iemac */<br /> li#pt-userpage,<br /> li#pt-anonuserpage,<br /> li#pt-login {<br /> background: url(user.gif) top left no-repeat;<br /> padding-left: 20px;<br /> text-transform: none;<br /> }<br /> #p-personal ul {<br /> text-transform: lowercase;<br /> }<br /> #p-personal li.active {<br /> font-weight: bold;<br /> }<br /> /*<br /> ** the page-related actions- page/talk, edit etc<br /> */<br /> #p-cactions {<br /> position: absolute;<br /> top: 1.3em;<br /> left: 11.5em;<br /> margin: 0;<br /> white-space: nowrap;<br /> width: 76%;<br /> line-height: 1.1em;<br /> overflow: visible;<br /> background: none;<br /> border-collapse: collapse;<br /> padding-left: 1em;<br /> list-style: none;<br /> font-size: 95%;<br /> }<br /> #p-cactions ul {<br /> list-style: none;<br /> }<br /> #p-cactions li {<br /> display: inline;<br /> border: 1px solid #ededed;<br /> border-bottom: none;<br /> padding:4px;<br /> background: white;<br /> border-top-left-radius:4px;<br /> border-top-right-radius:4px;<br /> }<br /> #p-cactions li.selected {<br /> border-color: darkblue;<br /> padding: 4px;<br /> font-weight: bold;<br /> background: white;<br /> }<br /> #p-cactions li:hover {<br /> border-color: #adadad;<br /> background: white;<br /> }<br /> #p-cactions li a {<br /> color: #002bb8;<br /> border: none;<br /> padding: 4px;<br /> position: relative;<br /> z-index: 0;<br /> margin: 0;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions li.selected a {<br /> z-index: 3;<br /> padding: 0 1em .2em!important;<br /> background:none;<br /> }<br /> #p-cactions .new a {<br /> color: #ba0000;<br /> }<br /> #p-cactions li a:hover {<br /> z-index: 3;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions h5 {<br /> display: none;<br /> }<br /> #p-cactions li.istalk {<br /> margin-right: 0;<br /> }<br /> #p-cactions li.istalk a {<br /> padding-right: .5em;<br /> }<br /> #p-cactions #ca-addsection a {<br /> padding-left: .4em;<br /> padding-right: .4em;<br /> }<br /> /* offsets to distinguish the tab groups */<br /> li#ca-talk {<br /> margin-right: 1.6em;<br /> }<br /> li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {<br /> margin-left: 1.6em;<br /> }<br /> #p-cactions .pBody {<br /> font-size: 1em;<br /> background-color: transparent;<br /> color: inherit;<br /> border-collapse: inherit;<br /> border: 0;<br /> padding: 0;<br /> }<br /> #p-cactions .hiddenStructure {<br /> display: none;<br /> }<br /> #p-cactions li a {<br /> text-transform: lowercase;<br /> }<br /> <br /> #p-lang {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> <br /> /* TODO: #t-iscite is only used by the Cite extension, come up with some<br /> * system which allows extensions to add to this file on the fly<br /> */<br /> #t-ispermalink, #t-iscite {<br /> color: #999;<br /> }<br /> /*<br /> ** footer<br /> */<br /> #footer {<br /> background-color: white;<br /> border-top: 1px solid #ededed;<br /> border-bottom: 1px solid #ededed;<br /> margin: .6em 0 1em 0;<br /> padding: 8px;<br /> text-align: center;<br /> min-height:0;<br /> }<br /> #footer li {<br /> display: inline;<br /> margin: 0 1.3em;<br /> }<br /> #f-poweredbyico, #f-copyrightico {<br /> margin: 0 8px;<br /> position: relative;<br /> top: -2px; /* Bump it up just a tad */<br /> }<br /> #f-poweredbyico {<br /> float: right;<br /> height: 1%;<br /> }<br /> #f-copyrightico {<br /> float: left;<br /> height: 1%;<br /> }<br /> <br /> /* js pref toc */<br /> #preftoc {<br /> margin: 0;<br /> padding: 0;<br /> width: 100%;<br /> clear: both;<br /> }<br /> #preftoc li {<br /> background-color: #f0f0f0;<br /> color: #000;<br /> }<br /> #preftoc li {<br /> margin: 1px -2px 1px 2px;<br /> float: left;<br /> padding: 2px 0 3px 0;<br /> border: 1px solid #fff;<br /> border-right-color: #716f64;<br /> border-bottom: 0;<br /> position: relative;<br /> white-space: nowrap;<br /> list-style-type: none;<br /> list-style-image: none;<br /> z-index: 3;<br /> }<br /> #preftoc li.selected {<br /> font-weight: bold;<br /> background-color: #f9f9f9;<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> cursor: default;<br /> top: 1px;<br /> padding-top: 2px;<br /> margin-right: -3px;<br /> }<br /> #preftoc &gt; li.selected {<br /> top: 2px;<br /> }<br /> #preftoc a,<br /> #preftoc a:active {<br /> display: block;<br /> color: #000;<br /> padding: 0 .7em;<br /> position: relative;<br /> text-decoration: none;<br /> }<br /> #preftoc li.selected a {<br /> cursor: default;<br /> text-decoration: none;<br /> }<br /> #prefcontrol {<br /> padding-top: 2em;<br /> clear: both;<br /> }<br /> #preferences {<br /> margin: 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em;<br /> background-color: #F9F9F9;<br /> }<br /> .prefsection {<br /> border: none;<br /> padding: 0;<br /> margin: 0;<br /> }<br /> .prefsection fieldset {<br /> border: 1px solid #aaa;<br /> float: left;<br /> margin-right: 2em;<br /> }<br /> .prefsection legend {<br /> font-weight: bold; <br /> }<br /> .prefsection table, .prefsection legend {<br /> background-color: #F9F9F9;<br /> }<br /> .mainLegend {<br /> display: none;<br /> }<br /> div.prefsectiontip {<br /> font-size: x-small;<br /> padding: .2em 2em;<br /> color: #666;<br /> }<br /> .btnSavePrefs {<br /> font-weight: bold;<br /> padding-left: .3em;<br /> padding-right: .3em;<br /> }<br /> <br /> .preferences-login {<br /> clear: both;<br /> margin-bottom: 1.5em;<br /> }<br /> <br /> .prefcache {<br /> font-size: 90%;<br /> margin-top: 2em;<br /> }<br /> <br /> div#userloginForm form,<br /> div#userlogin form#userlogin2 {<br /> margin: 0 3em 1em 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em 2em;<br /> background-color: #f9f9f9;<br /> float: left;<br /> }<br /> .rtl div#userloginForm form,<br /> .rtl div#userlogin form#userlogin2 {<br /> float: right;<br /> }<br /> <br /> div#userloginForm table,<br /> div#userlogin form#userlogin2 table {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> div#userloginForm h2,<br /> div#userlogin form#userlogin2 h2 {<br /> padding-top: 0;<br /> }<br /> <br /> div#userlogin .captcha,<br /> div#userloginForm .captcha {<br /> border: 1px solid #bbb;<br /> padding: 1.5em 2em;<br /> background-color: white;<br /> }<br /> <br /> #loginend, #signupend {<br /> clear: both;<br /> }<br /> <br /> #userloginprompt, #languagelinks {<br /> font-size: 85%;<br /> }<br /> <br /> #login-sectiontip {<br /> font-size: 85%;<br /> line-height: 1.2;<br /> padding-top: 2em;<br /> }<br /> <br /> #userlogin .loginText, #userlogin .loginPassword {<br /> width: 12em;<br /> }<br /> <br /> #userloginlink a, #wpLoginattempt, #wpCreateaccount {<br /> font-weight: bold;<br /> }<br /> <br /> /*<br /> ** IE/Mac fixes, hope to find a validating way to move this<br /> ** to a separate stylesheet. This would work but doesn't validate:<br /> ** @import(&quot;IEMacFixes.css&quot;);<br /> */<br /> /* tabs: border on the a, not the div */<br /> * &gt; html #p-cactions li { border: none; }<br /> * &gt; html #p-cactions li a {<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> }<br /> * &gt; html #p-cactions li.selected a { border-color: #fabd23; }<br /> /* footer icons need a fixed width */<br /> * &gt; html #f-poweredbyico,<br /> * &gt; html #f-copyrightico { width: 88px; }<br /> * &gt; html #bodyContent,<br /> * &gt; html #bodyContent pre {<br /> overflow-x: auto;<br /> width: 100%;<br /> padding-bottom: 25px;<br /> }<br /> <br /> /* more IE fixes */<br /> /* float/negative margin brokenness */<br /> * html #footer {margin-top: 0;}<br /> * html #column-content {<br /> display: inline;<br /> margin-bottom: 0;<br /> }<br /> * html div.editsection { font-size: smaller; }<br /> #pagehistory li.selected { position: relative; }<br /> <br /> /* Mac IE 5.0 fix; floated content turns invisible */<br /> * &gt; html #column-content {<br /> float: none;<br /> }<br /> * &gt; html #column-one {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> }<br /> * &gt; html #footer {<br /> margin-left: 13.2em;<br /> }<br /> .redirectText {<br /> font-size: 150%;<br /> margin: 5px;<br /> }<br /> <br /> .printfooter {<br /> display: none;<br /> }<br /> <br /> .not-patrolled {<br /> background-color: #ffa;<br /> }<br /> div.patrollink {<br /> clear: both;<br /> font-size: 75%;<br /> text-align: right;<br /> }<br /> span.newpage, span.minor, span.bot {<br /> font-weight: bold;<br /> }<br /> span.unpatrolled {<br /> font-weight: bold;<br /> color: red;<br /> }<br /> <br /> .sharedUploadNotice {<br /> font-style: italic;<br /> }<br /> <br /> span.updatedmarker {<br /> color: black;<br /> background-color: #0f0;<br /> }<br /> <br /> table.gallery {<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> padding: 2px;<br /> background-color: white;<br /> }<br /> <br /> table.gallery tr {<br /> vertical-align: top;<br /> }<br /> <br /> table.gallery td {<br /> vertical-align: top;<br /> background-color: #f9f9f9;<br /> border: solid 2px white;<br /> }<br /> /* Keep this temporarily so that cached pages will display right */<br /> table.gallery td.galleryheader {<br /> text-align: center;<br /> font-weight: bold;<br /> }<br /> table.gallery caption {<br /> font-weight: bold;<br /> }<br /> <br /> div.gallerybox {<br /> margin: 2px;<br /> }<br /> <br /> div.gallerybox div.thumb {<br /> text-align: center;<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> }<br /> <br /> div.gallerytext {<br /> overflow: hidden;<br /> font-size: 94%;<br /> padding: 2px 4px;<br /> }<br /> <br /> span.comment {<br /> font-style: italic;<br /> }<br /> <br /> span.changedby {<br /> font-size: 95%;<br /> }<br /> <br /> .previewnote {<br /> text-indent: 3em;<br /> color: #c00;<br /> border-bottom: 1px solid #aaa;<br /> padding-bottom: 1em;<br /> margin-bottom: 1em;<br /> }<br /> <br /> .previewnote p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> .editExternally {<br /> border: 1px solid gray;<br /> background-color: #ffffff;<br /> padding: 3px;<br /> margin-top: 0.5em;<br /> float: left;<br /> font-size: small;<br /> text-align: center;<br /> }<br /> .editExternallyHelp {<br /> font-style: italic;<br /> color: gray;<br /> }<br /> <br /> .toggle {<br /> margin-left: 2em;<br /> text-indent: -2em;<br /> }<br /> <br /> /* Classes for EXIF data display */<br /> table.mw_metadata {<br /> font-size: 0.8em;<br /> margin-left: 0.5em;<br /> margin-bottom: 0.5em;<br /> width: 300px;<br /> }<br /> <br /> table.mw_metadata caption {<br /> font-weight: bold;<br /> }<br /> <br /> table.mw_metadata th {<br /> font-weight: normal;<br /> }<br /> <br /> table.mw_metadata td {<br /> padding: 0.1em;<br /> }<br /> <br /> table.mw_metadata {<br /> border: none;<br /> border-collapse: collapse;<br /> }<br /> <br /> table.mw_metadata td, table.mw_metadata th {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> padding-left: 0.1em;<br /> padding-right: 0.1em;<br /> }<br /> <br /> table.mw_metadata th {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> table.mw_metadata td {<br /> background-color: #fcfcfc;<br /> }<br /> <br /> table.collapsed tr.collapsable {<br /> display: none;<br /> }<br /> <br /> <br /> /* filetoc */<br /> ul#filetoc {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> margin-bottom: 0.5em;<br /> margin-left: 0;<br /> margin-right: 0;<br /> }<br /> <br /> #filetoc li {<br /> display: inline;<br /> list-style-type: none;<br /> padding-right: 2em;<br /> }<br /> <br /> input#wpSummary {<br /> width: 80%;<br /> }<br /> <br /> /* @bug 1714 */<br /> input#wpSave, input#wpDiff {<br /> margin-right: 0.33em;<br /> }<br /> <br /> #wpSave {<br /> font-weight: bold;<br /> }<br /> <br /> /* Classes for article validation */<br /> <br /> table.revisionform_default {<br /> border: 1px solid #000000;<br /> }<br /> <br /> table.revisionform_focus {<br /> border: 1px solid #000000;<br /> background-color:#00BBFF;<br /> }<br /> <br /> tr.revision_tr_default {<br /> background-color:#EEEEEE;<br /> }<br /> <br /> tr.revision_tr_first {<br /> background-color:#DDDDDD;<br /> }<br /> <br /> p.revision_saved {<br /> color: green;<br /> font-weight:bold;<br /> }<br /> <br /> #mw_trackbacks {<br /> border: solid 1px #bbbbff;<br /> background-color: #eeeeff;<br /> padding: 0.2em;<br /> }<br /> <br /> <br /> /* Allmessages table */<br /> <br /> #allmessagestable th {<br /> background-color: #b2b2ff;<br /> }<br /> <br /> #allmessagestable tr.orig {<br /> background-color: #ffe2e2;<br /> }<br /> <br /> #allmessagestable tr.new {<br /> background-color: #e2ffe2;<br /> }<br /> <br /> #allmessagestable tr.def {<br /> background-color: #f0f0ff;<br /> }<br /> <br /> <br /> /* noarticletext */<br /> div.noarticletext {<br /> border: 1px solid #ccc;<br /> background: #fff;<br /> padding: .2em 1em;<br /> color: #000;<br /> }<br /> <br /> div#searchTargetContainer {<br /> left: 10px;<br /> top: 10px;<br /> width: 90%;<br /> background: white;<br /> }<br /> <br /> div#searchTarget {<br /> padding: 3px;<br /> margin: 5px;<br /> background: #F0F0F0;<br /> border: solid 1px blue;<br /> }<br /> <br /> div#searchTarget ul li {<br /> list-style: none;<br /> }<br /> <br /> div#searchTarget ul li:before {<br /> color: orange;<br /> content: &quot;\00BB \0020&quot;;<br /> }<br /> <br /> div#searchTargetHide {<br /> float:right;<br /> border:solid 1px black;<br /> background:#DCDCDC;<br /> padding:2px;<br /> }<br /> <br /> #powersearch p {<br /> margin-top:0px;<br /> }<br /> <br /> div.multipageimagenavbox {<br /> border: solid 1px silver;<br /> padding: 4px;<br /> margin: 1em;<br /> background: #f0f0f0;<br /> }<br /> <br /> div.multipageimagenavbox div.thumb {<br /> border: none;<br /> margin-left: 2em;<br /> margin-right: 2em;<br /> }<br /> <br /> div.multipageimagenavbox hr {<br /> margin: 6px;<br /> }<br /> <br /> table.multipageimage td {<br /> text-align: center;<br /> }<br /> <br /> /** Special:Version */<br /> <br /> table#sv-ext, table#sv-hooks, table#sv-software {<br /> margin: 1em;<br /> padding:0em;<br /> }<br /> <br /> #sv-ext td, #sv-hooks td, #sv-software td,<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> border: 1px solid #A0A0A0;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> background-color: #F0F0F0;<br /> color: black;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> tr.sv-space{<br /> height: 0.8em;<br /> border:none;<br /> }<br /> tr.sv-space td { display: none; }<br /> <br /> /*<br /> Table pager (e.g. Special:Imagelist)<br /> - remove underlines from the navigation link<br /> - collapse borders<br /> - set the borders to outsets (similar to Special:Allmessages)<br /> - remove line wrapping for all td and th, set background color<br /> - restore line wrapping for the last two table cells (description and size)<br /> */<br /> .TablePager { min-width: 80%; }<br /> .TablePager_nav a { text-decoration: none; }<br /> .TablePager { border-collapse: collapse; }<br /> .TablePager, .TablePager td, .TablePager th { <br /> border: 1px solid #aaaaaa;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> .TablePager th { background-color: #eeeeff }<br /> .TablePager td { background-color: #ffffff }<br /> .TablePager tr:hover td { background-color: #eeeeff }<br /> <br /> .imagelist td, .imagelist th { white-space: nowrap }<br /> .imagelist .TablePager_col_links { background-color: #eeeeff }<br /> .imagelist .TablePager_col_img_description { white-space: normal }<br /> .imagelist th.TablePager_sort { background-color: #ccccff }<br /> <br /> .templatesUsed { margin-top: 1.5em; }<br /> <br /> .mw-summary-preview {<br /> margin: 0.1em 0;<br /> }<br /> <br /> /* Friendlier slave lag warnings */<br /> div.mw-lag-warn-normal,<br /> div.mw-lag-warn-high {<br /> padding: 3px;<br /> text-align: center;<br /> margin: 3px auto;<br /> }<br /> div.mw-lag-warn-normal {<br /> border: 1px solid #FFCC66;<br /> background-color: #FFFFCC;<br /> }<br /> div.mw-lag-warn-high {<br /> font-weight: bold;<br /> border: 2px solid #FF0033;<br /> background-color: #FFCCCC;<br /> }<br /> <br /> .MediaTransformError {<br /> background-color: #ccc;<br /> padding: 0.1em;<br /> }<br /> .MediaTransformError td {<br /> text-align: center;<br /> vertical-align: middle;<br /> font-size: 90%;<br /> }<br /> <br /> /** Special:Search stuff */<br /> div#mw-search-interwiki-caption {<br /> text-align: center;<br /> font-weight: bold;<br /> font-size: 95%;<br /> }<br /> <br /> .mw-search-interwiki-project {<br /> font-size: 97%;<br /> text-align: left;<br /> padding-left: 0.2em;<br /> padding-right: 0.15em;<br /> padding-bottom: 0.2em;<br /> padding-top: 0.15em;<br /> background: #cae8ff;<br /> }<br /> <br /> /* God-damned hack for the crappy layout */<br /> .os-suggest {<br /> font-size: 110%;<br /> }<br /> <br /> table.ambox {<br /> margin: 0;<br /> border-width: 1px;<br /> border-style: dashed;<br /> }<br /> <br /> <br /> table.ambox-serious {<br /> border-color: rgb(187, 34, 34);<br /> background-color: #fdeeee;<br /> border-radius:4px;<br /> }<br /> <br /> table.infobox {<br /> float: right;<br /> width: 300px;<br /> margin: 1em 0px 1em 1em;<br /> border-radius: 4px 4px 4px 4px;<br /> border: 1px dashed rgb(237, 237, 237);<br /> background-color: rgb(253, 253, 253);<br /> }</div> Eliot https://wiki.beyondunreal.com/User:Eliot/monobook.css?diff=45301 User:Eliot/monobook.css 2012-12-30T22:28:13Z <p>Eliot: link color, infobox and ambox synced.</p> <hr /> <div>/*<br /> ** MediaWiki 'monobook' style sheet for CSS2-capable browsers.<br /> ** Copyright Gabriel Wicke - http://wikidev.net/<br /> ** License: GPL (http://www.gnu.org/copyleft/gpl.html)<br /> **<br /> ** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John<br /> ** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart &amp; Tom Croucher,<br /> ** Michael Zeltner and Geir Bækholt)<br /> ** All you guys rock :)<br /> */<br /> <br /> #p-navigation, #p-search, #p-tb{<br /> font-size:125%;<br /> margin-bottom:4px;<br /> width:140px;<br /> }<br /> <br /> #p-navigation .pBody, #p-search .pBody, #p-tb .pBody {;<br /> font-size:75%;<br /> background: #fdfdfd;<br /> border-radius:4px;<br /> border:1px solid #ededed;<br /> }<br /> <br /> div.pBody{<br /> padding-top:8px;<br /> }<br /> <br /> #column-content {<br /> width: 100%;<br /> float: right;<br /> margin: 0 0 .6em -12.2em;<br /> padding: 0;<br /> }<br /> <br /> #column-one {<br /> padding-top: 160px;<br /> }<br /> #content {<br /> margin: 2.8em 0 0 12.2em;<br /> padding: 0 1em 1em 1em;<br /> position: relative;<br /> z-index: 2;<br /> background: #fdfdfd;<br /> border: 1px solid #ededed;<br /> border-right: none;<br /> line-height: 1.5em;<br /> border-radius:4px;<br /> color:#242424;<br /> }<br /> /* the left column width is specified in class .portlet */<br /> <br /> /* Font size:<br /> ** We take advantage of keyword scaling- browsers won't go below 9px<br /> ** More at http://www.w3.org/2003/07/30-font-size<br /> ** http://style.cleverchimp.com/font_size_intervals/altintervals.html<br /> */<br /> <br /> body {<br /> background: #eeeeee;<br /> color: #242424;<br /> margin: 0;<br /> padding: 0;<br /> font-size: 70%;<br /> }<br /> <br /> /* scale back up to a sane default */<br /> #globalWrapper {<br /> width: 100%;<br /> padding: 0;<br /> font-size:110%;<br /> }<br /> .visualClear {<br /> clear: both;<br /> }<br /> <br /> /* general styles */<br /> <br /> table {<br /> /* we don't want the bottom borders of &lt;h2&gt;s to be visible through<br /> floated tables */<br /> background-color: white;<br /> }<br /> fieldset table {<br /> /* but keep table layouts in forms clean... */<br /> background: none;<br /> }<br /> a {<br /> text-decoration: none;<br /> color: #242288;<br /> background: none;<br /> }<br /> a:visited {<br /> color: #585858;<br /> }<br /> a:active {<br /> color: #686868;<br /> }<br /> a:hover {<br /> color:black;<br /> text-decoration: underline;<br /> }<br /> a.stub {<br /> color: #772233;<br /> }<br /> a.new, #p-personal a.new {<br /> color: #ba0000;<br /> }<br /> a.new:visited, #p-personal a.new:visited {<br /> color: #a55858;<br /> }<br /> <br /> #p-navigation a, #p-search a, #p-tb a{<br /> color:#222;<br /> }<br /> <br /> #p-navigation a:visited, #p-search a:visited, #p-tb a:visited{<br /> color:#222;<br /> }<br /> <br /> img {<br /> border: none;<br /> vertical-align: middle;<br /> }<br /> p {<br /> margin: .4em 0 .5em 0;<br /> line-height: 1.5em;<br /> }<br /> p img {<br /> margin: 0;<br /> }<br /> <br /> hr {<br /> height: 1px;<br /> color: #aaa;<br /> background-color: #aaa;<br /> border: 0;<br /> margin: .2em 0 .2em 0;<br /> }<br /> <br /> h1, h2, h3, h4, h5, h6 {<br /> color: black;<br /> background: none;<br /> font-weight: bold;<br /> font-size:1.1em;<br /> margin: 0;<br /> padding-top: .5em;<br /> padding-bottom: .17em;<br /> border-bottom: 1px solid #ededed;<br /> }<br /> h1 { font-size: 188%; }<br /> h1 .editsection { font-size: 53%; }<br /> h2 { font-size: 150%; }<br /> h2 .editsection { font-size: 67%; }<br /> h3, h4, h5, h6 {<br /> border-bottom: none;<br /> font-weight: bold;<br /> }<br /> h3 { font-size: 132%; }<br /> h3 .editsection { font-size: 76%; font-weight: normal; }<br /> h4 { font-size: 116%; }<br /> h4 .editsection { font-size: 86%; font-weight: normal; }<br /> h5 { font-size: 100%; }<br /> h5 .editsection { font-weight: normal; }<br /> h6 { font-size: 80%; }<br /> h6 .editsection { font-size: 125%; font-weight: normal; }<br /> <br /> ul {<br /> list-style-type: square;<br /> margin: .3em 0 0 1.5em;<br /> padding: 0;<br /> list-style-image: url(bullet.gif);<br /> }<br /> ol {<br /> margin: .3em 0 0 3.2em;<br /> padding: 0;<br /> list-style-image: none;<br /> }<br /> li {<br /> margin-bottom: .1em;<br /> }<br /> dt {<br /> font-weight: bold;<br /> margin-bottom: .1em;<br /> }<br /> dl {<br /> margin-top: .2em;<br /> margin-bottom: .5em;<br /> }<br /> dd {<br /> line-height: 1.5em;<br /> margin-left: 2em;<br /> margin-bottom: .1em;<br /> }<br /> <br /> fieldset {<br /> border: 1px solid #2f6fab;<br /> margin: 1em 0 1em 0;<br /> padding: 0 1em 1em;<br /> line-height: 1.5em;<br /> }<br /> fieldset.nested {<br /> margin: 0 0 0.5em 0;<br /> padding: 0 0.5em 0.5em;<br /> }<br /> legend {<br /> padding: .5em;<br /> font-size: 95%;<br /> }<br /> form {<br /> border: none;<br /> margin: 0;<br /> }<br /> <br /> textarea {<br /> width: 100%;<br /> padding: .1em;<br /> }<br /> <br /> input.historysubmit {<br /> padding: 0 .3em .3em .3em !important;<br /> font-size: 94%;<br /> cursor: pointer;<br /> height: 1.7em !important;<br /> margin-left: 1.6em;<br /> }<br /> select {<br /> vertical-align: top;<br /> }<br /> abbr, acronym, .explain {<br /> border-bottom: 1px dotted black;<br /> color: black;<br /> background: none;<br /> cursor: help;<br /> }<br /> q {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }<br /> /* disabled for now<br /> blockquote {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }*/<br /> code {<br /> background-color: white;<br /> border-radius: 4px;<br /> border:1px dashed #ededed;<br /> }<br /> pre {<br /> padding: 1em;<br /> border: 1px dashed #ededed;<br /> color: black;<br /> background-color: white;<br /> line-height: 1.1em;<br /> }<br /> <br /> /*<br /> ** the main content area<br /> */<br /> <br /> #siteSub {<br /> display: none;<br /> }<br /> #jump-to-nav {<br /> display: none;<br /> }<br /> <br /> #contentSub, #contentSub2 {<br /> font-size: 84%;<br /> line-height: 1.2em;<br /> margin: 0 0 1.4em 1em;<br /> color: #7d7d7d;<br /> width: auto;<br /> }<br /> span.subpages {<br /> display: block;<br /> }<br /> <br /> /* Some space under the headers in the content area */<br /> #bodyContent h1, #bodyContent h2 {<br /> margin-bottom: .6em;<br /> }<br /> #bodyContent h3, #bodyContent h4, #bodyContent h5 {<br /> margin-bottom: .3em;<br /> }<br /> #firstHeading {<br /> margin-bottom: .1em;<br /> /* These two rules hack around bug 2013 (fix for more limited bug 11325).<br /> When bug 2013 is fixed properly, they should be removed. */<br /> line-height: 1.2em;<br /> padding-bottom: 0;<br /> }<br /> <br /> /* user notification thing */<br /> .usermessage {<br /> background-color: #ffce7b;<br /> border: 1px solid #ffa500;<br /> color: black;<br /> font-weight: bold;<br /> margin: 2em 0 1em;<br /> padding: .5em 1em;<br /> vertical-align: middle;<br /> }<br /> #siteNotice {<br /> text-align: center;<br /> font-size: 95%;<br /> padding: 0 .9em;<br /> }<br /> #siteNotice p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .success {<br /> color: green;<br /> font-size: larger;<br /> }<br /> .error {<br /> color: red;<br /> font-size: larger;<br /> }<br /> .errorbox, .successbox {<br /> font-size: larger;<br /> border: 2px solid;<br /> padding: .5em 1em;<br /> float: left;<br /> margin-bottom: 2em;<br /> color: #000;<br /> }<br /> .errorbox {<br /> border-color: red;<br /> background-color: #fff2f2;<br /> }<br /> .successbox {<br /> border-color: green;<br /> background-color: #dfd;<br /> }<br /> .errorbox h2, .successbox h2 {<br /> font-size: 1em;<br /> font-weight: bold;<br /> display: inline;<br /> margin: 0 .5em 0 0;<br /> border: none;<br /> }<br /> <br /> .catlinks {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> margin-top: 1em;<br /> clear: both;<br /> }<br /> /* currently unused, intended to be used by a metadata box<br /> in the bottom-right corner of the content area */<br /> .documentDescription {<br /> /* The summary text describing the document */<br /> font-weight: bold;<br /> display: block;<br /> margin: 1em 0;<br /> line-height: 1.5em;<br /> }<br /> .documentByLine {<br /> text-align: right;<br /> font-size: 90%;<br /> clear: both;<br /> font-weight: normal;<br /> color: #76797c;<br /> }<br /> <br /> /* emulate center */<br /> .center {<br /> width: 100%;<br /> text-align: center;<br /> }<br /> *.center * {<br /> margin-left: auto;<br /> margin-right: auto;<br /> }<br /> /* small for tables and similar */<br /> .small, .small * {<br /> font-size: 94%;<br /> }<br /> table.small {<br /> font-size: 100%;<br /> }<br /> <br /> /*<br /> ** content styles<br /> */<br /> <br /> #toc,<br /> .toc,<br /> .mw-warning {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> #toc h2,<br /> .toc h2 {<br /> display: inline;<br /> border: none;<br /> padding: 0;<br /> font-size: 100%;<br /> font-weight: bold;<br /> }<br /> #toc #toctitle,<br /> .toc #toctitle,<br /> #toc .toctitle,<br /> .toc .toctitle {<br /> text-align: center;<br /> }<br /> #toc ul,<br /> .toc ul {<br /> list-style-type: none;<br /> list-style-image: none;<br /> margin-left: 0;<br /> padding-left: 0;<br /> text-align: left;<br /> }<br /> #toc ul ul,<br /> .toc ul ul {<br /> margin: 0 0 0 2em;<br /> }<br /> #toc .toctoggle,<br /> .toc .toctoggle {<br /> font-size: 94%;<br /> }<br /> <br /> .mw-warning {<br /> margin-left: 50px;<br /> margin-right: 50px;<br /> text-align: center;<br /> }<br /> <br /> /* images */<br /> div.floatright, table.floatright {<br /> clear: right;<br /> float: right;<br /> position: relative;<br /> margin: 0 0 .5em .5em;<br /> border: 0;<br /> /*<br /> border: .5em solid white;<br /> border-width: .5em 0 .8em 1.4em;<br /> */<br /> }<br /> div.floatright p { font-style: italic; }<br /> div.floatleft, table.floatleft {<br /> float: left;<br /> clear: left;<br /> position: relative;<br /> margin: 0 .5em .5em 0;<br /> border: 0;<br /> /*<br /> margin: .3em .5em .5em 0;<br /> border: .5em solid white;<br /> border-width: .5em 1.4em .8em 0;<br /> */<br /> }<br /> div.floatleft p { font-style: italic; }<br /> /* thumbnails */<br /> div.thumb {<br /> margin-bottom: .5em;<br /> border-style: solid;<br /> border-color: white;<br /> width: auto;<br /> }<br /> div.thumbinner {<br /> border: 1px solid #ccc;<br /> padding: 3px !important;<br /> background-color: #f9f9f9;<br /> font-size: 94%;<br /> text-align: center;<br /> overflow: hidden;<br /> }<br /> html .thumbimage {<br /> border: 1px solid #ccc;<br /> }<br /> html .thumbcaption {<br /> border: none;<br /> text-align: left;<br /> line-height: 1.4em;<br /> padding: 3px !important;<br /> font-size: 94%;<br /> }<br /> div.magnify {<br /> float: right;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.magnify a, div.magnify img {<br /> display: block;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.tright {<br /> clear: right;<br /> float: right;<br /> border-width: .5em 0 .8em 1.4em;<br /> }<br /> div.tleft {<br /> float: left;<br /> clear: left;<br /> margin-right: .5em;<br /> border-width: .5em 1.4em .8em 0;<br /> }<br /> img.thumbborder {<br /> border: 1px solid #dddddd;<br /> }<br /> .hiddenStructure {<br /> display: none;<br /> }<br /> <br /> /*<br /> ** classes for special content elements like town boxes<br /> ** intended to be referenced directly from the wiki src<br /> */<br /> <br /> /*<br /> ** User styles<br /> */<br /> /* table standards */<br /> table.rimage {<br /> float: right;<br /> position: relative;<br /> margin-left: 1em;<br /> margin-bottom: 1em;<br /> text-align: center;<br /> }<br /> .toccolours {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> <br /> /*<br /> ** edit views etc<br /> */<br /> .special li {<br /> line-height: 1.4em;<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> /*<br /> ** keep the whitespace in front of the ^=, hides rule from konqueror<br /> ** this is css3, the validator doesn't like it when validating as css2<br /> */<br /> #bodyContent a.external,<br /> #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background: url(external.png) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> .rtl #bodyContent a.external,<br /> .rtl #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background-image: url(external-rtl.png);<br /> }<br /> #bodyContent a[href ^=&quot;https://&quot;],<br /> .link-https {<br /> background: url(lock_icon.gif) center right no-repeat;<br /> padding: 0 16px;<br /> }<br /> #bodyContent a[href ^=&quot;mailto:&quot;],<br /> .link-mailto {<br /> background: url(mail_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;news://&quot;] {<br /> background: url(news_icon.png) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;ftp://&quot;],<br /> .link-ftp {<br /> background: url(file_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;irc://&quot;],<br /> #bodyContent a.extiw[href ^=&quot;irc://&quot;],<br /> .link-irc {<br /> background: url(discussionitem_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogg&quot;], #bodyContent a.external[href $=&quot;.OGG&quot;],<br /> #bodyContent a.external[href $=&quot;.mid&quot;], #bodyContent a.external[href $=&quot;.MID&quot;],<br /> #bodyContent a.external[href $=&quot;.midi&quot;], #bodyContent a.external[href $=&quot;.MIDI&quot;],<br /> #bodyContent a.external[href $=&quot;.mp3&quot;], #bodyContent a.external[href $=&quot;.MP3&quot;],<br /> #bodyContent a.external[href $=&quot;.wav&quot;], #bodyContent a.external[href $=&quot;.WAV&quot;],<br /> #bodyContent a.external[href $=&quot;.wma&quot;], #bodyContent a.external[href $=&quot;.WMA&quot;],<br /> .link-audio {<br /> background: url(&quot;audio.png&quot;) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogm&quot;], #bodyContent a.external[href $=&quot;.OGM&quot;],<br /> #bodyContent a.external[href $=&quot;.avi&quot;], #bodyContent a.external[href $=&quot;.AVI&quot;],<br /> #bodyContent a.external[href $=&quot;.mpeg&quot;], #bodyContent a.external[href $=&quot;.MPEG&quot;],<br /> #bodyContent a.external[href $=&quot;.mpg&quot;], #bodyContent a.external[href $=&quot;.MPG&quot;],<br /> .link-video {<br /> background: url(&quot;video.png&quot;) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> #bodyContent a.external[href $=&quot;.pdf&quot;], #bodyContent a.external[href $=&quot;.PDF&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf#&quot;], #bodyContent a.external[href *=&quot;.PDF#&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf?&quot;], #bodyContent a.external[href *=&quot;.PDF?&quot;],<br /> .link-document {<br /> background: url(&quot;document.png&quot;) center right no-repeat;<br /> padding: 0 12px;<br /> }<br /> <br /> /* for rtl wikis */<br /> .rtl #bodyContent a.external {<br /> background-position: left;<br /> padding-right: 0;<br /> }<br /> .rtl a.feedlink {<br /> background-position: right;<br /> padding-right: 16px;<br /> padding-left: 0;<br /> }<br /> <br /> /* correction for ltr wikis */<br /> .ltr #bodyContent a.external {<br /> padding-left: 0;<br /> }<br /> <br /> /* disable interwiki styling */<br /> #bodyContent a.extiw,<br /> #bodyContent a.extiw:active {<br /> color: #36b;<br /> background: none;<br /> padding: 0;<br /> }<br /> #bodyContent a.external {<br /> color: #36b;<br /> }<br /> /* this can be used in the content area to switch off<br /> special external link styling */<br /> #bodyContent .plainlinks a {<br /> background: none !important;<br /> padding: 0 !important;<br /> }<br /> /*<br /> ** Structural Elements<br /> */<br /> <br /> /*<br /> ** general portlet styles (elements in the quickbar)<br /> */<br /> .portlet {<br /> border: none;<br /> margin: 0 0 .5em;<br /> padding: 0;<br /> float: none;<br /> width: 11.6em;<br /> overflow: hidden;<br /> }<br /> .portlet h4 {<br /> font-size: 95%;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .portlet h5 {<br /> background: none repeat scroll 0% 0% rgb(64, 64, 64);<br /> text-transform: lowercase;<br /> font-size: 91%;<br /> white-space: nowrap;<br /> display: block;<br /> padding: 0px 4px 4px;<br /> border-top-left-radius: 4px;<br /> border-top-right-radius: 4px;<br /> color: white;<br /> height: 15px;<br /> font-weight: bold;<br /> border-bottom:1px solid black;<br /> }<br /> <br /> .portlet h6 {<br /> background: #ffae2e;<br /> border: 1px solid #2f6fab;<br /> border-style: solid solid none solid;<br /> padding: 0 1em 0 1em;<br /> text-transform: lowercase;<br /> display: block;<br /> font-size: 1em;<br /> height: 1.2em;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .pBody {<br /> font-size: 90%;<br /> color: black;<br /> border-collapse: collapse;<br /> border: 1px solid #ededed;<br /> padding: 0 .8em .3em .5em;<br /> padding-top:8px;<br /> }<br /> .portlet h1,<br /> .portlet h2,<br /> .portlet h3,<br /> .portlet h4 {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .portlet ul {<br /> line-height: 1.5em;<br /> list-style-type: square;<br /> list-style-image: url(bullet.gif);<br /> font-size: 95%;<br /> }<br /> .portlet li {<br /> padding: 0;<br /> margin: 0;<br /> }<br /> <br /> /*<br /> ** Logo properties<br /> */<br /> <br /> #p-logo {<br /> top: 0;<br /> left: 0;<br /> position: absolute; /*needed to use z-index */<br /> z-index: 3;<br /> height: 155px;<br /> width: 12em;<br /> overflow: visible;<br /> }<br /> #p-logo h5 {<br /> display: none;<br /> }<br /> #p-logo a,<br /> #p-logo a:hover {<br /> display: block;<br /> height: 155px;<br /> width: 12.2em;<br /> background-repeat: no-repeat;<br /> background-position: 35% 50% !important;<br /> text-decoration: none;<br /> }<br /> <br /> /*<br /> ** Search portlet<br /> */<br /> #p-search {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> input.searchButton {<br /> margin-top: 1px;<br /> font-size: 95%;<br /> }<br /> #searchGoButton {<br /> padding-left: .5em;<br /> padding-right: .5em;<br /> font-weight: bold;<br /> }<br /> #searchInput {<br /> width: 10.9em;<br /> margin: 0;<br /> font-size: 95%;<br /> }<br /> #p-search .pBody {<br /> padding: .5em .4em .4em .4em;<br /> text-align: center;<br /> }<br /> #p-search #searchform div div {<br /> margin-top: .4em;<br /> font-size: 95%;<br /> }<br /> /*<br /> ** the personal toolbar<br /> */<br /> #p-personal {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> z-index: 0;<br /> }<br /> #p-personal {<br /> width: 100%;<br /> white-space: nowrap;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> background: none;<br /> overflow: visible;<br /> line-height: 1.2em;<br /> }<br /> #p-personal h5 {<br /> display: none;<br /> }<br /> #p-personal .portlet,<br /> #p-personal .pBody {<br /> z-index: 0;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> overflow: visible;<br /> background: none;<br /> }<br /> /* this is the ul contained in the portlet */<br /> #p-personal ul {<br /> border: none;<br /> line-height: 1.4em;<br /> color: #2f6fab;<br /> padding: 0 2em 0 3em;<br /> margin: 0;<br /> text-align: right;<br /> list-style: none;<br /> z-index: 0;<br /> background: none;<br /> cursor: default;<br /> }<br /> #p-personal li {<br /> z-index: 0;<br /> border: none;<br /> padding: 0;<br /> display: inline;<br /> color: #2f6fab;<br /> margin-left: 1em;<br /> line-height: 1.2em;<br /> background: none;<br /> }<br /> #p-personal li a {<br /> text-decoration: none;<br /> color: #005896;<br /> padding-bottom: .2em;<br /> background: none;<br /> }<br /> #p-personal li a:hover {<br /> background-color: none;<br /> padding-bottom: .2em;<br /> text-decoration: none;<br /> }<br /> #p-personal li.active a:hover {<br /> background-color: none;<br /> }<br /> /* the icon in front of the user name, single quotes<br /> in bg url to hide it from iemac */<br /> li#pt-userpage,<br /> li#pt-anonuserpage,<br /> li#pt-login {<br /> background: url(user.gif) top left no-repeat;<br /> padding-left: 20px;<br /> text-transform: none;<br /> }<br /> #p-personal ul {<br /> text-transform: lowercase;<br /> }<br /> #p-personal li.active {<br /> font-weight: bold;<br /> }<br /> /*<br /> ** the page-related actions- page/talk, edit etc<br /> */<br /> #p-cactions {<br /> position: absolute;<br /> top: 1.3em;<br /> left: 11.5em;<br /> margin: 0;<br /> white-space: nowrap;<br /> width: 76%;<br /> line-height: 1.1em;<br /> overflow: visible;<br /> background: none;<br /> border-collapse: collapse;<br /> padding-left: 1em;<br /> list-style: none;<br /> font-size: 95%;<br /> }<br /> #p-cactions ul {<br /> list-style: none;<br /> }<br /> #p-cactions li {<br /> display: inline;<br /> border: 1px solid #ededed;<br /> border-bottom: none;<br /> padding:4px;<br /> background: white;<br /> border-top-left-radius:4px;<br /> border-top-right-radius:4px;<br /> }<br /> #p-cactions li.selected {<br /> border-color: darkblue;<br /> padding: 4px;<br /> font-weight: bold;<br /> background: white;<br /> }<br /> #p-cactions li:hover {<br /> border-color: #adadad;<br /> background: white;<br /> }<br /> #p-cactions li a {<br /> color: #002bb8;<br /> border: none;<br /> padding: 4px;<br /> position: relative;<br /> z-index: 0;<br /> margin: 0;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions li.selected a {<br /> z-index: 3;<br /> padding: 0 1em .2em!important;<br /> background:none;<br /> }<br /> #p-cactions .new a {<br /> color: #ba0000;<br /> }<br /> #p-cactions li a:hover {<br /> z-index: 3;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions h5 {<br /> display: none;<br /> }<br /> #p-cactions li.istalk {<br /> margin-right: 0;<br /> }<br /> #p-cactions li.istalk a {<br /> padding-right: .5em;<br /> }<br /> #p-cactions #ca-addsection a {<br /> padding-left: .4em;<br /> padding-right: .4em;<br /> }<br /> /* offsets to distinguish the tab groups */<br /> li#ca-talk {<br /> margin-right: 1.6em;<br /> }<br /> li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {<br /> margin-left: 1.6em;<br /> }<br /> #p-cactions .pBody {<br /> font-size: 1em;<br /> background-color: transparent;<br /> color: inherit;<br /> border-collapse: inherit;<br /> border: 0;<br /> padding: 0;<br /> }<br /> #p-cactions .hiddenStructure {<br /> display: none;<br /> }<br /> #p-cactions li a {<br /> text-transform: lowercase;<br /> }<br /> <br /> #p-lang {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> <br /> /* TODO: #t-iscite is only used by the Cite extension, come up with some<br /> * system which allows extensions to add to this file on the fly<br /> */<br /> #t-ispermalink, #t-iscite {<br /> color: #999;<br /> }<br /> /*<br /> ** footer<br /> */<br /> #footer {<br /> background-color: white;<br /> border-top: 1px solid #ededed;<br /> border-bottom: 1px solid #ededed;<br /> margin: .6em 0 1em 0;<br /> padding: 8px;<br /> text-align: center;<br /> font-size: 70%;<br /> min-height:0;<br /> }<br /> #footer li {<br /> display: inline;<br /> margin: 0 1.3em;<br /> }<br /> #f-poweredbyico, #f-copyrightico {<br /> margin: 0 8px;<br /> position: relative;<br /> top: -2px; /* Bump it up just a tad */<br /> }<br /> #f-poweredbyico {<br /> float: right;<br /> height: 1%;<br /> }<br /> #f-copyrightico {<br /> float: left;<br /> height: 1%;<br /> }<br /> <br /> /* js pref toc */<br /> #preftoc {<br /> margin: 0;<br /> padding: 0;<br /> width: 100%;<br /> clear: both;<br /> }<br /> #preftoc li {<br /> background-color: #f0f0f0;<br /> color: #000;<br /> }<br /> #preftoc li {<br /> margin: 1px -2px 1px 2px;<br /> float: left;<br /> padding: 2px 0 3px 0;<br /> border: 1px solid #fff;<br /> border-right-color: #716f64;<br /> border-bottom: 0;<br /> position: relative;<br /> white-space: nowrap;<br /> list-style-type: none;<br /> list-style-image: none;<br /> z-index: 3;<br /> }<br /> #preftoc li.selected {<br /> font-weight: bold;<br /> background-color: #f9f9f9;<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> cursor: default;<br /> top: 1px;<br /> padding-top: 2px;<br /> margin-right: -3px;<br /> }<br /> #preftoc &gt; li.selected {<br /> top: 2px;<br /> }<br /> #preftoc a,<br /> #preftoc a:active {<br /> display: block;<br /> color: #000;<br /> padding: 0 .7em;<br /> position: relative;<br /> text-decoration: none;<br /> }<br /> #preftoc li.selected a {<br /> cursor: default;<br /> text-decoration: none;<br /> }<br /> #prefcontrol {<br /> padding-top: 2em;<br /> clear: both;<br /> }<br /> #preferences {<br /> margin: 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em;<br /> background-color: #F9F9F9;<br /> }<br /> .prefsection {<br /> border: none;<br /> padding: 0;<br /> margin: 0;<br /> }<br /> .prefsection fieldset {<br /> border: 1px solid #aaa;<br /> float: left;<br /> margin-right: 2em;<br /> }<br /> .prefsection legend {<br /> font-weight: bold; <br /> }<br /> .prefsection table, .prefsection legend {<br /> background-color: #F9F9F9;<br /> }<br /> .mainLegend {<br /> display: none;<br /> }<br /> div.prefsectiontip {<br /> font-size: x-small;<br /> padding: .2em 2em;<br /> color: #666;<br /> }<br /> .btnSavePrefs {<br /> font-weight: bold;<br /> padding-left: .3em;<br /> padding-right: .3em;<br /> }<br /> <br /> .preferences-login {<br /> clear: both;<br /> margin-bottom: 1.5em;<br /> }<br /> <br /> .prefcache {<br /> font-size: 90%;<br /> margin-top: 2em;<br /> }<br /> <br /> div#userloginForm form,<br /> div#userlogin form#userlogin2 {<br /> margin: 0 3em 1em 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em 2em;<br /> background-color: #f9f9f9;<br /> float: left;<br /> }<br /> .rtl div#userloginForm form,<br /> .rtl div#userlogin form#userlogin2 {<br /> float: right;<br /> }<br /> <br /> div#userloginForm table,<br /> div#userlogin form#userlogin2 table {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> div#userloginForm h2,<br /> div#userlogin form#userlogin2 h2 {<br /> padding-top: 0;<br /> }<br /> <br /> div#userlogin .captcha,<br /> div#userloginForm .captcha {<br /> border: 1px solid #bbb;<br /> padding: 1.5em 2em;<br /> background-color: white;<br /> }<br /> <br /> #loginend, #signupend {<br /> clear: both;<br /> }<br /> <br /> #userloginprompt, #languagelinks {<br /> font-size: 85%;<br /> }<br /> <br /> #login-sectiontip {<br /> font-size: 85%;<br /> line-height: 1.2;<br /> padding-top: 2em;<br /> }<br /> <br /> #userlogin .loginText, #userlogin .loginPassword {<br /> width: 12em;<br /> }<br /> <br /> #userloginlink a, #wpLoginattempt, #wpCreateaccount {<br /> font-weight: bold;<br /> }<br /> <br /> /*<br /> ** IE/Mac fixes, hope to find a validating way to move this<br /> ** to a separate stylesheet. This would work but doesn't validate:<br /> ** @import(&quot;IEMacFixes.css&quot;);<br /> */<br /> /* tabs: border on the a, not the div */<br /> * &gt; html #p-cactions li { border: none; }<br /> * &gt; html #p-cactions li a {<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> }<br /> * &gt; html #p-cactions li.selected a { border-color: #fabd23; }<br /> /* footer icons need a fixed width */<br /> * &gt; html #f-poweredbyico,<br /> * &gt; html #f-copyrightico { width: 88px; }<br /> * &gt; html #bodyContent,<br /> * &gt; html #bodyContent pre {<br /> overflow-x: auto;<br /> width: 100%;<br /> padding-bottom: 25px;<br /> }<br /> <br /> /* more IE fixes */<br /> /* float/negative margin brokenness */<br /> * html #footer {margin-top: 0;}<br /> * html #column-content {<br /> display: inline;<br /> margin-bottom: 0;<br /> }<br /> * html div.editsection { font-size: smaller; }<br /> #pagehistory li.selected { position: relative; }<br /> <br /> /* Mac IE 5.0 fix; floated content turns invisible */<br /> * &gt; html #column-content {<br /> float: none;<br /> }<br /> * &gt; html #column-one {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> }<br /> * &gt; html #footer {<br /> margin-left: 13.2em;<br /> }<br /> .redirectText {<br /> font-size: 150%;<br /> margin: 5px;<br /> }<br /> <br /> .printfooter {<br /> display: none;<br /> }<br /> <br /> .not-patrolled {<br /> background-color: #ffa;<br /> }<br /> div.patrollink {<br /> clear: both;<br /> font-size: 75%;<br /> text-align: right;<br /> }<br /> span.newpage, span.minor, span.bot {<br /> font-weight: bold;<br /> }<br /> span.unpatrolled {<br /> font-weight: bold;<br /> color: red;<br /> }<br /> <br /> .sharedUploadNotice {<br /> font-style: italic;<br /> }<br /> <br /> span.updatedmarker {<br /> color: black;<br /> background-color: #0f0;<br /> }<br /> <br /> table.gallery {<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> padding: 2px;<br /> background-color: white;<br /> }<br /> <br /> table.gallery tr {<br /> vertical-align: top;<br /> }<br /> <br /> table.gallery td {<br /> vertical-align: top;<br /> background-color: #f9f9f9;<br /> border: solid 2px white;<br /> }<br /> /* Keep this temporarily so that cached pages will display right */<br /> table.gallery td.galleryheader {<br /> text-align: center;<br /> font-weight: bold;<br /> }<br /> table.gallery caption {<br /> font-weight: bold;<br /> }<br /> <br /> div.gallerybox {<br /> margin: 2px;<br /> }<br /> <br /> div.gallerybox div.thumb {<br /> text-align: center;<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> }<br /> <br /> div.gallerytext {<br /> overflow: hidden;<br /> font-size: 94%;<br /> padding: 2px 4px;<br /> }<br /> <br /> span.comment {<br /> font-style: italic;<br /> }<br /> <br /> span.changedby {<br /> font-size: 95%;<br /> }<br /> <br /> .previewnote {<br /> text-indent: 3em;<br /> color: #c00;<br /> border-bottom: 1px solid #aaa;<br /> padding-bottom: 1em;<br /> margin-bottom: 1em;<br /> }<br /> <br /> .previewnote p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> .editExternally {<br /> border: 1px solid gray;<br /> background-color: #ffffff;<br /> padding: 3px;<br /> margin-top: 0.5em;<br /> float: left;<br /> font-size: small;<br /> text-align: center;<br /> }<br /> .editExternallyHelp {<br /> font-style: italic;<br /> color: gray;<br /> }<br /> <br /> .toggle {<br /> margin-left: 2em;<br /> text-indent: -2em;<br /> }<br /> <br /> /* Classes for EXIF data display */<br /> table.mw_metadata {<br /> font-size: 0.8em;<br /> margin-left: 0.5em;<br /> margin-bottom: 0.5em;<br /> width: 300px;<br /> }<br /> <br /> table.mw_metadata caption {<br /> font-weight: bold;<br /> }<br /> <br /> table.mw_metadata th {<br /> font-weight: normal;<br /> }<br /> <br /> table.mw_metadata td {<br /> padding: 0.1em;<br /> }<br /> <br /> table.mw_metadata {<br /> border: none;<br /> border-collapse: collapse;<br /> }<br /> <br /> table.mw_metadata td, table.mw_metadata th {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> padding-left: 0.1em;<br /> padding-right: 0.1em;<br /> }<br /> <br /> table.mw_metadata th {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> table.mw_metadata td {<br /> background-color: #fcfcfc;<br /> }<br /> <br /> table.collapsed tr.collapsable {<br /> display: none;<br /> }<br /> <br /> <br /> /* filetoc */<br /> ul#filetoc {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> margin-bottom: 0.5em;<br /> margin-left: 0;<br /> margin-right: 0;<br /> }<br /> <br /> #filetoc li {<br /> display: inline;<br /> list-style-type: none;<br /> padding-right: 2em;<br /> }<br /> <br /> input#wpSummary {<br /> width: 80%;<br /> }<br /> <br /> /* @bug 1714 */<br /> input#wpSave, input#wpDiff {<br /> margin-right: 0.33em;<br /> }<br /> <br /> #wpSave {<br /> font-weight: bold;<br /> }<br /> <br /> /* Classes for article validation */<br /> <br /> table.revisionform_default {<br /> border: 1px solid #000000;<br /> }<br /> <br /> table.revisionform_focus {<br /> border: 1px solid #000000;<br /> background-color:#00BBFF;<br /> }<br /> <br /> tr.revision_tr_default {<br /> background-color:#EEEEEE;<br /> }<br /> <br /> tr.revision_tr_first {<br /> background-color:#DDDDDD;<br /> }<br /> <br /> p.revision_saved {<br /> color: green;<br /> font-weight:bold;<br /> }<br /> <br /> #mw_trackbacks {<br /> border: solid 1px #bbbbff;<br /> background-color: #eeeeff;<br /> padding: 0.2em;<br /> }<br /> <br /> <br /> /* Allmessages table */<br /> <br /> #allmessagestable th {<br /> background-color: #b2b2ff;<br /> }<br /> <br /> #allmessagestable tr.orig {<br /> background-color: #ffe2e2;<br /> }<br /> <br /> #allmessagestable tr.new {<br /> background-color: #e2ffe2;<br /> }<br /> <br /> #allmessagestable tr.def {<br /> background-color: #f0f0ff;<br /> }<br /> <br /> <br /> /* noarticletext */<br /> div.noarticletext {<br /> border: 1px solid #ccc;<br /> background: #fff;<br /> padding: .2em 1em;<br /> color: #000;<br /> }<br /> <br /> div#searchTargetContainer {<br /> left: 10px;<br /> top: 10px;<br /> width: 90%;<br /> background: white;<br /> }<br /> <br /> div#searchTarget {<br /> padding: 3px;<br /> margin: 5px;<br /> background: #F0F0F0;<br /> border: solid 1px blue;<br /> }<br /> <br /> div#searchTarget ul li {<br /> list-style: none;<br /> }<br /> <br /> div#searchTarget ul li:before {<br /> color: orange;<br /> content: &quot;\00BB \0020&quot;;<br /> }<br /> <br /> div#searchTargetHide {<br /> float:right;<br /> border:solid 1px black;<br /> background:#DCDCDC;<br /> padding:2px;<br /> }<br /> <br /> #powersearch p {<br /> margin-top:0px;<br /> }<br /> <br /> div.multipageimagenavbox {<br /> border: solid 1px silver;<br /> padding: 4px;<br /> margin: 1em;<br /> background: #f0f0f0;<br /> }<br /> <br /> div.multipageimagenavbox div.thumb {<br /> border: none;<br /> margin-left: 2em;<br /> margin-right: 2em;<br /> }<br /> <br /> div.multipageimagenavbox hr {<br /> margin: 6px;<br /> }<br /> <br /> table.multipageimage td {<br /> text-align: center;<br /> }<br /> <br /> /** Special:Version */<br /> <br /> table#sv-ext, table#sv-hooks, table#sv-software {<br /> margin: 1em;<br /> padding:0em;<br /> }<br /> <br /> #sv-ext td, #sv-hooks td, #sv-software td,<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> border: 1px solid #A0A0A0;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> background-color: #F0F0F0;<br /> color: black;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> tr.sv-space{<br /> height: 0.8em;<br /> border:none;<br /> }<br /> tr.sv-space td { display: none; }<br /> <br /> /*<br /> Table pager (e.g. Special:Imagelist)<br /> - remove underlines from the navigation link<br /> - collapse borders<br /> - set the borders to outsets (similar to Special:Allmessages)<br /> - remove line wrapping for all td and th, set background color<br /> - restore line wrapping for the last two table cells (description and size)<br /> */<br /> .TablePager { min-width: 80%; }<br /> .TablePager_nav a { text-decoration: none; }<br /> .TablePager { border-collapse: collapse; }<br /> .TablePager, .TablePager td, .TablePager th { <br /> border: 1px solid #aaaaaa;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> .TablePager th { background-color: #eeeeff }<br /> .TablePager td { background-color: #ffffff }<br /> .TablePager tr:hover td { background-color: #eeeeff }<br /> <br /> .imagelist td, .imagelist th { white-space: nowrap }<br /> .imagelist .TablePager_col_links { background-color: #eeeeff }<br /> .imagelist .TablePager_col_img_description { white-space: normal }<br /> .imagelist th.TablePager_sort { background-color: #ccccff }<br /> <br /> .templatesUsed { margin-top: 1.5em; }<br /> <br /> .mw-summary-preview {<br /> margin: 0.1em 0;<br /> }<br /> <br /> /* Friendlier slave lag warnings */<br /> div.mw-lag-warn-normal,<br /> div.mw-lag-warn-high {<br /> padding: 3px;<br /> text-align: center;<br /> margin: 3px auto;<br /> }<br /> div.mw-lag-warn-normal {<br /> border: 1px solid #FFCC66;<br /> background-color: #FFFFCC;<br /> }<br /> div.mw-lag-warn-high {<br /> font-weight: bold;<br /> border: 2px solid #FF0033;<br /> background-color: #FFCCCC;<br /> }<br /> <br /> .MediaTransformError {<br /> background-color: #ccc;<br /> padding: 0.1em;<br /> }<br /> .MediaTransformError td {<br /> text-align: center;<br /> vertical-align: middle;<br /> font-size: 90%;<br /> }<br /> <br /> /** Special:Search stuff */<br /> div#mw-search-interwiki-caption {<br /> text-align: center;<br /> font-weight: bold;<br /> font-size: 95%;<br /> }<br /> <br /> .mw-search-interwiki-project {<br /> font-size: 97%;<br /> text-align: left;<br /> padding-left: 0.2em;<br /> padding-right: 0.15em;<br /> padding-bottom: 0.2em;<br /> padding-top: 0.15em;<br /> background: #cae8ff;<br /> }<br /> <br /> /* God-damned hack for the crappy layout */<br /> .os-suggest {<br /> font-size: 110%;<br /> }<br /> <br /> table.ambox-serious {<br /> border-color: rgb(187, 34, 34);<br /> background-color: #fdeeee;<br /> border-radius:4px;<br /> }<br /> <br /> table.infobox {<br /> float: right;<br /> width: 300px;<br /> margin: 1em 0px 1em 1em;<br /> border-radius: 4px 4px 4px 4px;<br /> border: 1px dashed rgb(237, 237, 237);<br /> background-color: rgb(253, 253, 253);<br /> }</div> Eliot https://wiki.beyondunreal.com/User:Eliot/monobook.css?diff=45300 User:Eliot/monobook.css 2012-12-30T22:20:26Z <p>Eliot: test</p> <hr /> <div>/*<br /> ** MediaWiki 'monobook' style sheet for CSS2-capable browsers.<br /> ** Copyright Gabriel Wicke - http://wikidev.net/<br /> ** License: GPL (http://www.gnu.org/copyleft/gpl.html)<br /> **<br /> ** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John<br /> ** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart &amp; Tom Croucher,<br /> ** Michael Zeltner and Geir Bækholt)<br /> ** All you guys rock :)<br /> */<br /> <br /> #p-navigation, #p-search, #p-tb{<br /> font-size:125%;<br /> margin-bottom:4px;<br /> width:140px;<br /> }<br /> <br /> #p-navigation a:visited, #p-search a:visited, #p-tb a:visited{<br /> color:#222;<br /> }<br /> #p-navigation .pBody, #p-search .pBody, #p-tb .pBody {;<br /> font-size:75%;<br /> background: #fdfdfd;<br /> border-radius:4px;<br /> border:1px solid #ededed;<br /> }<br /> <br /> div.pBody{<br /> padding-top:8px;<br /> }<br /> <br /> #column-content {<br /> width: 100%;<br /> float: right;<br /> margin: 0 0 .6em -12.2em;<br /> padding: 0;<br /> }<br /> <br /> #column-one {<br /> padding-top: 160px;<br /> }<br /> #content {<br /> margin: 2.8em 0 0 12.2em;<br /> padding: 0 1em 1em 1em;<br /> position: relative;<br /> z-index: 2;<br /> background: #fdfdfd;<br /> border: 1px solid #ededed;<br /> border-right: none;<br /> line-height: 1.5em;<br /> border-radius:4px;<br /> color:#242424;<br /> }<br /> /* the left column width is specified in class .portlet */<br /> <br /> /* Font size:<br /> ** We take advantage of keyword scaling- browsers won't go below 9px<br /> ** More at http://www.w3.org/2003/07/30-font-size<br /> ** http://style.cleverchimp.com/font_size_intervals/altintervals.html<br /> */<br /> <br /> body {<br /> background: #eeeeee;<br /> color: #242424;<br /> margin: 0;<br /> padding: 0;<br /> font-size: 70%;<br /> }<br /> <br /> /* scale back up to a sane default */<br /> #globalWrapper {<br /> width: 100%;<br /> padding: 0;<br /> font-size:110%;<br /> }<br /> .visualClear {<br /> clear: both;<br /> }<br /> <br /> /* general styles */<br /> <br /> table {<br /> /* we don't want the bottom borders of &lt;h2&gt;s to be visible through<br /> floated tables */<br /> background-color: white;<br /> }<br /> fieldset table {<br /> /* but keep table layouts in forms clean... */<br /> background: none;<br /> }<br /> a {<br /> text-decoration: none;<br /> color: #222;<br /> background: none;<br /> }<br /> a:visited {<br /> color: #585858;<br /> }<br /> a:active {<br /> color: #686868;<br /> }<br /> a:hover {<br /> color:black;<br /> text-decoration: underline;<br /> }<br /> a.stub {<br /> color: #772233;<br /> }<br /> a.new, #p-personal a.new {<br /> color: #ba0000;<br /> }<br /> a.new:visited, #p-personal a.new:visited {<br /> color: #a55858;<br /> }<br /> <br /> img {<br /> border: none;<br /> vertical-align: middle;<br /> }<br /> p {<br /> margin: .4em 0 .5em 0;<br /> line-height: 1.5em;<br /> }<br /> p img {<br /> margin: 0;<br /> }<br /> <br /> hr {<br /> height: 1px;<br /> color: #aaa;<br /> background-color: #aaa;<br /> border: 0;<br /> margin: .2em 0 .2em 0;<br /> }<br /> <br /> h1, h2, h3, h4, h5, h6 {<br /> color: black;<br /> background: none;<br /> font-weight: bold;<br /> font-size:1.1em;<br /> margin: 0;<br /> padding-top: .5em;<br /> padding-bottom: .17em;<br /> border-bottom: 1px solid #ededed;<br /> }<br /> h1 { font-size: 188%; }<br /> h1 .editsection { font-size: 53%; }<br /> h2 { font-size: 150%; }<br /> h2 .editsection { font-size: 67%; }<br /> h3, h4, h5, h6 {<br /> border-bottom: none;<br /> font-weight: bold;<br /> }<br /> h3 { font-size: 132%; }<br /> h3 .editsection { font-size: 76%; font-weight: normal; }<br /> h4 { font-size: 116%; }<br /> h4 .editsection { font-size: 86%; font-weight: normal; }<br /> h5 { font-size: 100%; }<br /> h5 .editsection { font-weight: normal; }<br /> h6 { font-size: 80%; }<br /> h6 .editsection { font-size: 125%; font-weight: normal; }<br /> <br /> ul {<br /> list-style-type: square;<br /> margin: .3em 0 0 1.5em;<br /> padding: 0;<br /> list-style-image: url(bullet.gif);<br /> }<br /> ol {<br /> margin: .3em 0 0 3.2em;<br /> padding: 0;<br /> list-style-image: none;<br /> }<br /> li {<br /> margin-bottom: .1em;<br /> }<br /> dt {<br /> font-weight: bold;<br /> margin-bottom: .1em;<br /> }<br /> dl {<br /> margin-top: .2em;<br /> margin-bottom: .5em;<br /> }<br /> dd {<br /> line-height: 1.5em;<br /> margin-left: 2em;<br /> margin-bottom: .1em;<br /> }<br /> <br /> fieldset {<br /> border: 1px solid #2f6fab;<br /> margin: 1em 0 1em 0;<br /> padding: 0 1em 1em;<br /> line-height: 1.5em;<br /> }<br /> fieldset.nested {<br /> margin: 0 0 0.5em 0;<br /> padding: 0 0.5em 0.5em;<br /> }<br /> legend {<br /> padding: .5em;<br /> font-size: 95%;<br /> }<br /> form {<br /> border: none;<br /> margin: 0;<br /> }<br /> <br /> textarea {<br /> width: 100%;<br /> padding: .1em;<br /> }<br /> <br /> input.historysubmit {<br /> padding: 0 .3em .3em .3em !important;<br /> font-size: 94%;<br /> cursor: pointer;<br /> height: 1.7em !important;<br /> margin-left: 1.6em;<br /> }<br /> select {<br /> vertical-align: top;<br /> }<br /> abbr, acronym, .explain {<br /> border-bottom: 1px dotted black;<br /> color: black;<br /> background: none;<br /> cursor: help;<br /> }<br /> q {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }<br /> /* disabled for now<br /> blockquote {<br /> font-family: Times, &quot;Times New Roman&quot;, serif;<br /> font-style: italic;<br /> }*/<br /> code {<br /> background-color: white;<br /> border-radius: 4px;<br /> border:1px dashed #ededed;<br /> }<br /> pre {<br /> padding: 1em;<br /> border: 1px dashed #ededed;<br /> color: black;<br /> background-color: white;<br /> line-height: 1.1em;<br /> }<br /> <br /> /*<br /> ** the main content area<br /> */<br /> <br /> #siteSub {<br /> display: none;<br /> }<br /> #jump-to-nav {<br /> display: none;<br /> }<br /> <br /> #contentSub, #contentSub2 {<br /> font-size: 84%;<br /> line-height: 1.2em;<br /> margin: 0 0 1.4em 1em;<br /> color: #7d7d7d;<br /> width: auto;<br /> }<br /> span.subpages {<br /> display: block;<br /> }<br /> <br /> /* Some space under the headers in the content area */<br /> #bodyContent h1, #bodyContent h2 {<br /> margin-bottom: .6em;<br /> }<br /> #bodyContent h3, #bodyContent h4, #bodyContent h5 {<br /> margin-bottom: .3em;<br /> }<br /> #firstHeading {<br /> margin-bottom: .1em;<br /> /* These two rules hack around bug 2013 (fix for more limited bug 11325).<br /> When bug 2013 is fixed properly, they should be removed. */<br /> line-height: 1.2em;<br /> padding-bottom: 0;<br /> }<br /> <br /> /* user notification thing */<br /> .usermessage {<br /> background-color: #ffce7b;<br /> border: 1px solid #ffa500;<br /> color: black;<br /> font-weight: bold;<br /> margin: 2em 0 1em;<br /> padding: .5em 1em;<br /> vertical-align: middle;<br /> }<br /> #siteNotice {<br /> text-align: center;<br /> font-size: 95%;<br /> padding: 0 .9em;<br /> }<br /> #siteNotice p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .success {<br /> color: green;<br /> font-size: larger;<br /> }<br /> .error {<br /> color: red;<br /> font-size: larger;<br /> }<br /> .errorbox, .successbox {<br /> font-size: larger;<br /> border: 2px solid;<br /> padding: .5em 1em;<br /> float: left;<br /> margin-bottom: 2em;<br /> color: #000;<br /> }<br /> .errorbox {<br /> border-color: red;<br /> background-color: #fff2f2;<br /> }<br /> .successbox {<br /> border-color: green;<br /> background-color: #dfd;<br /> }<br /> .errorbox h2, .successbox h2 {<br /> font-size: 1em;<br /> font-weight: bold;<br /> display: inline;<br /> margin: 0 .5em 0 0;<br /> border: none;<br /> }<br /> <br /> .catlinks {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> margin-top: 1em;<br /> clear: both;<br /> }<br /> /* currently unused, intended to be used by a metadata box<br /> in the bottom-right corner of the content area */<br /> .documentDescription {<br /> /* The summary text describing the document */<br /> font-weight: bold;<br /> display: block;<br /> margin: 1em 0;<br /> line-height: 1.5em;<br /> }<br /> .documentByLine {<br /> text-align: right;<br /> font-size: 90%;<br /> clear: both;<br /> font-weight: normal;<br /> color: #76797c;<br /> }<br /> <br /> /* emulate center */<br /> .center {<br /> width: 100%;<br /> text-align: center;<br /> }<br /> *.center * {<br /> margin-left: auto;<br /> margin-right: auto;<br /> }<br /> /* small for tables and similar */<br /> .small, .small * {<br /> font-size: 94%;<br /> }<br /> table.small {<br /> font-size: 100%;<br /> }<br /> <br /> /*<br /> ** content styles<br /> */<br /> <br /> #toc,<br /> .toc,<br /> .mw-warning {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> #toc h2,<br /> .toc h2 {<br /> display: inline;<br /> border: none;<br /> padding: 0;<br /> font-size: 100%;<br /> font-weight: bold;<br /> }<br /> #toc #toctitle,<br /> .toc #toctitle,<br /> #toc .toctitle,<br /> .toc .toctitle {<br /> text-align: center;<br /> }<br /> #toc ul,<br /> .toc ul {<br /> list-style-type: none;<br /> list-style-image: none;<br /> margin-left: 0;<br /> padding-left: 0;<br /> text-align: left;<br /> }<br /> #toc ul ul,<br /> .toc ul ul {<br /> margin: 0 0 0 2em;<br /> }<br /> #toc .toctoggle,<br /> .toc .toctoggle {<br /> font-size: 94%;<br /> }<br /> <br /> .mw-warning {<br /> margin-left: 50px;<br /> margin-right: 50px;<br /> text-align: center;<br /> }<br /> <br /> /* images */<br /> div.floatright, table.floatright {<br /> clear: right;<br /> float: right;<br /> position: relative;<br /> margin: 0 0 .5em .5em;<br /> border: 0;<br /> /*<br /> border: .5em solid white;<br /> border-width: .5em 0 .8em 1.4em;<br /> */<br /> }<br /> div.floatright p { font-style: italic; }<br /> div.floatleft, table.floatleft {<br /> float: left;<br /> clear: left;<br /> position: relative;<br /> margin: 0 .5em .5em 0;<br /> border: 0;<br /> /*<br /> margin: .3em .5em .5em 0;<br /> border: .5em solid white;<br /> border-width: .5em 1.4em .8em 0;<br /> */<br /> }<br /> div.floatleft p { font-style: italic; }<br /> /* thumbnails */<br /> div.thumb {<br /> margin-bottom: .5em;<br /> border-style: solid;<br /> border-color: white;<br /> width: auto;<br /> }<br /> div.thumbinner {<br /> border: 1px solid #ccc;<br /> padding: 3px !important;<br /> background-color: #f9f9f9;<br /> font-size: 94%;<br /> text-align: center;<br /> overflow: hidden;<br /> }<br /> html .thumbimage {<br /> border: 1px solid #ccc;<br /> }<br /> html .thumbcaption {<br /> border: none;<br /> text-align: left;<br /> line-height: 1.4em;<br /> padding: 3px !important;<br /> font-size: 94%;<br /> }<br /> div.magnify {<br /> float: right;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.magnify a, div.magnify img {<br /> display: block;<br /> border: none !important;<br /> background: none !important;<br /> }<br /> div.tright {<br /> clear: right;<br /> float: right;<br /> border-width: .5em 0 .8em 1.4em;<br /> }<br /> div.tleft {<br /> float: left;<br /> clear: left;<br /> margin-right: .5em;<br /> border-width: .5em 1.4em .8em 0;<br /> }<br /> img.thumbborder {<br /> border: 1px solid #dddddd;<br /> }<br /> .hiddenStructure {<br /> display: none;<br /> }<br /> <br /> /*<br /> ** classes for special content elements like town boxes<br /> ** intended to be referenced directly from the wiki src<br /> */<br /> <br /> /*<br /> ** User styles<br /> */<br /> /* table standards */<br /> table.rimage {<br /> float: right;<br /> position: relative;<br /> margin-left: 1em;<br /> margin-bottom: 1em;<br /> text-align: center;<br /> }<br /> .toccolours {<br /> border: 1px solid #aaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> }<br /> <br /> /*<br /> ** edit views etc<br /> */<br /> .special li {<br /> line-height: 1.4em;<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> /*<br /> ** keep the whitespace in front of the ^=, hides rule from konqueror<br /> ** this is css3, the validator doesn't like it when validating as css2<br /> */<br /> #bodyContent a.external,<br /> #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background: url(external.png) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> .rtl #bodyContent a.external,<br /> .rtl #bodyContent a[href ^=&quot;gopher://&quot;] {<br /> background-image: url(external-rtl.png);<br /> }<br /> #bodyContent a[href ^=&quot;https://&quot;],<br /> .link-https {<br /> background: url(lock_icon.gif) center right no-repeat;<br /> padding: 0 16px;<br /> }<br /> #bodyContent a[href ^=&quot;mailto:&quot;],<br /> .link-mailto {<br /> background: url(mail_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;news://&quot;] {<br /> background: url(news_icon.png) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;ftp://&quot;],<br /> .link-ftp {<br /> background: url(file_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a[href ^=&quot;irc://&quot;],<br /> #bodyContent a.extiw[href ^=&quot;irc://&quot;],<br /> .link-irc {<br /> background: url(discussionitem_icon.gif) center right no-repeat;<br /> padding: 0 18px;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogg&quot;], #bodyContent a.external[href $=&quot;.OGG&quot;],<br /> #bodyContent a.external[href $=&quot;.mid&quot;], #bodyContent a.external[href $=&quot;.MID&quot;],<br /> #bodyContent a.external[href $=&quot;.midi&quot;], #bodyContent a.external[href $=&quot;.MIDI&quot;],<br /> #bodyContent a.external[href $=&quot;.mp3&quot;], #bodyContent a.external[href $=&quot;.MP3&quot;],<br /> #bodyContent a.external[href $=&quot;.wav&quot;], #bodyContent a.external[href $=&quot;.WAV&quot;],<br /> #bodyContent a.external[href $=&quot;.wma&quot;], #bodyContent a.external[href $=&quot;.WMA&quot;],<br /> .link-audio {<br /> background: url(&quot;audio.png&quot;) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> #bodyContent a.external[href $=&quot;.ogm&quot;], #bodyContent a.external[href $=&quot;.OGM&quot;],<br /> #bodyContent a.external[href $=&quot;.avi&quot;], #bodyContent a.external[href $=&quot;.AVI&quot;],<br /> #bodyContent a.external[href $=&quot;.mpeg&quot;], #bodyContent a.external[href $=&quot;.MPEG&quot;],<br /> #bodyContent a.external[href $=&quot;.mpg&quot;], #bodyContent a.external[href $=&quot;.MPG&quot;],<br /> .link-video {<br /> background: url(&quot;video.png&quot;) center right no-repeat;<br /> padding: 0 13px;<br /> }<br /> #bodyContent a.external[href $=&quot;.pdf&quot;], #bodyContent a.external[href $=&quot;.PDF&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf#&quot;], #bodyContent a.external[href *=&quot;.PDF#&quot;],<br /> #bodyContent a.external[href *=&quot;.pdf?&quot;], #bodyContent a.external[href *=&quot;.PDF?&quot;],<br /> .link-document {<br /> background: url(&quot;document.png&quot;) center right no-repeat;<br /> padding: 0 12px;<br /> }<br /> <br /> /* for rtl wikis */<br /> .rtl #bodyContent a.external {<br /> background-position: left;<br /> padding-right: 0;<br /> }<br /> .rtl a.feedlink {<br /> background-position: right;<br /> padding-right: 16px;<br /> padding-left: 0;<br /> }<br /> <br /> /* correction for ltr wikis */<br /> .ltr #bodyContent a.external {<br /> padding-left: 0;<br /> }<br /> <br /> /* disable interwiki styling */<br /> #bodyContent a.extiw,<br /> #bodyContent a.extiw:active {<br /> color: #36b;<br /> background: none;<br /> padding: 0;<br /> }<br /> #bodyContent a.external {<br /> color: #36b;<br /> }<br /> /* this can be used in the content area to switch off<br /> special external link styling */<br /> #bodyContent .plainlinks a {<br /> background: none !important;<br /> padding: 0 !important;<br /> }<br /> /*<br /> ** Structural Elements<br /> */<br /> <br /> /*<br /> ** general portlet styles (elements in the quickbar)<br /> */<br /> .portlet {<br /> border: none;<br /> margin: 0 0 .5em;<br /> padding: 0;<br /> float: none;<br /> width: 11.6em;<br /> overflow: hidden;<br /> }<br /> .portlet h4 {<br /> font-size: 95%;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .portlet h5 {<br /> background: none repeat scroll 0% 0% rgb(64, 64, 64);<br /> text-transform: lowercase;<br /> font-size: 91%;<br /> white-space: nowrap;<br /> display: block;<br /> padding: 0px 4px 4px;<br /> border-top-left-radius: 4px;<br /> border-top-right-radius: 4px;<br /> color: white;<br /> height: 15px;<br /> font-weight: bold;<br /> border-bottom:1px solid black;<br /> }<br /> <br /> .portlet h6 {<br /> background: #ffae2e;<br /> border: 1px solid #2f6fab;<br /> border-style: solid solid none solid;<br /> padding: 0 1em 0 1em;<br /> text-transform: lowercase;<br /> display: block;<br /> font-size: 1em;<br /> height: 1.2em;<br /> font-weight: normal;<br /> white-space: nowrap;<br /> }<br /> .pBody {<br /> font-size: 90%;<br /> color: black;<br /> border-collapse: collapse;<br /> border: 1px solid #ededed;<br /> padding: 0 .8em .3em .5em;<br /> padding-top:8px;<br /> }<br /> .portlet h1,<br /> .portlet h2,<br /> .portlet h3,<br /> .portlet h4 {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> .portlet ul {<br /> line-height: 1.5em;<br /> list-style-type: square;<br /> list-style-image: url(bullet.gif);<br /> font-size: 95%;<br /> }<br /> .portlet li {<br /> padding: 0;<br /> margin: 0;<br /> }<br /> <br /> /*<br /> ** Logo properties<br /> */<br /> <br /> #p-logo {<br /> top: 0;<br /> left: 0;<br /> position: absolute; /*needed to use z-index */<br /> z-index: 3;<br /> height: 155px;<br /> width: 12em;<br /> overflow: visible;<br /> }<br /> #p-logo h5 {<br /> display: none;<br /> }<br /> #p-logo a,<br /> #p-logo a:hover {<br /> display: block;<br /> height: 155px;<br /> width: 12.2em;<br /> background-repeat: no-repeat;<br /> background-position: 35% 50% !important;<br /> text-decoration: none;<br /> }<br /> <br /> /*<br /> ** Search portlet<br /> */<br /> #p-search {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> input.searchButton {<br /> margin-top: 1px;<br /> font-size: 95%;<br /> }<br /> #searchGoButton {<br /> padding-left: .5em;<br /> padding-right: .5em;<br /> font-weight: bold;<br /> }<br /> #searchInput {<br /> width: 10.9em;<br /> margin: 0;<br /> font-size: 95%;<br /> }<br /> #p-search .pBody {<br /> padding: .5em .4em .4em .4em;<br /> text-align: center;<br /> }<br /> #p-search #searchform div div {<br /> margin-top: .4em;<br /> font-size: 95%;<br /> }<br /> /*<br /> ** the personal toolbar<br /> */<br /> #p-personal {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> z-index: 0;<br /> }<br /> #p-personal {<br /> width: 100%;<br /> white-space: nowrap;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> background: none;<br /> overflow: visible;<br /> line-height: 1.2em;<br /> }<br /> #p-personal h5 {<br /> display: none;<br /> }<br /> #p-personal .portlet,<br /> #p-personal .pBody {<br /> z-index: 0;<br /> padding: 0;<br /> margin: 0;<br /> border: none;<br /> overflow: visible;<br /> background: none;<br /> }<br /> /* this is the ul contained in the portlet */<br /> #p-personal ul {<br /> border: none;<br /> line-height: 1.4em;<br /> color: #2f6fab;<br /> padding: 0 2em 0 3em;<br /> margin: 0;<br /> text-align: right;<br /> list-style: none;<br /> z-index: 0;<br /> background: none;<br /> cursor: default;<br /> }<br /> #p-personal li {<br /> z-index: 0;<br /> border: none;<br /> padding: 0;<br /> display: inline;<br /> color: #2f6fab;<br /> margin-left: 1em;<br /> line-height: 1.2em;<br /> background: none;<br /> }<br /> #p-personal li a {<br /> text-decoration: none;<br /> color: #005896;<br /> padding-bottom: .2em;<br /> background: none;<br /> }<br /> #p-personal li a:hover {<br /> background-color: none;<br /> padding-bottom: .2em;<br /> text-decoration: none;<br /> }<br /> #p-personal li.active a:hover {<br /> background-color: none;<br /> }<br /> /* the icon in front of the user name, single quotes<br /> in bg url to hide it from iemac */<br /> li#pt-userpage,<br /> li#pt-anonuserpage,<br /> li#pt-login {<br /> background: url(user.gif) top left no-repeat;<br /> padding-left: 20px;<br /> text-transform: none;<br /> }<br /> #p-personal ul {<br /> text-transform: lowercase;<br /> }<br /> #p-personal li.active {<br /> font-weight: bold;<br /> }<br /> /*<br /> ** the page-related actions- page/talk, edit etc<br /> */<br /> #p-cactions {<br /> position: absolute;<br /> top: 1.3em;<br /> left: 11.5em;<br /> margin: 0;<br /> white-space: nowrap;<br /> width: 76%;<br /> line-height: 1.1em;<br /> overflow: visible;<br /> background: none;<br /> border-collapse: collapse;<br /> padding-left: 1em;<br /> list-style: none;<br /> font-size: 95%;<br /> }<br /> #p-cactions ul {<br /> list-style: none;<br /> }<br /> #p-cactions li {<br /> display: inline;<br /> border: 1px solid #ededed;<br /> border-bottom: none;<br /> padding:4px;<br /> background: white;<br /> border-top-left-radius:4px;<br /> border-top-right-radius:4px;<br /> }<br /> #p-cactions li.selected {<br /> border-color: darkblue;<br /> padding: 4px;<br /> font-weight: bold;<br /> background: white;<br /> }<br /> #p-cactions li:hover {<br /> border-color: #adadad;<br /> background: white;<br /> }<br /> #p-cactions li a {<br /> color: #002bb8;<br /> border: none;<br /> padding: 4px;<br /> position: relative;<br /> z-index: 0;<br /> margin: 0;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions li.selected a {<br /> z-index: 3;<br /> padding: 0 1em .2em!important;<br /> background:none;<br /> }<br /> #p-cactions .new a {<br /> color: #ba0000;<br /> }<br /> #p-cactions li a:hover {<br /> z-index: 3;<br /> text-decoration: none;<br /> background:none;<br /> }<br /> #p-cactions h5 {<br /> display: none;<br /> }<br /> #p-cactions li.istalk {<br /> margin-right: 0;<br /> }<br /> #p-cactions li.istalk a {<br /> padding-right: .5em;<br /> }<br /> #p-cactions #ca-addsection a {<br /> padding-left: .4em;<br /> padding-right: .4em;<br /> }<br /> /* offsets to distinguish the tab groups */<br /> li#ca-talk {<br /> margin-right: 1.6em;<br /> }<br /> li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {<br /> margin-left: 1.6em;<br /> }<br /> #p-cactions .pBody {<br /> font-size: 1em;<br /> background-color: transparent;<br /> color: inherit;<br /> border-collapse: inherit;<br /> border: 0;<br /> padding: 0;<br /> }<br /> #p-cactions .hiddenStructure {<br /> display: none;<br /> }<br /> #p-cactions li a {<br /> text-transform: lowercase;<br /> }<br /> <br /> #p-lang {<br /> position: relative;<br /> z-index: 3;<br /> }<br /> <br /> /* TODO: #t-iscite is only used by the Cite extension, come up with some<br /> * system which allows extensions to add to this file on the fly<br /> */<br /> #t-ispermalink, #t-iscite {<br /> color: #999;<br /> }<br /> /*<br /> ** footer<br /> */<br /> #footer {<br /> background-color: white;<br /> border-top: 1px solid #ededed;<br /> border-bottom: 1px solid #ededed;<br /> margin: .6em 0 1em 0;<br /> padding: 8px;<br /> text-align: center;<br /> font-size: 70%;<br /> min-height:0;<br /> }<br /> #footer li {<br /> display: inline;<br /> margin: 0 1.3em;<br /> }<br /> #f-poweredbyico, #f-copyrightico {<br /> margin: 0 8px;<br /> position: relative;<br /> top: -2px; /* Bump it up just a tad */<br /> }<br /> #f-poweredbyico {<br /> float: right;<br /> height: 1%;<br /> }<br /> #f-copyrightico {<br /> float: left;<br /> height: 1%;<br /> }<br /> <br /> /* js pref toc */<br /> #preftoc {<br /> margin: 0;<br /> padding: 0;<br /> width: 100%;<br /> clear: both;<br /> }<br /> #preftoc li {<br /> background-color: #f0f0f0;<br /> color: #000;<br /> }<br /> #preftoc li {<br /> margin: 1px -2px 1px 2px;<br /> float: left;<br /> padding: 2px 0 3px 0;<br /> border: 1px solid #fff;<br /> border-right-color: #716f64;<br /> border-bottom: 0;<br /> position: relative;<br /> white-space: nowrap;<br /> list-style-type: none;<br /> list-style-image: none;<br /> z-index: 3;<br /> }<br /> #preftoc li.selected {<br /> font-weight: bold;<br /> background-color: #f9f9f9;<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> cursor: default;<br /> top: 1px;<br /> padding-top: 2px;<br /> margin-right: -3px;<br /> }<br /> #preftoc &gt; li.selected {<br /> top: 2px;<br /> }<br /> #preftoc a,<br /> #preftoc a:active {<br /> display: block;<br /> color: #000;<br /> padding: 0 .7em;<br /> position: relative;<br /> text-decoration: none;<br /> }<br /> #preftoc li.selected a {<br /> cursor: default;<br /> text-decoration: none;<br /> }<br /> #prefcontrol {<br /> padding-top: 2em;<br /> clear: both;<br /> }<br /> #preferences {<br /> margin: 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em;<br /> background-color: #F9F9F9;<br /> }<br /> .prefsection {<br /> border: none;<br /> padding: 0;<br /> margin: 0;<br /> }<br /> .prefsection fieldset {<br /> border: 1px solid #aaa;<br /> float: left;<br /> margin-right: 2em;<br /> }<br /> .prefsection legend {<br /> font-weight: bold; <br /> }<br /> .prefsection table, .prefsection legend {<br /> background-color: #F9F9F9;<br /> }<br /> .mainLegend {<br /> display: none;<br /> }<br /> div.prefsectiontip {<br /> font-size: x-small;<br /> padding: .2em 2em;<br /> color: #666;<br /> }<br /> .btnSavePrefs {<br /> font-weight: bold;<br /> padding-left: .3em;<br /> padding-right: .3em;<br /> }<br /> <br /> .preferences-login {<br /> clear: both;<br /> margin-bottom: 1.5em;<br /> }<br /> <br /> .prefcache {<br /> font-size: 90%;<br /> margin-top: 2em;<br /> }<br /> <br /> div#userloginForm form,<br /> div#userlogin form#userlogin2 {<br /> margin: 0 3em 1em 0;<br /> border: 1px solid #aaa;<br /> clear: both;<br /> padding: 1.5em 2em;<br /> background-color: #f9f9f9;<br /> float: left;<br /> }<br /> .rtl div#userloginForm form,<br /> .rtl div#userlogin form#userlogin2 {<br /> float: right;<br /> }<br /> <br /> div#userloginForm table,<br /> div#userlogin form#userlogin2 table {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> div#userloginForm h2,<br /> div#userlogin form#userlogin2 h2 {<br /> padding-top: 0;<br /> }<br /> <br /> div#userlogin .captcha,<br /> div#userloginForm .captcha {<br /> border: 1px solid #bbb;<br /> padding: 1.5em 2em;<br /> background-color: white;<br /> }<br /> <br /> #loginend, #signupend {<br /> clear: both;<br /> }<br /> <br /> #userloginprompt, #languagelinks {<br /> font-size: 85%;<br /> }<br /> <br /> #login-sectiontip {<br /> font-size: 85%;<br /> line-height: 1.2;<br /> padding-top: 2em;<br /> }<br /> <br /> #userlogin .loginText, #userlogin .loginPassword {<br /> width: 12em;<br /> }<br /> <br /> #userloginlink a, #wpLoginattempt, #wpCreateaccount {<br /> font-weight: bold;<br /> }<br /> <br /> /*<br /> ** IE/Mac fixes, hope to find a validating way to move this<br /> ** to a separate stylesheet. This would work but doesn't validate:<br /> ** @import(&quot;IEMacFixes.css&quot;);<br /> */<br /> /* tabs: border on the a, not the div */<br /> * &gt; html #p-cactions li { border: none; }<br /> * &gt; html #p-cactions li a {<br /> border: 1px solid #aaa;<br /> border-bottom: none;<br /> }<br /> * &gt; html #p-cactions li.selected a { border-color: #fabd23; }<br /> /* footer icons need a fixed width */<br /> * &gt; html #f-poweredbyico,<br /> * &gt; html #f-copyrightico { width: 88px; }<br /> * &gt; html #bodyContent,<br /> * &gt; html #bodyContent pre {<br /> overflow-x: auto;<br /> width: 100%;<br /> padding-bottom: 25px;<br /> }<br /> <br /> /* more IE fixes */<br /> /* float/negative margin brokenness */<br /> * html #footer {margin-top: 0;}<br /> * html #column-content {<br /> display: inline;<br /> margin-bottom: 0;<br /> }<br /> * html div.editsection { font-size: smaller; }<br /> #pagehistory li.selected { position: relative; }<br /> <br /> /* Mac IE 5.0 fix; floated content turns invisible */<br /> * &gt; html #column-content {<br /> float: none;<br /> }<br /> * &gt; html #column-one {<br /> position: absolute;<br /> left: 0;<br /> top: 0;<br /> }<br /> * &gt; html #footer {<br /> margin-left: 13.2em;<br /> }<br /> .redirectText {<br /> font-size: 150%;<br /> margin: 5px;<br /> }<br /> <br /> .printfooter {<br /> display: none;<br /> }<br /> <br /> .not-patrolled {<br /> background-color: #ffa;<br /> }<br /> div.patrollink {<br /> clear: both;<br /> font-size: 75%;<br /> text-align: right;<br /> }<br /> span.newpage, span.minor, span.bot {<br /> font-weight: bold;<br /> }<br /> span.unpatrolled {<br /> font-weight: bold;<br /> color: red;<br /> }<br /> <br /> .sharedUploadNotice {<br /> font-style: italic;<br /> }<br /> <br /> span.updatedmarker {<br /> color: black;<br /> background-color: #0f0;<br /> }<br /> <br /> table.gallery {<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> padding: 2px;<br /> background-color: white;<br /> }<br /> <br /> table.gallery tr {<br /> vertical-align: top;<br /> }<br /> <br /> table.gallery td {<br /> vertical-align: top;<br /> background-color: #f9f9f9;<br /> border: solid 2px white;<br /> }<br /> /* Keep this temporarily so that cached pages will display right */<br /> table.gallery td.galleryheader {<br /> text-align: center;<br /> font-weight: bold;<br /> }<br /> table.gallery caption {<br /> font-weight: bold;<br /> }<br /> <br /> div.gallerybox {<br /> margin: 2px;<br /> }<br /> <br /> div.gallerybox div.thumb {<br /> text-align: center;<br /> border: 1px solid #ccc;<br /> margin: 2px;<br /> }<br /> <br /> div.gallerytext {<br /> overflow: hidden;<br /> font-size: 94%;<br /> padding: 2px 4px;<br /> }<br /> <br /> span.comment {<br /> font-style: italic;<br /> }<br /> <br /> span.changedby {<br /> font-size: 95%;<br /> }<br /> <br /> .previewnote {<br /> text-indent: 3em;<br /> color: #c00;<br /> border-bottom: 1px solid #aaa;<br /> padding-bottom: 1em;<br /> margin-bottom: 1em;<br /> }<br /> <br /> .previewnote p {<br /> margin: 0;<br /> padding: 0;<br /> }<br /> <br /> .editExternally {<br /> border: 1px solid gray;<br /> background-color: #ffffff;<br /> padding: 3px;<br /> margin-top: 0.5em;<br /> float: left;<br /> font-size: small;<br /> text-align: center;<br /> }<br /> .editExternallyHelp {<br /> font-style: italic;<br /> color: gray;<br /> }<br /> <br /> .toggle {<br /> margin-left: 2em;<br /> text-indent: -2em;<br /> }<br /> <br /> /* Classes for EXIF data display */<br /> table.mw_metadata {<br /> font-size: 0.8em;<br /> margin-left: 0.5em;<br /> margin-bottom: 0.5em;<br /> width: 300px;<br /> }<br /> <br /> table.mw_metadata caption {<br /> font-weight: bold;<br /> }<br /> <br /> table.mw_metadata th {<br /> font-weight: normal;<br /> }<br /> <br /> table.mw_metadata td {<br /> padding: 0.1em;<br /> }<br /> <br /> table.mw_metadata {<br /> border: none;<br /> border-collapse: collapse;<br /> }<br /> <br /> table.mw_metadata td, table.mw_metadata th {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> padding-left: 0.1em;<br /> padding-right: 0.1em;<br /> }<br /> <br /> table.mw_metadata th {<br /> background-color: #f9f9f9;<br /> }<br /> <br /> table.mw_metadata td {<br /> background-color: #fcfcfc;<br /> }<br /> <br /> table.collapsed tr.collapsable {<br /> display: none;<br /> }<br /> <br /> <br /> /* filetoc */<br /> ul#filetoc {<br /> text-align: center;<br /> border: 1px solid #aaaaaa;<br /> background-color: #f9f9f9;<br /> padding: 5px;<br /> font-size: 95%;<br /> margin-bottom: 0.5em;<br /> margin-left: 0;<br /> margin-right: 0;<br /> }<br /> <br /> #filetoc li {<br /> display: inline;<br /> list-style-type: none;<br /> padding-right: 2em;<br /> }<br /> <br /> input#wpSummary {<br /> width: 80%;<br /> }<br /> <br /> /* @bug 1714 */<br /> input#wpSave, input#wpDiff {<br /> margin-right: 0.33em;<br /> }<br /> <br /> #wpSave {<br /> font-weight: bold;<br /> }<br /> <br /> /* Classes for article validation */<br /> <br /> table.revisionform_default {<br /> border: 1px solid #000000;<br /> }<br /> <br /> table.revisionform_focus {<br /> border: 1px solid #000000;<br /> background-color:#00BBFF;<br /> }<br /> <br /> tr.revision_tr_default {<br /> background-color:#EEEEEE;<br /> }<br /> <br /> tr.revision_tr_first {<br /> background-color:#DDDDDD;<br /> }<br /> <br /> p.revision_saved {<br /> color: green;<br /> font-weight:bold;<br /> }<br /> <br /> #mw_trackbacks {<br /> border: solid 1px #bbbbff;<br /> background-color: #eeeeff;<br /> padding: 0.2em;<br /> }<br /> <br /> <br /> /* Allmessages table */<br /> <br /> #allmessagestable th {<br /> background-color: #b2b2ff;<br /> }<br /> <br /> #allmessagestable tr.orig {<br /> background-color: #ffe2e2;<br /> }<br /> <br /> #allmessagestable tr.new {<br /> background-color: #e2ffe2;<br /> }<br /> <br /> #allmessagestable tr.def {<br /> background-color: #f0f0ff;<br /> }<br /> <br /> <br /> /* noarticletext */<br /> div.noarticletext {<br /> border: 1px solid #ccc;<br /> background: #fff;<br /> padding: .2em 1em;<br /> color: #000;<br /> }<br /> <br /> div#searchTargetContainer {<br /> left: 10px;<br /> top: 10px;<br /> width: 90%;<br /> background: white;<br /> }<br /> <br /> div#searchTarget {<br /> padding: 3px;<br /> margin: 5px;<br /> background: #F0F0F0;<br /> border: solid 1px blue;<br /> }<br /> <br /> div#searchTarget ul li {<br /> list-style: none;<br /> }<br /> <br /> div#searchTarget ul li:before {<br /> color: orange;<br /> content: &quot;\00BB \0020&quot;;<br /> }<br /> <br /> div#searchTargetHide {<br /> float:right;<br /> border:solid 1px black;<br /> background:#DCDCDC;<br /> padding:2px;<br /> }<br /> <br /> #powersearch p {<br /> margin-top:0px;<br /> }<br /> <br /> div.multipageimagenavbox {<br /> border: solid 1px silver;<br /> padding: 4px;<br /> margin: 1em;<br /> background: #f0f0f0;<br /> }<br /> <br /> div.multipageimagenavbox div.thumb {<br /> border: none;<br /> margin-left: 2em;<br /> margin-right: 2em;<br /> }<br /> <br /> div.multipageimagenavbox hr {<br /> margin: 6px;<br /> }<br /> <br /> table.multipageimage td {<br /> text-align: center;<br /> }<br /> <br /> /** Special:Version */<br /> <br /> table#sv-ext, table#sv-hooks, table#sv-software {<br /> margin: 1em;<br /> padding:0em;<br /> }<br /> <br /> #sv-ext td, #sv-hooks td, #sv-software td,<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> border: 1px solid #A0A0A0;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> #sv-ext th, #sv-hooks th, #sv-software th {<br /> background-color: #F0F0F0;<br /> color: black;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> tr.sv-space{<br /> height: 0.8em;<br /> border:none;<br /> }<br /> tr.sv-space td { display: none; }<br /> <br /> /*<br /> Table pager (e.g. Special:Imagelist)<br /> - remove underlines from the navigation link<br /> - collapse borders<br /> - set the borders to outsets (similar to Special:Allmessages)<br /> - remove line wrapping for all td and th, set background color<br /> - restore line wrapping for the last two table cells (description and size)<br /> */<br /> .TablePager { min-width: 80%; }<br /> .TablePager_nav a { text-decoration: none; }<br /> .TablePager { border-collapse: collapse; }<br /> .TablePager, .TablePager td, .TablePager th { <br /> border: 1px solid #aaaaaa;<br /> padding: 0 0.15em 0 0.15em;<br /> }<br /> .TablePager th { background-color: #eeeeff }<br /> .TablePager td { background-color: #ffffff }<br /> .TablePager tr:hover td { background-color: #eeeeff }<br /> <br /> .imagelist td, .imagelist th { white-space: nowrap }<br /> .imagelist .TablePager_col_links { background-color: #eeeeff }<br /> .imagelist .TablePager_col_img_description { white-space: normal }<br /> .imagelist th.TablePager_sort { background-color: #ccccff }<br /> <br /> .templatesUsed { margin-top: 1.5em; }<br /> <br /> .mw-summary-preview {<br /> margin: 0.1em 0;<br /> }<br /> <br /> /* Friendlier slave lag warnings */<br /> div.mw-lag-warn-normal,<br /> div.mw-lag-warn-high {<br /> padding: 3px;<br /> text-align: center;<br /> margin: 3px auto;<br /> }<br /> div.mw-lag-warn-normal {<br /> border: 1px solid #FFCC66;<br /> background-color: #FFFFCC;<br /> }<br /> div.mw-lag-warn-high {<br /> font-weight: bold;<br /> border: 2px solid #FF0033;<br /> background-color: #FFCCCC;<br /> }<br /> <br /> .MediaTransformError {<br /> background-color: #ccc;<br /> padding: 0.1em;<br /> }<br /> .MediaTransformError td {<br /> text-align: center;<br /> vertical-align: middle;<br /> font-size: 90%;<br /> }<br /> <br /> /** Special:Search stuff */<br /> div#mw-search-interwiki-caption {<br /> text-align: center;<br /> font-weight: bold;<br /> font-size: 95%;<br /> }<br /> <br /> .mw-search-interwiki-project {<br /> font-size: 97%;<br /> text-align: left;<br /> padding-left: 0.2em;<br /> padding-right: 0.15em;<br /> padding-bottom: 0.2em;<br /> padding-top: 0.15em;<br /> background: #cae8ff;<br /> }<br /> <br /> /* God-damned hack for the crappy layout */<br /> .os-suggest {<br /> font-size: 110%;<br /> }</div> Eliot https://wiki.beyondunreal.com/UE3:Actor_events_(UDK)?diff=45299 UE3:Actor events (UDK) 2012-12-23T02:09:46Z <p>Eliot: /* PostRenderFor */ Explained how this function is executed and what determines the visiblity of actors using this.</p> <hr /> <div>{{infobox class part<br /> | class = Actor<br /> | part = events<br /> | parent1 = Object<br /> }}<br /> {{expand}}<br /> ==Events==<br /> ====AnimTreeUpdated====<br /> {{code|simulated event '''AnimTreeUpdated''' ({{cl|SkeletalMeshComponent}}&amp;nbsp;'''SkelMesh''')}}<br /> <br /> Notification called when one of our meshes gets his AnimTree updated<br /> <br /> ====Attach====<br /> {{code|event '''Attach''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called on this Actor when another Actor used SetBase() to set this to it's Base.<br /> <br /> '''Parameters:'''<br /> * ''Other'' is the Actor who changed it's Base.<br /> <br /> ====BaseChange====<br /> {{code|event '''BaseChange''' ()}}<br /> <br /> Called when we get our Base set to something else than it was before. This is also called during the [[What_happens_when_an_Actor_is_destroyed#Detach.28.29.2C_BaseChanged.28.29|destruction process]] of this Actor.<br /> <br /> ====BecomeViewTarget====<br /> {{code|event '''BecomeViewTarget''' ({{cl|PlayerController}}&amp;nbsp;'''PC''')}}<br /> <br /> Called when a PlayerController used SetViewTarget() to focus us.<br /> <br /> '''Parameters:'''<br /> * ''PC'' is the PlayerController focusing us.<br /> <br /> ====BeginAnimControl====<br /> {{code|event '''BeginAnimControl''' ({{cl|InterpGroup}}&amp;nbsp;'''InInterpGroup''')}}<br /> <br /> Called when we start an AnimControl track operating on this Actor. Supplied is the set of AnimSets we are going to want to play from.<br /> <br /> ====BroadcastLocalizedMessage====<br /> {{code|event '''BroadcastLocalizedMessage''' ([[class]]&lt;{{cl|LocalMessage}}&gt;&amp;nbsp;'''InMessageClass''', optional&amp;nbsp;[[int]]&amp;nbsp;'''Switch''', optional&amp;nbsp;{{cl|PlayerReplicationInfo}}&amp;nbsp;'''RelatedPRI_1''', optional&amp;nbsp;{{cl|PlayerReplicationInfo}}&amp;nbsp;'''RelatedPRI_2''', optional&amp;nbsp;{{cl|Object}}&amp;nbsp;'''OptionalObject''')}}<br /> <br /> &lt;!-- enter event description --&gt;<br /> <br /> ====BroadcastLocalizedTeamMessage====<br /> {{code|event '''BroadcastLocalizedTeamMessage''' ([[int]]&amp;nbsp;'''TeamIndex''', [[class]]&lt;{{cl|LocalMessage}}&gt;&amp;nbsp;'''InMessageClass''', optional&amp;nbsp;[[int]]&amp;nbsp;'''Switch''', optional&amp;nbsp;{{cl|PlayerReplicationInfo}}&amp;nbsp;'''RelatedPRI_1''', optional&amp;nbsp;{{cl|PlayerReplicationInfo}}&amp;nbsp;'''RelatedPRI_2''', optional&amp;nbsp;{{cl|Object}}&amp;nbsp;'''OptionalObject''')}}<br /> <br /> &lt;!-- enter event description --&gt;<br /> <br /> ====Bump====<br /> {{code|event '''Bump''' ({{cl|Actor}}&amp;nbsp;'''Other''', {{cl|PrimitiveComponent}}&amp;nbsp;'''OtherComp''', {{tl|Vector|Object|structs}}&amp;nbsp;'''HitNormal''')}}<br /> <br /> If bBlockActors or bBlockPlayers is on, this event function gets called for both objects. This event function gets called by the engine only once - at the initial time of the collision. <br /> <br /> ====CollisionChanged====<br /> {{code|event '''CollisionChanged''' ()}}<br /> <br /> Called when collision values change for this actor (via SetCollision/SetCollisionSize).<br /> <br /> ====ConstraintBrokenNotify====<br /> {{code|simulated event '''ConstraintBrokenNotify''' ({{cl|Actor}}&amp;nbsp;'''ConOwner''', {{cl|RB_ConstraintSetup}}&amp;nbsp;'''ConSetup''', {{cl|RB_ConstraintInstance}}&amp;nbsp;'''ConInstance''')}}<br /> <br /> When a constraint is broken we will get this event from c++ land.<br /> <br /> ====DebugFreezeGame====<br /> {{code|event '''DebugFreezeGame''' (optional&amp;nbsp;{{cl|Actor}}&amp;nbsp;'''ActorToLookAt''')}}<br /> <br /> Debug Freeze Game<br /> dumps the current script function stack and pauses the game with PlayersOnly (still allowing the player to move around).<br /> <br /> ====Destroyed====<br /> {{code|event '''Destroyed''' ()}}<br /> <br /> Called during the [[What_happens_when_an_Actor_is_destroyed#Destroyed.28.29|destruction]] of the Actor via Destroy().<br /> <br /> ====Detach====<br /> {{code|event '''Detach''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called if another Actor uses SetBase() and sets his new Base to another Actor and we were the old Base before. Also called during the [[What_happens_when_an_Actor_is_destroyed#Detach.28.29.2C_BaseChanged.28.29|destruction]] of an Actor.<br /> <br /> '''Parameters:'''<br /> * ''Other'' is the Actor who changed it's Base.<br /> <br /> ====EncroachedBy====<br /> {{code|event '''EncroachedBy''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called when we get pushed somewhere and there isn't enough space at this location for us to exist.<br /> <br /> '''Parameters:'''<br /> * ''Other'' is the Actor who pushed us into the encroached location.<br /> <br /> ====EncroachingOn====<br /> {{code|event [[bool]]&amp;nbsp;'''EncroachingOn''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called when this Actor is encroaching on Other and we couldn't find an appropriate place to push Other to<br /> <br /> '''Returns:'''<br /> :true to abort the move, false to allow it<br /> <br /> '''Parameters:'''<br /> * ''Other'' is the Actor whe are encroaching on.<br /> <br /> '''Warning:''' do not abort moves of PHYS_RigidBody actors as that will cause the Unreal location and physics engine location to mismatch<br /> <br /> ====EndViewTarget====<br /> {{code|event '''EndViewTarget''' ({{cl|PlayerController}}&amp;nbsp;'''PC''')}}<br /> <br /> Called when a PlayerController uses SetViewTarget() to focus another Actor or none and we were focused before.<br /> <br /> '''Parameters:'''<br /> * ''PC'' is the focusing PlayerController.<br /> <br /> ====Falling====<br /> {{code|event '''Falling''' ()}}<br /> <br /> Called once when we enter PHYS_Falling.<br /> <br /> ====FellOutOfWorld====<br /> {{code|simulated event '''FellOutOfWorld''' ([[class]]&lt;{{cl|DamageType}}&gt;&amp;nbsp;'''dmgType''')}}<br /> <br /> Called when the actor falls out of the world 'safely' (below KillZ and such)<br /> <br /> ====FinishAnimControl====<br /> {{code|event '''FinishAnimControl''' ({{cl|InterpGroup}}&amp;nbsp;'''InInterpGroup''')}}<br /> <br /> Called when we are done with the AnimControl track.<br /> <br /> ====ForceNetRelevant====<br /> {{code|event '''ForceNetRelevant''' ()}}<br /> <br /> Forces this actor to be net relevant if it is not already<br /> by default, only works on level placed actors (bNoDelete)<br /> <br /> ====GainedChild====<br /> {{code|event '''GainedChild''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called when another Actor used SetOwner() to set ourself as it's Owner. Happens also if we specify the Owner while spawning the Actor.<br /> <br /> '''Parameters:'''<br /> * ''Other'' is the Actor who is now owned by us.<br /> <br /> ====GetActorEyesViewPoint====<br /> {{code|simulated event '''GetActorEyesViewPoint''' (out&amp;nbsp;{{tl|Vector|Object|structs}}&amp;nbsp;'''out_Location''', out&amp;nbsp;{{tl|Rotator|Object|structs}}&amp;nbsp;'''out_Rotation''')}}<br /> <br /> Returns the point of view of the actor.<br /> Note that this doesn't mean the camera, but the 'eyes' of the actor.<br /> For example, for a Pawn, this would define the eye height location,<br /> and view rotation (which is different from the pawn rotation which has a zeroed pitch component).<br /> A camera first person view will typically use this view point. Most traces (weapon, AI) will be done from this view point.<br /> <br /> '''Parameters:'''<br /> * ''out_Location'' - location of view point<br /> * ''out_Rotation'' - view rotation of actor.<br /> <br /> ====GetActorFaceFXAsset====<br /> {{code|event {{cl|FaceFXAsset}}&amp;nbsp;'''GetActorFaceFXAsset''' ()}}<br /> <br /> Used by Matinee in-game to mount FaceFXAnimSets before playing animations.<br /> <br /> ====GetFaceFXAudioComponent====<br /> {{code|simulated event {{cl|AudioComponent}}&amp;nbsp;'''GetFaceFXAudioComponent''' ()}}<br /> <br /> Function for allowing you to tell FaceFX which AudioComponent it should use for playing audio<br /> for corresponding facial animation.<br /> <br /> ====HealDamage====<br /> {{code|event [[bool]]&amp;nbsp;'''HealDamage''' ([[int]]&amp;nbsp;'''Amount''', {{cl|Controller}}&amp;nbsp;'''Healer''', [[class]]&lt;{{cl|DamageType}}&gt;&amp;nbsp;'''DamageType''')}}<br /> <br /> The reverse of TakeDamage(); heals the specified amount<br /> <br /> '''Parameters:'''<br /> * ''Amount'' - The amount of damage to heal<br /> * ''Healer'' - Who is doing the healing<br /> * ''DamageType'' - What type of healing is it<br /> <br /> ====HitWall====<br /> {{code|event '''HitWall''' ({{tl|Vector|Object|structs}}&amp;nbsp;'''HitNormal''', {{cl|Actor}}&amp;nbsp;'''Wall''', {{cl|PrimitiveComponent}}&amp;nbsp;'''WallComp''')}}<br /> <br /> If bCollideWorld is on, this event function gets called by the engine, letting the object know the normal to the collision plane between the level polygon and the object (the HitNormal points towards the object), as well as an Actor reference, which would let you know a couple things - if HitWall == WorldInfo, you've hit normal level geometry.<br /> <br /> ====InterpolationChanged====<br /> {{code|simulated event '''InterpolationChanged''' ({{cl|SeqAct_Interp}}&amp;nbsp;'''InterpAction''')}}<br /> <br /> called when a SeqAct_Interp action affecting this Actor received an event that changed its properties<br /> (paused, reversed direction, etc)<br /> <br /> '''Parameters:'''<br /> * ''InterpAction'' - the SeqAct_Interp that is affecting the Actor<br /> <br /> '''Note:''' this function is called on clients for actors that are interpolated clientside via MatineeActor<br /> <br /> ====InterpolationFinished====<br /> {{code|simulated event '''InterpolationFinished''' ({{cl|SeqAct_Interp}}&amp;nbsp;'''InterpAction''')}}<br /> <br /> called when a SeqAct_Interp action finished interpolating this Actor<br /> <br /> '''Parameters:'''<br /> * ''InterpAction'' - the SeqAct_Interp that was affecting the Actor<br /> <br /> '''Note:''' this function is called on clients for actors that are interpolated clientside via MatineeActor<br /> <br /> ====InterpolationStarted====<br /> {{code|simulated event '''InterpolationStarted''' ({{cl|SeqAct_Interp}}&amp;nbsp;'''InterpAction''')}}<br /> <br /> called when a SeqAct_Interp action starts interpolating this Actor via matinee<br /> <br /> '''Parameters:'''<br /> * ''InterpAction'' - the SeqAct_Interp that is affecting the Actor<br /> <br /> '''Note:''' this function is called on clients for actors that are interpolated clientside via MatineeActor<br /> <br /> ====Landed====<br /> {{code|event '''Landed''' ({{tl|Vector|Object|structs}}&amp;nbsp;'''HitNormal''', {{cl|Actor}}&amp;nbsp;'''FloorActor''')}}<br /> <br /> If the object physics is PHYS_Falling, this event function gets called by the engine when the object lands on level geometry while falling.<br /> <br /> <br /> '''Parameters:'''<br /> * ''HitNormal'' is the surface normal of the level geometry landed on. <br /> <br /> ====LostChild====<br /> {{code|event '''LostChild''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called when one of our child Actors changed it's Owner or was destroyed.<br /> <br /> <br /> '''Parameters:'''<br /> * ''Other'' - The Actor that changed his Owner.<br /> <br /> ====ModifyHearSoundComponent====<br /> {{code|simulated event '''ModifyHearSoundComponent''' ({{cl|AudioComponent}}&amp;nbsp;'''AC''')}}<br /> <br /> called when a sound is going to be played on this Actor via PlayerController::ClientHearSound()<br /> gives it a chance to modify the component that will be used (add parameter values, etc)<br /> <br /> ====NotifySkelControlBeyondLimit====<br /> {{code|simulated event '''NotifySkelControlBeyondLimit''' ({{cl|SkelControlLookAt}}&amp;nbsp;'''LookAt''')}}<br /> <br /> &lt;!-- enter event description --&gt;<br /> <br /> ====OnAnimEnd====<br /> {{code|event '''OnAnimEnd''' ({{cl|AnimNodeSequence}}&amp;nbsp;'''SeqNode''', [[float]]&amp;nbsp;'''PlayedTime''', [[float]]&amp;nbsp;'''ExcessTime''')}}<br /> <br /> Event called when an AnimNodeSequence (in the animation tree of one of this Actor's SkeletalMeshComponents) reaches the end and stops.<br /> Will not get called if bLooping is 'true' on the AnimNodeSequence.<br /> bCauseActorAnimEnd must be set 'true' on the AnimNodeSequence for this event to get generated.<br /> <br /> '''Parameters:'''<br /> * ''SeqNode'' - Node that finished playing. You can get to the SkeletalMeshComponent by looking at SeqNode-&gt;SkelComponent<br /> * ''PlayedTime'' - Time played on this animation. (play rate independant).<br /> * ''ExcessTime'' - how much time overlapped beyond end of animation. (play rate independant).<br /> <br /> ====OnAnimPlay====<br /> {{code|event '''OnAnimPlay''' ({{cl|AnimNodeSequence}}&amp;nbsp;'''SeqNode''')}}<br /> <br /> Event called when a PlayAnim is called AnimNodeSequence in the animation tree of one of this Actor's SkeletalMeshComponents.<br /> bCauseActorAnimPlay must be set 'true' on the AnimNodeSequence for this event to get generated.<br /> <br /> '''Parameters:'''<br /> * ''SeqNode'' - Node had PlayAnim called. You can get to the SkeletalMeshComponent by looking at SeqNode-&gt;SkelComponent<br /> <br /> ====OnRanOver====<br /> {{code|event '''OnRanOver''' ({{cl|SVehicle}}&amp;nbsp;'''Vehicle''', {{cl|PrimitiveComponent}}&amp;nbsp;'''RunOverComponent''', [[int]]&amp;nbsp;'''WheelIndex''')}}<br /> <br /> Called each frame (for each wheel) when an SVehicle has a wheel in contact with this Actor.<br /> Not called on Actors that have bWorldGeometry or bStatic set to TRUE.<br /> <br /> ====OnRigidBodySpringOverextension====<br /> {{code|simulated event '''OnRigidBodySpringOverextension''' ({{cl|RB_BodyInstance}}&amp;nbsp;'''BodyInstance''')}}<br /> <br /> Notification forwarded from RB_BodyInstance, when a spring is over extended and disabled.<br /> <br /> ====OnSleepRBPhysics====<br /> {{code|event '''OnSleepRBPhysics''' ()}}<br /> <br /> RigidBody went to sleep after being awake - only valid if bCallRigidBodyWakeEvents==TRUE<br /> <br /> ====OnWakeRBPhysics====<br /> {{code|event '''OnWakeRBPhysics''' ()}}<br /> <br /> RigidBody woke up after being stationary - only valid if bCallRigidBodyWakeEvents==TRUE<br /> <br /> ====OutsideWorldBounds====<br /> {{code|simulated event '''OutsideWorldBounds''' ()}}<br /> <br /> called when the Actor is outside the hard limit on world bounds<br /> <br /> '''Note:''' physics and collision are automatically turned off after calling this function<br /> <br /> ====OverRotated====<br /> {{code|simulated event [[bool]]&amp;nbsp;'''OverRotated''' (out&amp;nbsp;{{tl|Rotator|Object|structs}}&amp;nbsp;'''out_Desired''', out&amp;nbsp;{{tl|Rotator|Object|structs}}&amp;nbsp;'''out_Actual''')}}<br /> <br /> Called by ClampRotation if the rotator was outside of the limits<br /> <br /> ====PhysicsVolumeChange====<br /> {{code|event '''PhysicsVolumeChange''' ({{cl|PhysicsVolume}}&amp;nbsp;'''NewVolume''')}}<br /> <br /> Called when an Actor leaves a PhysicsVolume or enters a new one.<br /> <br /> '''Parameters:'''<br /> * ''NewVolume'' - The PhysicsVolume that we entered now.<br /> <br /> ====PlayActorFaceFXAnim====<br /> {{code|event [[bool]]&amp;nbsp;'''PlayActorFaceFXAnim''' ({{cl|FaceFXAnimSet}}&amp;nbsp;'''AnimSet''', [[string]]&amp;nbsp;'''GroupName''', [[string]]&amp;nbsp;'''SeqName''', {{cl|SoundCue}}&amp;nbsp;'''SoundCueToPlay''')}}<br /> <br /> Play FaceFX animations on this Actor.<br /> Returns TRUE if succeeded, if failed, a log warning will be issued.<br /> <br /> ====PlayParticleEffect====<br /> {{code|event '''PlayParticleEffect''' (const&amp;nbsp;{{cl|AnimNotify_PlayParticleEffect}}&amp;nbsp;'''AnimNotifyData''')}}<br /> <br /> Called by AnimNotify_PlayParticleEffect<br /> Looks for a socket name first then bone name<br /> <br /> '''Parameters:'''<br /> * ''AnimNotifyData'' - The AnimNotify_PlayParticleEffect which will have all of the various params on it<br /> <br /> ====PostBeginPlay====<br /> {{code|event '''PostBeginPlay''' ()}}<br /> <br /> Called by the engine pretty soon after the Actor has been spawned or the game has begun.<br /> <br /> Most actors use PostBeginPlay() to initialize their UnrealScript values. The actor's PhysicsVolume and Zone are valid but the actor is not yet in any State.<br /> <br /> ====PostDemoRewind====<br /> {{code|simulated event '''PostDemoRewind''' ()}}<br /> <br /> called on all dynamic or net relevant actors after rewinding a demo<br /> primarily used to propagate properties to components, since components are ignored for rewinding<br /> <br /> ====PostInitAnimTree====<br /> {{code|event '''PostInitAnimTree''' ({{cl|SkeletalMeshComponent}}&amp;nbsp;'''SkelComp''')}}<br /> <br /> called after initializing the AnimTree for the given SkeletalMeshComponent that has this Actor as its Owner<br /> this is a good place to cache references to skeletal controllers, etc that the Actor modifies<br /> <br /> ====PostRenderFor====<br /> {{code|simulated event '''PostRenderFor''' ({{cl|PlayerController}}&amp;nbsp;'''PC''', {{cl|Canvas}}&amp;nbsp;'''Canvas''', {{tl|Vector|Object|structs}}&amp;nbsp;'''CameraPosition''', {{tl|Vector|Object|structs}}&amp;nbsp;'''CameraDir''')}}<br /> <br /> This function is only called if the Actor is visible as determined by the '''LocalPlayer''''s '''GetActorVisibility''' function, or either if '''bPostRenderIfNotVisible''' is true.<br /> To use this functionality your '''HUD''' instance must have '''bDrawOverlays''' set to true and your Actor must have registered itself by calling its player '''HUD''' '''AddPostRenderedActor''' function.<br /> <br /> This function is called by '''NativePostRenderFor''' whom's origin is instigated by the '''HUD''' class.<br /> <br /> ====PostTouch====<br /> {{code|event '''PostTouch''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called for PendingTouch Actor after physics completes.<br /> <br /> ====PreBeginPlay====<br /> {{code|event '''PreBeginPlay''' ()}}<br /> <br /> One of the very first functions that gets called after the game started.<br /> <br /> The Actor's location and rotation has been set, it's PhysicsVolume to the DefaultPhyiscsVolume, the WorldInfo is already referenced, the Instigator and Owner are set if the Actor has been spawned during the game and physics are already initialized.<br /> <br /> ====RanInto====<br /> {{code|event '''RanInto''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> Called if Other collided with this actor while moving.<br /> <br /> ====ReceivedNewEvent====<br /> {{code|simulated event '''ReceivedNewEvent''' ({{cl|SequenceEvent}}&amp;nbsp;'''Evt''')}}<br /> <br /> Called by SeqAct_AttachToEvent when a duplicate event is added to this actor at run-time<br /> <br /> ====ReplicatedDataBinding====<br /> {{code|simulated event '''ReplicatedDataBinding''' ([[name]]&amp;nbsp;'''VarName''')}}<br /> <br /> Called when a variable is replicated that has the 'databinding' keyword.<br /> <br /> '''Parameters:'''<br /> * ''VarName'' - the name of the variable that was replicated.<br /> <br /> ====ReplicatedEvent====<br /> {{code|simulated event '''ReplicatedEvent''' ([[name]]&amp;nbsp;'''VarName''')}}<br /> <br /> Called whenever a variable is replicated that has the modifier [[RepNotify]].<br /> <br /> '''Parameters:'''<br /> * ''VarName'' The name of the variable that got replicated. It is recommend to use [[NameOf]] whenever possible.<br /> <br /> ====ReplicationEnded====<br /> {{code|simulated event '''ReplicationEnded''' ()}}<br /> <br /> called ONLY for bNoDelete Actors on the client when the server was replicating data on this Actor,<br /> but no longer considers it relevant (i.e. the actor channel was destroyed)<br /> for !bNoDelete Actors this results in destruction, so cleanup code can be done there, but bNoDelete Actors<br /> just keep going with whatever data was last received, so this is their chance to perform any cleanup<br /> <br /> ====Reset====<br /> {{code|event '''Reset''' ()}}<br /> <br /> Reset actor to initial state - used when restarting level without reloading.<br /> <br /> ====RigidBodyCollision====<br /> {{code|event '''RigidBodyCollision''' ({{cl|PrimitiveComponent}}&amp;nbsp;'''HitComponent''', {{cl|PrimitiveComponent}}&amp;nbsp;'''OtherComponent''', const&amp;nbsp;out&amp;nbsp;{{tl|CollisionImpactData||Actor structs}}&amp;nbsp;'''RigidCollisionData''', [[int]]&amp;nbsp;'''ContactIndex''')}}<br /> <br /> Called when a PrimitiveComponent this Actor owns has:<br /> -bNotifyRigidBodyCollision set to true<br /> -ScriptRigidBodyCollisionThreshold &gt; 0<br /> -it is involved in a physics collision where the relative velocity exceeds ScriptRigidBodyCollisionThreshold<br /> <br /> '''Parameters:'''<br /> * ''HitComponent'' - the component of this Actor that collided<br /> * ''OtherComponent'' - the other component that collided<br /> * ''RigidCollisionData'' - information on the collision itslef, including contact points<br /> * ''ContactIndex'' - the element in each ContactInfos' ContactVelocity and PhysMaterial arrays that corresponds to this Actor/HitComponent<br /> <br /> ====RootMotionExtracted====<br /> {{code|simulated event '''RootMotionExtracted''' ({{cl|SkeletalMeshComponent}}&amp;nbsp;'''SkelComp''', out&amp;nbsp;{{tl|BoneAtom|Object|structs}}&amp;nbsp;'''ExtractedRootMotionDelta''')}}<br /> <br /> Notification called after root motion has been extracted, and before it's been used.<br /> This notification can be used to alter extracted root motion before it is forwarded to physics.<br /> It is only called when bRootMotionExtractedNotify is TRUE on the SkeletalMeshComponent.<br /> <br /> '''Note:''' It is fairly slow in Script, so enable only when really needed.<br /> <br /> ====RootMotionModeChanged====<br /> {{code|simulated event '''RootMotionModeChanged''' ({{cl|SkeletalMeshComponent}}&amp;nbsp;'''SkelComp''')}}<br /> <br /> Notification that root motion mode changed.<br /> Called only from SkelMeshComponents that have bRootMotionModeChangeNotify set.<br /> This is useful for synchronizing movements.<br /> For intance, when using RMM_Translate, and the event is called, we know that root motion will kick in on next frame.<br /> It is possible to kill in-game physics, and then use root motion seemlessly.<br /> <br /> ====ScriptGetTeamNum====<br /> {{code|simulated event [[byte]]&amp;nbsp;'''ScriptGetTeamNum''' ()}}<br /> <br /> Returns 255 in it's default implementation. This gets called by the default implementation of GetTeamNum().<br /> <br /> ====SetAnimPosition====<br /> {{code|event '''SetAnimPosition''' ([[name]]&amp;nbsp;'''SlotName''', [[int]]&amp;nbsp;'''ChannelIndex''', [[name]]&amp;nbsp;'''InAnimSeqName''', [[float]]&amp;nbsp;'''InPosition''', [[bool]]&amp;nbsp;'''bFireNotifies''', [[bool]]&amp;nbsp;'''bLooping''')}}<br /> <br /> Called each from while the Matinee action is running, with the desired sequence name and position we want to be at.<br /> <br /> ====SetInitialState====<br /> {{code|simulated event '''SetInitialState''' ()}}<br /> <br /> Called directly after PostBeginPlay().<br /> <br /> At this point the actor is concidered &quot;initialized&quot; by the engine (bScriptInitialized is set to True in this event) and the actor's initial state is set. If the InitialState property is set, it will be used, otherwise the actor goes to its auto state. Since SetInitialState() is a simulated function by default this happens on server and clients.<br /> <br /> This event uses GotoState to change the state, so during its executing the initial state's BeginState() event is called. The state's state code will however not yet start executing at this point. This will happen after all the events described on this page have finished doing their work.<br /> <br /> ====SetMorphWeight====<br /> {{code|event '''SetMorphWeight''' ([[name]]&amp;nbsp;'''MorphNodeName''', [[float]]&amp;nbsp;'''MorphWeight''')}}<br /> <br /> Called each frame by Matinee to update the weight of a particular MorphNodeWeight.<br /> <br /> ====SetSkelControlScale====<br /> {{code|event '''SetSkelControlScale''' ([[name]]&amp;nbsp;'''SkelControlName''', [[float]]&amp;nbsp;'''Scale''')}}<br /> <br /> Called each frame by Matinee to update the scaling on a SkelControl.<br /> <br /> ====ShutDown====<br /> {{code|simulated event '''ShutDown''' ()}}<br /> <br /> ShutDown an actor.<br /> <br /> ====SpawnedByKismet====<br /> {{code|event '''SpawnedByKismet''' ()}}<br /> <br /> called when this Actor was spawned by a Kismet actor factory (SeqAct_ActorFactory)<br /> after all other spawn events (PostBeginPlay(), etc) have been called<br /> <br /> ====SpecialHandling====<br /> {{code|event {{cl|Actor}}&amp;nbsp;'''SpecialHandling''' ({{cl|Pawn}}&amp;nbsp;'''Other''')}}<br /> <br /> &lt;!-- enter event description --&gt;<br /> <br /> ====StopActorFaceFXAnim====<br /> {{code|event '''StopActorFaceFXAnim''' ()}}<br /> <br /> Stop any matinee FaceFX animations on this Actor.<br /> <br /> ====TakeDamage====<br /> {{code|event '''TakeDamage''' ([[int]]&amp;nbsp;'''DamageAmount''', {{cl|Controller}}&amp;nbsp;'''EventInstigator''', {{tl|Vector|Object|structs}}&amp;nbsp;'''HitLocation''', {{tl|Vector|Object|structs}}&amp;nbsp;'''Momentum''', [[class]]&lt;{{cl|DamageType}}&gt;&amp;nbsp;'''DamageType''', optional&amp;nbsp;{{tl|TraceHitInfo||Actor structs}}&amp;nbsp;'''HitInfo''', optional&amp;nbsp;{{cl|Actor}}&amp;nbsp;'''DamageCauser''')}}<br /> <br /> apply some amount of damage to this actor<br /> <br /> '''Parameters:'''<br /> * ''DamageAmount'' - the base damage to apply<br /> * ''EventInstigator'' - the Controller responsible for the damage<br /> * ''HitLocation'' - world location where the hit occurred<br /> * ''Momentum'' - force caused by this hit<br /> * ''DamageType'' - class describing the damage that was done<br /> * ''HitInfo'' - additional info about where the hit occurred<br /> * ''DamageCauser'' - the Actor that directly caused the damage (i.e. the Projectile that exploded, the Weapon that fired, etc)<br /> <br /> ====Tick====<br /> {{code|event '''Tick''' ([[float]]&amp;nbsp;'''DeltaTime''')}}<br /> <br /> Called by the engine whenever time passes (i.e. on every frame when the game updates) for all Actors that have bStatic = False.<br /> <br /> '''Parameters:'''<br /> * ''DeltaTime'' - the time that has passed since the last Tick().<br /> <br /> ====Timer====<br /> {{code|event '''Timer''' ()}}<br /> <br /> Called by the engine after a countdown set by SetTimer() reached 0. The Actor must be bStatic = False in order to get this called.<br /> <br /> ====TornOff====<br /> {{code|event '''TornOff''' ()}}<br /> <br /> Called when the Actor gets torn off by TearOff(). Tearing an Actor off means that it breaks all replication connections so that it is now simulated on each client individually. This was for example used in older engine implementations for the ragdolls, causing them to have different locations on each client.<br /> <br /> ====Touch====<br /> {{code|event '''Touch''' ({{cl|Actor}}&amp;nbsp;'''Other''', {{cl|PrimitiveComponent}}&amp;nbsp;'''OtherComp''', {{tl|Vector|Object|structs}}&amp;nbsp;'''HitLocation''', {{tl|Vector|Object|structs}}&amp;nbsp;'''HitNormal''')}}<br /> <br /> If bCollideActors is on, this event function gets called by the engine for both objects. This event function gets called every Tick() that the collision still occurs. When collision happens the first time, there is an array of actors, called Touching[], which is a list of other actors touching this one. Other is put into the array if it isn't already there by native code. Touching[] is defined as const, meaning you cannot manually change any values of the array within UScript.<br /> <br /> Touch() gets called by Volumes when a new Actor enters them.<br /> <br /> '''Parameters:'''<br /> * ''Other'' - The Actor we are touching.<br /> <br /> ====TrailsNotify====<br /> {{code|event '''TrailsNotify''' (const&amp;nbsp;{{cl|AnimNotify_Trails}}&amp;nbsp;'''AnimNotifyData''')}}<br /> <br /> Called by AnimNotify_Trails<br /> <br /> '''Parameters:'''<br /> * ''AnimNotifyData'' - The AnimNotify_Trails which will have all of the various params on it<br /> <br /> ====TrailsNotifyEnd====<br /> {{code|event '''TrailsNotifyEnd''' (const&amp;nbsp;{{cl|AnimNotify_Trails}}&amp;nbsp;'''AnimNotifyData''')}}<br /> <br /> Called by AnimNotify_Trails<br /> <br /> '''Parameters:'''<br /> * ''AnimNotifyData'' - The AnimNotify_Trails which will have all of the various params on it<br /> <br /> ====TrailsNotifyTick====<br /> {{code|event '''TrailsNotifyTick''' (const&amp;nbsp;{{cl|AnimNotify_Trails}}&amp;nbsp;'''AnimNotifyData''')}}<br /> <br /> Called by AnimNotify_Trails<br /> <br /> '''Parameters:'''<br /> * ''AnimNotifyData'' - The AnimNotify_Trails which will have all of the various params on it<br /> <br /> ====UnTouch====<br /> {{code|event '''UnTouch''' ({{cl|Actor}}&amp;nbsp;'''Other''')}}<br /> <br /> If bCollideActors is on, this event function gets called by the engine for both objects. This event function is called when colliding objects are no longer colliding (as soon as the collision isn't occuring any more, this even function is called, but only once).<br /> <br /> Touch gets called by Volumes when an Actor leaves them.<br /> <br /> '''Parameters:'''<br /> * ''Other'' - The Actor that is no longer touching us.</div> Eliot https://wiki.beyondunreal.com/Variables?diff=45293 Variables 2012-12-17T21:23:36Z <p>Eliot: /* Modifiers affecting UnrealEd */ Moved SerializeText.</p> <hr /> <div>[[wp:Variable#Computer programming|Variables]] are named storage slots for pieces of data. All [[UnrealScript]] variables are [[wp:static typing|staticly-typed]], that means you can only store a specific type of data in them and the type of data is defined in the variable [[wp:declaration (computer science)|declaration]].<br /> <br /> There are three basic types of variables in UnrealScript:<br /> * Class variables, which can only be declared at the [[class]] [[wp:Scope (programming)|scope]], before any function, operator, delegate or [[state]] declaration.<br /> * Struct members, which are declared inside their [[struct]]'s declaration block.<br /> * Local variables, which can be declared at the start of [[function]], [[operator]] and [[delegate]] bodies before any code statements. (For readability's sake, this article will imply operators and delegates when it mentions functions, unless otherwise noted.)<br /> <br /> ==Declaration==<br /> A simple class or struct member variable declaration looks like this:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''''';'''<br /> The ''variablename'' can be any combination of the letters A-Z (case-insensitive), the digits 0-9 and the underscore character _ with two restrictions:<br /> * The name may not start with a digit.<br /> * The name must be shorter than 64 characters.<br /> The ''type'' can not only be a type specification, but also a [[struct]] or [[enum]] declaration.<br /> <br /> You can declare multiple variables of the same type in one declaration:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename1''',''' variablename2''',''' ...''';'''<br /> Each of the variable names may optionally have an array size specification to create a [[static array]]:<br /> variablename'''['''arraysize''']'''<br /> You can mix static arrays and non-array variables in a single declaration. The array size only applies to the variable you appended it to.<br /> <br /> ===Editable variables===<br /> To make the variable accessible from within [[UnrealEd]]'s property windows, use the following syntax:<br /> '''var('''''[groupname[,subgroup&lt;sup&gt;3&lt;/sup&gt;]]''''')''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''';'''<br /> The ''groupname'' must be an identifier if specified. If omitted, the class name is used as group name. For struct members, the group name has no effect.<br /> <br /> ===Local variables===<br /> Local variable declarations in [[function]] bodies are similar, but a bit simpler:<br /> '''local''' [[type]] variablename''';'''<br /> Local variables must be declared at the very top of the function body, between the &lt;code&gt;{&lt;/code&gt; and the first line of &quot;executable&quot; code.<br /> <br /> You can declare static arrays and multiple variables of the same type as described for class and struct variables above. The ''type'' must be an existing type. It is not allowed to declare new structs or enums here.<br /> <br /> After declaration, a local variable is initially null, which can mean different things, depending on the variable type. (Zero for numeric types, False, empty string or array, None, etc.)<br /> <br /> ==Modifiers==<br /> For class and struct variables you are allowed to specify one or more variable modifiers. These change the way the variable works in certain situations.<br /> {{Infobox EngineVersion|modifier}}<br /> <br /> ===Inner type modifiers===<br /> You can also specify variable modifiers for the inner type of a [[dynamic array]] declaration. This compiler feature is available in all engine versions, but doesn't have any effect before [[Unreal Engine 3]]. The only currently known instances of this are several variables in two classes of the [[UDK]]'s Engine package ([[UE3:NxForceField (UDK)|NxForceField]] and [[UE3:NxGenericForceFieldBrush (UDK)|NxGenericForceFieldBrush]], both using &lt;code&gt;[[array]]&lt;const native transient [[pointer]]&gt;&lt;/code&gt;), so this feature might only work at all in newer versions of Unreal Engine 3. '''Note''': All inner modifiers are as well implicity added to the variable modifiers, so for example if you were to add [[EditConst]] the actual variable would as well act upon [[EditConst]].<br /> <br /> ===Access modifiers===<br /> The following modifiers only apply to class variables and specify, which other classes are allowed to access the variable. The access rules are enforced by the compiler.<br /> ; Const&lt;sup&gt;S&lt;/sup&gt;: Prevents any changes to this variable from within UnrealScript. You are still allowed to specify a value in the [[defaultproperties]] block and access the variable's value in your code. This property is mostly used to protect variables with a special meaning to native code. Classes with '''const''' variables usually have a corresponding setter function for each variable.<br /> ; Deprecated&lt;sup&gt;2,3&lt;/sup&gt;: Signals that this variable should no longer be used. Accessing deprecated variables will throw a compiler warning. [[Unreal Engine 3]] will load the value of a '''deprecated''' variable, but ignore it during save.<br /> ; Private&lt;sup&gt;S,2,3&lt;/sup&gt;: Private variables can only be accessed from within the class they were declared in. Other classes, even subclasses, can't access them.<br /> ; PrivateWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''private''' access modifier. Causes the variable to be treated as private for writing, but public for reading.<br /> ; Protected&lt;sup&gt;S,2,3&lt;/sup&gt;: Access to protected variables is only allowed from within the same class and its subclasses. Sibling classes, parent classes and other, unrelated classes can't &quot;see&quot; protected variables.<br /> ; ProtectedWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''protected''' access modifier. Causes the variable to be treated as protected for writing, but public for reading.<br /> ; Public&lt;sup&gt;S,2,3&lt;/sup&gt;: The default access rule. If no other access rule is specified, this is one is implied. Public variables can be accessed from any other class. Usually you will see this modifier in Unreal Engine 3, along with a native code snippet. One of the most common examples is &lt;code&gt;public{private}&lt;/code&gt;, which means the variable is declared as public for UnrealScript, but as private for native code.<br /> <br /> ===Modifiers affecting values===<br /> These modifiers affect the default value of the variable in some way.<br /> <br /> ; Automated&lt;sup&gt;UT2004&lt;/sup&gt;: Only meaningful for object variables in [[UE2:GUIMultiComponent (UT2004)|GUIMultiComponent]] classes. Indicates that any [[UE2:GUIComponent (UT2004)|GUIComponent]] object(s) referenced by this variable should automatically be added to the [[UE2:GUIMultiComponent_(UT2004)#Controls|Controls]] array. Also works for [[static array|static]] and [[dynamic arrays]]. Objects that aren't GUIComponents are ignored.<br /> ::''Implies'': '''noexport''', '''editinline''', '''editinlineuse''' and '''editinlinenotify''', and FYI: any object variable(even parameters and locals) referencing GUIComponents implies '''export''' and '''editinline'''.<br /> ; Config&lt;sup&gt;S&lt;/sup&gt;: Makes the variable configurable. The default variable value is read from an [[Legacy:INI_File|INI file]] when the class is loaded. Each subclass has its own version of the variable value in its INI file section. If the class is declared with the [[PerObjectConfig]] modifier, the initial instance value of the variable is read from a separate INI section for that object instance.<br /> ; DataBinding&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s data store system.<br /> ; DuplicateTransient&lt;sup&gt;3&lt;/sup&gt;: Similar to '''transient''' (see below) but applies to object duplication.<br /> ; GlobalConfig&lt;sup&gt;S&lt;/sup&gt;: Similar to the '''config''' modifier, but a '''globalconfig''' variable's default value is always read from the INI section of its declaring class, even for subclasses.<br /> ::''Implies'': '''config'''<br /> ; Input: Attaches the variable to the input system. This is only meaningful for float and byte variables, which can be tied to axis and button input respectively. Input variables are only filled for the local player actor.<br /> ; Instanced&lt;sup&gt;3&lt;/sup&gt;: Only meaningful for reference variables. Subobjects assigned to instanced variables are duplicated when an instance of the class is created.<br /> ::''Implies'': '''export''' and '''editinline''' even on non-reference variables.<br /> ; Localized&lt;sup&gt;S&lt;/sup&gt;: Makes the variable localizable. The default value of the variable is read from a [[localization file]] when the class is loaded. Each subclass can have its own localized versions of the variable value. In [[Unreal Engine 1]] and [[Unreal Engine 2|2]] and if the class is declared as [[PerObjectLocalized]] in [[Unreal Engine 3]], each instance of the class can have its own set of localized variable values. This is useful for actors placed in a map.<br /> ::''Implies'': '''const'''&lt;sup&gt;3&lt;/sup&gt;<br /> ; Transient&lt;sup&gt;S&lt;/sup&gt;: The variables is set to its null value when initializing object instances. The variable's value is never saved to disk in any way.<br /> ; Travel&lt;sup&gt;1,2&lt;/sup&gt;: For single player gametypes where a player advances from one map to the next, carrying over all inventory items. Instance variables marked as '''travel''' will keep their value across the map change. Only has an effect for the PlayerPawn in UE1 (or the PlayerController and its Pawn in UE2) and its Inventory chain.<br /> <br /> ===Modifiers affecting UnrealEd===<br /> These modifiers have some kind of effect in [[UnrealEd]], usually in the actor properties window.<br /> <br /> ; EdFindable&lt;sup&gt;S,2&lt;/sup&gt;: Adds a 'Find' button to the variable in the property window, which can be used to select an actor from the UnrealEd viewports. For obvious reasons this only makes sense for variables of type Actor or any of its subclasses.<br /> ; EditConst&lt;sup&gt;S&lt;/sup&gt;: The variable is read-only in the property window.<br /> ; EditConstArray&lt;sup&gt;S,2&lt;/sup&gt;, editfixedsize&lt;sup&gt;S,3&lt;/sup&gt;: For dynamic arrays, removes the buttons from the properties window that would change the array length.<br /> ; EditHIde&lt;sup&gt;S,3+&lt;/sup&gt;: Hide in [[UnrealEd]] property lists.{{confirm}}<br /> ; EditInline&lt;sup&gt;S,2,3&lt;/sup&gt;: Only meaningful for object variables. Displays the referenced object's properties as a subgroup below the variable in the property window. If the variable has the value None, a drop-down list of allowed ([[editinlinenew]], non-[[abstract]]) classes can be used to create a new object which is assigned to this variable.<br /> ; EditInlineUse&lt;sup&gt;S,2,3&lt;/sup&gt;: Same as '''editinline''', but also adds a 'Use' button to the variable to apply the object selected in the relevant browser for this type of object. Note that the 'Use' button is always available in [[Unreal Engine 3]].<br /> ; EditorOnly&lt;sup&gt;3+&lt;/sup&gt;: The variable value is only loaded for [[UnrealEd]].<br /> ; EditorTextBox&lt;sup&gt;S?,3+&lt;/sup&gt;: Replaces the usual input box with a button for opening a separate dialog with a multi-line text box for entering. Probably only useful for [[string]] variables.<br /> ; Interp&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s [[Matinee]] system. Only really meaningful for float and vector variables.<br /> ; NoClear&lt;sup&gt;S,3&lt;/sup&gt;: Instructs the editor to prevent the user from setting this variable to None. Only really meaningful for object variables.<br /> ; NoImport&lt;sup&gt;S,3&lt;/sup&gt;: The variable's value will not be imported from text representation, i.e. when importing from a [[T3D file]] or pasting from clipboard.<br /> ; NonTransactional&lt;sup&gt;S,3&lt;/sup&gt;: The variable is not affected by UnrealEd's undo/redo features.<br /> ; SerializeText&lt;sup&gt;3+&lt;/sup&gt;: Variable will not be saved, but will be transfered during copy-paste operations (which are done through text). Works only on native variables.<br /> ::''Requirements'': '''Native'''<br /> <br /> ===Other modifiers===<br /> The following modifiers don't really fit into any of the above categories.<br /> ; cache&lt;sup&gt;UT2004&lt;/sup&gt;: Marks properties of certain classes that should be included in [[UCL file]] entries for that class. This is used e.g. for weapon and mutator names and descriptions.<br /> ; editinlinenotify&lt;sup&gt;S,2&lt;/sup&gt;: Seems to provide special feedback to native code if the variable is edited in a property window. Seems only relevant for native classes and implies '''editinline'''.<br /> ; export&lt;sup&gt;S,2,3&lt;/sup&gt;: For object properties. Objects assigned to this variable are exported as subobjects when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; init&lt;sup&gt;S,3&lt;/sup&gt;: Changes the way string and dynamic array variables are exported to headers for native classes. Default values for this kind of variable are ignored when creating instances of the class.<br /> ; native: The variable is loaded and saved in native code. Only valid in native classes.<br /> ; noexport&lt;sup&gt;S,2,3&lt;/sup&gt;: Prevents the variable's value from being exported when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; notforconsole&lt;sup&gt;3+&lt;/sup&gt;: The variable value is discarded on console platforms.<br /> ; repretry&lt;sup&gt;3+&lt;/sup&gt;: If replication of this variable was not successful the replication will be tried again.<br /> ; repnotify&lt;sup&gt;3&lt;/sup&gt;: Can be used on replicated actor variables to instruct the engine to call the [[UE3:Actor events (UT3)#ReplicatedEvent|ReplicatedEvent]] function whenever a value was received for the variable.<br /> <br /> ===Modifiers with unknown effect===<br /> The effects of these modifiers are not known yet.<br /> ; Archetype&lt;sup&gt;3&lt;/sup&gt;: Effect unknown. Used only for the [[UE3:UIPrefabInstance (UT3)#SourcePrefab|UIPrefabInstance.SourcePrefab]] variable in UT3.<br /> ; CrossLevelActive&lt;sup&gt;3+&lt;/sup&gt;: See below.<br /> ; CrossLevelPassive&lt;sup&gt;3+&lt;/sup&gt;: Probably related to level streaming or multiple levels loaded at the same time.<br /> <br /> ==Initial values==<br /> The initial values of class variables can be specified in the [[defaultproperties]] block. The initial value can be different in subclasses without affecting the value of parent classes. Some class variables, for example Name, Outer, Tag or Location, are initialized with other values when an instance of the class is created.<br /> <br /> Initial values of struct members can be specified in thee [[structdefaultproperties]]. In structs that extend other structs, the initial value can differ from the value in the parent struct. Since structs are data types and only exist as values of other variables, initial member values for those variables may differ from the default struct member value.<br /> <br /> The initial value of a local variable is always the null value for the declared variable [[type]]. The initial value for function parameters is the value passed in when the function is called. Omitted optional parameters initially contain the type's null value. In [[Unreal Engine 3]] it is also possible to specify a different initial value for omitted optional parameters.<br /> <br /> ==Accessing variables==<br /> Class variables can be accessed directly by just specifying their name from instance functions, state code or the [[replication block]] inside the declaring class or any of its subclasses.<br /> <br /> The default value for a class variable can be accessed directly by using the keyword '''default''' and the context operator '.' from anywhere inside the class, including static functions:<br /> '''default.'''variablename<br /> The default value of another class can be accessed by providing a different class context to the '''default''' keyword:<br /> objectreference'''.default.'''variablename<br /> The object reference can be an [[Literals#Objects|object literal]] or an object reference variable. If the type of the object reference is a Class or a [[class limiter]], that class is used, otherwise the referenced object's class type is used to access the default variable value. When using an object literal is usually doesn't make sense to use a non-class literal because you usually know the class of the referenced object and the engine really doesn't care about the actual object if it is only interested in the class anyway.<br /> <br /> Struct member variables and class variables of other classes or other instances of the same class can be accessed with the context operator '.', like in the following example:<br /> &lt;uscript&gt;<br /> function float getX(vector V)<br /> {<br /> return V.X;<br /> }<br /> &lt;/uscript&gt;<br /> This accesses the struct member variable ''X'' of the vector value passed to the function as parameter ''V''. The parameter ''V'' is a local variable to the function ''getX''. Local variables can only be accessed inside their containing function.<br /> <br /> Variables accessed as described in this section can be used as an [[wp:lvalue|L-value]], i.e. used on the left side of an assignment operator or as an [[out]] parameter in a function call.<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/Variables?diff=45292 Variables 2012-12-17T21:12:43Z <p>Eliot: /* Modifiers with unknown effect */ Add CrossLevelActive, remove SerializeText</p> <hr /> <div>[[wp:Variable#Computer programming|Variables]] are named storage slots for pieces of data. All [[UnrealScript]] variables are [[wp:static typing|staticly-typed]], that means you can only store a specific type of data in them and the type of data is defined in the variable [[wp:declaration (computer science)|declaration]].<br /> <br /> There are three basic types of variables in UnrealScript:<br /> * Class variables, which can only be declared at the [[class]] [[wp:Scope (programming)|scope]], before any function, operator, delegate or [[state]] declaration.<br /> * Struct members, which are declared inside their [[struct]]'s declaration block.<br /> * Local variables, which can be declared at the start of [[function]], [[operator]] and [[delegate]] bodies before any code statements. (For readability's sake, this article will imply operators and delegates when it mentions functions, unless otherwise noted.)<br /> <br /> ==Declaration==<br /> A simple class or struct member variable declaration looks like this:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''''';'''<br /> The ''variablename'' can be any combination of the letters A-Z (case-insensitive), the digits 0-9 and the underscore character _ with two restrictions:<br /> * The name may not start with a digit.<br /> * The name must be shorter than 64 characters.<br /> The ''type'' can not only be a type specification, but also a [[struct]] or [[enum]] declaration.<br /> <br /> You can declare multiple variables of the same type in one declaration:<br /> '''var''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename1''',''' variablename2''',''' ...''';'''<br /> Each of the variable names may optionally have an array size specification to create a [[static array]]:<br /> variablename'''['''arraysize''']'''<br /> You can mix static arrays and non-array variables in a single declaration. The array size only applies to the variable you appended it to.<br /> <br /> ===Editable variables===<br /> To make the variable accessible from within [[UnrealEd]]'s property windows, use the following syntax:<br /> '''var('''''[groupname[,subgroup&lt;sup&gt;3&lt;/sup&gt;]]''''')''' ''[[#Modifiers|[modifiers]]]'' [[type]] variablename''';'''<br /> The ''groupname'' must be an identifier if specified. If omitted, the class name is used as group name. For struct members, the group name has no effect.<br /> <br /> ===Local variables===<br /> Local variable declarations in [[function]] bodies are similar, but a bit simpler:<br /> '''local''' [[type]] variablename''';'''<br /> Local variables must be declared at the very top of the function body, between the &lt;code&gt;{&lt;/code&gt; and the first line of &quot;executable&quot; code.<br /> <br /> You can declare static arrays and multiple variables of the same type as described for class and struct variables above. The ''type'' must be an existing type. It is not allowed to declare new structs or enums here.<br /> <br /> After declaration, a local variable is initially null, which can mean different things, depending on the variable type. (Zero for numeric types, False, empty string or array, None, etc.)<br /> <br /> ==Modifiers==<br /> For class and struct variables you are allowed to specify one or more variable modifiers. These change the way the variable works in certain situations.<br /> {{Infobox EngineVersion|modifier}}<br /> <br /> ===Inner type modifiers===<br /> You can also specify variable modifiers for the inner type of a [[dynamic array]] declaration. This compiler feature is available in all engine versions, but doesn't have any effect before [[Unreal Engine 3]]. The only currently known instances of this are several variables in two classes of the [[UDK]]'s Engine package ([[UE3:NxForceField (UDK)|NxForceField]] and [[UE3:NxGenericForceFieldBrush (UDK)|NxGenericForceFieldBrush]], both using &lt;code&gt;[[array]]&lt;const native transient [[pointer]]&gt;&lt;/code&gt;), so this feature might only work at all in newer versions of Unreal Engine 3. '''Note''': All inner modifiers are as well implicity added to the variable modifiers, so for example if you were to add [[EditConst]] the actual variable would as well act upon [[EditConst]].<br /> <br /> ===Access modifiers===<br /> The following modifiers only apply to class variables and specify, which other classes are allowed to access the variable. The access rules are enforced by the compiler.<br /> ; Const&lt;sup&gt;S&lt;/sup&gt;: Prevents any changes to this variable from within UnrealScript. You are still allowed to specify a value in the [[defaultproperties]] block and access the variable's value in your code. This property is mostly used to protect variables with a special meaning to native code. Classes with '''const''' variables usually have a corresponding setter function for each variable.<br /> ; Deprecated&lt;sup&gt;2,3&lt;/sup&gt;: Signals that this variable should no longer be used. Accessing deprecated variables will throw a compiler warning. [[Unreal Engine 3]] will load the value of a '''deprecated''' variable, but ignore it during save.<br /> ; Private&lt;sup&gt;S,2,3&lt;/sup&gt;: Private variables can only be accessed from within the class they were declared in. Other classes, even subclasses, can't access them.<br /> ; PrivateWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''private''' access modifier. Causes the variable to be treated as private for writing, but public for reading.<br /> ; Protected&lt;sup&gt;S,2,3&lt;/sup&gt;: Access to protected variables is only allowed from within the same class and its subclasses. Sibling classes, parent classes and other, unrelated classes can't &quot;see&quot; protected variables.<br /> ; ProtectedWrite&lt;sup&gt;3-x2&lt;/sup&gt;: Related to the '''protected''' access modifier. Causes the variable to be treated as protected for writing, but public for reading.<br /> ; Public&lt;sup&gt;S,2,3&lt;/sup&gt;: The default access rule. If no other access rule is specified, this is one is implied. Public variables can be accessed from any other class. Usually you will see this modifier in Unreal Engine 3, along with a native code snippet. One of the most common examples is &lt;code&gt;public{private}&lt;/code&gt;, which means the variable is declared as public for UnrealScript, but as private for native code.<br /> <br /> ===Modifiers affecting values===<br /> These modifiers affect the default value of the variable in some way.<br /> <br /> ; Automated&lt;sup&gt;UT2004&lt;/sup&gt;: Only meaningful for object variables in [[UE2:GUIMultiComponent (UT2004)|GUIMultiComponent]] classes. Indicates that any [[UE2:GUIComponent (UT2004)|GUIComponent]] object(s) referenced by this variable should automatically be added to the [[UE2:GUIMultiComponent_(UT2004)#Controls|Controls]] array. Also works for [[static array|static]] and [[dynamic arrays]]. Objects that aren't GUIComponents are ignored.<br /> ::''Implies'': '''noexport''', '''editinline''', '''editinlineuse''' and '''editinlinenotify''', and FYI: any object variable(even parameters and locals) referencing GUIComponents implies '''export''' and '''editinline'''.<br /> ; Config&lt;sup&gt;S&lt;/sup&gt;: Makes the variable configurable. The default variable value is read from an [[Legacy:INI_File|INI file]] when the class is loaded. Each subclass has its own version of the variable value in its INI file section. If the class is declared with the [[PerObjectConfig]] modifier, the initial instance value of the variable is read from a separate INI section for that object instance.<br /> ; DataBinding&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s data store system.<br /> ; DuplicateTransient&lt;sup&gt;3&lt;/sup&gt;: Similar to '''transient''' (see below) but applies to object duplication.<br /> ; GlobalConfig&lt;sup&gt;S&lt;/sup&gt;: Similar to the '''config''' modifier, but a '''globalconfig''' variable's default value is always read from the INI section of its declaring class, even for subclasses.<br /> ::''Implies'': '''config'''<br /> ; Input: Attaches the variable to the input system. This is only meaningful for float and byte variables, which can be tied to axis and button input respectively. Input variables are only filled for the local player actor.<br /> ; Instanced&lt;sup&gt;3&lt;/sup&gt;: Only meaningful for reference variables. Subobjects assigned to instanced variables are duplicated when an instance of the class is created.<br /> ::''Implies'': '''export''' and '''editinline''' even on non-reference variables.<br /> ; Localized&lt;sup&gt;S&lt;/sup&gt;: Makes the variable localizable. The default value of the variable is read from a [[localization file]] when the class is loaded. Each subclass can have its own localized versions of the variable value. In [[Unreal Engine 1]] and [[Unreal Engine 2|2]] and if the class is declared as [[PerObjectLocalized]] in [[Unreal Engine 3]], each instance of the class can have its own set of localized variable values. This is useful for actors placed in a map.<br /> ::''Implies'': '''const'''&lt;sup&gt;3&lt;/sup&gt;<br /> ; Transient&lt;sup&gt;S&lt;/sup&gt;: The variables is set to its null value when initializing object instances. The variable's value is never saved to disk in any way.<br /> ; Travel&lt;sup&gt;1,2&lt;/sup&gt;: For single player gametypes where a player advances from one map to the next, carrying over all inventory items. Instance variables marked as '''travel''' will keep their value across the map change. Only has an effect for the PlayerPawn in UE1 (or the PlayerController and its Pawn in UE2) and its Inventory chain.<br /> <br /> ===Modifiers affecting UnrealEd===<br /> These modifiers have some kind of effect in [[UnrealEd]], usually in the actor properties window.<br /> <br /> ; edfindable&lt;sup&gt;S,2&lt;/sup&gt;: Adds a 'Find' button to the variable in the property window, which can be used to select an actor from the UnrealEd viewports. For obvious reasons this only makes sense for variables of type Actor or any of its subclasses.<br /> ; editconst&lt;sup&gt;S&lt;/sup&gt;: The variable is read-only in the property window.<br /> ; editconstarray&lt;sup&gt;S,2&lt;/sup&gt;, editfixedsize&lt;sup&gt;S,3&lt;/sup&gt;: For dynamic arrays, removes the buttons from the properties window that would change the array length.<br /> ; edithide&lt;sup&gt;S,3+&lt;/sup&gt;: Hide in [[UnrealEd]] property lists.{{confirm}}<br /> ; editinline&lt;sup&gt;S,2,3&lt;/sup&gt;: Only meaningful for object variables. Displays the referenced object's properties as a subgroup below the variable in the property window. If the variable has the value None, a drop-down list of allowed ([[editinlinenew]], non-[[abstract]]) classes can be used to create a new object which is assigned to this variable.<br /> ; editinlineuse&lt;sup&gt;S,2,3&lt;/sup&gt;: Same as '''editinline''', but also adds a 'Use' button to the variable to apply the object selected in the relevant browser for this type of object. Note that the 'Use' button is always available in [[Unreal Engine 3]].<br /> ; editoronly&lt;sup&gt;3+&lt;/sup&gt;: The variable value is only loaded for [[UnrealEd]].<br /> ; edittextbox&lt;sup&gt;S?,3+&lt;/sup&gt;: Replaces the usual input box with a button for opening a separate dialog with a multi-line text box for entering. Probably only useful for [[string]] variables.<br /> ; interp&lt;sup&gt;3&lt;/sup&gt;: The variable can be manipulated by [[Unreal Engine 3]]'s [[Matinee]] system. Only really meaningful for float and vector variables.<br /> ; noclear&lt;sup&gt;S,3&lt;/sup&gt;: Instructs the editor to prevent the user from setting this variable to None. Only really meaningful for object variables.<br /> ; noimport&lt;sup&gt;S,3&lt;/sup&gt;: The variable's value will not be imported from text representation, i.e. when importing from a [[T3D file]] or pasting from clipboard.<br /> ; nontransactional&lt;sup&gt;S,3&lt;/sup&gt;: The variable is not affected by UnrealEd's undo/redo features.<br /> <br /> ===Other modifiers===<br /> The following modifiers don't really fit into any of the above categories.<br /> ; cache&lt;sup&gt;UT2004&lt;/sup&gt;: Marks properties of certain classes that should be included in [[UCL file]] entries for that class. This is used e.g. for weapon and mutator names and descriptions.<br /> ; editinlinenotify&lt;sup&gt;S,2&lt;/sup&gt;: Seems to provide special feedback to native code if the variable is edited in a property window. Seems only relevant for native classes and implies '''editinline'''.<br /> ; export&lt;sup&gt;S,2,3&lt;/sup&gt;: For object properties. Objects assigned to this variable are exported as subobjects when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; init&lt;sup&gt;S,3&lt;/sup&gt;: Changes the way string and dynamic array variables are exported to headers for native classes. Default values for this kind of variable are ignored when creating instances of the class.<br /> ; native: The variable is loaded and saved in native code. Only valid in native classes.<br /> ; noexport&lt;sup&gt;S,2,3&lt;/sup&gt;: Prevents the variable's value from being exported when exporting class scripts or when exporting actors to [[T3D file]]s or clipboard.<br /> ; notforconsole&lt;sup&gt;3+&lt;/sup&gt;: The variable value is discarded on console platforms.<br /> ; repretry&lt;sup&gt;3+&lt;/sup&gt;: If replication of this variable was not successful the replication will be tried again.<br /> ; repnotify&lt;sup&gt;3&lt;/sup&gt;: Can be used on replicated actor variables to instruct the engine to call the [[UE3:Actor events (UT3)#ReplicatedEvent|ReplicatedEvent]] function whenever a value was received for the variable.<br /> <br /> ===Modifiers with unknown effect===<br /> The effects of these modifiers are not known yet.<br /> ; Archetype&lt;sup&gt;3&lt;/sup&gt;: Effect unknown. Used only for the [[UE3:UIPrefabInstance (UT3)#SourcePrefab|UIPrefabInstance.SourcePrefab]] variable in UT3.<br /> ; CrossLevelActive&lt;sup&gt;3+&lt;/sup&gt;: See below.<br /> ; CrossLevelPassive&lt;sup&gt;3+&lt;/sup&gt;: Probably related to level streaming or multiple levels loaded at the same time.<br /> <br /> ==Initial values==<br /> The initial values of class variables can be specified in the [[defaultproperties]] block. The initial value can be different in subclasses without affecting the value of parent classes. Some class variables, for example Name, Outer, Tag or Location, are initialized with other values when an instance of the class is created.<br /> <br /> Initial values of struct members can be specified in thee [[structdefaultproperties]]. In structs that extend other structs, the initial value can differ from the value in the parent struct. Since structs are data types and only exist as values of other variables, initial member values for those variables may differ from the default struct member value.<br /> <br /> The initial value of a local variable is always the null value for the declared variable [[type]]. The initial value for function parameters is the value passed in when the function is called. Omitted optional parameters initially contain the type's null value. In [[Unreal Engine 3]] it is also possible to specify a different initial value for omitted optional parameters.<br /> <br /> ==Accessing variables==<br /> Class variables can be accessed directly by just specifying their name from instance functions, state code or the [[replication block]] inside the declaring class or any of its subclasses.<br /> <br /> The default value for a class variable can be accessed directly by using the keyword '''default''' and the context operator '.' from anywhere inside the class, including static functions:<br /> '''default.'''variablename<br /> The default value of another class can be accessed by providing a different class context to the '''default''' keyword:<br /> objectreference'''.default.'''variablename<br /> The object reference can be an [[Literals#Objects|object literal]] or an object reference variable. If the type of the object reference is a Class or a [[class limiter]], that class is used, otherwise the referenced object's class type is used to access the default variable value. When using an object literal is usually doesn't make sense to use a non-class literal because you usually know the class of the referenced object and the engine really doesn't care about the actual object if it is only interested in the class anyway.<br /> <br /> Struct member variables and class variables of other classes or other instances of the same class can be accessed with the context operator '.', like in the following example:<br /> &lt;uscript&gt;<br /> function float getX(vector V)<br /> {<br /> return V.X;<br /> }<br /> &lt;/uscript&gt;<br /> This accesses the struct member variable ''X'' of the vector value passed to the function as parameter ''V''. The parameter ''V'' is a local variable to the function ''getX''. Local variables can only be accessed inside their containing function.<br /> <br /> Variables accessed as described in this section can be used as an [[wp:lvalue|L-value]], i.e. used on the left side of an assignment operator or as an [[out]] parameter in a function call.<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/User:Eliot/EditPackagesCommandlet?diff=45287 User:Eliot/EditPackagesCommandlet 2012-11-26T22:04:03Z <p>Eliot: Oops, completely forgot about this.</p> <hr /> <div>This is a simple commandlet to add and remove a specified editpackage for the use in [[wp:Batch file|Batch]] files when you are not using an IDE.<br /> <br /> ==Source==<br /> &lt;uscript&gt;<br /> // Coded by Eliot Van Uytfanghe.<br /> Class EditPackagesCommandlet Extends Commandlet;<br /> <br /> event int Main( string Parms )<br /> {<br /> local bool bAdd;<br /> local string PackageName;<br /> local int i;<br /> <br /> Log( Parms, Name );<br /> bAdd = Left( Parms, 1 ) == &quot;1&quot;;<br /> PackageName = Mid( Parms, 2 );<br /> if( bAdd )<br /> {<br /> Log( &quot;Adding&quot; @ PackageName, Name );<br /> Class'EditorEngine'.Default.EditPackages[Class'EditorEngine'.Default.EditPackages.Length] = PackageName;<br /> Class'EditorEngine'.Static.StaticSaveConfig();<br /> }<br /> else<br /> {<br /> Log( &quot;Removing&quot; @ PackageName, Name );<br /> for( i = 0; i &lt; Class'EditorEngine'.Default.EditPackages.Length; ++ i )<br /> {<br /> if( Class'EditorEngine'.Default.EditPackages[i] ~= PackageName )<br /> {<br /> Class'EditorEngine'.Default.EditPackages.Remove( i, 1 );<br /> break;<br /> }<br /> }<br /> Class'EditorEngine'.Static.StaticSaveConfig();<br /> }<br /> }<br /> &lt;/uscript&gt;<br /> <br /> ==Usage==<br /> &lt;uscript&gt;<br /> @echo off<br /> title Compiling %1%<br /> cd..<br /> cd System<br /> echo ----------------------------------------------------<br /> echo Deleting compiled files of %1%<br /> echo ----------------------------------------------------<br /> del %1%.u<br /> del %1%.ucl<br /> del %1%.int<br /> echo ----------------------------------------------------<br /> echo Compiling!<br /> echo ----------------------------------------------------<br /> ucc.exe EditPackagesCommandlet 1 %1%<br /> ucc.exe MakeCommandlet -EXPORTCACHE<br /> ucc.exe EditPackagesCommandlet 0 %1%<br /> ucc.exe DumpIntCommandlet %1%.u<br /> pause<br /> &lt;/uscript&gt;<br /> <br /> <br /> [[Category:UnrealScript utils]]</div> Eliot https://wiki.beyondunreal.com/User:Eliot/EditPackagesCommandlet?diff=45286 User:Eliot/EditPackagesCommandlet 2012-11-26T22:02:06Z <p>Eliot: </p> <hr /> <div>This is a simple commandlet to add and remove a specified editpackage for the use in [[wp:Batch file|Batch]] files when you are not using an IDE.<br /> <br /> ==Source==<br /> &lt;uscript&gt;<br /> // Coded by Eliot Van Uytfanghe.<br /> Class EditPackagesCommandlet Extends Commandlet;<br /> <br /> event int Main( string Parms )<br /> {<br /> local bool bAdd;<br /> local string PackageName;<br /> local int i;<br /> <br /> Log( Parms, Name );<br /> bAdd = Left( Parms, 1 ) == &quot;1&quot;;<br /> PackageName = Mid( Parms, 2 );<br /> if( bAdd )<br /> {<br /> Log( &quot;Adding&quot; @ PackageName, Name );<br /> Class'EditorEngine'.Default.EditPackages[Class'EditorEngine'.Default.EditPackages.Length] = PackageName;<br /> Class'EditorEngine'.Static.StaticSaveConfig();<br /> }<br /> else<br /> {<br /> Log( &quot;Removing&quot; @ PackageName, Name );<br /> for( i = 0; i &lt; Class'EditorEngine'.Default.EditPackages.Length; ++ i )<br /> {<br /> if( Class'EditorEngine'.Default.EditPackages[i] ~= PackageName )<br /> {<br /> Class'EditorEngine'.Default.EditPackages.Remove( i, 1 );<br /> break;<br /> }<br /> }<br /> Class'EditorEngine'.Static.StaticSaveConfig();<br /> }<br /> }<br /> &lt;/uscript&gt;<br /> <br /> ==Usage==<br /> &lt;uscript&gt;<br /> @echo off<br /> title Compiling %1%<br /> cd..<br /> cd System<br /> echo ----------------------------------------------------<br /> echo Deleting compiled files of %1%<br /> echo ----------------------------------------------------<br /> del %1%.u<br /> del %1%.ucl<br /> del %1%.int<br /> echo ----------------------------------------------------<br /> echo Compiling!<br /> echo ----------------------------------------------------<br /> ucc.exe EditPackagesCommandlet 1 %1%<br /> ucc.exe MakeCommandlet -EXPORTCACHE<br /> ucc.exe EditPackagesCommandlet 0 %1%<br /> ucc.exe DumpIntCommandlet %1%.u<br /> pause<br /> &lt;/uscript&gt;</div> Eliot https://wiki.beyondunreal.com/Commandlet?diff=45285 Commandlet 2012-11-26T21:57:13Z <p>Eliot: Added missing commandlets, though heavily lacking in documentation :(</p> <hr /> <div>{{infobox class<br /> | parent = Object<br /> | abstract = yes<br /> }}<br /> Commandlets are executed from the ucc.exe command line utility, using the following syntax:<br /> ucc.exe package_name.commandlet_class_name [parm=value]...<br /> As a convenience, if a user tries to run a commandlet and the exact name he types isn't found, then ucc.exe appends the text &quot;commandlet&quot; to the name and tries again. Additionally, typically used commandlets do not need their package name specified. This allows users to just type &lt;code&gt;ucc server ...&lt;/code&gt; instead of &lt;code&gt;ucc Engine.ServerCommandlet ...&lt;/code&gt;. Games that do not come with ucc.exe (e.g. very early [[Unreal Engine 1]] games and any [[Unreal Engine 3]] games) can execute commandlets via the main executable of the game. Unreal Engine 3 may require the parameter &lt;code&gt;run&lt;/code&gt; for non-native commandlets, e.g.:<br /> UT3.exe run package_name.commandlet_class_name [parm=value]...<br /> Any &lt;code&gt;param=value&lt;/code&gt; options on the commandline are parsed and values for parameters matching variable names of the commandlet class are assigned to those variables.<br /> <br /> ==Native functions==<br /> ====Main====<br /> {{code|native event [[int]]&amp;nbsp;'''Main''' ([[string]]&amp;nbsp;'''Params''')}}<br /> <br /> Entry point for your commandlet. Override this function '''without calling Super.Main()'''! The default implementation of this function calls the native C++ Main() function with the specified parameter string, which in turn calls this [[UnrealScript]] Main() function by default, resulting in an infinite recursion.<br /> <br /> One might expect the return value becomes the exit value of the UCC process, but it is actually discarded. UCC always exits with code 0 (no error), unless any errors (not warnings) were logged, which causes UCC to exit with code 1.<br /> An exception to this is the [[UDK]], which correctly returns the given value.<br /> <br /> '''Parameters:'''<br /> * ''Params'' - the string containing the parameters for the commandlet<br /> <br /> ==Important commandlets==<br /> ; BatchExportCommandlet : Exports resources from [[Unreal packages]].<br /> ; BatchImportCommandlet&lt;sup&gt;UE1?, UE2&lt;/sup&gt; : Import resources into [[Unreal packages]]. (Must prefix with Editor.)<br /> ; HelpCommandlet : Displays help for other commandlets. (&lt;code&gt;ucc help ''commandletname''&lt;/code&gt;)<br /> ; MakeCommandlet : Compiles [[UnrealScript]] code.<br /> ; MasterCommandlet : Creates [[UMOD files]].<br /> ; PkgCommandlet : A tool for editing Unreal packages from the commandline.<br /> ; ServerCommandlet : Runs a dedicated game server.<br /> ; ConformCommandlet : Makes [[Unreal packages]] network-compatible.<br /> ; CompressCommandlet : Compresses Unreal packages for redirected downloads.<br /> ; UncompressCommandlet : Decompresses files created by the CompressCommandlet.<br /> <br /> ==Testers==<br /> ; TestCompressionCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; TestTextureCompressionCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; TestWordWrapCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> <br /> ; ExamineOutersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; PerformMapCheckCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> <br /> ; CheckSounds&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; CheckEmitters&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; CheckStaticMeshes&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; CheckTextures&lt;sup&gt;UT2004&lt;/sup&gt;<br /> <br /> ; CheckLightMapUVsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; CheckSumCommandlet<br /> ; ChecksumPackageCommandlet<br /> ; CheckUnicodeCommandlet<br /> <br /> ==Listers==<br /> ; ListCorruptedComponentsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListCustomMaterialExpressionsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListDistanceCrossFadeNodesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListEmittersUsingModuleCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListExports&lt;sup&gt;UE2, UE3?&lt;/sup&gt;<br /> ; ListLoopingEmittersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListPackagesReferencingCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListPSysFixedBoundSettingCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListScriptReferencedContentCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ListSoundNodeWavesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> <br /> ==Finders==<br /> ; FindCinematicTexturesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindTexturesWithMissingPhysicalMaterialsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindQuestionableTexturesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindSoundCuesWithMissingGroupsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindDuplicateKismetObjectsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindStaticMeshEmptySectionsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindStaticMeshCanBecomeDynamicCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindAssetReferencersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindEmitterModuleLODErrorsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindDarkDiffuseTexturesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindNeverStreamTexturesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindDuplicateTexturesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindEmitterMismatchedLODsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindEmitterModifiedLODsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FindUniqueSpecularTextureMaterialsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> <br /> ==Fixers==<br /> ; FixAdditiveReferencesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FixAmbiguousMaterialParametersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FixupEmittersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FixupRedirectsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; FixupSourceUVsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> <br /> ==Analyzers==<br /> ; AnalyzeBuildCommandlet&lt;sup&gt;UE2&lt;/sup&gt;<br /> ; AnalyzeContentCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeCookedContentCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeCookedTextureDXT5UsageCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeCookedTextureSingleUsageCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeCookedTextureUsageCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeDVDSpaceCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeFallbackMaterialsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeKismetCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzePackageCommandlet&lt;sup&gt;UE2&lt;/sup&gt;<br /> ; AnalyzeParticleSystemsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeShaderCachesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; AnalyzeScriptCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> <br /> ==Other commandlets==<br /> ; DataRipCommandlet<br /> ; MasterServerCommandlet<br /> ; MergeDXTCommandlet<br /> ; PackageFlagCommandlet<br /> ; PS2ConvertCommandlet<br /> ; UpdateServerCommandlet<br /> ; UpdateUModCommandlet<br /> ; BatchingSummary<br /> ; ClassFlagCommandlet<br /> ; DXTConvertCommandlet<br /> ; GroupRepairCommandlet<br /> ; MapKillZ<br /> ; ObjectRenameCommandlet<br /> ; SetNormalLODCommandlet<br /> ; StaticMeshConvert<br /> ; StreamCommandlet<br /> ; SurfaceTypeCommandlet<br /> ; ConvertMaterialCommandlet&lt;sup&gt;UE2&lt;/sup&gt;<br /> ; DumpIntCommandlet&lt;sup&gt;UE2&lt;/sup&gt; : Dumps all variable names and values marked with the flag [[localized]] into an .int file.<br /> ucc.exe Editor.DumpIntCommandlet PACKAGENAME.u [-mod=MODNAME]<br /> ; MasterMD5Commandlet&lt;sup&gt;UE2&lt;/sup&gt;<br /> ; UTVCommandlet&lt;sup&gt;UE2&lt;/sup&gt;<br /> ; CompareIntCommandlet&lt;sup&gt;UE2&lt;/sup&gt;<br /> ; CutDownContentCommandlet&lt;sup&gt;UE2&lt;/sup&gt;<br /> ; CutDownPackagesCommandlet<br /> ; StripSourceCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; DumpConfigCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; ExportCacheCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; GroupRepairCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; MapConvertCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; MergeIntCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; RearrangeIntCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; RebuildCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; TextureInfoCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; TextureLODCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; TextureStripCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; UModUnpackCommandlet&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; ReimportTexturesCommandlet<br /> ; CompressTextures&lt;sup&gt;UT2004&lt;/sup&gt;<br /> ; ConvertTexturesCommandlet<br /> ; ContentAuditCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ContentComparisonCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; SoundCueAuditCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; OutputAuditSummaryCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ConvertMapToNavMesh&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; DiffPackagesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ExportLocCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ?.exe ExportLocCommandlet [PACKAGENAME.EXT] [-full]<br /> ; CompareLocCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ?.exe CompareLocCommandlet LANGUAGEXTENSION<br /> ; PatchScriptCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; PrecompileShadersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; DumpShadersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; SetMaterialUsageCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ParticleSystemAuditCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; LensFlareAuditCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; MaterialAuditCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; PMapForceObjectCheckCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; UpdateKismetCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; SetTextureLODGroupCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; CompressAnimationsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; WrangleContentCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; SetMaterialUsageCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; SetPackageFlagsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; PIEToNormalCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; UT3MapStatsCommandlet&lt;sup&gt;UE3, UT3&lt;/sup&gt;<br /> ; OutputAuditSummaryCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; DumpLightmapInfoCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; PerformTerrainMaterialDumpCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; MineCookedPackagesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; LoadPackage&lt;sup&gt;UT2004, UE3?&lt;/sup&gt;<br /> ; ConvertEmittersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; DumpEmittersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ConvertUberEmittersCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ReplaceActorCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; CheckpointGameAssetDatabaseCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; LocSoundInfoCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; DumpPropertiesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ContentAuditCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ContentComparisonCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; SoundClassInfoCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; WriteGameStatsReportCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; TagCookedReferencedAssetsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; TagReferencedAssetsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ShowTaggedPropsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ShowPropertyFlagsCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ShowObjectCountCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ShowStylesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; CreateDefaultStyleCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; CreateStreamingWorldCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; PkgInfoCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ResavePackagesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; ScaleAudioVolumeCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; CookPackagesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;<br /> ; CookPackagesXenonCommandlet<br /> ; MergePackagesCommandlet&lt;sup&gt;UE3&lt;/sup&gt;</div> Eliot https://wiki.beyondunreal.com/Types?diff=45228 Types 2012-11-01T18:59:25Z <p>Eliot: /* Multi-dimensional arrays */ typo.</p> <hr /> <div>[[UnrealScript]] is a strongly-typed language and has various built-in data types. UnrealScript types can be divided in three general groups: primitive types, reference types and composite types.<br /> <br /> ==Primitive types==<br /> A primitive type only consists of a single and usually simple value. Variables declared of a primitive type directly contain that value and when assigning that value to another variable or passing it to a function call, a new copy of the value is created. Modifications to that copy have absolutely no effect on the original value still stored in the source variable.<br /> <br /> ===Int===<br /> UnrealScript has two integer types and '''int''' is the larger of them. Int values are integer numbers in the range -2147483648 to 2147483647, in other words signed 32 bit values.<br /> <br /> [[Literals#Integer numbers|Int literals]] can be specified in decimal or hexadecimal notation. Values exceeding the allowed range are truncated to the least significant 32 bits. For example the hexadecimal literal 0x100000005 actually represents the value 5.<br /> <br /> ===Byte===<br /> The smaller of UnrealScript's two integer types is '''byte'''. Byte values are integer numbers in the range 0 to 255, in other words unsigned 8 bit values.<br /> <br /> Any [[Literals#Integer numbers|int literal]] can also be used in &quot;byte context&quot;. If the value is outside the allowed range it will be truncated to the 8 least significant bits. For example the hexadecimal literal 0x100 (256) actually represents the value 0 and the decimal literal -1 represents the value 255.<br /> <br /> ===Bool===<br /> UnrealScript's [[wp:boolean|boolean]] type is '''bool''' and allows the values ''true'' and ''false''. These are also the names of the [[Literals#Boolean values|boolean literals]].<br /> <br /> The bool type has some restrictions in UnrealScript. For example it's not possible to declare [[#Static array|static]] or [[#Dynamic array|dynamic arrays]] of bool values in [[Unreal Engine]] generations 1 and 2 or to use the parameter modifier &quot;out&quot; on bool parameters in [[function declaration]]s. Starting with Unreal Engine 3 dynamic arrays of bool are supported, even though the [[udn3:UnrealScriptReference|UnrealScript reference on UDN]] disagrees.<br /> <br /> ===Float===<br /> UnrealScript has a [[wp:single precision|single precision]] [[wp:floating point|floating point]] type called '''float'''. The possible float values are distributed over the huge range of about 3.403·10&lt;sup&gt;38&lt;/sup&gt; to -3.403·10&lt;sup&gt;38&lt;/sup&gt;. The smallest possible value greater than 0 is about 1.175·10&lt;sup&gt;-38&lt;/sup&gt;. Generally, float values have a precision of about 6 or 7 decimal digits.<br /> <br /> [[Literals#Float numbers|Float literals]] can either be specified in decimal or scientific notation. For example the literal 1.2e3 means 1.2·10&lt;sup&gt;3&lt;/sup&gt; = 1200. Note that float literals must always contain the decimal point, even when using scientific notation, and must always start with a number or with the minus sign followed by a number. Unfortunately, negative exponents are not allowed in scientific notation. A hexadecimal representation like in Java is not supported.<br /> <br /> If a floating point operation has a result that exceeds the highest or lowest possible number, the return value has the special value of positive or negative infinity respectively. Invalid operations such as division by zero or adding positive and negative infinity return the special value ''NaN'', &quot;Not a Number&quot;. Be careful about those three special values as they will propagate. That means, if you subtract, add, multiply or divide infinity values, the result will be infinity again. If you perform an operation with the ''NaN'' value, the result will either be ''NaN'' again or (for comparison operators) something totally unexpected. For example if you perform the operation &lt;code&gt;a = x / 0&lt;/code&gt;, variable a will contain ''NaN''. Now the comparison &lt;code&gt;a == a&lt;/code&gt; will actually return the value ''false''! Unlike ''NaN'', infinity values will behave as expected if used in comparison operations, that is positive infinity is greater than any other value, negative infinity is smaller than any other value.<br /> <br /> ''Technical information:'' As specified in the [[wp:IEEE floating-point standard|IEEE floating-point standard]], the float type internally has a length of 32 bits and consists of a 23 bit fraction part, an 8 bit exponent and one sign bit. Especially the 23 bit fraction part (called the &quot;mantissa&quot;) imposes a limit on floating point precision. When large int values greater than 2&lt;sup&gt;23&lt;/sup&gt; or smaller than -2&lt;sup&gt;23&lt;/sup&gt; are [[typecast]]ed to float, they may get rounded.<br /> <br /> ===String===<br /> UnrealScript has a character string data type called '''string'''. Strings can contain any combination of [[wp:Unicode|Unicode]] characters.<br /> <br /> [[Literals#Strings|String literals]] are enclosed in double quotes and may not extends past the end of a line. Technically string literals (but not values) are allowed to have a length of up to 1023 characters. Internally strings are zero-terminated, which means no string can contain the null character because it would be recognized as the end of the string.<br /> <br /> String values are immutable and UnrealScript neither provides &quot;character&quot; type nor allows direct access to individual string characters. There are, however, functions for extracting substrings and returning the Unicode value of the first character of a string. There's also a function for returning a string of length 1 containing a character corresponding to a specified Unicode value.<br /> <br /> Very early builds of [[Unreal Engine 1]] had a fixed-length string type, which was declared with the syntax &lt;code&gt;string[''length'']&lt;/code&gt;. This type is no longer supported and only mentioned here in case you run into its declaration in old code snippets.<br /> <br /> In [[Unreal Engine 2]] (or at least [[UT2004]]) there also is an undocumented type called '''button''' that is an alias for the standard string type, but implies the [[Cache]] variable modifier. It is not actually used in stock code and there's no reason for you to ever declare a variable with the ''cache'' modifier, so this is purely informative.<br /> <br /> ===Name===<br /> The data type '''name''' is a very unusual one. To the programmer it appears a lot like a case-insensitive string with very limited character set. Every object and every class has a name, but names are also used for a variety of other things, such as identifying [[states]], code [[labels]], trigger events or bones of a [[skeletal mesh]].<br /> <br /> [[Literals#Names|Name literals]] are enclosed in single quotes and may contain the letters A to Z, both upper and lowercase, the numbers 0 to 9, the underscore character _ and the space character. Names are limited to a length of up to 63 characters.<br /> <br /> Internally names are represented as int values, which makes sense since names are used in many places and would take up a lot of space if represented as strings. At runtime, the first mentioned string representation of a name is stored in the global name table. Whenever a name value is to a string through [[typecasting]], the string representation from the name table is used. This means that even though you could use the name literal &lt;code&gt;'cOnTrOlLeR'&lt;/code&gt; in your code, it would most likely be represented by the string &lt;code&gt;Controller&lt;/code&gt; instead, because that's the spelling used for the name of the class with that name.<br /> <br /> Newer builds of the [[Unreal Engine 3]] provides an additional way for specifying values of type name via the '''NameOf'''() pseudo-function. Similar to the [[ArrayCount]]() pseudo-function, NameOf() is replaced with a name constant by the compiler. The parameter for NameOf() is either a variable or function name for use in ReplicatedEvent() or with the various Timer management functions.<br /> <br /> ===Enum===<br /> {{main|Enums}}<br /> An '''enum''' type is a named list of identifiers that act as [[Literals#Enums|literals]] for the values of the enum type. UnrealScript's enumerated types are a bit like &quot;glorified integer values&quot;, similar to C++ enumerations. The first value of an enum type corresponds to 0, the second value to 1, and so on.<br /> <br /> ==Reference types==<br /> Unlike [[variables]] of primitive types, variables declared as a reference type only contain a [[wp:reference (computer science)|reference]] to the actual data. When assigning a reference type value to a variable or passing it to function calls, only the reference, not the referenced data, is copied. As a result it is possible that two reference type variables point to the same data and changes made to the data through one variable are immediately visible through the other.<br /> <br /> ===Object===<br /> An object reference does not contain an object, it only points to (i.e. &quot;reference&quot;) an instance of an object. That means the object reference's value actually is a pointer, not an object. Different object references may point to the same object. An object reference may also point to no object at all.<br /> <br /> Object references can be restricted to instances of a certain class. For example, an object reference might only accept instances of the class WebApplication, which also includes instances of WebApplication subclasses like UTServerAdmin.<br /> <br /> [[Literals#Objects|Object literals]] start with the name of the object's class, followed by the qualified or unqualified name of the object instance to reference, enclosed in single quotes. It is also possible to specify a literal for the empty object reference with the keyword &lt;code&gt;None&lt;/code&gt;. Another special object literal is the keyword &lt;code&gt;Self&lt;/code&gt;, which references the object instance executing the current function or state code. It is not available in [[static functions]], because those functions are not executed in the context of an object instance but of an object class.<br /> <br /> ===Actor===<br /> Actor references are basically the same as object references, just restricted to Actor or one of its subclasses. The only difference to non-actor references is, that the Actor class provides a ''Destroy'' method. This method not only gets rid of the actor instance it was called on, but also implicitly sets all references to that actor instance to ''none''.<br /> <br /> Most of your object references will probably be actor references, but apart from ''None'' and ''Self'' you will rarely encounter object literals of type Actor or one of its subclasses. In fact, Actor-type object literals are forbidden in UnrealScript code prior to [[Unreal Engine 3]]. Mappers sometimes see actor literals in the property window of various level objects, but UnrealScript programmers usually won't use them. Most actor literals in Unreal Engine 3 source code are [[archetypes]] in exported [[defaultproperties]] blocks.<br /> <br /> ===Interface===<br /> {{main|Interfaces}}<br /> Interface references are also object references, but restricted to an interface type. This kind of reference can point to any object instance of a class [[implements|implementing]] that interface.<br /> <br /> ===Class===<br /> {{main|Classes}}<br /> A class reference is very similar to an object reference, except that it is restricted to the type Class. Class references can be further restricted to a certain meta class, that means the type of referenced class. Such a restricted class reference is called a '''class limiter''' and is denoted by the keyword &lt;code&gt;Class&lt;/code&gt; followed by the name of the meta class in angle brackets. For example &lt;code&gt;&lt;nowiki&gt;class&lt;Info&gt;&lt;/nowiki&gt;&lt;/code&gt; denotes a reference that can point to the class Info or one of its subclasses.<br /> <br /> Class literals are specified in the same way as other object literals. The type of reference, here ''class'', followed by the class name, optionally qualified with the containing package name, and enclosed in single quotes. For example &lt;code&gt;class'Info'&lt;/code&gt; or &lt;code&gt;class'Engine.Info'&lt;/code&gt; references the Info class located in the Engine package. The special object literal ''None'' can be used for class references and means &quot;no class&quot;.<br /> <br /> One important restriction of class references is the lack of interface support. Classes implementing a certain interface can be anywhere in the class hierarchy, but class limiters only support direct inheritance. This means, that if you want a reference to classes implementing a certain interface, you need to use a generic class reference or the class limiter &lt;code&gt;&lt;nowiki&gt;class&lt;Object&gt;&lt;/nowiki&gt;&lt;/code&gt;. A reference of type &lt;code&gt;&lt;nowiki&gt;class&lt;Interface&gt;&lt;/nowiki&gt;&lt;/code&gt; would only allow references to the interface class itself (or any of its subinterfaces), but not to any class implementing the interface!<br /> <br /> ===Delegate===<br /> {{main|Delegates}}<br /> Delegates were introduced in Unreal Engine 2 and are '''function references'''. In Unreal Engine 2, delegates could only be declared using function syntax and replacing the keyword ''Function'' with the keyword ''Delegate''. Unreal Engine 3 also provides a notation similar to class limiters or dynamic arrays that can be used as variable or parameter type. This notation starts with the keyword &lt;code&gt;Delegate&lt;/code&gt;, followed by the name of a prototype delegate function declaration in angle brackets.<br /> <br /> [[Literals#Functions|Function literals]] are only used for delegate assignments and look more like a variable access than a literal. Basically you reference the object instance containing the function you want to assign to a delegate property (unless, of course, the function is contained in the same object instance as the code doing the assignment), followed by a dot and the pure function name without anything afterwards. As with object references, the keyword ''None'' means &quot;no function&quot;. For delegate function declarations this means the default body, if available, is executed when the delegate is called.<br /> <br /> ===Pointer===<br /> Also starting with Unreal Engine 2, UnrealScript has a generic [[wp:Pointer_(computing)|pointer]] data type, but it only serves as a placeholder for pointer variables in [[native code]]. UnrealScript itself provides no way to access or modify pointer properties.<br /> <br /> ==Composite types==<br /> Unlike all the other types described above, a composite type can contain more than one value. The composite types available in UnrealScript all work similar to primitive types: assigning them to other variables or passing them in function calls creates a copy of the data.<br /> <br /> ===Struct===<br /> {{main|Structs}}<br /> Structs (or structures) are a composition of a fixed number of values that may have different types. Struct types are no reference types, that means they are stored directly in the variable and copied as a whole when assigned to variables or passed as function parameters or returned as function result. Struct values are always replicated as a unit, but for a few structs like vector or rotator replication is not accurate due to bandwidth optimizations. Struct values may not be allowed for replication if the struct type is too large to fit in one network packet.<br /> <br /> Except for [[Literals#Vectors|vectors]] and [[Literals#Rotators|rotators]], there is no way to specify a complete struct value directly in code.<br /> <br /> ===Static array===<br /> {{main|Static arrays}}<br /> Static arrays are a composition of a fixed number of values with identical type. Static arrays can be passed as a whole as function parameters, though this will cause all values to be copied. They can't be assigned to variables or returned as function results, though. For replication, each element is considered separately. It is not possible to declare a static array of type bool or of a dynamic array type. Static arrays of a struct type containing bools or dynamic arrays are no problem, though. There are no literals for static arrays.<br /> <br /> ===Dynamic array===<br /> {{main|Dynamic arrays}}<br /> Dynamic arrays are also a composition of multiple values of the same type, but the actual number of values may change over time. Dynamic arrays can be assigned to variables, passed as function parameters and returned as function results, but every time the entire array is copied. They do not support replication at all.<br /> <br /> In [[Unreal Engine 1]], dynamic arrays can be declared, but there's no way to access them. Only starting with [[Unreal Engine 3]], dynamic arrays of type bool can be used. (You can declare dynamic bool arrays in Unreal Engine 2, but they don't work.) It is not possible to directly use a dynamic array type in other static or dynamic arrays. It is possible to wrap other arrays or bool variables in a struct type and create a dynamic array of that struct type, though. Function parameters that are dynamic arrays may not be optional. There are no literals for dynamic arrays.<br /> <br /> ===Multi-dimensional arrays===<br /> {{main|multi-dimensional arrays}}<br /> Multi-dimensional and jagged arrays are not supported in UnrealScript. You can work around that either by using an array of [[structs]] that contain an array or by performing index arithmetics on any kind of one-dimensional array.<br /> <br /> ===Map===<br /> {{main|Map}}<br /> See [[wp:Associative_array|Associative array]], [[wp:Map_(C%2B%2B)|C++ Map]] and [http://www.google.be/search?q=c%23+dictionary C# Dictionary].<br /> <br /> In [[Unreal Engine 1]] and 2 you cannot use this feature yet so says the compiler error (''Error, Map are not supported in UnrealScript yet'').<br /> <br /> In [[Unreal Engine 3]] you can declare maps however you cannot access them yet with UnrealScript.<br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/Delegates?diff=45224 Delegates 2012-10-30T22:40:52Z <p>Eliot: /* Assigning delegates in Subobjects */ Added back some commentary of WGH</p> <hr /> <div>A '''delegate''' is a special kind of variable/function combination. Delegates were introduced in [[Unreal Engine 2]] and are declared similar to regular [[functions]]. The difference is, that instead of the keyword ''function'' or ''event'', delegate functions are declared with the keyword ''delegate''. In [[Unreal Engine 3]], delegate functions were accompanied by a delegate variable type, so delegates can now also be stored in structs or arrays and can be passed into or returned by a function.<br /> <br /> ==Delegate functions==<br /> A delegate function declaration consists of the following parts:<br /> ''[[Function#Modifiers|[modifiers]]]'' '''delegate''' ''[[types|[returntype]]]'' ''delegatename'' '''(''' ''[[Function#Parameters|[parameter declarations]]]'' ''')''' ''body_or_semicolon''<br /> Like regular functions, delegates can have a function body, which will be the default function associated with the delegate. If no body is defined, the delegate declaration must be terminated with a semicolon.<br /> <br /> Like for regular function declarations, the return type is optional. Similarly, parameter declarations are the same as for regular functions. When assigning a function to the delegate, the function's parameter and return types must match the delegate's. The compiler will make sure this is the case and otherwise throw an error. Parameter names must always be specified, even if the delegate does not have a body definition.<br /> <br /> Most function modifiers can be used for delegate functions, but some of them don't make much sense. For example, delegates can't be '''static''' and do not support the Unreal Engine 3 replication modifiers '''client''', '''server''' and '''reliable'''. Note that most modifiers, like '''simulated''', only apply to the delegate body and will not have any effect while other functions are assigned to the delegate.<br /> <br /> ==Delegate variable type==<br /> The delegate type for variables, parameters and function return types in Unreal Engine 3 looks very similar to a class limiter:<br /> '''delegate &lt;''' ''delegatename'' '''&gt;'''<br /> Here, ''delegatename'' is the name of a delegate function, whose prototype (i.e. parameters and return type) will be used for the delegate variable. Only functions with the same parameter and return types as the referenced delegate function may be assigned to the variable.<br /> <br /> While it is possible to declare arrays of delegates, the compiler only allows calling referenced functions through non-array variables. The element of a delegate array first needs to be assigned to a non-array variable of the same delegate type, but can then be called like a normal function.<br /> &lt;uscript&gt;<br /> function callRandomDelegate(array&lt;delegate&lt;X&gt; &gt; delegateList)<br /> {<br /> local delegate&lt;X&gt; selectedDelegate;<br /> <br /> // select a random delegate from the list<br /> selectedDelegate = delegateList[Rand(delegateList.Length)];<br /> // call that delegate<br /> selectedDelegate();<br /> }<br /> <br /> delegate X();<br /> &lt;/uscript&gt;<br /> This example also demonstrates, that the closing angle brackets in arrays of delegates need to be separated by whitespace, just like with class limiters.<br /> <br /> ==Delegates in Default Properties==<br /> While the compiler won't complain about any assignment of functions to delegates in the default properties and this is also done in some of Epic's own code, it doesn't seem to work well for normal users. Calling a delegate that got assigned per default properties may lead to a crash of the whole engine with an access violation error. <br /> <br /> ===Assigning delegates in Subobjects===<br /> The following issue exists only in the Unreal Engine 3 after the change of DefaultProperties linking.<br /> <br /> When assigning delegates of [[subobject]]s, be aware that the call will be executed within the context of &lt;code&gt;DEFAULT__OBJECTNAME&lt;/code&gt;. One can tell that by verifying its instance name output such as &lt;code&gt;DEFAULT__OBJECTNAME&lt;/code&gt;.<br /> <br /> To avoid this: Either assign the delegate at run-time or pass the actual object reference via the delegate's parameters. <br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/Delegates?diff=45223 Delegates 2012-10-30T22:37:11Z <p>Eliot: /* Delegates in Default Properties */ Pretty sure that this is only for subobjects. At least in my UI Framework I noticed this issue and it works fine in the class itself. Also UE3 only!</p> <hr /> <div>A '''delegate''' is a special kind of variable/function combination. Delegates were introduced in [[Unreal Engine 2]] and are declared similar to regular [[functions]]. The difference is, that instead of the keyword ''function'' or ''event'', delegate functions are declared with the keyword ''delegate''. In [[Unreal Engine 3]], delegate functions were accompanied by a delegate variable type, so delegates can now also be stored in structs or arrays and can be passed into or returned by a function.<br /> <br /> ==Delegate functions==<br /> A delegate function declaration consists of the following parts:<br /> ''[[Function#Modifiers|[modifiers]]]'' '''delegate''' ''[[types|[returntype]]]'' ''delegatename'' '''(''' ''[[Function#Parameters|[parameter declarations]]]'' ''')''' ''body_or_semicolon''<br /> Like regular functions, delegates can have a function body, which will be the default function associated with the delegate. If no body is defined, the delegate declaration must be terminated with a semicolon.<br /> <br /> Like for regular function declarations, the return type is optional. Similarly, parameter declarations are the same as for regular functions. When assigning a function to the delegate, the function's parameter and return types must match the delegate's. The compiler will make sure this is the case and otherwise throw an error. Parameter names must always be specified, even if the delegate does not have a body definition.<br /> <br /> Most function modifiers can be used for delegate functions, but some of them don't make much sense. For example, delegates can't be '''static''' and do not support the Unreal Engine 3 replication modifiers '''client''', '''server''' and '''reliable'''. Note that most modifiers, like '''simulated''', only apply to the delegate body and will not have any effect while other functions are assigned to the delegate.<br /> <br /> ==Delegate variable type==<br /> The delegate type for variables, parameters and function return types in Unreal Engine 3 looks very similar to a class limiter:<br /> '''delegate &lt;''' ''delegatename'' '''&gt;'''<br /> Here, ''delegatename'' is the name of a delegate function, whose prototype (i.e. parameters and return type) will be used for the delegate variable. Only functions with the same parameter and return types as the referenced delegate function may be assigned to the variable.<br /> <br /> While it is possible to declare arrays of delegates, the compiler only allows calling referenced functions through non-array variables. The element of a delegate array first needs to be assigned to a non-array variable of the same delegate type, but can then be called like a normal function.<br /> &lt;uscript&gt;<br /> function callRandomDelegate(array&lt;delegate&lt;X&gt; &gt; delegateList)<br /> {<br /> local delegate&lt;X&gt; selectedDelegate;<br /> <br /> // select a random delegate from the list<br /> selectedDelegate = delegateList[Rand(delegateList.Length)];<br /> // call that delegate<br /> selectedDelegate();<br /> }<br /> <br /> delegate X();<br /> &lt;/uscript&gt;<br /> This example also demonstrates, that the closing angle brackets in arrays of delegates need to be separated by whitespace, just like with class limiters.<br /> <br /> ==Delegates in Default Properties==<br /> While the compiler won't complain about any assignment of functions to delegates in the default properties and this is also done in some of Epic's own code, it doesn't seem to work well for normal users. Calling a delegate that got assigned per default properties may lead to a crash of the whole engine with an access violation error. <br /> <br /> ===Assigning delegates in Subobjects===<br /> The following issue exists only in the Unreal Engine 3 after the change of DefaultProperties linking.<br /> <br /> When assigning delegates of [[subobject]]s, be aware that the call will be executed within the context of DEFAULT__OBJECTNAME.<br /> To avoid this: Either assign the delegate at run-time or pass the actual object reference via the delegate's parameters. <br /> <br /> {{navbox unrealscript}}</div> Eliot https://wiki.beyondunreal.com/UnrealScript_syntax?diff=45126 UnrealScript syntax 2012-06-11T17:27:21Z <p>Eliot: /* Keywords */ Added the new code block statement FilterEditorOnly, CrossLevelActive and NativeOnly.</p> <hr /> <div>__NOTOC__<br /> ==Style==<br /> These sections explain styles you should use. The style is based upon Epic's style used in [[UnrealScript]].<br /> {{expand}}<br /> <br /> ===Names===<br /> All variable/function names should be [[wp:CamelCase|UpperCamelCased]], e.g. &lt;code&gt;var Object OwnerObject&lt;/code&gt;.<br /> <br /> ====Bool====<br /> [[Bool|Bool's]] should start with a lowercase b, e.g. &lt;code&gt;bool bUnrealScriptStyle&lt;/code&gt;.<br /> <br /> ====Enum====<br /> [[Enum|Enum's]] should start with uppercase E, e.g. &lt;code&gt;enum EUnrealScriptStyle&lt;/code&gt;.<br /> Members should all start with all uppercase characters of the enum's name followed by a _, e.g.<br /> &lt;uscript&gt;<br /> enum EUnrealScriptStyle<br /> {<br /> USS_Personal,<br /> USS_EpicGames<br /> };&lt;/uscript&gt;<br /> <br /> ====Interface====<br /> [[Interface|Interface's]] should start with a uppercase I, e.g. &lt;code&gt;interface IUnrealScriptStyle&lt;/code&gt;.<br /> <br /> ==Keywords==<br /> This section lists all known UnrealScript keywords(188). This includes hard-coded functionality of arrays like '''Insert''' etc, as well '''d'''eprecated, '''p'''ostponed, '''r'''e-named and '''c'''anceled keywords. Note that most keywords are context-sensitive in UnrealScript, so you can use most of these for member or type names as well.<br /> <br /> {|<br /> |-valign=&quot;top&quot;<br /> <br /> |<br /> ===A===<br /> *[[Abstract]]<br /> *[[Add]]<br /> *[[AddItem]]<br /> *[[Always]]&lt;sup&gt;C&lt;/sup&gt;<br /> *[[Archetype]]<br /> *[[Array]]<br /> *[[ArrayCount]]<br /> *[[Assert]]<br /> *[[Atomic]]<br /> *[[AtomicWhenCooked]]<br /> *[[Auto]]<br /> *[[AutoCollapseCategories]]<br /> *[[AutoExpandCategories]]<br /> *[[Automated]]<br /> |<br /> ===B===<br /> *[[Begin]]<br /> *[[Bool]]<br /> *[[Break]]<br /> *[[Button]]<br /> *[[Byte]]<br /> |<br /> ===C===<br /> *[[Case]]<br /> *[[CacheExempt]]<br /> *[[Cache]]<br /> *[[Class]]<br /> *[[ClassGroup]]<br /> *[[Client]]<br /> *[[Coerce]]<br /> *[[CollapseCategories]]<br /> *[[Config]]<br /> *[[Const]]<br /> *[[Continue]]<br /> *[[Cpptext|CppStruct]]&lt;sup&gt;R&lt;/sup&gt;<br /> *[[Cpptext|CppText]]<br /> *[[CrossLevelActive]]<br /> *[[CrossLevelPassive]]<br /> |<br /> ===D===<br /> *[[DataBinding]]<br /> *[[Default]]<br /> *[[Defaultproperties|DefaultProperties]]<br /> *[[Delegate]]<br /> *[[DemoRecording]]<br /> *[[DependsOn]]<br /> *[[Deprecated]]<br /> *[[Depreciated]]&lt;sup&gt;U2&lt;/sup&gt;<br /> *[[Do]]<br /> *[[DontAutoCollapseCategories]]<br /> *[[DontCollapseCategories]]<br /> *[[DontSortCategories]]<br /> *[[DLLBind]]<br /> *[[DLLImport]]<br /> *[[DuplicateTransient]]<br /> |<br /> ===E===<br /> *[[EdFindable]]<br /> *[[EditConst]]<br /> *[[EditConstArray]]<br /> *[[EditFixedSize]]<br /> *[[EditHide]]<br /> *[[EditorOnly]]<br /> *[[EditInline]]<br /> *[[EditInlineNew]]<br /> *[[EditInlineNotify]]<br /> *[[EditInlineUse]]<br /> *[[EditTextBox]]<br /> *[[Else]]<br /> *[[Empty]]<br /> *[[End]]<br /> *[[Enum]]<br /> *[[EnumCount]]<br /> *[[Event]]<br /> *[[Exec]]<br /> *[[Expands]]<br /> *[[Export]]<br /> *[[ExportStructs]]<br /> *[[Extends]]<br /> |<br /> ===F===<br /> *[[False]]<br /> *[[FilterEditorOnly]]<br /> *[[Final]]<br /> *[[Find]]<br /> *[[Float]]<br /> *[[For]]<br /> *[[ForceScriptOrder]]<br /> *[[ForEach]]<br /> *[[From]]&lt;sup&gt;C&lt;/sup&gt;<br /> *[[Function]]<br /> |<br /> ===G===<br /> *[[Global]]<br /> *[[GlobalConfig]]<br /> *[[GoTo]]<br /> *[[Guid]]<br /> |-valign=&quot;top&quot;<br /> |<br /> ===H===<br /> *[[HideCategories]]<br /> *[[HideDropDown]]<br /> |<br /> ===I===<br /> *[[If]]<br /> *[[Ignores]]<br /> *[[Immutable]]<br /> *[[ImmutableWhenCooked]]<br /> *[[Implements]]<br /> *[[Import]]&lt;sup&gt;C&lt;/sup&gt;<br /> *[[Inherits]]<br /> *[[Init]]<br /> *[[Input]]<br /> *[[Insert]]<br /> *[[InsertItem]]<br /> *[[Instanced]]<br /> *[[Int]]<br /> *[[Interface]]<br /> *[[Interp]]<br /> *[[Intrinsic]]<br /> *[[Invariant]]&lt;sup&gt;C&lt;/sup&gt;<br /> *[[Iterator]]<br /> |<br /> ===K===<br /> *[[K2Call]]<br /> *[[K2Override]]<br /> *[[K2Pure]]<br /> |<br /> ===L===<br /> *[[Latent]]<br /> *[[Length]]<br /> *[[Local]]<br /> *[[Localized]]<br /> *[[Long]]<br /> |<br /> ===M===<br /> *[[Map]]<br /> |<br /> ===N===<br /> *[[Name]]<br /> *[[NameOf]]<br /> *[[Native]]<br /> *[[NativeOnly]]<br /> *[[NativeReplication]]<br /> *[[New]]<br /> *[[NoExport]]<br /> *[[NoExportHeader]]<br /> *[[NoClear]]<br /> *[[NoImport]]<br /> *[[None]]<br /> *[[NonTransactional]]<br /> *[[NonTransient]]<br /> *[[NotEditInlineNew]]<br /> *[[NotForConsole]]<br /> *[[NotInstanced]]<br /> *[[NotPlaceable]]<br /> *[[NoUserCreate]]<br /> |<br /> ===O===<br /> *[[Operator]]<br /> *[[Optional]]<br /> *[[OrderedArray]]&lt;sup&gt;U2&lt;/sup&gt;<br /> *[[Out]]<br /> |-valign=&quot;top&quot;<br /> |<br /> ===P===<br /> *[[ParseConfig]]<br /> *[[PerObjectConfig]]<br /> *[[PerObjectLocalized]]<br /> *[[Placeable]]<br /> *[[Private]]<br /> *[[PrivateWrite]]<br /> *[[PreOperator]]<br /> *[[Protected]]<br /> *[[ProtectedWrite]]<br /> *[[Pointer]]<br /> *[[PostOperator]]<br /> *[[Public]]<br /> |<br /> ===R===<br /> *[[Reliable]]<br /> *[[Remove]]<br /> *[[RemoveIndex]]<br /> *[[RemoveItem]]<br /> *[[Replace]]<br /> *[[Replication]]<br /> *[[RepNotify]]<br /> *[[RepRetry]]<br /> *[[Return]]<br /> *[[Rot]]<br /> *[[Rng]]&lt;sup&gt;C&lt;/sup&gt;<br /> |<br /> ===S===<br /> *[[ShowCategories]]<br /> *[[Cpptext|StructCppText]]<br /> *[[Structdefaultproperties|StructDefaultProperties]]<br /> *[[Structdefaultproperties|StructDefaults]]&lt;sup&gt;R&lt;/sup&gt;<br /> *[[SafeReplace]]<br /> *[[Self]]<br /> *[[Server]]<br /> *[[SerializeText]]<br /> *[[Simulated]]<br /> *[[Singular]]<br /> *[[Skip]]<br /> *[[Sort]]<br /> *[[State]]<br /> *[[Stop]]<br /> *[[StrictConfig]]<br /> *[[String]]<br /> *[[Struct]]<br /> *[[Super]]<br /> *[[Switch]]<br /> |<br /> ===T===<br /> *[[Transient]]<br /> *[[Travel]]<br /> *[[True]]<br /> |<br /> ===U===<br /> *[[Unreliable]]<br /> *[[Until]]<br /> |<br /> ===V===<br /> *[[Var]]<br /> *[[Vect]]<br /> *[[Virtual]]<br /> |<br /> ===W===<br /> *[[While]]<br /> *[[Within]]<br /> |}<br /> <br /> {{Navbox unrealscript}}<br /> [[Category:Programming articles]]</div> Eliot https://wiki.beyondunreal.com/User:Eliot/UE_Explorer?diff=45123 User:Eliot/UE Explorer 2012-05-30T06:48:57Z <p>Eliot: URL corrections.</p> <hr /> <div>UE Explorer is an UnrealScript decompiler for Unreal Engine 1, 2 and 3. Written in [[wp:C#|C#]] with a straight forward user-friendly UI(User Interface). Giving you an easily organized TreeView so that you can decompile each Field individually.<br /> <br /> UE Explorer supports all Epic Games for the PC such as Unreal, UT, UT2004, UT3 and the Unreal Development Kit(UDK).<br /> <br /> <br /> If you want to follow this project for future updates then visit [http://eliotvu.com/news Eliot - UE Explorer], or if you want to discuss, visit: [http://eliotvu.com/forum/ Eliot - Forum]<br /> <br /> ==Video==<br /> '''Demo:''' [http://eliotvu.com/portfolio/view/21/ue-explorer#Video Eliot - UE Explorer: Demo]<br /> <br /> ==Download==<br /> You can '''download''' UE Explorer from [http://eliotvu.com/portfolio/view/21/ue-explorer#Download here].<br /> <br /> ==UELib==<br /> UE Explorer uses the UELib(made by Eliot) which is a library made in [[wp:C#|C#]]. The library is used to analyze UnrealPackages such as .u and .utx files and collect any important information to be used for whatever reason the developer wish. It provides functionality to deserialize almost any Object, decompile and minor modifications. It also can be extended by registering your own classes e.g. Textures.<br /> <br /> ====Supported Games====<br /> [http://eliotvu.com/portfolio/view/21/ue-explorer#Supported%20Versions You can view the latest support table on Eliot's Portfolio]</div> Eliot https://wiki.beyondunreal.com/Talk:UnrealScript_security_considerations?diff=45105 Talk:UnrealScript security considerations 2012-05-02T10:27:34Z <p>Eliot: </p> <hr /> <div>This is funny because this is exactly what Epic Games didn't consider when they made UT2004 &amp;#3232;_&amp;#3232; --[[User:Eliot|Eliot]] 20:23, 4 March 2012 (UTC)<br /> <br /> :That's why we should write all these things down - to prevent it from happening again. —[[User:Wormbo|Wormbo]] 22:02, 4 March 2012 (UTC)<br /> <br /> Wow, I always knew UTComp was crap, code-wise. But I never expected it to be this bad. —[[User:Wormbo|Wormbo]] 08:41, 22 April 2012 (UTC)<br /> <br /> :Indeed, I've posted about it on the Epic Games forums with more [http://forums.epicgames.com/threads/907046-Warning-UTCOMP-has-a-exploit-that-gives-hackers-access-to-your-server?p=30366058#post30366058 details] --[[User:Eliot|Eliot]] 10:27, 2 May 2012 (UTC)</div> Eliot https://wiki.beyondunreal.com/UnrealScript_security_considerations?diff=45100 UnrealScript security considerations 2012-04-21T23:21:53Z <p>Eliot: /* Solution */ Also having the file can provide other exploits.</p> <hr /> <div>This article lists some basic security considerations concerning anything you create using [[UnrealScript]].<br /> {{quote|If I prevent the client from clicking the wrong button, I'm safe, right?|an unsuspecting modder}}<br /> Well, not really. The uncomfortable truth is, the client can do stuff the author can't predict. In fact, crackers (i.e. the evil kind of [[wp:Hacker (computer security)|Hacker]]s) have found many ways to make servers do things they would never done for regular players. <br /> [[Category:Programming articles]]<br /> <br /> ==Kinds of exploits==<br /> All the evil things crackers may do to a game server can be categorized as follows:<br /> ;Cheating:This involves all the annoying things to break the rules of the game, like wall hacks, speed hacks, aim bots, etc.<br /> ;Denial of service:Anything that makes the game unplayable for technical reasons, for example hogging the server's CPU, causing network lag or simply crashing the server.<br /> ;Taking control:The attacker breaches security measures to change game settings or make the server do things only the server administrator should be able to do.<br /> <br /> ==Entry points==<br /> Attackers have different ways to achieve any of the above exploits:<br /> ;Console commands and configuration settings:As simple as it may sound, but the game itself or any of the mods running on the server may make console commands or settings available to regular players that allow any of the above exploits. Of course that can be considered a serious bug in the game or mod and needs to be fixed. An example is a crash vulnerability in older versions of the [[Unreal Engine]] that involved invalid class names. If a client was able to make the server try and load such an invalid class, the server would crash, and there were many ways to do that.<br /> ;Loading additional code to use existing code in unexpected ways:This is probably the most common way to activate cheats nowadays. The client runs some loader program or otherwise &quot;injects&quot; custom code into the game client, be it via a [[wp:DLL file|DLL file]] or an [[Unreal package file]]. In both cases the client gains access to new features, such as radars, aiming helps or even more powerful weapons.<br /> ;Modifying existing code:Files that came with the game or belong to mods running on the server are modified in a way to unlock otherwise inaccessible features or to add custom code. This approach could be used to disable built-in features, such as no longer blinding the player after he was exposed to a flashbang explosion.<br /> ;External tools:For some exploits it's not even necessary to run the game. As soon as the server provides other means of access, such as a web interface or some kind of query protocol, those can be used to trigger unwanted behavior.<br /> <br /> ==Preventing exploits==<br /> So, how do you prevent malicious players from doing all these things, if you have so few control about what the client does? The answer is actually quite simple:<br /> :'''Do not trust the client. Ever!'''<br /> Validate everything the client sends. &quot;Client&quot; in this case is not only the game client, but for other access methods (e.g. web interfaces) it includes the tools to access those (e.g. a web browser).<br /> <br /> Game client and server communicate through [[replication]], particularly the client uses replicated functions to send anything to the server. Under no circumstances let the client call functions directly through replication if they can cause any of the following things:<br /> * perform expensive operations, such as iterating over all actors or loading irrelevant objects (causes lag due to CPU hogging)<br /> * cause function calls to be replicated to all or many clients (causes lag due to increased network traffic)<br /> * instantiate actors/objects (uses up memory and CPU)<br /> * modify admin-only settings<br /> * execute arbitrary console commands<br /> * modify the URL options for the next map (danger of admin password override!)<br /> * set game-relevant default or instance properties to arbitrary values<br /> This list is likely incomplete, so apply common sense to figure out other potentially critical things. Whenever you create a function that is replicated to the server, ask yourself if a client could cause problems by calling it with special parameter values or simply by calling it extremely often. Do not rely on your own client code to prevent such things!<br /> <br /> Also you must not only watch out for what the client may send back to the server, but what you simply leave handled by the client. <br /> <br /> For instance you should make sure certain delays or important checks are not left in client-side code where they could be modified, If it would work and be more safe server-side or with proper replication.<br /> <br /> ==Examples==<br /> A few examples that could have been avoided through better code design.<br /> <br /> ===UT ZP &quot;massmurder&quot; cheat===<br /> This exploit was created based on the zero-ping InstaGib mod for UT. The ZP creators intended to eliminate ping problems in InstaGib games by moving hit detection from the server to the clients. Basically when the player fires, his client does not send the information &quot;I fired&quot; to the server. Instead it performs the firing logic and hit detection locally and tells the server &quot;I hit player X&quot;, which causes that player to die. The massmurder cheat in essence told the server &quot;I hit all players in view at once&quot; - and the server believed it.<br /> <br /> This is a good example why the server should never trust the client. ZP lacked even the simplest validations, like how quickly the shots were fired. Ideally a ZP-like mod should not only validate shot intervals, but also check hit plausibility, i.e. perform a server-side hit test, possibly taking ping into account.<br /> <br /> ===UT200x cheat loading===<br /> UT2003 and UT2004 contain lots of configurable entry points that allow loading of custom code. Making things worse, Epic turned off the server feature that disallowed clients with unknown code packages loaded because some mods were badly coded and didn't unload on clients when switching servers. UTComp in its earlier versions was one of the most popular mods with such a bug. Later when the Anti TCC and SafeGame anti-cheat mods included checks to compensate the disabled security features of the game, people blamed the security mods, like they blamed UT2004 before. The UTComp bug was fixed eventually, but other mods remained buggy and there are probably still such mods around. The UT2004 feature to detect such problems has never been enabled again and the best solution still is to let anti-cheat mods perform expensive searches for unknown code.<br /> <br /> ===TAM takeover vulnerability===<br /> The popular 3SPN mod is another example of careless code design related to server security. In its version 2.57 there was a bug that allowed attackers to take control of the entire server. The vulnerability was found and fixed in version 3, version 2.57 was patched separately.<br /> <br /> ===UTComp takeover vulnerability===<br /> This is the latest findings in critical vulnerabilities exposed by a mod. The cause is the same as the TAM vulnerability: Careless code design. Unlike the TAM vulnerability, however, this one is a [[wp:zero-day exploit|zero-day exploit]]. It was only found after it was actively abused to tamper with many UT2004 servers. It must have existed for a long time already and is not fixed yet. The exploit is know of being exploited since at least 2008-2009.<br /> <br /> The TAM and UTComp exploits have the same cause, a replicated function for an admin feature without any plausibility check. Basically if the attacker writes custom code to call that function, the server will execute code that was never supposed to be called by non-admin clients.<br /> <br /> ====Solution====<br /> This exploit can be suppressed by disabling UTComp built-in voting system. If the voting system was the only reason you use UTComp, then please remove(also delete the .u file!) UTComp completely as it consists of more exploits than this.</div> Eliot https://wiki.beyondunreal.com/UnrealScript_security_considerations?diff=45099 UnrealScript security considerations 2012-04-21T23:20:16Z <p>Eliot: /* UTComp takeover vulnerability */ Doesn't really matter but w/e</p> <hr /> <div>This article lists some basic security considerations concerning anything you create using [[UnrealScript]].<br /> {{quote|If I prevent the client from clicking the wrong button, I'm safe, right?|an unsuspecting modder}}<br /> Well, not really. The uncomfortable truth is, the client can do stuff the author can't predict. In fact, crackers (i.e. the evil kind of [[wp:Hacker (computer security)|Hacker]]s) have found many ways to make servers do things they would never done for regular players. <br /> [[Category:Programming articles]]<br /> <br /> ==Kinds of exploits==<br /> All the evil things crackers may do to a game server can be categorized as follows:<br /> ;Cheating:This involves all the annoying things to break the rules of the game, like wall hacks, speed hacks, aim bots, etc.<br /> ;Denial of service:Anything that makes the game unplayable for technical reasons, for example hogging the server's CPU, causing network lag or simply crashing the server.<br /> ;Taking control:The attacker breaches security measures to change game settings or make the server do things only the server administrator should be able to do.<br /> <br /> ==Entry points==<br /> Attackers have different ways to achieve any of the above exploits:<br /> ;Console commands and configuration settings:As simple as it may sound, but the game itself or any of the mods running on the server may make console commands or settings available to regular players that allow any of the above exploits. Of course that can be considered a serious bug in the game or mod and needs to be fixed. An example is a crash vulnerability in older versions of the [[Unreal Engine]] that involved invalid class names. If a client was able to make the server try and load such an invalid class, the server would crash, and there were many ways to do that.<br /> ;Loading additional code to use existing code in unexpected ways:This is probably the most common way to activate cheats nowadays. The client runs some loader program or otherwise &quot;injects&quot; custom code into the game client, be it via a [[wp:DLL file|DLL file]] or an [[Unreal package file]]. In both cases the client gains access to new features, such as radars, aiming helps or even more powerful weapons.<br /> ;Modifying existing code:Files that came with the game or belong to mods running on the server are modified in a way to unlock otherwise inaccessible features or to add custom code. This approach could be used to disable built-in features, such as no longer blinding the player after he was exposed to a flashbang explosion.<br /> ;External tools:For some exploits it's not even necessary to run the game. As soon as the server provides other means of access, such as a web interface or some kind of query protocol, those can be used to trigger unwanted behavior.<br /> <br /> ==Preventing exploits==<br /> So, how do you prevent malicious players from doing all these things, if you have so few control about what the client does? The answer is actually quite simple:<br /> :'''Do not trust the client. Ever!'''<br /> Validate everything the client sends. &quot;Client&quot; in this case is not only the game client, but for other access methods (e.g. web interfaces) it includes the tools to access those (e.g. a web browser).<br /> <br /> Game client and server communicate through [[replication]], particularly the client uses replicated functions to send anything to the server. Under no circumstances let the client call functions directly through replication if they can cause any of the following things:<br /> * perform expensive operations, such as iterating over all actors or loading irrelevant objects (causes lag due to CPU hogging)<br /> * cause function calls to be replicated to all or many clients (causes lag due to increased network traffic)<br /> * instantiate actors/objects (uses up memory and CPU)<br /> * modify admin-only settings<br /> * execute arbitrary console commands<br /> * modify the URL options for the next map (danger of admin password override!)<br /> * set game-relevant default or instance properties to arbitrary values<br /> This list is likely incomplete, so apply common sense to figure out other potentially critical things. Whenever you create a function that is replicated to the server, ask yourself if a client could cause problems by calling it with special parameter values or simply by calling it extremely often. Do not rely on your own client code to prevent such things!<br /> <br /> Also you must not only watch out for what the client may send back to the server, but what you simply leave handled by the client. <br /> <br /> For instance you should make sure certain delays or important checks are not left in client-side code where they could be modified, If it would work and be more safe server-side or with proper replication.<br /> <br /> ==Examples==<br /> A few examples that could have been avoided through better code design.<br /> <br /> ===UT ZP &quot;massmurder&quot; cheat===<br /> This exploit was created based on the zero-ping InstaGib mod for UT. The ZP creators intended to eliminate ping problems in InstaGib games by moving hit detection from the server to the clients. Basically when the player fires, his client does not send the information &quot;I fired&quot; to the server. Instead it performs the firing logic and hit detection locally and tells the server &quot;I hit player X&quot;, which causes that player to die. The massmurder cheat in essence told the server &quot;I hit all players in view at once&quot; - and the server believed it.<br /> <br /> This is a good example why the server should never trust the client. ZP lacked even the simplest validations, like how quickly the shots were fired. Ideally a ZP-like mod should not only validate shot intervals, but also check hit plausibility, i.e. perform a server-side hit test, possibly taking ping into account.<br /> <br /> ===UT200x cheat loading===<br /> UT2003 and UT2004 contain lots of configurable entry points that allow loading of custom code. Making things worse, Epic turned off the server feature that disallowed clients with unknown code packages loaded because some mods were badly coded and didn't unload on clients when switching servers. UTComp in its earlier versions was one of the most popular mods with such a bug. Later when the Anti TCC and SafeGame anti-cheat mods included checks to compensate the disabled security features of the game, people blamed the security mods, like they blamed UT2004 before. The UTComp bug was fixed eventually, but other mods remained buggy and there are probably still such mods around. The UT2004 feature to detect such problems has never been enabled again and the best solution still is to let anti-cheat mods perform expensive searches for unknown code.<br /> <br /> ===TAM takeover vulnerability===<br /> The popular 3SPN mod is another example of careless code design related to server security. In its version 2.57 there was a bug that allowed attackers to take control of the entire server. The vulnerability was found and fixed in version 3, version 2.57 was patched separately.<br /> <br /> ===UTComp takeover vulnerability===<br /> This is the latest findings in critical vulnerabilities exposed by a mod. The cause is the same as the TAM vulnerability: Careless code design. Unlike the TAM vulnerability, however, this one is a [[wp:zero-day exploit|zero-day exploit]]. It was only found after it was actively abused to tamper with many UT2004 servers. It must have existed for a long time already and is not fixed yet. The exploit is know of being exploited since at least 2008-2009.<br /> <br /> The TAM and UTComp exploits have the same cause, a replicated function for an admin feature without any plausibility check. Basically if the attacker writes custom code to call that function, the server will execute code that was never supposed to be called by non-admin clients.<br /> <br /> ====Solution====<br /> This exploit can be suppressed by disabling UTComp built-in voting system. If the voting system was the only reason you use UTComp, then please remove UTComp completely as it consists of more exploits than this.</div> Eliot https://wiki.beyondunreal.com/UnrealScript_security_considerations?diff=45098 UnrealScript security considerations 2012-04-21T23:14:35Z <p>Eliot: /* UTComp takeover vulnerability */ Solution for UTComp exploit</p> <hr /> <div>This article lists some basic security considerations concerning anything you create using [[UnrealScript]].<br /> {{quote|If I prevent the client from clicking the wrong button, I'm safe, right?|an unsuspecting modder}}<br /> Well, not really. The uncomfortable truth is, the client can do stuff the author can't predict. In fact, crackers (i.e. the evil kind of [[wp:Hacker (computer security)|Hacker]]s) have found many ways to make servers do things they would never done for regular players. <br /> [[Category:Programming articles]]<br /> <br /> ==Kinds of exploits==<br /> All the evil things crackers may do to a game server can be categorized as follows:<br /> ;Cheating:This involves all the annoying things to break the rules of the game, like wall hacks, speed hacks, aim bots, etc.<br /> ;Denial of service:Anything that makes the game unplayable for technical reasons, for example hogging the server's CPU, causing network lag or simply crashing the server.<br /> ;Taking control:The attacker breaches security measures to change game settings or make the server do things only the server administrator should be able to do.<br /> <br /> ==Entry points==<br /> Attackers have different ways to achieve any of the above exploits:<br /> ;Console commands and configuration settings:As simple as it may sound, but the game itself or any of the mods running on the server may make console commands or settings available to regular players that allow any of the above exploits. Of course that can be considered a serious bug in the game or mod and needs to be fixed. An example is a crash vulnerability in older versions of the [[Unreal Engine]] that involved invalid class names. If a client was able to make the server try and load such an invalid class, the server would crash, and there were many ways to do that.<br /> ;Loading additional code to use existing code in unexpected ways:This is probably the most common way to activate cheats nowadays. The client runs some loader program or otherwise &quot;injects&quot; custom code into the game client, be it via a [[wp:DLL file|DLL file]] or an [[Unreal package file]]. In both cases the client gains access to new features, such as radars, aiming helps or even more powerful weapons.<br /> ;Modifying existing code:Files that came with the game or belong to mods running on the server are modified in a way to unlock otherwise inaccessible features or to add custom code. This approach could be used to disable built-in features, such as no longer blinding the player after he was exposed to a flashbang explosion.<br /> ;External tools:For some exploits it's not even necessary to run the game. As soon as the server provides other means of access, such as a web interface or some kind of query protocol, those can be used to trigger unwanted behavior.<br /> <br /> ==Preventing exploits==<br /> So, how do you prevent malicious players from doing all these things, if you have so few control about what the client does? The answer is actually quite simple:<br /> :'''Do not trust the client. Ever!'''<br /> Validate everything the client sends. &quot;Client&quot; in this case is not only the game client, but for other access methods (e.g. web interfaces) it includes the tools to access those (e.g. a web browser).<br /> <br /> Game client and server communicate through [[replication]], particularly the client uses replicated functions to send anything to the server. Under no circumstances let the client call functions directly through replication if they can cause any of the following things:<br /> * perform expensive operations, such as iterating over all actors or loading irrelevant objects (causes lag due to CPU hogging)<br /> * cause function calls to be replicated to all or many clients (causes lag due to increased network traffic)<br /> * instantiate actors/objects (uses up memory and CPU)<br /> * modify admin-only settings<br /> * execute arbitrary console commands<br /> * modify the URL options for the next map (danger of admin password override!)<br /> * set game-relevant default or instance properties to arbitrary values<br /> This list is likely incomplete, so apply common sense to figure out other potentially critical things. Whenever you create a function that is replicated to the server, ask yourself if a client could cause problems by calling it with special parameter values or simply by calling it extremely often. Do not rely on your own client code to prevent such things!<br /> <br /> Also you must not only watch out for what the client may send back to the server, but what you simply leave handled by the client. <br /> <br /> For instance you should make sure certain delays or important checks are not left in client-side code where they could be modified, If it would work and be more safe server-side or with proper replication.<br /> <br /> ==Examples==<br /> A few examples that could have been avoided through better code design.<br /> <br /> ===UT ZP &quot;massmurder&quot; cheat===<br /> This exploit was created based on the zero-ping InstaGib mod for UT. The ZP creators intended to eliminate ping problems in InstaGib games by moving hit detection from the server to the clients. Basically when the player fires, his client does not send the information &quot;I fired&quot; to the server. Instead it performs the firing logic and hit detection locally and tells the server &quot;I hit player X&quot;, which causes that player to die. The massmurder cheat in essence told the server &quot;I hit all players in view at once&quot; - and the server believed it.<br /> <br /> This is a good example why the server should never trust the client. ZP lacked even the simplest validations, like how quickly the shots were fired. Ideally a ZP-like mod should not only validate shot intervals, but also check hit plausibility, i.e. perform a server-side hit test, possibly taking ping into account.<br /> <br /> ===UT200x cheat loading===<br /> UT2003 and UT2004 contain lots of configurable entry points that allow loading of custom code. Making things worse, Epic turned off the server feature that disallowed clients with unknown code packages loaded because some mods were badly coded and didn't unload on clients when switching servers. UTComp in its earlier versions was one of the most popular mods with such a bug. Later when the Anti TCC and SafeGame anti-cheat mods included checks to compensate the disabled security features of the game, people blamed the security mods, like they blamed UT2004 before. The UTComp bug was fixed eventually, but other mods remained buggy and there are probably still such mods around. The UT2004 feature to detect such problems has never been enabled again and the best solution still is to let anti-cheat mods perform expensive searches for unknown code.<br /> <br /> ===TAM takeover vulnerability===<br /> The popular 3SPN mod is another example of careless code design related to server security. In its version 2.57 there was a bug that allowed attackers to take control of the entire server. The vulnerability was found and fixed in version 3, version 2.57 was patched separately.<br /> <br /> ===UTComp takeover vulnerability===<br /> This is the latest findings in critical vulnerabilities exposed by a mod. The cause is the same as the TAM vulnerability: Careless code design. Unlike the TAM vulnerability, however, this one is a [[wp:zero-day exploit|zero-day exploit]]. It was only found after it was actively abused to tamper with many UT2004 servers. It must have existed for a long time already and is not fixed yet.<br /> <br /> The TAM and UTComp exploits have the same cause, a replicated function for an admin feature without any plausibility check. Basically if the attacker writes custom code to call that function, the server will execute code that was never supposed to be called by non-admin clients.<br /> <br /> ====Solution====<br /> This exploit can be suppressed by disabling UTComp built-in voting system. If the voting system was the only reason you use UTComp, then please remove UTComp completely as it consists of more exploits than this.</div> Eliot https://wiki.beyondunreal.com/User:Eliot?diff=45086 User:Eliot 2012-04-06T15:18:40Z <p>Eliot: </p> <hr /> <div>Welcome to my personal page, if you don't know me yet, well to begin I live in [[wp:Belgium|Belgium]] and my name is '''Eliot Van Uytfanghe''', I'm usually playing with my real name '''Eliot'''. I have been playing the [[Unreal Tournament]] series since [[UT]] Classic, and I started developing maps for [[UT2004]] since its release, and eventually somewhere around 2006 I started programming in [[UnrealScript]] to develop mutators and other minor things, mainly for the Trials community.<br /> <br /> Since november 27 2009; I have started to make some programs with [[wp:C#|C#]] for the purpose of learning C# and making myself more familiar with the [[Unreal Engine]] file formats, I have started developing '''UE Explorer''' this program has multiple utilities such as a [[color tags]] Generator with preview, Cache Extractor and best of all a powerful UnrealScript decompiler that supports [[Unreal]] to [[Unreal Development Kit]] etc.<br /> <br /> ==Contact==<br /> ; Website: [http://eliotvu.com Eliot]<br /> ; Forum: ''Eliot'' on [http://utforums.epicgames.com/member.php?u=1262617 Epic Games Forums] and [http://forums.beyondunreal.com/member.php?u=49361 Beyondunreal Forums]<br /> ; IRC: ''Eliot'' on [irc://irc.enterthegame.com/unrealscript #unrealscript on EnterTheGame] and [irc://irc.enterthegame.com/unrealwiki #unrealwiki on EnterTheGame]<br /> ; Xfire: [http://www.xfire.com/profile/eliots/ Eliots]<br /> ; Server: ''Eliot'' on UT2004 [http://elitetrial.clanservers.com/WebBTimes/index.php Elite Trial Records]<br /> <br /> ==Mutators==<br /> &lt;div style=&quot;background-color:#DDDDCD;&quot;&gt;<br /> &lt;div style=&quot;border:1px solid #222222;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/LevelConfigManager|LevelConfigManager]]''' ''(2006-2009)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' A [[UnrealEd]] Mutator allowing you to modify the map gameplay to your choice.<br /> :'''Comment:''' This is a very often used [[UE2:Mutator (UT2004)|mutator]] in Assault Trial maps and is usually a must use today; mainly because of the '''DefaultWeapons''' feature.<br /> :'''Download:''' [http://www.filefront.com/16103707/Level-Config-Manager-2.9/ Download](w/''source'')<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutNoAutoFire|MutNoAutoFire]]''' ''(2006-2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces those annoying ShieldGun's that auto fire when being close to a player of your team, '''Note''':Replaces the [[UE2:Pawn (UT2004)|pawn]] class if it is [[UE2:xPawn (UT2004)|xpawn]] or UTComp_Pawn, will not function properly if other mutators replacing the pawn class are running!<br /> :'''Comment:''' This is a very often used mutator in Assault Trial servers because this [[UE2:Mutator (UT2004)|mutator]] fixes common exploits of the game such as [[UE2:Mover (UT2004)|movers]] not moving anymore in some cases and as well kills people that try to glitch through idling [[UE2:Mover (UT2004)|movers]](such as non-complex doors), this [[UE2:Mutator (UT2004)|mutator]] as well lets you configure the color of the [[UE2:ShieldGun (UT2004)|ShieldGun]] and let you choose your own suicide message and many more.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for contributing ideas and features.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/15104713/MutNoAutoFireV1l_Test5.rar/ Download from www.filefront.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutBestTimes|MutBestTimes]]''' ''(2005-Present)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Records Best MapTime completion, Player Rankings, Website stats([http://elitetrial.clanservers.com/WebBTimes.html Example]), Client Spawn and (Solo Trial mode, Group Trial mode support) and many more small features.<br /> :'''Comment:''' Private trials [[UE2:Mutator (UT2004)|mutator]] for my favorite servers.<br /> :'''Credits:''' [[User:.:..:|.:..:]] he made the very first version/s''(2005-2006)'' of this mutator then retired, which I continued then''(2007-Present)'', [[User:Gugi|Gugi]] for fixing some iteration issue in the custom VotingHandler that they experienced only on their server.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''[[User:Eliot/MutAccessPlus|AccessPlus]]''' ''(2006)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Comment:''' Private admin [[UE2:Mutator (UT2004)|mutator]] for our ut2x server but now used by the public though there was never a official release. This mutator is made by [[User:.:..:|.:..:]], I only contributed to it because it was made for our server.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MultiDodgeShieldGun''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This gun is an extension of the modified ShieldGun of ''MutNoAutoFire'', the difference is that whenever you hit a wall you will be able to dodge once again, the purpose of this is to make it possible for mappers to make more new and fresh Trial maps for dedicated players.<br /> :'''Comment:''' This mod has a hardcoded dependency on a specific version of MutNoAutoFire; the version of this mod is equal to the mutator version it depends on.<br /> :'''Credits:''' .:..: for an replication issue and Lt.Ryan for the idea suggestion.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutDodgeJump''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Allows players to jump again after they have dodged once (optional).<br /> :'''Comment:''' MutDodgeJump was the first second mutator released for [[UT3]]. The mutator was very well accepted by the community however old-skool players from [[UT]] did not for obvious reasons.<br /> :'''Credits:''' Mysterial for explaining some replication.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.gamershell.com/download_22171.shtml Download from www.gamershell.com] [http://www.liandri.com/downloads/apps/ut3/MutDodgeJump.zip Download from www.liandri.com]<br /> :: * [http://www.fileplanet.com/182614/180000/fileinfo/Unreal-Tournament-3---DodgeJump-Mutator Download from www.fileplanet.com #1] [http://www.fileplanet.com/188545/180000/fileinfo/Unreal-Tournament-3---MutDodgeJump Download from www.fileplanet.com #2]<br /> :: * [http://www.utzone.de/forum/downloads.php?do=file&amp;id=2702&amp;rating=10 Download from www.utzone.de] [http://www.filefront.com/9144037/DodgeJump-Mutador/ Download from www.filefront.com]<br /> :: * [http://ut3.ut-files.com/index.php?dir=MSU/Phase1/BestMutator/&amp;file=MutDodgeJump.rar Download from www.ut-files.com #1] [http://ut3.ut-files.com/index.php?dir=Mutators/&amp;file=MutDodgeJump.zip Download from www.ut-files.com #2]<br /> :'''Discussion''' [http://utforums.epicgames.com/showthread.php?t=585114 DodgeJump on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''UTTrials''' ''(17-11-2007)''&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This was the awaited Trials gametype for UT3 which was unfortunately canceled due the lack of UT3 interest. This gametype adds back the Objectives system of Assault to UT3 for usage in Trial maps. The gametype supports records, DodgeJump, Enhanced ImpactHammer, Enhanced Scoreboard(and HUD) and many other essential features that UT3 Trials might have liked as well introducing a new Trial mode such as Survival, the gametype was planned to support 3 Trial modes: Solo(Like BT), Team(Like UT2K4) and Survival(New).<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutXMasPresents''' ''(2007)''(w/source)&lt;sup&gt;UT3&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Presents from Santa will be available throughout the maps played on your server.<br /> :'''Credits:''' [[Legacy:Soto|Vincent]] for making the meshes provided with this mutator.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14990529/XMasPresents Download from www.filefront.com] [http://www.fileplanet.com/188549/180000/fileinfo/MutXMasPresents Download from www.fileplant.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=590571 MutXMasPresents on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutEmoticons''' ''(2007)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Replaces the current played gametype HUD with a SmileyHud which replaces common used text smileys such as ':)' to a smiley image like on chat programs such as MSN.<br /> :'''Credits:''' [[User:.:..:|.:..:]] The HUD ''code'' was written by him for his Unreal 1 port and InvasionX which I converted to a mutator with replicated configurable smileys.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14099627/Emoticons-V1with-TAM-3141-support-version/ Download from www.filefront.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=595516 MutEmoticons on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutCacheExtractor''' ''(2009)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Let's you extract cache files from within the game even online!<br /> :'''Comment:''' This is a [[UE2:Mutator (UT2004)|mutator]] that should be hosted on the server.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14981485/MutCacheExtractor Download from www.filefront.com]<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?p=26997032#post26997032 MutCacheExtractor on Epic Games forums]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''TrialGroup''' ''((21-29)-04-2010)''(w/source)&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' Provides functionality for mappers to integrate a group system which an external mutator is supposed to support for actually usage.<br /> :'''Comment:''' Provides several actors for trial mappers to make a team-trial map possible without cheating.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/16348113/TrialGroup.rar Download from www.filefront.com]<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MomentumReflectorGun''' ''((3-6)-07-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' The Momentum Reflector Gun is a subclass of the LinkGun but instead of killing opponents, the gun is used to climb upon walls using precise aiming that may or may not require advanced skills depending on the challenge available in Trial maps.<br /> :'''Comment:''' This gun is a imitation of the Quake 3 Plasma Gun, for the use of wall climbing see: [[wp:DeFRaG#Weapon_techniques|Weapon Techniques]].<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''MutEquipmentLevel''' ''(13-09-2010)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' This mutator removes all the initial weapons you spawn with, except for the ShieldGun. Once a kill is made you will lose the ShieldGun and earn the AssaultRifle and so on. Once you suicide(or accident) you de-level meaning you'd lose the AssaultRifle and start again with the ShieldGun, you as well lose your score. Winning is not affected by this mutator.<br /> &lt;/div&gt;<br /> <br /> &lt;div style=&quot;border:1px solid #222222; margin-top:6px;&quot;&gt;<br /> &lt;h5 style=&quot;margin-left:4px;&quot;&gt;<br /> '''TrialGroup_Extra''' ''(20-03-2011)''&lt;sup&gt;UT2004&lt;/sup&gt;<br /> &lt;/h5&gt;<br /> :'''Description:''' See above: TrialGroup. Adds an additional GroupLinkedTriggerVolume for TrialGroup Level Designers. This volume provides the L.D the ability to make more complex challenges for Group Trial players, by linking several volumes together which all have to be filled with a partition of the players of that group in order to trigger the event and move on to the followed up challenge.<br /> &lt;/div&gt;<br /> &lt;/div&gt;<br /> <br /> ==UT2004 Maps==<br /> '''AS-MD-Scorpion-Escape''' ''(2004)''<br /> :'''Description:''' An normal assault story map where you start off with vehicles(the scorpions) where you have to break through several blocking environments such as crates that are blocking the drivers path, as well survive from the defenders that try make you fail.<br /> :'''Versions:''' Beta(1,2,3,4,5).<br /> :'''Credits:''' Jamie1224 for adding bot support and tweaking minor things.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=389359 AS-MD-Scorpion-Escape-Beta5 on Epic Games forums]<br /> <br /> '''AS-RoomTrials''' originally named '''AS-MD-RoomTrials''' ''(2004)''<br /> :'''Description:''' In this trials level you have to solve several trial rooms to escape the building.<br /> :'''Versions:''' Beta(2,3,4,5,6,7), V1, V2 and V3.<br /> :'''Influences:''' In early versions there was a glitch which allowed you to land on the top of spikes, it was meant to wall dodge over these however soon ''hqf'' found out you can glitch those spikes and thus was later used on purpose in his map '''AS-TheEgyptianPyramid''', from there on this became a basic idea used in many trial maps.<br /> :'''Discussion:''' [http://utforums.epicgames.com/showthread.php?t=416526 AS-MD-RoomTrials-V1 on Epic Games forums] or [http://utforums.epicgames.com/showthread.php?t=402344 AS-MD-RoomTrials-Beta5 on Epic Games forums], hehe good times...<br /> <br /> '''AS-LifeTrials''' originally named '''AS-MD-LifeTrials''' ''(2005)''<br /> :'''Versions:''' V1 and V1B. <br /> <br /> '''AS-Antaro-Trial''' ''(2005)''<br /> <br /> '''AS-Fact-Trial''' ''(2005)''<br /> <br /> '''AS-Mayan-Secret-UG-Trials''' ''(2006)''<br /> :'''Versions:''' Beta(01,02,03,04)<br /> <br /> '''AS-AbaddonTrials''' ''(2006)''<br /> :'''Description:''' Solve the challenges of Abaddon!<br /> :'''Custom Dependencies:''' ''DPM2Base'', ''AbaddonShield'' and ''EliotTFAMap''.<br /> <br /> '''AS-EgyptianRoomTrials''' ''(2006)''<br /> <br /> '''AS-ShieldGunTech''' ''(2006)''<br /> :'''Description:''' Complete the 6 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V1, V1-Fixed and Final.<br /> <br /> '''AS-ShieldGunBase''' ''(2006)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!<br /> :'''Versions:''' V(1,2,2-Easy,3,4,4B).<br /> :'''Credits:''' [[User:Mr Evil|Mr Evil]] for BootsOfJumping.<br /> <br /> '''AS-PortalTrials''' ''(2006)''<br /> :'''Description:''' Solve some complex thinking challenges with the PortalGun!<br /> :'''Credits:''' [[Legacy:Shambler|Shambler]] for making the PortalGun, see [http://utforums.epicgames.com/showthread.php?t=530848&amp;highlight=Portalgun PortalGun].<br /> <br /> '''AS-Constructor-BuildZone_Alpha''' ''(2006)''<br /> :'''Description:''' This was the first UT2004 map where you could create things with the [[UE2:Mutator (UT2004)|mutator]] ConstructorGun!<br /> :'''Versions:''' Alpha, V2-Night and V2B-Night.<br /> :'''Credits:''' [[User:.:..:|.:..:]] for making the ConstructorGun and expanding this map by adding an outside.<br /> <br /> '''AS-ShieldGunSensitivity''' ''(2007)''<br /> :'''Description:''' Complete the 4 challenges with the [[UE2:ShieldGun (UT2004)|ShieldGun]]!, but in this one you must watch out for dangerous surfaces!<br /> <br /> '''AS-BloodOnTheFloor''' ''(2008)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-QuickChallenge-NAME-NUMBER Series''' ''(2008)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-BlackHeaven''' ''(2009)''<br /> :'''Description:''' A very hard trial challenge for high-end players!<br /> <br /> '''AS-Solo-Eliot'sTrial''' ''(2009)''<br /> :'''Description:''' Mystic abaddon trial base in the darkness, found on the planet AbissoDno.<br /> :'''Credits:''' iMouNdeee, Billa, Vinc3h and f`.<br /> :'''Download Mirrors:'''<br /> :: * [http://www.filefront.com/14432341/AS-Solo-EliotsTrial Download from www.filefront.com]. Depedencies not included!<br /> :'''Custom Dependencies:''' ''LevelConfigManagerV2C'', ''LevelConfigManagerV2E'', ''DoorsMod'', ''AmbModern'' and ''DoorsAnc''.<br /> <br /> '''AS-Solo-TechChallenge-NUMBER Series''' ''(2009)''<br /> :'''Description:''' Short challenges made for the purpose of setting time records. <br /> <br /> '''AS-Solo-CratesBase''' ''(2009)''<br /> :'''Description:''' A really short map made for the purpose of setting time records.<br /> <br /> ==Textures==<br /> ===TechTexPackage===<br /> TechTexPackage is a simple theme originally designed for '''AS-ShieldGunTech''' which shortly became very popular and is used today on almost every new trials map, some people call it as the ''Trials Theme'' because it fits trials very well, though this theme is perfectly usable for any other gametypes.<br /> <br /> Most of the content in the texture packages are Shaders which are usually based on the base texture with an added special effect that is self-made or standard from the UT2004 packages such as '''XEffectMat''' etc, all texture resolutions are max ''512x512''.<br /> <br /> '''TechTexPackage''' ''(2.461KB)'' ''(2006)''<br /> :'''Textures:''' 17, most are build upon the base texture included in this package, this applies as well to the other TechPackages.<br /> <br /> '''TechTexPackage2''' ''(2.397KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''TechTexPackage3''' ''(2.054KB)'' ''(2007)''<br /> :'''Textures:''' 12.<br /> :'''Custom Dependencies:''' ''TechTexPackage''.<br /> <br /> '''TechTexPackage4''' ''(2.052KB)'' ''(2007)''<br /> :'''Textures:''' 3.<br /> :'''Custom Dependencies:''' ''TechTexPackage'' and ''TechTexPackage3''. <br /> <br /> '''TechTexPackage5''' ''(5.153KB)'' ''(2008-2009)''<br /> :'''Textures:''' 26. <br /> :'''Custom Dependencies:''' ''TechTexPackage'', ''TechTexPackage2'', ''TechTexPackage3'' and ''TechTexPackage4''.<br /> <br /> '''TechTexPackage6''' ''(2.051KB)'' ''(unreleased)'' ''(2010)''<br /> :'''Textures:''' 7. <br /> :'''Custom Dependencies:''' ''TechTexPackage''. <br /> <br /> '''Credits:''' Epic Games because many stock textures were merged together to make certain themes fit together with this theme, Billa for contributing [[Shader]]s and suggesting design ideas.<br /> '''Download Mirrors:'''<br /> : * [http://www.filefront.com/17134664/TechTexPackage-1-5/ Download from www.filefront.com]<br /> <br /> '''Screenshots:'''<br /> : * [http://screenshot.xfire.com/s/107620730-3.jpg Screen 1 of Tech Textures in use inc the MutBestTimes scoreboard] <br /> : * [http://screenshot.xfire.com/s/102840427-3.jpg Screen 2] [http://screenshot.xfire.com/s/108066806-3.jpg Screen 3] [http://screenshot.xfire.com/s/108066812-3.jpg Screen 4] [http://screenshot.xfire.com/s/108066816-3.jpg Screen 5] [http://screenshot.xfire.com/s/108066821-3.jpg Screen 6] [http://screenshot.xfire.com/s/108066825-3.jpg Screen 7]<br /> : * [http://screenshot.xfire.com/s/108066828-3.jpg Screen 8] [http://screenshot.xfire.com/s/108066837-3.jpg Screen 9] [http://screenshot.xfire.com/s/108066842-3.jpg Screen 10] [http://screenshot.xfire.com/s/108066845-3.jpg Screen 11] [http://screenshot.xfire.com/s/108066850-3.jpg Screen 12] [http://screenshot.xfire.com/s/108066853-3.jpg Screen 13] [http://screenshot.xfire.com/s/108066861-3.jpg Screen 14]<br /> <br /> ;TechTexPackage 1<br /> : * [http://screenshot.xfire.com/s/108066791-3.jpg Screen 1] [http://screenshot.xfire.com/s/108066801-3.jpg Screen 2]<br /> <br /> ==Tutorials==<br /> * [[User:Eliot/UE2:AddingCustomTabsToPlayerLoginMenu_(UT2004)|AddingCustomTabsToPlayerLoginMenu]]&lt;sup&gt;UT2004&lt;/sup&gt;<br /> * [[User:Eliot/Modify Players|Modify Players]]<br /> * [[Legacy:VertexToolTutorial|VertexToolTutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UE2:InfoPod (Tutorial)|InfoPod Tutorial]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> * [[UnrealScript Hello World]]<br /> <br /> ==Utils==<br /> * [[User:Eliot/ColorTags Operators|ColorTags Operators]]&lt;sup&gt;UE2&lt;/sup&gt;<br /> <br /> ==Projects==<br /> ===UE Explorer=== <br /> See [[User:Eliot/UE Explorer|UE Explorer]]<br /> <br /> '''Purpose:''' The purpose of this application was to learn C#, .NET and especially the UnrealPackage format.</div> Eliot https://wiki.beyondunreal.com/User:Eliot/UE_Explorer?diff=45085 User:Eliot/UE Explorer 2012-04-06T15:18:11Z <p>Eliot: UE Explorer is released now :&gt;</p> <hr /> <div>UE Explorer is a UnrealScript decompiler for Unreal Engine 1, 2 and 3. Written in [[wp:C#|C#]] with a straight forward user-friendly UI(User Interface). Giving you an easily organized TreeView so that you can decompile each Field individually.<br /> <br /> UE Explorer supports all Epic Games for the PC such as Unreal, UT, UT2004, UT3 and the Unreal Development Kit(UDK).<br /> <br /> <br /> If you want to follow this project for future updates then visit [http://eliotvu.com/news Eliot - UE Explorer], or if you want to discuss, visit: [http://eliotvu.com/forum/ Eliot - Forum]<br /> <br /> ==Video==<br /> '''Demo:''' [http://eliotvu.com/portfolio/view/21/UE-Explorer#Video Eliot - UE Explorer: Demo]<br /> <br /> ==UELib==<br /> UE Explorer uses the UELib(made by Eliot) which is a library made in [[wp:C#|C#]]. The library is used to analyze UnrealPackages such as .u and .utx files and collect any important information to be used for whatever reason the developer wish. It provides functionality to deserialize almost any Object, decompile and minor modifications. It also can be extended by registering your own classes e.g. Textures.<br /> <br /> ====Supported Games====<br /> [http://eliotvu.com/portfolio/view/21/UE-Explorer#Supported%20Versions You can view the latest support table on Eliot's Portfolio]<br /> <br /> ==Download==<br /> You can '''download''' UE Explorer from [http://eliotvu.com/portfolio/view/21/UE-Explorer#Download here].</div> Eliot https://wiki.beyondunreal.com/Legacy:LibHTTP/Example?diff=45078 Legacy:LibHTTP/Example 2012-03-25T13:16:23Z <p>Eliot: </p> <hr /> <div>First make sure you set up the environment correctly. Make sure LibHTTP4 is in the EditPackages list and above your package.<br /> <br /> This example will explain the most basic usage of [[Legacy:LibHTTP|LibHTTP]]. The example class will simply request a document from the internet and save it to a file.<br /> <br /> &lt;uscript line&gt;<br /> class MyLibHTTPExample extends Info;<br /> <br /> event PostBeginPlay()<br /> {<br /> local HttpSock socket;<br /> socket = spawn(class'HttpSock');<br /> socket.OnComplete = MyOnComplete;<br /> socket.ClearRequestData();<br /> // The URL has to be complete for example: you must specify the http:// part.<br /> socket.get(&quot;http://wiki.beyondunreal.com/wiki/LibHTTP&quot;);<br /> }<br /> <br /> function MyOnComplete(HttpSock Sender)<br /> {<br /> local FileLog flog;<br /> local int i;<br /> flog = spawn(class'FileLog');<br /> flog.OpenLog(&quot;MyLibHTTPExample&quot;, &quot;html&quot;, true);<br /> // Log each retrieved line.<br /> for (i = 0; i &lt; Sender.ReturnData.length; i++)<br /> flog.Logf(Sender.ReturnData[i]);<br /> flog.Destroy();<br /> }<br /> &lt;/uscript&gt;<br /> <br /> On line #6 we create the main class. The [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}/HttpSock]] class is the main class of LibHTTP and in most cases the only class you will need to address. On line #7 we set the &lt;tt&gt;OnComplete&lt;/tt&gt; delegate. This delegate is called when the HTTP request was completed. This doesn't mean the HTTP request was successful (e.g. returned a HTTP response code 200), it just means that LibHTTP was able to perform a successful request and retrieve data from the request location. Next we call the function &lt;tt&gt;ClearRequestData()&lt;/tt&gt; (line #8). Although there is actually no need to call this function in this example, it is quite important in the future. &lt;tt&gt;ClearRequestData()&lt;/tt&gt; will clean up all the data from the previous request. So in case of subsequent requests using the same HttpSock class you should call this function before doing a request, otherwise you might send data to the server you don't want (for example a username and password).<br /> <br /> The last function called in the &lt;tt&gt;PostBeginPlay()&lt;/tt&gt; is &lt;tt&gt;get(...)&lt;/tt&gt;. Calling this function will start the HTTP request (using a GET request, which is the most common). The &lt;tt&gt;get(...)&lt;/tt&gt; function accepts the complete URL to the document you want to retrieve. The URL '''must''' be properly encoded or else the request might fail. The URL is used AS IS, so if it's not properly encoded the webserver might not respond correctly. If you don't know if the URL is properly encoded you can also enter that URL is your webbrowser, most webbrowsers will automatically convert the URL to be properly encoded.<br /> <br /> After the &lt;tt&gt;get(...)&lt;/tt&gt; it might take a while before the request is done. However, a lot of things can go wrong. If something goes wrong in the preparation of the request the &lt;tt&gt;get(...)&lt;/tt&gt; will return false (also the &lt;tt&gt;OnError&lt;/tt&gt; delegate is called). It could also happen that the webserver isn't reachable (either a connection timeout or the hostname won't resolve), check the [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}/HttpSock]] for more information about this. In this example we assume everything works out.<br /> <br /> When the HTTP request is complete, and the whole document has been downloaded, the &lt;tt&gt;OnComplete&lt;/tt&gt; delegate is called. In this case it will call our &lt;tt&gt;MyOnComplete&lt;/tt&gt; function (line #12). The HttpSock class contains a lot of variables you can access, most important are &lt;tt&gt;ReturnData&lt;/tt&gt; and &lt;tt&gt;LastStatus&lt;/tt&gt;. The &lt;tt&gt;LastStatus&lt;/tt&gt; variable will contain the HTTP response code send by the server. This should have the value 200, if it doesn't have the value 200 it means that there was something wrong with the requested data (for example a value of 404 means the file wasn't found, and 500 means the webserver is broken in some way). The &lt;tt&gt;ReturnData&lt;/tt&gt; variable contains the complete body of the requested document, this is usually what you are interested in. In our example we simply save all the data in the &lt;tt&gt;ReturnData&lt;/tt&gt; to a log file. Every entry in the &lt;tt&gt;ReturnData&lt;/tt&gt; array is a single line without the newline characters.<br /> <br /> LibHTTP contains a lot of features and functionality, be sure to check out the documentation of [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}/HttpSock]] to check how other things can be done.</div> Eliot https://wiki.beyondunreal.com/User:Eliot/UE_Explorer?diff=45074 User:Eliot/UE Explorer 2012-03-19T04:35:09Z <p>Eliot: Cleaned up.</p> <hr /> <div>UE Explorer is a UnrealScript decompiler for Unreal Engine 1, 2 and 3. Written in [[wp:C#|C#]] with a straight forward user-friendly UI(User Interface). Giving you an easily organized TreeView so that you can decompile each Field individually.<br /> <br /> UE Explorer supports all Epic Games for the PC such as Unreal, UT, UT2004, UT3 and the Unreal Development Kit(UDK).<br /> <br /> If you want to follow this project for future updates/release, visit: [http://eliot.pwc-networks.com/news Eliot - UE Explorer], or if you want to discuss, visit: [http://eliot.pwc-networks.com/forum Eliot - Forum]<br /> <br /> ==Video==<br /> '''Demo:''' [http://eliot.pwc-networks.com/portfolio/view/21/UE+Explorer#Video Eliot - UE Explorer: Demo]<br /> <br /> ==UELib==<br /> UE Explorer uses the UELib(made by Eliot) which is a library made in [[wp:C#|C#]]. The library is used to analyze UnrealPackages such as .u and .utx files and collect any important information to be used for whatever reason the developer wish. It provides functionality to deserialize almost any Object, decompile and minor modifications. It also can be extended by registering your own classes e.g. Textures.<br /> <br /> ====Supported Games====<br /> [http://eliot.pwc-networks.com/portfolio/view/21/UE+Explorer#Supported%20Versions You can view the latest support table on Eliot's Portfolio]</div> Eliot https://wiki.beyondunreal.com/User:Eliot/UE_Explorer?diff=45073 User:Eliot/UE Explorer 2012-03-19T04:30:42Z <p>Eliot: /* UELib */ Moved supported games table to my site.</p> <hr /> <div>&lt;h5 style=&quot;color: Red;&quot;&gt;UE Explorer is not publicly available yet!&lt;/h5&gt;<br /> <br /> UE Explorer is a UnrealScript decompiler written in [[wp:C#|C#]] with a straight forward user-friendly UI(User Interface), letting you easily decompile each object separately, using a TreeView where object are organized by kind.<br /> <br /> If you want to follow this project for future updates/release, visit: [http://eliot.pwc-networks.com/news Eliot - UE Explorer], or if you want to discus, visit: [http://eliot.pwc-networks.com/forum Eliot - Forum]<br /> <br /> ==Video==<br /> '''Demo:''' [http://eliot.pwc-networks.com/portfolio/Software#UE%20Explorer Eliot - UE Explorer: Demo]<br /> <br /> UE Explorer is a UnrealScript decompiler for Unreal Engine 1, 2 and 3. <br /> <br /> Supporting all Epic Games for the PC such as Unreal, UT, UT2004, UT3 and the Unreal Development Kit(UDK).<br /> <br /> ==UELib==<br /> UE Explorer uses the UELib(made by Eliot) which is a library made in [[wp:C#|C#]]. The library is used to analyze UnrealPackages such as .u and .utx files and collect any important information to be used for whatever reason the developer wish. It provides functionality to deserialize almost any Object, decompile and minor modifications. It also can be extended by registering your own classes e.g. Textures.<br /> <br /> ====Supported Games====<br /> [http://eliot.pwc-networks.com/portfolio/view/21/UE+Explorer#Supported%20Versions You can view the latest support table on Eliot's Portfolio]<br /> <br /> ==Credits==<br /> '''Antonio Cordero Balcázar''': Because I have had a big development boost thanks to [[UTPT]] and his documentation, without him I would probably still be reverse-engineering the simple stuff :P<br /> <br /> '''intelliyole''': For the OpenSource code of '''Unhood''' an unfinished basic {{UE3}} UnrealScript decompiler. I read his source code for some minor UE3 changes I didn't have yet.</div> Eliot https://wiki.beyondunreal.com/Talk:UnrealScript_security_considerations?diff=45020 Talk:UnrealScript security considerations 2012-03-04T20:23:52Z <p>Eliot: Created page with 'This is funny because this is exactly what Epic Games didn't consider when they made UT2004 &amp;#3232;_&amp;#3232; --~~~~'</p> <hr /> <div>This is funny because this is exactly what Epic Games didn't consider when they made UT2004 &amp;#3232;_&amp;#3232; --[[User:Eliot|Eliot]] 20:23, 4 March 2012 (UTC)</div> Eliot