https://wiki.beyondunreal.com/w/index.php?action=history&feed=atom Legacy:UnrealScript Hello World - Revision history 2017-11-17T23:43:35Z Revision history for this page on the wiki MediaWiki 1.25.1 https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=46329&oldid=prev *mGm*Lizard: Corrected ServerPackages=MutHelloWorld to EditPackages=MutHelloWorld 2016-04-28T19:15:57Z <p>Corrected ServerPackages=MutHelloWorld to EditPackages=MutHelloWorld</p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 19:15, 28 April 2016</td> </tr><tr><td colspan="2" class="diff-lineno" id="L182" >Line 182:</td> <td colspan="2" class="diff-lineno">Line 182:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;uscript&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;uscript&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[Engine.GameEngine]</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[Engine.GameEngine]</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">ServerPackages</del>=MutHelloWorld</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">EditPackages</ins>=MutHelloWorld</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;/uscript&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;/uscript&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> </table> *mGm*Lizard https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=44077&oldid=prev 82.73.101.51: /* Discussion */ 2010-10-17T11:49:06Z <p>‎<span dir="auto"><span class="autocomment">Discussion</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 11:49, 17 October 2010</td> </tr><tr><td colspan="2" class="diff-lineno" id="L231" >Line 231:</td> <td colspan="2" class="diff-lineno">Line 231:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''Mstram:''' &quot;''.int'', ''u.'', and ''.ucl'' files for your mutator in the /UT2004/System directory.&quot; ...&#160; This isn't UT2004 .. it's an old (the first ??) version of Unreal Tournament ... there are no .ucl files.... it's probably&#160; amazing that I have it working at all :)</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''Mstram:''' &quot;''.int'', ''u.'', and ''.ucl'' files for your mutator in the /UT2004/System directory.&quot; ...&#160; This isn't UT2004 .. it's an old (the first ??) version of Unreal Tournament ... there are no .ucl files.... it's probably&#160; amazing that I have it working at all :)</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''<del class="diffchange diffchange-inline">Troy</del>:''' The old versions of Unreal dont use &quot;.ucl&quot; files.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''<ins class="diffchange diffchange-inline">Infernus</ins>:''' The old versions of Unreal dont use &quot;.ucl&quot; files.</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Legacy Tutorial|{{PAGENAME}}]]</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Legacy Tutorial|{{PAGENAME}}]]</div></td></tr> </table> 82.73.101.51 https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=43504&oldid=prev 85.150.116.32: /* Discussion */ 2010-06-22T15:08:12Z <p>‎<span dir="auto"><span class="autocomment">Discussion</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 15:08, 22 June 2010</td> </tr><tr><td colspan="2" class="diff-lineno" id="L230" >Line 230:</td> <td colspan="2" class="diff-lineno">Line 230:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''Mstram:''' &quot;''.int'', ''u.'', and ''.ucl'' files for your mutator in the /UT2004/System directory.&quot; ...&#160; This isn't UT2004 .. it's an old (the first ??) version of Unreal Tournament ... there are no .ucl files.... it's probably&#160; amazing that I have it working at all :)</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''Mstram:''' &quot;''.int'', ''u.'', and ''.ucl'' files for your mutator in the /UT2004/System directory.&quot; ...&#160; This isn't UT2004 .. it's an old (the first ??) version of Unreal Tournament ... there are no .ucl files.... it's probably&#160; amazing that I have it working at all :)</div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">'''Troy:''' The old versions of Unreal dont use &quot;.ucl&quot; files.</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Legacy Tutorial|{{PAGENAME}}]]</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Legacy Tutorial|{{PAGENAME}}]]</div></td></tr> </table> 85.150.116.32 https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=34548&oldid=prev Quillisia at 12:56, 22 July 2009 2009-07-22T12:56:21Z <p></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 12:56, 22 July 2009</td> </tr><tr><td colspan="2" class="diff-lineno" id="L106" >Line 106:</td> <td colspan="2" class="diff-lineno">Line 106:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>See [[Legacy:DumpIntCommandlet|DumpIntCommandlet]] and [[Legacy:ExportCacheCommandlet|ExportCacheCommandlet]] for more on these. ExportCache will be called automatically by UCC Make or UnrealEd in UT2004 v3204 and above. For this to work the INI file used during compiling (by default that's UT2004.ini, but with [[Legacy:UMake|UMake]] it's the project's make.ini) needs to have its CacheRecordPath entry in the [Core.System] section to be set to the {[[Legacy:Base Directory|Base Directory]]}/System directory.</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>See [[Legacy:DumpIntCommandlet|DumpIntCommandlet]] and [[Legacy:ExportCacheCommandlet|ExportCacheCommandlet]] for more on these. ExportCache will be called automatically by UCC Make or UnrealEd in UT2004 v3204 and above. For this to work the INI file used during compiling (by default that's UT2004.ini, but with [[Legacy:UMake|UMake]] it's the project's make.ini) needs to have its CacheRecordPath entry in the [Core.System] section to be set to the {[[Legacy:Base Directory|Base Directory]]}/System directory.</div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">===for running with KillingFloor===</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">If you are making this mutator for KF, it will not appear in the mutator list. To fix this append this line into command that is in the .ucl file:</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">GroupName=KF</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">example from my .ucl file:</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">&lt;uscript&gt;Mutator=(ClassName=MutHelloWorld.HelloWorld,IconMaterialName=MutatorArt.nosym,GroupName=KF,FriendlyName=MutHelloWorld.HelloWorld.FriendlyName,Description=MutHelloWorld.HelloWorld.Description,FriendlyName=MutHelloWorld.HelloWorld.FriendlyName,FallbackName=&quot;Hello World Mutator&quot;,FallbackDesc=&quot;Log 'Hello World'.&quot;)&lt;/uscript&gt;</ins></div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==That's All Folks ==</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==That's All Folks ==</div></td></tr> </table> Quillisia https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=34132&oldid=prev 69.207.150.41: separated lines 2009-03-20T05:27:58Z <p>separated lines</p> <a href="https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=34132&amp;oldid=8853">Show changes</a> 69.207.150.41 https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=8852&oldid=prev EntropicLqd: revert 2007-07-06T21:38:59Z <p>revert</p> <p><b>New page</b></p><div>''This page is one of a series of [[Legacy:UnrealScript Lessons|UnrealScript Lessons]].''<br /> <br /> Previous tutorials: <br /> * You've set up your environment: [[Legacy:Setting Up UnrealScript|Setting Up UnrealScript]]<br /> <br /> ==Overview==<br /> <br /> This tutorial will teach you how to compile a small [[Legacy:Mutator|mutator]] whose sole purpose in life is to write &quot;Hello World&quot; into the Unreal Tournament [[Legacy:Log File|log file]] (UnrealTournament.log, UT2003.log or UT2004.log).<br /> <br /> We assume that you've never tried building anything in [[Legacy:UnrealScript|UnrealScript]] before, and you haven't got a clue where to actually start. What follows applies equally well to [[Legacy:UT|UT]] , [[Legacy:UT2003|UT2003]] or [[Legacy:UT2004|UT2004]].<br /> <br /> ==Create the Directory Structure ==<br /> <br /> In your UT directory create a directory called '''MutHelloWorld'''. MutHelloWorld is the name of our [[Legacy:Package|package]].<br /> <br /> In the newly created MutHelloWorld directory create another directory called '''Classes'''. (For more on this step, see [[Legacy:Set Up Package Folders|Set Up Package Folders]].)<br /> <br /> You should now have the following directory structure<br /> * {[[Legacy:Base Directory|Base Directory]]}\MutHelloWorld<br /> * {[[Legacy:Base Directory|Base Directory]]}\MutHelloWorld\Classes<br /> <br /> So far so good. Now let's write the code.<br /> <br /> ==Creating the mutator ==<br /> <br /> Within the {[[Legacy:Base Directory|Base Directory]]}\MutHelloWorld\Classes directory create a new file called '''HelloWorld.uc'''.<br /> <br /> This is just a normal text file so you can use Notepad, vi, or any other [[Legacy:Text Editor|text editor]] application of your choice to create/edit it. The ''uc'' extension means that it's an ''Unreal Class'' file. All UnrealScript code is contained in [[Legacy:UC File|UC File]]s (see that page for tips on working with them).<br /> <br /> : '''Caution:''' Be careful to actually name your file HelloWorld.uc, not HelloWorld.uc'''.txt''' when using Notepad or another Windows text editor. By default Windows Explorer would hide the &quot;.txt&quot; part of the file name, so only &quot;HelloWorld.uc&quot; would show up along with a &quot;text file&quot; icon. The compiler won't find that file though and complain about it.(If you're using notepad change the &quot;save as type&quot; to &quot;All files&quot; to ensure it wont save it to a .txt file)<br /> <br /> Place the following code within the file you just created (HelloWorld.uc)<br /> <br /> &lt;uscript&gt;<br /> class HelloWorld extends Mutator;<br /> <br /> function PostBeginPlay()<br /> {<br /> Super.PostBeginPlay(); // Run the super class function (Mutator.PostBeginPlay).<br /> Log(&quot;Hello World&quot;); // Write our log message<br /> }<br /> &lt;/uscript&gt;<br /> : '''Caution:''' Note that the name of the class must be exactly the same as the filename with the .uc taken off. <br /> <br /> The first line says &quot;This describes a new class of object called a 'HelloWorld' which is just like a 'Mutator' except for what follows...&quot;<br /> <br /> The ''PostBeginPlay()'' function is called immediately after the object has &quot;entered the game&quot; so to speak. All we need this function to do is write a line to the log.<br /> <br /> This is already enough for UT, but in UT2003 and UT2004 we need some more. Add the following lines at the end of the file:<br /> <br /> &lt;uscript&gt;<br /> defaultproperties<br /> {<br /> FriendlyName=&quot;Hello World Mutator&quot;<br /> Description=&quot;Log 'Hello World'.&quot;<br /> }<br /> &lt;/uscript&gt;<br /> <br /> defaultproperties allows the programmer (that's you!) to embed default values for properties in the source file. FriendlyName and Description are declared in [[Legacy:Mutator|Mutator]] and here we give them default values for the HelloWorld variety of Mutator.<br /> <br /> Save the file and, if you used notepad, make sure it has an extension of '''.uc''' and not '''.uc.txt'''.<br /> <br /> ==Compile Your Code ==<br /> <br /> So far we have created our code and created a file that will tell UT about our fantastic mutator. We still don't actually have any code that UT can run. We need to compile our code into a package file (a '''.u''' extension). To do this we need to tweak the [[Legacy:Game Ini File|Game Ini File]] &amp;ndash; UnrealTournament.ini, UT2003.ini or UT2004.ini &amp;ndash; depending on which game you are using.<br /> <br /> Open the INI (the one that resides in the /System directory, not the one in the {[[Legacy:Base Directory|Base Directory]]}) file in your favourite [[Legacy:Text Editor|text editor]] and search for the following string '''EditPackages='''. You'll find a whole list of them. These are the packages that the compile command you are about to learn will attempt to build when executed. Only packages that are '''not found''' will be built.<br /> <br /> Immediately after the last EditPackages=.... line (doesn't matter what the .... is) add the following line:<br /> EditPackages=MutHelloWorld<br /> <br /> Save the file and get a command prompt up (e.g. &quot;Start&quot; -&gt; &quot;Run...&quot; -&gt; type &quot;cmd&quot; and press &lt;Return&gt; to get the command prompt). Change the directory you are in until you are in the {[[Legacy:Base Directory|Base Directory]]}/System directory (e.g. type: '''cd \UT2004\System'''). Once in the {[[Legacy:Base Directory|Base Directory]]}/System directory enter the following command:<br /> ucc make<br /> <br /> This will run the compiler. It will list each package you have on your EditPackages=... lines in your UT ini file, but will only attempt to compile a package if its '''.u''' (or package file) is not there. In this case, because this is the first time we have built our mutator the package file ''MutHelloWorld.u'' doesn't exist.<br /> <br /> Assuming you weren't told about any errors you should be able to see your compiled mutator's package file '''MutHelloWorld.u''' in your {[[Legacy:Base Directory|Base Directory]]}/System directory.<br /> <br /> ==Creating the package interface file ==<br /> <br /> ===for running with UT and UT2003===<br /> <br /> (This is specific for [[Legacy:UT2003|UT2003]]. UT2004 package descriptions are made easiest after compilation, so read below)<br /> <br /> The package interface file has an extension of '''.int'''. This file tells UT what classes are available within the package of the same name (it has a '''.u''' extension instead) for interrogation and/or public use. All [[Legacy:INT File|INT file]]s need to live within the {[[Legacy:Base Directory|Base Directory]]}/System directory. So lets create our [[Legacy:INT File|INT file]] now.<br /> <br /> Using your favourite text editor create a file called MutHelloWorld.int in the {[[Legacy:Base Directory|Base Directory]]}/System directory. All [[Legacy:INT File|INT file]]s are plain text so you can look at the others in the {[[Legacy:Base Directory|Base Directory]]}/System directory if you wish. Just don't change any of them.<br /> <br /> Add the following two lines of text to your MutHelloWorld.int file and save it to disk:<br /> <br /> &lt;pre&gt;[Public]<br /> Object=(Class=Class,MetaClass=Engine.Mutator,Name=MutHelloWorld.HelloWorld,Description=&quot;Hello World Example&quot;)&lt;/pre&gt;<br /> <br /> The Description=... part won't be used in UT2003, but it helps identifying the mutator if you have more than only one of them in your package.<br /> <br /> :'''Caution:''' Make sure you don't indent any of the lines within the .int file. The .int files are not parsed correctly by the Unreal Engine when lines are indented.<br /> <br /> You'll find more on this step on the &quot;[[Legacy:Create An INT File|Create An INT File]]&quot; tutorial page.<br /> <br /> ===for running with UT2004===<br /> <br /> The package interface file has an extension of '''.ucl'''. It is accompanied by an INT file that can contain localised text. The [[Legacy:UCL File|UCL file]] tells UT what classes are available within the package of the same name (it has a '''.u''' extension instead) for public use. UCL files live within the {[[Legacy:Base Directory|Base Directory]]}/System directory. UCL and INT files are generated automatically by UCC. You can create the UCL and INT files by running these two lines from your {[[Legacy:Base Directory|Base Directory]]}/System directory (easiest by creating a batch file):<br /> <br /> {{innerbox|ucc dumpint MutHelloWorld.u<br /> <br /> ucc exportcache MutHelloWorld.u<br /> <br /> }}<br /> <br /> See [[Legacy:DumpIntCommandlet|DumpIntCommandlet]] and [[Legacy:ExportCacheCommandlet|ExportCacheCommandlet]] for more on these. ExportCache will be called automatically by UCC Make or UnrealEd in UT2004 v3204 and above. For this to work the INI file used during compiling (by default that's UT2004.ini, but with [[Legacy:UMake|UMake]] it's the project's make.ini) needs to have its CacheRecordPath entry in the [Core.System] section to be set to the {[[Legacy:Base Directory|Base Directory]]}/System directory.<br /> <br /> ==That's All Folks ==<br /> <br /> Right, we've created our package interface file ('''.int'''), written our code ('''.uc'''), and compiled it into a package file ('''.u''') it's now time to test our mutator.<br /> <br /> Start up Unreal Tournament and go to the mutator page (e.g. for UT2004 you find the '''Mutator''' button/tab via the '''Instant Action''' menu option, you may have to select a '''Gametype''' first). You should see your ''Hello World'' mutator in the list of available mutators. Add it to the game and start killing things.<br /> <br /> Once you've been in the game for a few seconds quit Unreal Tournament. If you look in your Unreal Tournament log file (UNREALTOURNAMENT.log, UT2003.log or UT2004.log) you should be able to find your '''Hello World''' message in there. If you can then your mutator worked :) Well done. If you can't and did everything as explained above, look again. It ''has'' to be in there ;).<br /> <br /> ==How it works==<br /> <br /> The game looks at all INT file when it starts up. The INT file you created tells it to load the package you compiled. More precisely, &quot;MutHelloWorld.HelloWorld&quot; means the class &quot;HelloWorld&quot; in package &quot;MutHelloWorld&quot;, and the INT file tells the game that this class is a mutator, and should therefore be displayed in the interface for the player to select.<br /> <br /> In the case of UT2003, the values in the &quot;default properties&quot; section tell the game what to display in the GUI interface.<br /> <br /> If a mutator class has been enabled by the player, then an ''instance'' of it is created when the game begins. This is an ''object'' of class &quot;HelloWorld&quot; that now exists in the game.<br /> <br /> The function PostBeginPlay() is called on all objects that exist. So at some point right at the start of the game (quite a bit less than a single second), the function PostBeginPlay() in the script you pasted is called. <br /> <br /> This calls Log(&quot;Hello World&quot;), which is a special function that handles writing output to the log. The object thus write the string &quot;Hello World&quot; to the log, and then does nothing else for the remainder of the match.<br /> <br /> ==Some Other Things to Look At ==<br /> <br /> OK, so now you've built your first mod you're probably wanting to make one that does more than write to the UT log file. Well, here's some suggested reading.<br /> * [[Legacy:UMake|UMake]] &amp;ndash; Will make building and managing your mods easier<br /> * [[Legacy:Mod Authoring|Mod Authoring]] &amp;ndash; An excellent overview of the types of mods - it's a little dated now but worth the read.<br /> <br /> If you are looking for a list of 'special' function names, such as &quot;PostBeginPlay&quot;, then you will might want to read some of these related articles :<br /> * [[Legacy:Chain Of Events At Level Startup|Chain Of Events At Level Startup]]<br /> * [[Legacy:UnrealScript Entry Points|UnrealScript Entry Points]]<br /> <br /> Also, since most of the classes you will be writing are subclasses of &quot;[[Legacy:Pawn|Pawn]]&quot; or &quot;[[Legacy:Actor|Actor]]&quot; ([[Legacy:Pawn|Pawn]] is a subclass of actor) I suggest that you read those classes to find out what functions you can overload (another term for replace).<br /> * [[Legacy:Pawn|Pawn]]<br /> * [[Legacy:Actor|Actor]]<br /> <br /> ----<br /> <br /> Don't forget about the [[Legacy:Search|search]] function in the Wiki.<br /> <br /> On a final note, I have found a difference between UT and UT2003. In the UT2003.INI file there are 2 EditPackages=.... sections. One for the game, and one for the editor. It seems that the EditPackages=.... in the editor section (2nd in the file) is re-written whenever the editor is closed. So if you start UnrealEd (UT2003 version) up and it complains about a missing package file, check the UnrealEd EditPackages=... section in your UT2003.INI file.<br /> <br /> ==Related Topics==<br /> * [[Legacy:Regen Mutator|Regen Mutator]] &amp;ndash; your recommended next step<br /> * [[Legacy:UnrealScript Lessons|UnrealScript Lessons]] &amp;ndash; all the UnrealScript tutorials<br /> * [[Legacy:UnrealScript|UnrealScript]] &amp;ndash; all the reference pages<br /> * [[Legacy:Mutator Topics|Mutator Topics]] &amp;ndash; more on mutators<br /> * [[Legacy:Making Mods|Making Mods]] &amp;ndash; more on the organizational and social aspects<br /> <br /> ==Discussion==<br /> <br /> '''Mychaeel:''' What about using Level.GetLocalPlayerController().ClientMessage instead of &quot;Log&quot; for that Hello World script though? That'd give people something to look at in-game. &amp;ndash; And I'd be in favor of mentioning [[Legacy:UMake|UMake]] somewhere after explaining the individual compilation steps.<br /> <br /> '''EntropicLqd:''' I did think about actually displaying the Log message on screen - but decided that the additional code might be too scary - if it only appears once people would miss it so it would have to be on a timer ..... The benefit of using Log() is that it forces people to look in their UT log file - a good reminder that it exists. I am intending to add some additional reading links to the page - but didn't get time last night. In terms of the name of the page, feel free to rename it to anything you feel is more appropriate.<br /> <br /> '''UserEquals1D10T''' Does the INT file serve the same function as a header file does in C++?<br /> <br /> '''EntropicLqd:''' They are similar - but INT files are not compulsory. You don't actually need an INT file to run a mod if you specify it on the command line (e.g. CTF-Coret?mutator=MutMyMutator.MyMutator). However, both UT and UT2K3 use the INT files to determine which mods are installed. They essentially search through the INT files for public classes of type Mutator and GameInfo so they can list gametypes and mutators in the interface. So if you want your mutator/mod to appear in the menus then you need to create an INT file.<br /> <br /> '''Foxpaw:''' From what I've heard, UCC takes quite a while to compile so it isn't high on the list of things to debug at Epic right now.<br /> <br /> '''DodgerWA:''' (Okay, I'm commenting by editing the page because I can't find any kind of Add Comment button/link.) The information regarding editing the INI is not complete. In order to compile, you must add a ServerPackages entry. I presume the EditPackages is only for the editor, but it won't compile with that alone:<br /> <br /> '''EntropicLqd:''' Good spot. Main text corrected.<br /> <br /> &lt;uscript&gt;<br /> [Engine.GameEngine]<br /> ServerPackages=MutHelloWorld<br /> &lt;/uscript&gt;<br /> <br /> '''Wormbo:''' ServerPackages for compiling? What are you trying to to, coding as a multiplayer game? :) It's always EditPackages when dealing with development. ServerPackages only comes into play when network-testing your compiled stuff.<br /> <br /> '''EntropicLqd:''' You are ofcourse correct. I'd plead insanity but it's more likely the headache from hell I'm suffering from. Somehow I'm going to squeeze in some UScript this weekend. Maybe that'll make my headache go away.<br /> <br /> '''DodgerWA:''' (Wrote this once before but it's not there now.) Dunno what to tell you. Compiler complained that it didn't know anything about the existence of my package. The only change I made was adding the ServerPackage line and it compiled. This was from the command line. Seems to work fine using WOTgreal.<br /> <br /> '''MythOpus:''' Try adding your package to both ServerPackages AND EditPackages. Also make sure your .int are set up correctly. (You need a .int and a .ini file to register your mutator into the game)<br /> <br /> '''EntropicLqd:''' If the compiler says it can't find your package then you've probably not got some things in the right place. The fact that it's looking for your package means that you most likely have added the ''EditPackages=....'' line in the INI file correctly. However, you '''must''' put your code in the /UT2004/&lt;your package name&gt;/Classes directory otherwise your code will not be found. The package name used in your EditPackages=... line must match exactly the directory name the classes directory is contained in. Maybe your ServerPackage and EditPackage lines were different.<br /> <br /> I've also noticed that in UT2004 a .ucl file is created from the .int first time the mutator is used (to allow caching and some other stuff - it's in a header somewhere and I've not had time to investigate it. It may be that these two files are out of sync or something.<br /> <br /> '''Kamek:''' A ServerPackages entry shouldn't be necessary unless the package contains classes with simulated functions or variables, or other things that the client needs to know about such as new weapons or something. In the case of this HelloWorld mutator it shouldn't need a ServerPackage line, and just adds to the list of stuff the client has to download when connecting.<br /> <br /> '''Mortal Monkey:''' If you're using UEd's built-in script editor, neither ServerPackages nor EditPackages should be necessary. I wouldn't know about the other way(s) though, as I've just recently downloaded WOTgreal.<br /> <br /> '''Boksha:''' I've tried editing this page so making UCL and INT files works correctly for UT2004. I'm not sure if everything I've written down is correct, although it should work just fine for small mutators.<br /> <br /> '''Atlantis|TheKing''' Just added an line on where to find those mutators in UT2004.<br /> <br /> ----<br /> <br /> '''LinkeT''' i have the current Unreal Engine 2 Runtime Demo - this sample doesnt work<br /> <br /> Log: 16781187818.5ms Unloading: Package MutHelloWorld<br /> <br /> was added to log after load the test-map<br /> <br /> I follow all instructions all time the same message<br /> <br /> '''Mcx:''' this sample works with Unreal Engine 2 Runtime Demo too!<br /> <br /> just start your runtime with the command line like <br /> <br /> &quot;C:\UnrealEngine2RuntimeDemo\System\UE2Runtime.exe EM_Runtime?mutator=MutHelloWorld.HelloWorld&quot;<br /> <br /> '''Mstram:''' Are mutators applicable to the UnrealEngine2 Runtime? I'm trying to do the the &quot;UnrealScript Hello World&quot; tutor (http://wiki.beyondunreal.com/wiki/UnrealScript_Hello_World) and can't find the &quot;mutator page&quot; (&quot;Start up Unreal Tournament and go to the mutator page ...)<br /> <br /> '''EntropicLqd:''' Mstram - the mutator page is part of UT2004. Mutators do work with the Unreal Engine Runtime though. You simply need to specify the mutaor and map on the command line. (See the last comment by '''Mcx'''.<br /> <br /> '''Mstram:''' Ok, thx, I got it to work. I also dug through my cd collection and found my copy of UT(436). I got the mutator code to work in it as well, but I had to add the contents of the MutHelloWorld.int file to the BotPack.int file, for the mutator to show up in the game interface. Is that the correct procedure? (If anybody is still running such an old version :) )<br /> <br /> '''EntropicLqd:''' No. You should never have to change any of the game files to make your mods work. It's hard to know what you did wrong though. Check the ini file for the EditPackages (and ServerPackages just to be complete) lines. Also check you've got ''.int'', ''u.'', and ''.ucl'' files for your mutator in the /UT2004/System directory.<br /> <br /> '''Mstram:''' &quot;''.int'', ''u.'', and ''.ucl'' files for your mutator in the /UT2004/System directory.&quot; ... This isn't UT2004 .. it's an old (the first ??) version of Unreal Tournament ... there are no .ucl files.... it's probably amazing that I have it working at all :)<br /> <br /> [[Category:Legacy Tutorial|{{PAGENAME}}]]</div> EntropicLqd https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=8853&oldid=prev 203.162.27.93: * 2007-07-06T21:12:12Z <p>*</p> <a href="https://wiki.beyondunreal.com/Legacy:UnrealScript_Hello_World?diff=8853&amp;oldid=8852">Show changes</a> 203.162.27.93