as released 2002-04-09
BIN
BASIC SCRIPTS.doc
Normal file
BIN
LEGAL READ ME.doc
Normal file
5
MOHAATools/INSTALL.TXT
Normal file
|
@ -0,0 +1,5 @@
|
|||
1. Unzip to the location of your choice.
|
||||
|
||||
2. Ensure that your paths (basepath, mapspath, autosave) in the project properly point to your MOHAA installation. This information is stored in the qe4 file. You can set these from File->Project Settings.
|
||||
|
||||
3. Copy entdefs.pk3 to your MOHAA/main directory.
|
BIN
MOHAATools/MOHlight.exe
Normal file
160
MOHAATools/aidialog.cfg
Normal file
|
@ -0,0 +1,160 @@
|
|||
// behavior-specific key pairs have the following syntax:
|
||||
//
|
||||
// <keyname> string "<default_string>" ? help_text
|
||||
// <keyname> value <default> <min> <max> <slow_spin> <fast_spin> ? help_text
|
||||
//
|
||||
// min, max, slow_spin, and fast_spin must be integers
|
||||
|
||||
// keys for curious should be placed in type_idle
|
||||
|
||||
type_idle
|
||||
{
|
||||
idle
|
||||
{
|
||||
sound_awareness value 100 0 100 1 10 ? percent chance to notice a sound within half the sound's range, fades to zero outside range
|
||||
noticescale value 100 1 500 5 10 ? multiplier in time to notice an enemy (default 100, half as big notices twice as fast)
|
||||
fixedleash value 0 0 1 1 1 ? if non-zero, the leash will never auto-reset; if zero, the leash may auto-reset
|
||||
enemysharerange value 0 0 16384 16 256 ? sets the range outside which the AI will not receive notification that a teammate has a new enemy
|
||||
voicetype string "" ? letter for the AI's voice type; leave blank for a random voice each map
|
||||
}
|
||||
|
||||
patrol
|
||||
{
|
||||
patrolpath string "" ? name of a pathnode or waypoint to use as the patrol path
|
||||
waittrigger value 0 0 1 1 1 ? set to 1 to wait until triggered
|
||||
sound_awareness value 100 0 100 1 10 ? percent chance to notice a sound within half the sound's range, fades to zero outside range
|
||||
noticescale value 100 1 500 5 10 ? multiplier in time to notice an enemy (default 100, half as big notices twice as fast)
|
||||
fixedleash value 0 0 1 1 1 ? if non-zero, the leash will never auto-reset; if zero, the leash may auto-reset
|
||||
enemysharerange value 0 0 16384 16 256 ? sets the range outside which the AI will not receive notification that a teammate has a new enemy
|
||||
voicetype string "" ? letter for the AI's voice type; leave blank for a random voice each map
|
||||
}
|
||||
|
||||
runner
|
||||
{
|
||||
patrolpath string "" ? name of a pathnode or waypoint to use as the patrol path
|
||||
waittrigger value 0 0 1 1 1 ? set to 1 to wait until triggered
|
||||
sound_awareness value 100 0 100 1 10 ? percent chance to notice a sound within half the sound's range, fades to zero outside range
|
||||
noticescale value 100 1 500 5 10 ? multiplier in time to notice an enemy (default 100, half as big notices twice as fast)
|
||||
fixedleash value 0 0 1 1 1 ? if non-zero, the leash will never auto-reset; if zero, the leash may auto-reset
|
||||
enemysharerange value 0 0 16384 16 256 ? sets the range outside which the AI will not receive notification that a teammate has a new enemy
|
||||
voicetype string "" ? letter for the AI's voice type; leave blank for a random voice each map
|
||||
}
|
||||
|
||||
machinegunner
|
||||
{
|
||||
turret string "" ? name of turret being used
|
||||
sound_awareness value 100 0 100 1 10 ? percent chance to notice a sound within half the sound's range, fades to zero outside range
|
||||
noticescale value 100 1 500 5 10 ? multiplier in time to notice an enemy (default 100, half as big notices twice as fast)
|
||||
fixedleash value 0 0 1 1 1 ? if non-zero, the leash will never auto-reset; if zero, the leash may auto-reset
|
||||
enemysharerange value 0 0 16384 16 256 ? sets the range outside which the AI will not receive notification that a teammate has a new enemy
|
||||
voicetype string "" ? letter for the AI's voice type; leave blank for a random voice each map
|
||||
}
|
||||
|
||||
balcony_idle
|
||||
{
|
||||
sound_awareness value 100 0 100 1 10 ? percent chance to notice a sound within half the sound's range, fades to zero outside range
|
||||
noticescale value 100 1 500 5 10 ? multiplier in time to notice an enemy (default 100, half as big notices twice as fast)
|
||||
fixedleash value 0 0 1 1 1 ? if non-zero, the leash will never auto-reset; if zero, the leash may auto-reset
|
||||
enemysharerange value 0 0 16384 16 256 ? sets the range outside which the AI will not receive notification that a teammate has a new enemy
|
||||
voicetype string "" ? letter for the AI's voice type; leave blank for a random voice each map
|
||||
balconyheight value 128 0 1024 16 64 ? minimum height AI must fall to do a balcony death
|
||||
}
|
||||
}
|
||||
|
||||
type_attack
|
||||
{
|
||||
turret
|
||||
{
|
||||
accuracy value 20 0 100 1 10 ? percent chance to hit
|
||||
ammo_grenade value 0 0 4 1 1 ? number of grenades the guy starts with
|
||||
}
|
||||
|
||||
cover
|
||||
{
|
||||
accuracy value 20 0 100 1 10 ? percent chance to hit
|
||||
ammo_grenade value 0 0 4 1 1 ? number of grenades the guy starts with
|
||||
}
|
||||
|
||||
alarm
|
||||
{
|
||||
alarmnode string "" ? name of entity to use as alarm node
|
||||
alarmthread string "" ? thread to call when actor reaches alarm node
|
||||
accuracy value 20 0 100 1 10 ? percent chance to hit
|
||||
ammo_grenade value 0 0 4 1 1 ? number of grenades the guy starts with
|
||||
}
|
||||
|
||||
machinegunner
|
||||
{
|
||||
turret string "" ? name of turret being used
|
||||
accuracy value 100 0 100 1 10 ? percent chance to hit
|
||||
ammo_grenade value 0 0 4 1 1 ? number of grenades the guy starts with
|
||||
}
|
||||
|
||||
balcony_attack
|
||||
{
|
||||
accuracy value 100 0 100 1 10 ? percent chance to hit
|
||||
ammo_grenade value 0 0 4 1 1 ? number of grenades the guy starts with
|
||||
}
|
||||
|
||||
weaponless
|
||||
{
|
||||
ammo_grenade value 0 0 4 1 1 ? number of grenades the guy starts with
|
||||
}
|
||||
}
|
||||
|
||||
type_disguise
|
||||
{
|
||||
salute
|
||||
{
|
||||
disguise_range value 256 32 16384 32 128 ? maximum distance AI can be for them to do disguise behavior
|
||||
disguise_period value 15 1 3600 1 10 ? minimum time between repititions of disguise behavior
|
||||
}
|
||||
|
||||
sentry
|
||||
{
|
||||
disguise_range value 256 32 16384 32 128 ? maximum distance AI can be for them to do disguise behavior
|
||||
disguise_accept_thread string "" ? thread to call when actor reaches alarm node
|
||||
disguise_period value 15 1 3600 1 10 ? minimum time between repititions of disguise behavior
|
||||
disguise_level value 1 1 2 1 1 ? level of papers required for success
|
||||
}
|
||||
|
||||
officer
|
||||
{
|
||||
disguise_range value 256 32 16384 32 128 ? maximum distance AI can be for them to do disguise behavior
|
||||
disguise_period value 15 1 3600 1 10 ? minimum time between repititions of disguise behavior
|
||||
}
|
||||
|
||||
rover
|
||||
{
|
||||
disguise_range value 256 32 16384 32 128 ? maximum distance AI can be for them to do disguise behavior
|
||||
disguise_period value 15 1 3600 1 10 ? minimum time between repititions of disguise behavior
|
||||
}
|
||||
|
||||
none
|
||||
{
|
||||
}
|
||||
|
||||
machinegunner
|
||||
{
|
||||
}
|
||||
|
||||
balcony_disguise
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
type_grenade
|
||||
{
|
||||
grenade
|
||||
{
|
||||
gren_awareness value 10 0 100 1 10 ? chance that an AI will notice a grenade when they can see it
|
||||
}
|
||||
|
||||
machinegunner
|
||||
{
|
||||
}
|
||||
|
||||
balcony_grenade
|
||||
{
|
||||
}
|
||||
}
|
18
MOHAATools/default.qe4
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"brush_primit" "0"
|
||||
"basepath" "c:\program files\ea games\mohaa\"
|
||||
"rshcmd" ""
|
||||
"autosave" "c:\program files\ea games\mohaa\maps\"
|
||||
"mapspath" "c:\program files\ea games\mohaa\maps\"
|
||||
"remotebasepath" ""
|
||||
"modelmask" "*.tik"
|
||||
"entitydir" "code/"
|
||||
"moddir" "main"
|
||||
|
||||
"bsp_BSP" "! q3map -v -gamedir ../mohaa/ $"
|
||||
"bsp_Vis (fast)" "! q3map -vis -v -fast -gamedir ../mohaa/ $"
|
||||
"bsp_Vis" "! q3map -vis -v -gamedir ../mohaa/ $"
|
||||
"bsp_Light (fast)" "! mohlight -v -fast -gamedir ../mohaa/ $"
|
||||
"bsp_Light" "! mohlight -v -gamedir ../mohaa/ $"
|
||||
"bsp_Light (final)" "! mohlight -v -final -gamedir ../mohaa/ $"
|
||||
}
|
BIN
MOHAATools/docs/AI tips.doc
Normal file
BIN
MOHAATools/docs/Game Objects Usage Doc.doc
Normal file
784
MOHAATools/docs/Getting Started Tutorial.htm
Normal file
|
@ -0,0 +1,784 @@
|
|||
<html xmlns:v="urn:schemas-microsoft-com:vml"
|
||||
xmlns:o="urn:schemas-microsoft-com:office:office"
|
||||
xmlns:w="urn:schemas-microsoft-com:office:word"
|
||||
xmlns="http://www.w3.org/TR/REC-html40">
|
||||
|
||||
<head>
|
||||
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
||||
<meta name=ProgId content=Word.Document>
|
||||
<meta name=Generator content="Microsoft Word 9">
|
||||
<meta name=Originator content="Microsoft Word 9">
|
||||
<link rel=File-List href="./Getting%20Started%20Tutorial_files/filelist.xml">
|
||||
<link rel=Edit-Time-Data
|
||||
href="./Getting%20Started%20Tutorial_files/editdata.mso">
|
||||
<link rel=OLE-Object-Data
|
||||
href="./Getting%20Started%20Tutorial_files/oledata.mso">
|
||||
<!--[if !mso]>
|
||||
<style>
|
||||
v\:* {behavior:url(#default#VML);}
|
||||
o\:* {behavior:url(#default#VML);}
|
||||
w\:* {behavior:url(#default#VML);}
|
||||
.shape {behavior:url(#default#VML);}
|
||||
</style>
|
||||
<![endif]-->
|
||||
<title>This tutorial assumes that you’ve successfully installed and set up
|
||||
MOHRadiant and have all the path information set correctly</title>
|
||||
<!--[if gte mso 9]><xml>
|
||||
<o:DocumentProperties>
|
||||
<o:Author>Nate</o:Author>
|
||||
<o:LastAuthor>EA</o:LastAuthor>
|
||||
<o:Revision>2</o:Revision>
|
||||
<o:TotalTime>11</o:TotalTime>
|
||||
<o:Created>2002-02-11T23:13:00Z</o:Created>
|
||||
<o:LastSaved>2002-02-11T23:13:00Z</o:LastSaved>
|
||||
<o:Pages>12</o:Pages>
|
||||
<o:Words>1383</o:Words>
|
||||
<o:Characters>7884</o:Characters>
|
||||
<o:Company>2015</o:Company>
|
||||
<o:Lines>65</o:Lines>
|
||||
<o:Paragraphs>15</o:Paragraphs>
|
||||
<o:CharactersWithSpaces>9682</o:CharactersWithSpaces>
|
||||
<o:Version>9.3821</o:Version>
|
||||
</o:DocumentProperties>
|
||||
</xml><![endif]-->
|
||||
<style>
|
||||
<!--
|
||||
/* Style Definitions */
|
||||
p.MsoNormal, li.MsoNormal, div.MsoNormal
|
||||
{mso-style-parent:"";
|
||||
margin:0in;
|
||||
margin-bottom:.0001pt;
|
||||
mso-pagination:widow-orphan;
|
||||
font-size:12.0pt;
|
||||
font-family:"Times New Roman";
|
||||
mso-fareast-font-family:"Times New Roman";}
|
||||
h1
|
||||
{mso-style-next:Normal;
|
||||
margin:0in;
|
||||
margin-bottom:.0001pt;
|
||||
mso-pagination:widow-orphan;
|
||||
page-break-after:avoid;
|
||||
mso-outline-level:1;
|
||||
font-size:12.0pt;
|
||||
font-family:"Times New Roman";
|
||||
mso-font-kerning:0pt;}
|
||||
p.MsoTitle, li.MsoTitle, div.MsoTitle
|
||||
{margin:0in;
|
||||
margin-bottom:.0001pt;
|
||||
text-align:center;
|
||||
mso-pagination:widow-orphan;
|
||||
font-size:12.0pt;
|
||||
font-family:"Times New Roman";
|
||||
mso-fareast-font-family:"Times New Roman";
|
||||
font-weight:bold;}
|
||||
@page Section1
|
||||
{size:8.5in 11.0in;
|
||||
margin:1.0in 1.25in 1.0in 1.25in;
|
||||
mso-header-margin:.5in;
|
||||
mso-footer-margin:.5in;
|
||||
mso-paper-source:0;}
|
||||
div.Section1
|
||||
{page:Section1;}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body lang=EN-US style='tab-interval:.5in'>
|
||||
|
||||
<div class=Section1>
|
||||
|
||||
<p class=MsoTitle>Building a Room</p>
|
||||
|
||||
<p class=MsoNormal><b><![if !supportEmptyParas]> <![endif]><o:p></o:p></b></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>This tutorial assumes that you’ve successfully installed and
|
||||
set up MOHRadiant and have all the path information set correctly. This
|
||||
tutorial also assumes that you have no previous experience editing Quake Levels</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><b>Section 1</b>: Intro to brushes and the camera</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><span style='mso-tab-count:1'> </span>Brushes are
|
||||
the building block for worlds in Quake engine games such as MOH.<span
|
||||
style="mso-spacerun: yes"> </span>Brushes can only be convex shapes.<span
|
||||
style="mso-spacerun: yes"> </span>In order to build a concave object you will
|
||||
use multiple brushes.<span style="mso-spacerun: yes"> </span>This is for
|
||||
efficient collision detection in the game.</p>
|
||||
|
||||
<p class=MsoNormal><span style='mso-tab-count:1'> </span></p>
|
||||
|
||||
<p class=MsoNormal><span style='mso-tab-count:1'> </span>To create a
|
||||
new brush simply drag a box in the 2d view like this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
|
||||
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
|
||||
stroked="f">
|
||||
<v:stroke joinstyle="miter"/>
|
||||
<v:formulas>
|
||||
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
|
||||
<v:f eqn="sum @0 1 0"/>
|
||||
<v:f eqn="sum 0 0 @1"/>
|
||||
<v:f eqn="prod @2 1 2"/>
|
||||
<v:f eqn="prod @3 21600 pixelWidth"/>
|
||||
<v:f eqn="prod @3 21600 pixelHeight"/>
|
||||
<v:f eqn="sum @0 0 1"/>
|
||||
<v:f eqn="prod @6 1 2"/>
|
||||
<v:f eqn="prod @7 21600 pixelWidth"/>
|
||||
<v:f eqn="sum @8 21600 0"/>
|
||||
<v:f eqn="prod @7 21600 pixelHeight"/>
|
||||
<v:f eqn="sum @10 21600 0"/>
|
||||
</v:formulas>
|
||||
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
|
||||
<o:lock v:ext="edit" aspectratio="t"/>
|
||||
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:293.25pt;
|
||||
height:220.5pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image001.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=391 height=294
|
||||
src="./Getting%20Started%20Tutorial_files/image002.jpg" v:shapes="_x0000_i1025"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1025"
|
||||
DrawAspect="Content" ObjectID="_1074952783">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><span style='mso-tab-count:1'> </span>Now pull
|
||||
the edges out by clicking outside of the box and dragging outward.<span
|
||||
style="mso-spacerun: yes"> </span></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75"
|
||||
style='width:298.5pt;height:213.75pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image003.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=398 height=285
|
||||
src="./Getting%20Started%20Tutorial_files/image004.jpg" v:shapes="_x0000_i1026"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1026"
|
||||
DrawAspect="Content" ObjectID="_1074952784">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>When you’ve got the box in the
|
||||
shape that you want press the escape button.<span style="mso-spacerun: yes">
|
||||
</span>Notice the brush is no longer highlighted.</p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><span style='mso-tab-count:1'> </span>To select a
|
||||
brush for modifications, hold down shift and click in the center of the
|
||||
brush.<span style="mso-spacerun: yes"> </span>You can also deselect a brush
|
||||
the same way.<span style="mso-spacerun: yes"> </span>Pressing escape deselects
|
||||
all of the selected brushes.<span style='mso-tab-count:1'> </span></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><span style="mso-spacerun: yes"> </span><!--[if gte vml 1]><v:shape
|
||||
id="_x0000_i1027" type="#_x0000_t75" style='width:304.5pt;height:236.25pt'
|
||||
o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image005.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=406 height=315
|
||||
src="./Getting%20Started%20Tutorial_files/image006.jpg" v:shapes="_x0000_i1027"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1027"
|
||||
DrawAspect="Content" ObjectID="_1074952785">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><span style='mso-tab-count:1'> </span>This is
|
||||
basic brush manipulation.<span style="mso-spacerun: yes"> </span>Now you’ll
|
||||
learn how to focus the camera on the brush.<span style="mso-spacerun: yes">
|
||||
</span>This is the camera:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><span style="mso-spacerun: yes"> </span><!--[if gte vml 1]><v:shape
|
||||
id="_x0000_i1028" type="#_x0000_t75" style='width:84pt;height:81.75pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image007.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=112 height=109
|
||||
src="./Getting%20Started%20Tutorial_files/image008.jpg" v:shapes="_x0000_i1028"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1028"
|
||||
DrawAspect="Content" ObjectID="_1074952786">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>If you can’t find the camera scroll
|
||||
the 2dmap around by holding the right click and moving the mouse.<span
|
||||
style="mso-spacerun: yes"> </span>Use the Mouse-wheel to zoom in and out.<span
|
||||
style="mso-spacerun: yes"> </span>If you don’t have a mouse wheel use the
|
||||
insert and delete keys.<span style="mso-spacerun: yes"> </span>Pressing Alt+x
|
||||
will center the 2d view on the current selected brush.<span
|
||||
style="mso-spacerun: yes"> </span>Since you don’t have any brushes selected
|
||||
pressing Alt+x will center the 2d view on the camera.</p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>Notice the two lines coming out of
|
||||
the camera.<span style="mso-spacerun: yes"> </span>These lines show the
|
||||
camera’s field of view.<span style="mso-spacerun: yes"> </span>You can point
|
||||
your camera by middle-clicking in the 2d view.</p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><!--[if gte vml 1]><v:shape id="_x0000_i1029"
|
||||
type="#_x0000_t75" style='width:293.25pt;height:244.5pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image009.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=391 height=326
|
||||
src="./Getting%20Started%20Tutorial_files/image010.jpg" v:shapes="_x0000_i1029"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1029"
|
||||
DrawAspect="Content" ObjectID="_1074952787">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>Notice your camera’s Field of view
|
||||
lines change.</p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><!--[if gte vml 1]><v:shape id="_x0000_i1030"
|
||||
type="#_x0000_t75" style='width:289.5pt;height:235.5pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image011.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=386 height=314
|
||||
src="./Getting%20Started%20Tutorial_files/image012.jpg" v:shapes="_x0000_i1030"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1030"
|
||||
DrawAspect="Content" ObjectID="_1074952788">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>And your 3d view is now updated.</p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><!--[if gte vml 1]><v:shape id="_x0000_i1031"
|
||||
type="#_x0000_t75" style='width:327pt;height:110.25pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image013.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=436 height=147
|
||||
src="./Getting%20Started%20Tutorial_files/image014.jpg" v:shapes="_x0000_i1031"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1031"
|
||||
DrawAspect="Content" ObjectID="_1074952789">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>If at any point your camera is off
|
||||
looking at gray (void) space you can reposition it in the 2d view.</p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>You’re going to control your camera
|
||||
mostly within the 3d view but when starting a map it’s easiest to first
|
||||
position the camera in the 2d view.<span style="mso-spacerun: yes"> </span>Now
|
||||
you’ll move on to 3d camera manipulation.</p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'>There are a few different camera
|
||||
modes they can be selected by clicking on the camera eye icon in the tool bar.
|
||||
Click on it and watch it cycle through the different modes.<span
|
||||
style="mso-spacerun: yes"> </span></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1032" type="#_x0000_t75"
|
||||
style='width:373.5pt;height:29.25pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image015.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=498 height=39
|
||||
src="./Getting%20Started%20Tutorial_files/image016.jpg" v:shapes="_x0000_i1032"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1032"
|
||||
DrawAspect="Content" ObjectID="_1074952790">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal style='text-indent:.5in'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1033" type="#_x0000_t75"
|
||||
style='width:23.25pt;height:21.75pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image017.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=31 height=29
|
||||
src="./Getting%20Started%20Tutorial_files/image018.jpg" v:shapes="_x0000_i1033"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1033"
|
||||
DrawAspect="Content" ObjectID="_1074952791">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal>Default mode with the eye and no numbers is classic Q3
|
||||
Radiant mode. Those who have used Q3radiant will be familiar with the camera
|
||||
controls in this mode.</p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1034" type="#_x0000_t75"
|
||||
style='width:23.25pt;height:21.75pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image019.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=31 height=29
|
||||
src="./Getting%20Started%20Tutorial_files/image020.jpg" v:shapes="_x0000_i1034"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1034"
|
||||
DrawAspect="Content" ObjectID="_1074952792">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal>The mode with a “1” over the eye is “game mode” and requires
|
||||
button rebinding to work.</p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1035" type="#_x0000_t75"
|
||||
style='width:23.25pt;height:21.75pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image021.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=31 height=29
|
||||
src="./Getting%20Started%20Tutorial_files/image022.jpg" v:shapes="_x0000_i1035"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1035"
|
||||
DrawAspect="Content" ObjectID="_1074952793">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal>The mode with a “2” over the eye is the “mode with no name”
|
||||
mode and this is the one I will use for this tutorial since it’s the one that I
|
||||
prefer.<span style="mso-spacerun: yes"> </span></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>In the 3d view click and hold your right mouse button, now
|
||||
move the mouse around and see what happens to the camera.<span
|
||||
style="mso-spacerun: yes"> </span>Forward and back move the camera forward and
|
||||
back side-to-side turns the camera view from left to right.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Now hold down the control button and the right mouse button
|
||||
while moving the mouse.<span style="mso-spacerun: yes"> </span>Moving up and
|
||||
down will move the camera up and down moving side-to-side will strafe the
|
||||
camera.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Hold down the control button the shift button and the right
|
||||
button and move the camera around. This will be like looking around in the game</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>If your ever lost in the gray void you can re-position your
|
||||
camera in the 2d view by CTRL+MIDDLE clicking.<span style="mso-spacerun: yes">
|
||||
</span>Combine that with the middle click to point the camera and you can
|
||||
quickly set your camera anywhere.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>You can edit within the 3d view the same way that you edit
|
||||
in the 2d view.<span style="mso-spacerun: yes"> </span>Just Shift-click the
|
||||
brush to select and pull away from edges.<span style="mso-spacerun: yes">
|
||||
</span>When you want precision or just plain ease of use you’ll edit in the 2d
|
||||
window.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>To edit 3d geometry you’ll need to switch sides in the 2d
|
||||
view. Notice the words “XY Top” in the top left corner of the 2d view</p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1036" type="#_x0000_t75"
|
||||
style='width:147pt;height:81pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image023.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=196 height=108
|
||||
src="./Getting%20Started%20Tutorial_files/image024.jpg" v:shapes="_x0000_i1036"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1036"
|
||||
DrawAspect="Content" ObjectID="_1074952794">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Select the brush and Press CTRL+TAB to switch the 2d view to
|
||||
a different side.<span style="mso-spacerun: yes"> </span>When the view
|
||||
switches it will center on the current selected brush or brushes.<span
|
||||
style="mso-spacerun: yes"> </span>If nothing is selected the 2d view will
|
||||
center on the 3d camera.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Now you’re looking at the front view and it should look
|
||||
something like this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1037" type="#_x0000_t75"
|
||||
style='width:312pt;height:232.5pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image025.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=416 height=310
|
||||
src="./Getting%20Started%20Tutorial_files/image026.jpg" v:shapes="_x0000_i1037"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1037"
|
||||
DrawAspect="Content" ObjectID="_1074952795">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><span style='mso-tab-count:1'> </span></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Click and drag the edges as you did earlier in the tutorial
|
||||
to make the brush taller.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><b>Section 2</b>: Hollowing a room</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Now that you’ve learned the basics of brush and camera manipulation
|
||||
you can build a room.<span style="mso-spacerun: yes"> </span>Go to the file
|
||||
menu and select New.<span style="mso-spacerun: yes"> </span>If it asks you to
|
||||
copy the selection click on no. </p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Start by making your grid size 128 units, do this by
|
||||
pressing the “8” key.<span style="mso-spacerun: yes"> </span>Notice the status
|
||||
window changing at the bottom of the window.<span style="mso-spacerun: yes">
|
||||
</span>It should say “Grid 128”.<span style="mso-spacerun: yes"> </span>The
|
||||
numbers 1-9 change the grid size 1=1, 2=2, 3=4, 4=8, 5=16 etc.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Switch your view to the top view.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Draw a box that is 512 x 512 units.<span
|
||||
style="mso-spacerun: yes"> </span>You can use the grid numbers on top and on
|
||||
the side or you can go by how many times the box “snaps”, each snap being the
|
||||
distance of the grid size.<span style="mso-spacerun: yes"> </span>An easier
|
||||
way to measure a brush is to check the “<b>paint sizing info</b>” box in the
|
||||
preferences dialog box.<span style="mso-spacerun: yes"> </span>Find the
|
||||
preferences in the “<b>edit</b>” menu.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1038" type="#_x0000_t75"
|
||||
style='width:407.25pt;height:99pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image027.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=543 height=132
|
||||
src="./Getting%20Started%20Tutorial_files/image028.jpg" v:shapes="_x0000_i1038"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1038"
|
||||
DrawAspect="Content" ObjectID="_1074952796">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>You’ll now see the measurements on the selected brush or
|
||||
brushes. </p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Stretch the brush out until you see this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1039" type="#_x0000_t75"
|
||||
style='width:307.5pt;height:243pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image029.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=410 height=324
|
||||
src="./Getting%20Started%20Tutorial_files/image030.jpg" v:shapes="_x0000_i1039"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1039"
|
||||
DrawAspect="Content" ObjectID="_1074952798">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal>The numbers on the bottom and right sides are the size of
|
||||
the box; the number on the top is the coordinate for the top left corner.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Switch you’re 2d view (CTRL+TAB) and make the brush 512
|
||||
units tall.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Now change the grid size to 8 (press 4).</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Press the “<b>hollow</b>” Icon that looks like this:</p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1040" type="#_x0000_t75"
|
||||
style='width:23.25pt;height:21.75pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image031.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=31 height=29
|
||||
src="./Getting%20Started%20Tutorial_files/image032.jpg" v:shapes="_x0000_i1040"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1040"
|
||||
DrawAspect="Content" ObjectID="_1074952799">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Your brush will split into 6 brushes and looks like this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1041" type="#_x0000_t75"
|
||||
style='width:296.25pt;height:262.5pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image033.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=395 height=350
|
||||
src="./Getting%20Started%20Tutorial_files/image034.jpg" v:shapes="_x0000_i1041"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1041"
|
||||
DrawAspect="Content" ObjectID="_1074952800">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>This is the quick and dirty way of creating a room and is
|
||||
fine for this example.<span style="mso-spacerun: yes"> </span>In creating
|
||||
buildings and such you’ll never use the hollow tool because the hollow tool
|
||||
doesn’t layout the brushes properly.<span style="mso-spacerun: yes"> </span>At
|
||||
each of the edges the brushes overlap. For this example that’s fine because you
|
||||
won’t see the sides of the brush that overlap, but in a level where this room
|
||||
might be visible from outside this will create a problem because two surfaces
|
||||
will be on the same plane. </p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Move the camera inside the box (CONTROL+MIDDLE CLICK in the
|
||||
2d view) </p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Now the room needs a texture. Go to the <b>Textures</b> menu
|
||||
and select <b>barrel</b>. I’m using Barrel for the tutorial because it’s the
|
||||
smallest texture directory and loads quickly.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>You should see the texture window to the right of the screen
|
||||
fill up with barrel textures.<span style="mso-spacerun: yes"> </span>Chose a
|
||||
texture to place on the wall and left-click it. This is the room, all it needs
|
||||
is a player start position and a light to run it in the game.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><b>Section 3</b>: Adding a player start and a light</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>First deselect everything (press Escape).</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>After deselecting everything right Click in the 2d window to
|
||||
bring up the entity selection menu.<span style="mso-spacerun: yes"> </span>The
|
||||
menu looks like this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1042" type="#_x0000_t75"
|
||||
style='width:189pt;height:213.75pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image035.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=252 height=285
|
||||
src="./Getting%20Started%20Tutorial_files/image036.jpg" v:shapes="_x0000_i1042"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1042"
|
||||
DrawAspect="Content" ObjectID="_1074952801">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Select Info>Player>Start:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1043" type="#_x0000_t75"
|
||||
style='width:317.25pt;height:164.25pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image037.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=423 height=219
|
||||
src="./Getting%20Started%20Tutorial_files/image038.jpg" v:shapes="_x0000_i1043"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1043"
|
||||
DrawAspect="Content" ObjectID="_1074952802">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>This places a player starting position where you click.<span
|
||||
style="mso-spacerun: yes"> </span>Now you’ll rearrange that entity.<span
|
||||
style="mso-spacerun: yes"> </span>In the 3d view turn the camera so it’s
|
||||
looking at the ground.<span style="mso-spacerun: yes"> </span>Now hold
|
||||
CTRL+ALT and middle click in the center of the ground surface in the 3d
|
||||
view.<span style="mso-spacerun: yes"> </span></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1044" type="#_x0000_t75"
|
||||
style='width:269.25pt;height:185.25pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image039.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=359 height=247
|
||||
src="./Getting%20Started%20Tutorial_files/image040.jpg" v:shapes="_x0000_i1044"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1044"
|
||||
DrawAspect="Content" ObjectID="_1074952803">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Deselect the player start position (press Escape).<span
|
||||
style="mso-spacerun: yes"> </span>Right-Click in the 2d view and select “<b>Light”</b>
|
||||
from the menu.<span style="mso-spacerun: yes"> </span>Place the light in the
|
||||
3d view the same way as you placed the player start. You should end up with
|
||||
something that looks like this.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1045" type="#_x0000_t75"
|
||||
style='width:315pt;height:213pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image041.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=420 height=284
|
||||
src="./Getting%20Started%20Tutorial_files/image042.jpg" v:shapes="_x0000_i1045"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1045"
|
||||
DrawAspect="Content" ObjectID="_1074952804">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Save this level and you’ll be ready to compile and play in
|
||||
the game.</p>
|
||||
|
||||
<p class=MsoNormal><b><![if !supportEmptyParas]> <![endif]><o:p></o:p></b></p>
|
||||
|
||||
<p class=MsoNormal><b><![if !supportEmptyParas]> <![endif]><o:p></o:p></b></p>
|
||||
|
||||
<p class=MsoNormal><b>Section 4</b>: Compiling and playing</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Compiling is a 3-step process. <b>BSP</b>, <b>VIS</b>, and <b>LIGHT</b>
|
||||
</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Q3map is a command line utility that is used to compile BSP
|
||||
and VIS the map.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Open a command prompt and run q3map like this</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Q3map –gamedir <base directory of the game> <name
|
||||
of the map></p>
|
||||
|
||||
<p class=MsoNormal>On a machine with MOHAA installed to <b>c:/mohaa</b> and the
|
||||
map named <b>tutorial.map</b> placed in the <b>c:/mohaa/map_source</b>
|
||||
directory the command would look like this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<h1>Q3map –gamedir c:/mohaa c:/mohaa/map_source/tutorial</h1>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>This compiles the BSP for the map</p>
|
||||
|
||||
<p class=MsoNormal>Compiling Vis is much the same way but with a –vis command
|
||||
attached like this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<h1>Q3map –vis –gamedir c:/mohaa c:/mohaa/map_source/tutorial</h1>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Compiling Light is done with a separate program called
|
||||
mohlight; mohlight is run much the same, like this:</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<h1>Mohlight –gamedir c:/mohaa c:/mohaa/map_source/tutorial</h1>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Now copy the resulting .bsp (in this case tutorial.bsp, should
|
||||
be in the same place as the .map file) to your <b>mohaa/main/maps</b> folder. </p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>Once the .bsp file is in the maps folder it is ready to
|
||||
run.<span style="mso-spacerun: yes"> </span>You’ll have to load MOH in
|
||||
developer mode so that you can use the special developer mode tools.<span
|
||||
style="mso-spacerun: yes"> </span>Load moh from the run menu or a command line
|
||||
like this.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal><b>mohaa +set developer 1 +set thereisnomonkey 1 +set cheats
|
||||
1 +set ui_console 1<o:p></o:p></b></p>
|
||||
|
||||
<p class=MsoNormal><b><![if !supportEmptyParas]> <![endif]><o:p></o:p></b></p>
|
||||
|
||||
<p class=MsoNormal>Once in the game you should see the console, it looks like
|
||||
this:</p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1046" type="#_x0000_t75"
|
||||
style='width:463.5pt;height:326.25pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image043.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=618 height=435
|
||||
src="./Getting%20Started%20Tutorial_files/image044.jpg" v:shapes="_x0000_i1046"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1046"
|
||||
DrawAspect="Content" ObjectID="_1074952805">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--></p>
|
||||
|
||||
<p class=MsoNormal>If you don’t see the console press the Tilde (`) key to
|
||||
bring it down.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>In the console type “map” followed by a space and then the
|
||||
name of your map, like this:</p>
|
||||
|
||||
<p class=MsoNormal><!--[if gte vml 1]><v:shape id="_x0000_i1047" type="#_x0000_t75"
|
||||
style='width:316.5pt;height:54pt' o:ole="">
|
||||
<v:imagedata src="./Getting%20Started%20Tutorial_files/image045.png" o:title=""/>
|
||||
</v:shape><![endif]--><![if !vml]><img width=422 height=72
|
||||
src="./Getting%20Started%20Tutorial_files/image046.jpg" v:shapes="_x0000_i1047"><![endif]><!--[if gte mso 9]><xml>
|
||||
<o:OLEObject Type="Embed" ProgID="Photoshop.Image.5" ShapeID="_x0000_i1047"
|
||||
DrawAspect="Content" ObjectID="_1074952806">
|
||||
</o:OLEObject>
|
||||
</xml><![endif]--><b><o:p></o:p></b></p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>After pressing enter you will be able to walk around in the
|
||||
room.</p>
|
||||
|
||||
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
|
||||
|
||||
<p class=MsoNormal>These are the basic steps to getting a map up and running in
|
||||
the game.<span style="mso-spacerun: yes"> </span>From here you should be able
|
||||
to build a simple map.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
49
MOHAATools/docs/Getting Started Tutorial_files/CVS/Entries
Normal file
|
@ -0,0 +1,49 @@
|
|||
/filelist.xml/1.1/Mon Feb 11 23:15:46 2002//
|
||||
/image001.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image002.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image003.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image004.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image005.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image006.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image007.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image008.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image009.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image010.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image011.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image012.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image013.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image014.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image015.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image016.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image017.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image018.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image019.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image020.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image021.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image022.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image023.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image024.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image025.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image026.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image027.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image028.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image029.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image030.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image031.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image032.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image033.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image034.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image035.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image036.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image037.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image038.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image039.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image040.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image041.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image042.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image043.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image044.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image045.png/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/image046.jpg/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
/oledata.mso/1.1/Mon Feb 11 23:16:02 2002/-kb/
|
||||
D
|
|
@ -0,0 +1 @@
|
|||
mohta/docs/LD_docs/Getting Started Tutorial_files
|
1
MOHAATools/docs/Getting Started Tutorial_files/CVS/Root
Normal file
|
@ -0,0 +1 @@
|
|||
:pserver:jason@qix:/repository
|
51
MOHAATools/docs/Getting Started Tutorial_files/filelist.xml
Normal file
|
@ -0,0 +1,51 @@
|
|||
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
|
||||
<o:MainFile HRef="../Getting%20Started%20Tutorial.htm"/>
|
||||
<o:File HRef="image001.png"/>
|
||||
<o:File HRef="image002.jpg"/>
|
||||
<o:File HRef="oledata.mso"/>
|
||||
<o:File HRef="image003.png"/>
|
||||
<o:File HRef="image004.jpg"/>
|
||||
<o:File HRef="image005.png"/>
|
||||
<o:File HRef="image006.jpg"/>
|
||||
<o:File HRef="image007.png"/>
|
||||
<o:File HRef="image008.jpg"/>
|
||||
<o:File HRef="image009.png"/>
|
||||
<o:File HRef="image010.jpg"/>
|
||||
<o:File HRef="image011.png"/>
|
||||
<o:File HRef="image012.jpg"/>
|
||||
<o:File HRef="image013.png"/>
|
||||
<o:File HRef="image014.jpg"/>
|
||||
<o:File HRef="image015.png"/>
|
||||
<o:File HRef="image016.jpg"/>
|
||||
<o:File HRef="image017.png"/>
|
||||
<o:File HRef="image018.jpg"/>
|
||||
<o:File HRef="image019.png"/>
|
||||
<o:File HRef="image020.jpg"/>
|
||||
<o:File HRef="image021.png"/>
|
||||
<o:File HRef="image022.jpg"/>
|
||||
<o:File HRef="image023.png"/>
|
||||
<o:File HRef="image024.jpg"/>
|
||||
<o:File HRef="image025.png"/>
|
||||
<o:File HRef="image026.jpg"/>
|
||||
<o:File HRef="image027.png"/>
|
||||
<o:File HRef="image028.jpg"/>
|
||||
<o:File HRef="image029.png"/>
|
||||
<o:File HRef="image030.jpg"/>
|
||||
<o:File HRef="image031.png"/>
|
||||
<o:File HRef="image032.jpg"/>
|
||||
<o:File HRef="image033.png"/>
|
||||
<o:File HRef="image034.jpg"/>
|
||||
<o:File HRef="image035.png"/>
|
||||
<o:File HRef="image036.jpg"/>
|
||||
<o:File HRef="image037.png"/>
|
||||
<o:File HRef="image038.jpg"/>
|
||||
<o:File HRef="image039.png"/>
|
||||
<o:File HRef="image040.jpg"/>
|
||||
<o:File HRef="image041.png"/>
|
||||
<o:File HRef="image042.jpg"/>
|
||||
<o:File HRef="image043.png"/>
|
||||
<o:File HRef="image044.jpg"/>
|
||||
<o:File HRef="image045.png"/>
|
||||
<o:File HRef="image046.jpg"/>
|
||||
<o:File HRef="filelist.xml"/>
|
||||
</xml>
|
BIN
MOHAATools/docs/Getting Started Tutorial_files/image001.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image002.jpg
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image003.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image004.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image005.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image006.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image007.png
Normal file
After Width: | Height: | Size: 845 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image008.jpg
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image009.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image010.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image011.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image012.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image013.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image014.jpg
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image015.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image016.jpg
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image017.png
Normal file
After Width: | Height: | Size: 277 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image018.jpg
Normal file
After Width: | Height: | Size: 631 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image019.png
Normal file
After Width: | Height: | Size: 309 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image020.jpg
Normal file
After Width: | Height: | Size: 681 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image021.png
Normal file
After Width: | Height: | Size: 373 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image022.jpg
Normal file
After Width: | Height: | Size: 672 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image023.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image024.jpg
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image025.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image026.jpg
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image027.png
Normal file
After Width: | Height: | Size: 8 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image028.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image029.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image030.jpg
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image031.png
Normal file
After Width: | Height: | Size: 245 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image032.jpg
Normal file
After Width: | Height: | Size: 660 B |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image033.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image034.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image035.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image036.jpg
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image037.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image038.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image039.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image040.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image041.png
Normal file
After Width: | Height: | Size: 109 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image042.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image043.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image044.jpg
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image045.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/image046.jpg
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
MOHAATools/docs/Getting Started Tutorial_files/oledata.mso
Normal file
BIN
MOHAATools/docs/MOH Terrain Editing Manual.doc
Normal file
BIN
MOHAATools/docs/MoH Radiant Feature List.doc
Normal file
50
MOHAATools/docs/Script Commands - huddraw.txt
Normal file
|
@ -0,0 +1,50 @@
|
|||
Description of the use of the huddraw set of script commands
|
||||
------------------------------------------------------------
|
||||
|
||||
The huddraw script commands allow you to draw up to 256 different graphic icons on the player's hud.
|
||||
The element to adjust with each command is specified by an index number in the range of 0 to 255.
|
||||
They currently broadcast to all players, but that could be changed if the need arises.
|
||||
|
||||
Commands Summary
|
||||
----------------
|
||||
|
||||
huddraw_shader <index> <shader name>
|
||||
This sets the shader to use for a particular huddraw element.
|
||||
|
||||
huddraw_align <index> <horizontal> <vertical>
|
||||
This sets the alignment of the huddraw element.
|
||||
Valid values for horizontal alignment are "left", "center", and "right".
|
||||
Valid values for vertical alignment are "top", "center", and "bottom".
|
||||
|
||||
|
||||
huddraw_rect <index> <X position> <Y position> <width> <height>
|
||||
This sets the position and size of the huddraw element. X and Y specify the position of
|
||||
the upper left corner position. Higher values of X move it to the right, and higher
|
||||
values of Y move it down. When you set the alignment, the XY position specified is
|
||||
relative to that alignment. For example, if you align it to the right edge of the hud,
|
||||
the X position should be less than zero so that it the upper left corner will be brough
|
||||
back to the left onto the screen.
|
||||
|
||||
huddraw_virtualsize <index> <virtual>
|
||||
This let's you set the huddraw element's size and position according to a virtual screen
|
||||
resolution of 640x480. What this means is that it lets you treat the hud like it's always
|
||||
at 640x480, and it will be properly resized and positioned according to the actual resolution.
|
||||
|
||||
huddraw_color <index> <red> <green> <blue>
|
||||
This set the color of the huddraw element. Each color channel should be between 0 and 1.
|
||||
|
||||
huddraw_alpha <index> <alpha>
|
||||
This set the alpha of the huddraw element. It should be set between 0 and 1. This is also
|
||||
used to turn off a huddraw element that is no longer wanted by setting the alpha to 0.
|
||||
|
||||
huddraw_string <index> <string>
|
||||
This sets the huddraw element to display a string instead of a shader graphic. The size
|
||||
of the font can not be adjusted, but the color and alpha settings do affect the text.
|
||||
The width and height parameters of huddraw_rect are only used for alignment centering,
|
||||
Not for setting the size of the string.
|
||||
|
||||
huddraw_font <index> <fontname>
|
||||
This sets the font for a string displaying huddraw element to use. The names of available
|
||||
font can be gotten from the game/main/fonts folder. The file names of the .ritualfont files
|
||||
in there are the names used for the fonts.
|
||||
|
559
MOHAATools/docs/Script Files.txt
Normal file
|
@ -0,0 +1,559 @@
|
|||
Syntax Summary
|
||||
==============
|
||||
|
||||
program:
|
||||
--------
|
||||
statement_list
|
||||
|
||||
statement_list:
|
||||
---------------
|
||||
statement statement ... statement
|
||||
|
||||
statement:
|
||||
----------
|
||||
identifier event_parameter_list :
|
||||
case integer event_parameter_list :
|
||||
case identifier event_parameter_list :
|
||||
compound_statement
|
||||
if prim_expr statement
|
||||
if prim_expr statement else statement
|
||||
while prim_expr statement
|
||||
for ( statement ; expr ; statement_list ) statement
|
||||
try compound_statement catch compound_statement
|
||||
switch prim_expr compound_statement
|
||||
break
|
||||
continue
|
||||
identifier event_parameter_list
|
||||
nonident_prim_expr identifier event_parameter_list
|
||||
nonident_prim_expr = expr
|
||||
nonident_prim_expr += expr
|
||||
nonident_prim_expr -= expr
|
||||
nonident_prim_expr ++
|
||||
nonident_prim_expr --
|
||||
;
|
||||
|
||||
compound_statement:
|
||||
-------------------
|
||||
{ statement_list }
|
||||
|
||||
expr:
|
||||
-----
|
||||
expr && expr
|
||||
expr || expr
|
||||
expr & expr
|
||||
expr | expr
|
||||
expr ^ expr
|
||||
expr == expr
|
||||
expr != expr
|
||||
expr < expr
|
||||
expr > expr
|
||||
expr <= expr
|
||||
expr >= expr
|
||||
expr + expr
|
||||
expr - expr
|
||||
expr * expr
|
||||
expr / expr
|
||||
expr % expr
|
||||
nonident_prim_expr
|
||||
func_prim_expr
|
||||
|
||||
func_prim_expr:
|
||||
---------------
|
||||
identifier event_parameter_list
|
||||
nonident_prim_expr identifier event_parameter_list
|
||||
- func_prim_expr
|
||||
~ func_prim_expr
|
||||
! func_prim_expr
|
||||
identifier :: prim_expr
|
||||
nonident_prim_expr :: prim_expr
|
||||
|
||||
event_parameter_list:
|
||||
---------------------
|
||||
prim_expr prim_expr ... prim_expr
|
||||
|
||||
prim_expr:
|
||||
----------
|
||||
nonident_prim_expr
|
||||
identifier_prim
|
||||
prim_expr :: prim_expr
|
||||
|
||||
nonident_prim_expr:
|
||||
-------------------
|
||||
$ prim_expr
|
||||
nonident_prim_expr . identifier
|
||||
nonident_prim_expr . size
|
||||
nonident_prim_expr [ expr ]
|
||||
string
|
||||
integer
|
||||
float
|
||||
( number number number )
|
||||
game
|
||||
level
|
||||
local
|
||||
parm
|
||||
self
|
||||
group
|
||||
( expr )
|
||||
- nonident_prim_expr
|
||||
~ nonident_prim_expr
|
||||
! nonident_prim_expr
|
||||
NULL
|
||||
NIL
|
||||
|
||||
number:
|
||||
-------
|
||||
float
|
||||
integer
|
||||
|
||||
|
||||
Automatically started scripts
|
||||
=============================
|
||||
|
||||
1) maps/mapname.scr
|
||||
A level script is associated with each map, and is loaded and started at the start of that map (and not for subsequent starts from a saved game). This script is used for triggering all map related dynamic objects such as doors, elevators, AI, etc. maps/mapname.scr corresponds to maps/mapname.bsp. A level script is optional.
|
||||
|
||||
2) maps/mapname_precache.scr
|
||||
A level precache script is associated with each map, and is loaded and started whenever the map is loaded (even from a saved game). This script is used for precaching map specific resources. maps/mapname_precache.scr corresponds to maps/mapname.bsp. A level precache script is optional.
|
||||
|
||||
3) Scripts in the anim directory are executed to carry out animation behavior of AI characters. Which script is executed is determined by internal AI state or scripts such as global/shoot.scr.
|
||||
|
||||
Threads
|
||||
=======
|
||||
|
||||
A thread executes commands in a script one at a time in order. Multiple threads can exist. The automatically started scripts start execution with a single thread at the start of the file.
|
||||
|
||||
All threads belong to a group of threads, denoted "group". The current thread is denoted "local". The group of threads that a thread belongs to will be discussed in the next section.
|
||||
|
||||
Methods of creation of threads
|
||||
------------------------------
|
||||
|
||||
1) Automatic
|
||||
The new thread initially is the only thread in its group.
|
||||
|
||||
2) Command: thread label
|
||||
The new thread belongs to the same group of threads as the original thread.
|
||||
|
||||
3) Command: thread filename::label
|
||||
The new thread initially is the only thread in its group.
|
||||
|
||||
4) Command: object thread label
|
||||
The new thread initially is the only thread in its group.
|
||||
|
||||
5) Command: object thread filename::label
|
||||
The new thread initially is the only thread in its group.
|
||||
|
||||
|
||||
Predefined object references
|
||||
============================
|
||||
|
||||
1) game
|
||||
Refers to the unique game object which maintains its state across levels. Only primitive values (integers/floats/strings/vectors) will persist across levels.
|
||||
|
||||
2) level
|
||||
Refers to the unique level object which maintains its state for the duration of a level.
|
||||
|
||||
3) local
|
||||
Refers to the thread executing the current command.
|
||||
|
||||
4) parm
|
||||
Refers to the unique parm object which can be used to pass parameters to new threads.
|
||||
Note that any use of this variable could be coded "better" by using parameters in the creation of new threads.
|
||||
|
||||
5) self
|
||||
Refers to the object that the thread is processing for. This object is the same for all threads in a group of threads.
|
||||
|
||||
6) group
|
||||
Refers to the object representing the group of threads the thread executing the current command belongs to.
|
||||
|
||||
|
||||
self object
|
||||
===========
|
||||
|
||||
The "self" object has its value set at the creation of a group of threads. The following are some such situations:
|
||||
|
||||
1) Automatically started scripts
|
||||
self is NULL for level scripts. self is the character for animation scripts.
|
||||
|
||||
2) Command: thread label
|
||||
Since the new thread has the same group as the original thread, self in the new thread is equal to self in the original thread.
|
||||
|
||||
3) Command: thread filename::label
|
||||
self in the new thread is set equal to self in the original thread.
|
||||
|
||||
4) Command: object thread label
|
||||
self in the new thread is set equal to object.
|
||||
|
||||
5) Command: object thread filename::label
|
||||
self in the new thread is set equal to object.
|
||||
|
||||
6) If a thread is initiated in response to an event of an object, then self is set equal to this object.
|
||||
|
||||
|
||||
switch (selection) statement
|
||||
============================
|
||||
|
||||
Standard usage
|
||||
--------------
|
||||
|
||||
switch (expr)
|
||||
{
|
||||
label1:
|
||||
statement
|
||||
...
|
||||
statement
|
||||
break
|
||||
|
||||
label2:
|
||||
statement
|
||||
...
|
||||
statement
|
||||
break
|
||||
|
||||
case 0:
|
||||
statement
|
||||
...
|
||||
statement
|
||||
break
|
||||
|
||||
case 1:
|
||||
statement
|
||||
...
|
||||
statement
|
||||
break
|
||||
|
||||
default:
|
||||
statement
|
||||
...
|
||||
statement
|
||||
break
|
||||
}
|
||||
|
||||
The expression expr is evaluated and cast to a string. Code execution tranfers to the matching label or to the optional default label if there is no match. The case prefix is required for integers, and optional for strings. The break command makes the switch statement finish.
|
||||
|
||||
|
||||
if (conditional) statement
|
||||
==========================
|
||||
|
||||
Standard usage
|
||||
--------------
|
||||
|
||||
if (expr)
|
||||
statement
|
||||
|
||||
if (expr)
|
||||
statement
|
||||
else
|
||||
statement
|
||||
|
||||
if (expr)
|
||||
{
|
||||
statement
|
||||
...
|
||||
statement
|
||||
}
|
||||
|
||||
if (expr)
|
||||
{
|
||||
statement
|
||||
...
|
||||
statement
|
||||
}
|
||||
else
|
||||
{
|
||||
statement
|
||||
...
|
||||
statement
|
||||
}
|
||||
|
||||
arithmetic binary operators
|
||||
===========================
|
||||
|
||||
precedence
|
||||
----------
|
||||
|
||||
The operators are listed in order of later evaluation to sooner evaluation:
|
||||
|
||||
||
|
||||
&&
|
||||
|
|
||||
^
|
||||
&
|
||||
== !=
|
||||
< > <= >=
|
||||
+ -
|
||||
* / %
|
||||
|
||||
descriptions
|
||||
------------
|
||||
|
||||
|| logical or (outputs 0 or 1)
|
||||
|
||||
&& logical and (outputs 0 or 1)
|
||||
|
||||
| bitwise or (outputs integer)
|
||||
|
||||
^ bitwise exclusive or (outputs integer)
|
||||
|
||||
& bitwise and (outputs integer)
|
||||
|
||||
== equality (outputs 0 or 1)
|
||||
|
||||
!= inequality (outputs 0 or 1)
|
||||
|
||||
< less than (outputs 0 or 1)
|
||||
|
||||
> gretaer than (outputs 0 or 1)
|
||||
|
||||
<= less than or equal (outputs 0 or 1)
|
||||
|
||||
>= greater than or equal (outputs 0 or 1)
|
||||
|
||||
+ plus (numeric or string types)
|
||||
|
||||
- minus
|
||||
|
||||
* multiply
|
||||
|
||||
/ divide
|
||||
|
||||
% modulus (remainder after division by integer)
|
||||
|
||||
|
||||
while statement
|
||||
===============
|
||||
|
||||
Standard usage
|
||||
--------------
|
||||
|
||||
while (expr)
|
||||
statement
|
||||
|
||||
while (expr)
|
||||
{
|
||||
statement
|
||||
...
|
||||
statement
|
||||
}
|
||||
|
||||
At the start of a cycle of the loop the expression expr is evaluated and cast to boolean (true or false). While the expression evaluates to true the statement(s) are executed.
|
||||
A continue placed inside such a loop will move the code execution point to the end of the current cycle of the loop.
|
||||
A break placed inside such a loop will terminate execution of the loop (code execution will continue sfter the loop).
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
local.n = 1
|
||||
while (local.n <= 10)
|
||||
{
|
||||
println local.n
|
||||
local.n++
|
||||
}
|
||||
|
||||
|
||||
for statement
|
||||
=============
|
||||
|
||||
Standard usage
|
||||
--------------
|
||||
|
||||
for ( statement1 ; expr ; statement2 )
|
||||
statement
|
||||
|
||||
for ( statement1 ; expr ; statement2 )
|
||||
{
|
||||
statement
|
||||
...
|
||||
statement
|
||||
}
|
||||
|
||||
At the start of execution of this entire statement, statement1 is executed. At the start of a cycle of the loop the expression expr is evaluated and cast to boolean (true or false). While the expression evaluates to true the statement(s) are executed. At the end of each cycle of the loop, statement2 is executed.
|
||||
A continue placed inside such a loop will move the code execution point to the end of the current cycle of the loop.
|
||||
A break placed inside such a loop will terminate execution of the loop (code execution will continue after the loop).
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
for (local.n = 1; local.n <= 10; local.n++)
|
||||
{
|
||||
println local.n
|
||||
local.n++
|
||||
}
|
||||
|
||||
Vectors (coordinates)
|
||||
=====================
|
||||
|
||||
Standard usage
|
||||
--------------
|
||||
|
||||
( number number number )
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
(1.1 23.2 -15.5) is preferable to "1.1 23.2 -15.5" since the latter is a string which would be cast to a vector each time it is interpretted as a vector.
|
||||
|
||||
Note
|
||||
----
|
||||
|
||||
Due to a parsing deficiency, vectors like (-1 2 3) should be written ( -1 2 3). That is, a space must be between the "(" and the "-".
|
||||
|
||||
Targetname operator $
|
||||
=====================
|
||||
|
||||
The targetname operator $ converts a string to the object with targetname equal to that string.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
$my_targetname // object with targetname "my_targetname"
|
||||
|
||||
local.t = "my_targetname2"
|
||||
$(local.t) // object with targetname "my_targetname2"
|
||||
|
||||
Variables
|
||||
=========
|
||||
|
||||
Any object in the game can have variables in its variable list.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
game.a // variable a for game object
|
||||
|
||||
level.b // variable b for level object
|
||||
|
||||
local.c // variable c for local object
|
||||
|
||||
parm.d // variable d for parm object
|
||||
|
||||
self.e // variable e for self object
|
||||
|
||||
group.f // variable f for group object
|
||||
|
||||
$my_targetname.g // variable g for object with targetname "my_targetname"
|
||||
|
||||
self.enemy.health // for this to make sense self.enemy would be an object and self.enemy.health would be the health variable of this object
|
||||
|
||||
|
||||
Arrays
|
||||
======
|
||||
|
||||
Standard usage
|
||||
--------------
|
||||
|
||||
nonident_prim_expr [ expr ]
|
||||
|
||||
nonident_prim_expr is a non-identify primitive expression and expr is an arbitrary expression.
|
||||
nonident_prim_expr [ expr ] interprets nonident_prim_expr as an array and accesses the element at the position at which expr evaluates to.
|
||||
Indexing of arrays can be by integers or strings.
|
||||
|
||||
Types of arrays
|
||||
---------------
|
||||
|
||||
1) Constant array
|
||||
Created by expression of the form entry_1::entry_2::entry_3:: ... :: entry_n
|
||||
Constant arrays start their indexing at 1.
|
||||
Once created a constant array can not be changed but it can be read for its values.
|
||||
|
||||
2) Hash table array
|
||||
Unitialised entries evaluate to NIL. Any new entry can be set.
|
||||
|
||||
3) Targetname array
|
||||
Created by the $ targetname operator if more than one entity exists for that targetname.
|
||||
For example, $player is an array if more than one player is in the game.
|
||||
Targetname arrays start their indexing at 1.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
println local.n[10] // prints the element at position 10 of the local.n array
|
||||
|
||||
local.n[1][3] = 10 // sets the element at position (1, 3) of the local.n array equal to 10 (Hash table array)
|
||||
|
||||
local.n = hello::world::this::is::a::test::123 // consant array
|
||||
println local.n[1] // prints hello
|
||||
println local.n[7] // prints 123
|
||||
println local.n[8] // results in Script Error: const array index '8' out of range
|
||||
println local.n[hello] // results in Script Error: const array index '0' out of range
|
||||
|
||||
local.n[hello][world][5] = 23
|
||||
local.a = local.n[hello]
|
||||
local.b = local.a[world]
|
||||
println local.b[5] // prints 23
|
||||
|
||||
for (local.n = 1; local.n <= 10; local.n++)
|
||||
println game.stats[game.stats_name[local.n]] // print out element in game.stats array at position game.stats_name[local.n]
|
||||
|
||||
local.a = (a::b)::c
|
||||
println local.a[1][1] // prints a
|
||||
println local.a[1][2] // prints b
|
||||
println local.a[2] // prints c
|
||||
|
||||
|
||||
Vector Examples
|
||||
---------------
|
||||
|
||||
Vectors are accessed like arrays in the indices 0, 1, 2.
|
||||
A vector could be set like
|
||||
local.my_vector = (10 -2 60.1)
|
||||
|
||||
Then this vector could be accessed like:
|
||||
println local.n[2]
|
||||
which would print 60.1 to the console.
|
||||
|
||||
Example
|
||||
-------
|
||||
$player.origin += (5 6 7) // offset the player's origin by (5 6 7).
|
||||
|
||||
|
||||
Make Array Example
|
||||
------------------
|
||||
|
||||
local.Path1 = makeArray
|
||||
t1 300 10 200
|
||||
t2
|
||||
t3
|
||||
t4
|
||||
t5
|
||||
t6
|
||||
t7 NIL 10 200
|
||||
t8
|
||||
t9
|
||||
t10
|
||||
t11
|
||||
t12
|
||||
t13
|
||||
t14 0 10 200
|
||||
endArray
|
||||
|
||||
println local.Path1[1][2]
|
||||
println local.Path1[1][3]
|
||||
println local.Path1[1][4]
|
||||
println local.Path1[1][5]
|
||||
println local.Path1[14][1]
|
||||
println local.Path1[15][1]
|
||||
end
|
||||
|
||||
results in:
|
||||
|
||||
300
|
||||
10
|
||||
200
|
||||
NIL
|
||||
t14
|
||||
NIL
|
||||
|
||||
printed to console.
|
||||
|
||||
|
||||
Automatic casting
|
||||
=================
|
||||
|
||||
If a parameter in a statement is required to be of some type, then an automatic cast will be attempted.
|
||||
|
||||
Accessing characters of a string
|
||||
================================
|
||||
|
||||
Characters of a string are accessed by the [] array operator. Indexing starts at 0.
|
||||
For example, "abc"[2] evaluates to the string "c".
|
||||
There is no character type, so characters are just strings of length 1.
|
26
MOHAATools/docs/Shader Surface Types.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
In Game Surface Types
|
||||
|
||||
Note: The in game surface types are not the same as the search keywords material types.
|
||||
|
||||
The surface type for a shader is specified via a "surfaceparm type" line, where type is the surface type to use.
|
||||
|
||||
Example:
|
||||
surfaceparm wood
|
||||
|
||||
Note that only one surface type can be used at a time, and so only one should be specified in a shader.
|
||||
|
||||
Here's a list of each of the surface types that can be specified:
|
||||
wood - wooden surface
|
||||
metal - metal surface (like metal plating)
|
||||
stone - stone or rock surface
|
||||
dirt - dirt surface
|
||||
grill - metal grill surface
|
||||
grass - grass covered surface
|
||||
mud - muddy or squishy sounding surface
|
||||
puddle - water puddle surface
|
||||
glass - glass surface
|
||||
gravel - rocky gravel surface
|
||||
sand - sandy surface
|
||||
foliage - tree tops, bushes, or leaf covered surface
|
||||
snow - snow covered surface
|
||||
carpet - carpeted surface
|
7173
MOHAATools/docs/g_allclasses.html
Normal file
241
MOHAATools/docs/radiant.ini
Normal file
|
@ -0,0 +1,241 @@
|
|||
; Command mapping for QERadiant
|
||||
;
|
||||
; Syntax is as follows:
|
||||
; Command name=<keystroke>+modifier+modifier
|
||||
;
|
||||
; Use +ALT, +SHIFT, and +CTRL to modify the keys
|
||||
;
|
||||
; Example:
|
||||
; FileNew=N+CTRL
|
||||
;
|
||||
; Valid keys are:
|
||||
;
|
||||
; A-Z
|
||||
; 0-9
|
||||
; ESCAPE
|
||||
; TAB
|
||||
; SPACE
|
||||
; BACKSPACE
|
||||
; RETURN
|
||||
; INSERT
|
||||
; DELETE
|
||||
; HOME
|
||||
; END
|
||||
; PAGEUP
|
||||
; PAGEDOWN
|
||||
; UP
|
||||
; DOWN
|
||||
; LEFT
|
||||
; RIGHT
|
||||
; PLUS
|
||||
; MINUS
|
||||
; MULTIPLY
|
||||
; DIVIDE
|
||||
; COMMA
|
||||
; PERIOD
|
||||
; LBRACKET
|
||||
; RBRACKET
|
||||
; TILDE
|
||||
; BKSLASH
|
||||
; FWSLASH
|
||||
; SEMICOLON
|
||||
; QUOTE
|
||||
; F1
|
||||
; F2
|
||||
; F3
|
||||
; F4
|
||||
; F5
|
||||
; F6
|
||||
; F7
|
||||
; F8
|
||||
; F9
|
||||
; F10
|
||||
; F11
|
||||
; F12
|
||||
; NUMPAD0
|
||||
; NUMPAD1
|
||||
; NUMPAD2
|
||||
; NUMPAD3
|
||||
; NUMPAD4
|
||||
; NUMPAD5
|
||||
; NUMPAD6
|
||||
; NUMPAD7
|
||||
; NUMPAD8
|
||||
; NUMPAD9
|
||||
|
||||
|
||||
[Commands]
|
||||
;file menu
|
||||
FileNew=N+CTRL
|
||||
FileOpen=O+CTRL
|
||||
FileSave=S+CTRL
|
||||
;Exit=
|
||||
|
||||
; edit menu
|
||||
Undo=Z+CTRL
|
||||
Copy=C+CTRL
|
||||
Paste=V+CTRL
|
||||
;Preferences=
|
||||
|
||||
; view menu
|
||||
NextView=TAB+CTRL
|
||||
;ToggleCamera=
|
||||
;ToggleConsole=
|
||||
;ToggleEntity=
|
||||
;ToggleZ=
|
||||
CenterView=END
|
||||
UpFloor=PAGEUP
|
||||
DownFloor=PAGEDOWN
|
||||
ZoomOut=INSERT
|
||||
ZoomIn=DELETE
|
||||
ZZoomOut=INSERT+CTRL
|
||||
ZZoomIn=DELETE+CTRL
|
||||
FilterWorldBrushes=1+ALT
|
||||
FilterEntities=2+ALT
|
||||
FilterPatches=3+ALT
|
||||
FilterTranslucent4+ALT
|
||||
FilterLiquids=5+ALT
|
||||
FilterCaulk=6+ALT
|
||||
FilterClips=7+ALT
|
||||
FilterPaths=8+ALT
|
||||
FilterAINodes=9+ALT
|
||||
FilterLights=0+ALT
|
||||
FilterDetails=D+CTRL
|
||||
FilterHintsSkips=H+CTRL
|
||||
FilterModels=M+CTRL
|
||||
FilterAreaportals=P+CTRL
|
||||
FilterTriggers=T+CTRL
|
||||
CameraFromEntity=J+CTRL
|
||||
CameraToEntity=J+CTRL+SHIFT
|
||||
CameraGridMove=FWSLASH
|
||||
;ToggleCubicClip=
|
||||
CubicClipZoomOut=RBRACKET
|
||||
CubicClipZoomIn=LBRACKET
|
||||
ToggleSizePaint=Q+SHIFT
|
||||
CenterXYFromCamera=X+ALT
|
||||
; select menu
|
||||
DragEdges=E
|
||||
DragVertices=V
|
||||
CloneSelection=SPACE
|
||||
CloneSelectionExact=SPACE+CTRL
|
||||
UnSelectSelection=ESCAPE
|
||||
DeleteSelection=BACKSPACE
|
||||
SelectCompleteEntity=E+CTRL
|
||||
;SelectNextTarget=
|
||||
;SelectAllOfType=
|
||||
SelectSnapPointsToGrid=G+CTRL
|
||||
SelectClampPlanePoints=G+CTRL+SHIFT
|
||||
IncreaseLightmapDensity=RBRACKET+CTRL
|
||||
DecreaseLightmapDensity=LBRACKET+CTRL
|
||||
MouseRotate=R
|
||||
MouseScale=L
|
||||
;SelectScale=
|
||||
ToggleClipper=X
|
||||
FlipClip=TILDE
|
||||
ClipSelected=RETURN
|
||||
SplitSelected=RETURN+SHIFT
|
||||
EntityColor=K
|
||||
ConnectSelection=K+CTRL
|
||||
MakeDetail=D+CTRL+SHIFT
|
||||
MakeStructural=D+CTRL+ALT
|
||||
ToggleDetail=D+CTRL+ALT+SHIFT
|
||||
|
||||
; grid menu
|
||||
SetGrid1=1
|
||||
SetGrid2=2
|
||||
SetGrid4=3
|
||||
SetGrid8=4
|
||||
SetGrid16=5
|
||||
SetGrid32=6
|
||||
SetGrid64=7
|
||||
;ToggleGrid=
|
||||
;GridUp=
|
||||
;GridDown=
|
||||
|
||||
; texture menu
|
||||
ShowAllTextures=A+CTRL
|
||||
ShowInUseTextures=U
|
||||
SurfaceInspector=S
|
||||
CloseSurfDialog=ESCAPE+SHIFT
|
||||
PatchInspector=P
|
||||
TextureFit=F+CTRL
|
||||
ToggleMoveLock=M+SHIFT
|
||||
ToggleRotateLock=R+SHIFT
|
||||
|
||||
; misc menu
|
||||
NextLeakSpot=L+CTRL
|
||||
PrevLeakSpot=L+SHIFT
|
||||
|
||||
; brush menu
|
||||
Brush3Sided=3+CTRL
|
||||
Brush4Sided=4+CTRL
|
||||
Brush5Sided=5+CTRL
|
||||
Brush6Sided=6+CTRL
|
||||
Brush7Sided=7+CTRL
|
||||
Brush8Sided=8+CTRL
|
||||
Brush9Sided=9+CTRL
|
||||
|
||||
; curve menu
|
||||
InvertCurve=I+CTRL
|
||||
BendMode=B+CTRL
|
||||
PatchTAB=TAB
|
||||
TogglePatchOverlay=Y+CTRL
|
||||
;MakeOverlayPatch=
|
||||
;ClearPatchOverlays=
|
||||
;RedisperseRows=
|
||||
;RedisperseCols=
|
||||
ThickenPatch=T+CTRL
|
||||
;IncPatchColumn=
|
||||
;IncPatchRow=
|
||||
;DecPatchColumn=
|
||||
;DecPatchRow=
|
||||
IncreaseComplexity=RBRACKET+SHIFT
|
||||
DecreaseComplexity=LBRACKET+SHIFT
|
||||
|
||||
; commands not on the menu
|
||||
ViewEntityInfo=N
|
||||
ViewConsole=O
|
||||
ViewTextures=T
|
||||
ToggleCurveSelection=U+CTRL
|
||||
CameraForward=UP
|
||||
CameraBack=DOWN
|
||||
CameraLeft=LEFT
|
||||
CameraRight=RIGHT
|
||||
CameraUp=D
|
||||
CameraDown=C
|
||||
CameraAngleUp=A
|
||||
CameraAngleDown=Z
|
||||
CameraStrafeRight=PERIOD
|
||||
CameraStrafeLeft=COMMA
|
||||
CameraGridForward=UP+CTRL
|
||||
CameraGridBack=DOWN+CTRL
|
||||
;CameraGridUp=
|
||||
;CameraGridDown=
|
||||
CameraGridStrafeRight=PERIOD+CTRL
|
||||
CameraGridStrafeLeft=COMMA+CTRL
|
||||
CameraFastForward=UP+SHIFT
|
||||
CameraFastBack=DOWN+SHIFT
|
||||
CameraFastUp=D+SHIFT
|
||||
CameraFastDown=C+SHIFT
|
||||
CameraFastStrafeRight=PERIOD+SHIFT
|
||||
CameraFastStrafeLeft=COMMA+SHIFT
|
||||
IncreaseLightRadius=RBRACKET+ALT
|
||||
DecreaseLightRadius=LBRACKET+ALT
|
||||
;TexShiftLeft=
|
||||
;TexShiftRight=
|
||||
;TexShiftUp=
|
||||
;TexShiftDown=
|
||||
;TexScaleLeft=
|
||||
;TexScaleRight=
|
||||
;TexScaleUp=
|
||||
;TexScaleDown=
|
||||
TexRotateClock=PAGEDOWN+SHIFT
|
||||
TexRotateCounter=PAGEUP+SHIFT
|
||||
TexDecrement=SUBTRACT+SHIFT
|
||||
TexIncrement=ADD+SHIFT
|
||||
MoveSelectionDown=SUBTRACT
|
||||
MoveSelectionUp=ADD
|
||||
SelectNudgeLeft=LEFT+ALT
|
||||
SelectNudgeRight=RIGHT+ALT
|
||||
SelectNudgeUp=UP+ALT
|
||||
SelectNudgeDown=DOWN+ALT
|
4516
MOHAATools/docs/test_firefight.map
Normal file
59
MOHAATools/docs/texture keywords.txt
Normal file
|
@ -0,0 +1,59 @@
|
|||
Usage of texture:
|
||||
wall - vertical wall textures, natural or man-made
|
||||
floor - floor textures, either natural(ground) or man-made
|
||||
ceiling - anything that was made to be used as a ceiling
|
||||
roof - rooftop textures for buildings
|
||||
door - any door texture, including gates
|
||||
window - any window texture, including the window frames
|
||||
sky - sky's....DUHHHHHH ;)p
|
||||
signs - anything that has verbage on it, posters, signs
|
||||
road - road, paths and trails
|
||||
pipe - pipe textures, valves for pipes, also includes wires
|
||||
flat - anything that produces an even, non-bordered pattern in all directions
|
||||
special - made for brush objects ONLY (i.e. crates, boxcars)
|
||||
indoor - pictures, misc household items
|
||||
trim - all trim, including ibeams, endcaps, etc...
|
||||
masked - any texture that has alpha'd areas (like handrails, grates, etc...)
|
||||
damaged - anything that's been damaged (has blast marks, burns, etc...)
|
||||
utility - textures like nodraw, caulk, trigger, etc.... ONLY!
|
||||
terrain - only put this on textures made specifically for the terrain system
|
||||
panel - paneled type textures (like the library ones)
|
||||
light - light emmiting textures
|
||||
|
||||
Material types:
|
||||
metal - all types of metal
|
||||
rusted - rusted, weathered metal
|
||||
corrugated - corrugated materials
|
||||
gravel - gravel textures
|
||||
sand - sand textures
|
||||
rock - naturally occuring rock formations (walls, floors, etc...)
|
||||
stone - man-altered rocks like stone walls, cobblestone streets, also tile
|
||||
brick - brick textures
|
||||
concrete - concrete textures
|
||||
wood - wood textured
|
||||
plaster - plaster textures
|
||||
carpet - carpet and cloth type textures
|
||||
liquid - all liquids, including oceans, rivers, puddles, etc....
|
||||
river - river textures, or other flowing water types
|
||||
ocean - ocean textures
|
||||
glass - glass textures
|
||||
tudor - used in french/german towns with plaster sandwiched between wooden beams
|
||||
natural - non man-made materials
|
||||
dirt - all dirt textures, including transitional textures with dirt
|
||||
grass - all grass texture, including transitional textures with grass
|
||||
tree - textures relating to trees
|
||||
bush - textures relating to bushes
|
||||
folliage - vines, forest canopy, underbrush
|
||||
snow - if the texture has any snow or ice on it
|
||||
mud - if the texture is, or has mud on it
|
||||
|
||||
Level Reference: - meaning the texture was made for a particular mission
|
||||
m1 - North Africa
|
||||
m2 - D-Day, Normandy, Nebelwerfer
|
||||
m3 - OSS mission in France, blow train rails, manor house
|
||||
m4 - Brest France, Artillery missions, sniper hunt
|
||||
m5 - snow forrest, snow town/train station, schmertzen
|
||||
m6 - Hunt artillery, Ramagen
|
||||
m7 - U-Boats in Norway
|
||||
intro - opening cinematic
|
||||
ending - ending cinematic
|
BIN
MOHAATools/entdefs.pk3
Normal file
BIN
MOHAATools/mohradiant.exe
Normal file
BIN
MOHAATools/q3map.exe
Normal file
241
MOHAATools/radiant.ini
Normal file
|
@ -0,0 +1,241 @@
|
|||
; Command mapping for QERadiant
|
||||
;
|
||||
; Syntax is as follows:
|
||||
; Command name=<keystroke>+modifier+modifier
|
||||
;
|
||||
; Use +ALT, +SHIFT, and +CTRL to modify the keys
|
||||
;
|
||||
; Example:
|
||||
; FileNew=N+CTRL
|
||||
;
|
||||
; Valid keys are:
|
||||
;
|
||||
; A-Z
|
||||
; 0-9
|
||||
; ESCAPE
|
||||
; TAB
|
||||
; SPACE
|
||||
; BACKSPACE
|
||||
; RETURN
|
||||
; INSERT
|
||||
; DELETE
|
||||
; HOME
|
||||
; END
|
||||
; PAGEUP
|
||||
; PAGEDOWN
|
||||
; UP
|
||||
; DOWN
|
||||
; LEFT
|
||||
; RIGHT
|
||||
; PLUS
|
||||
; MINUS
|
||||
; MULTIPLY
|
||||
; DIVIDE
|
||||
; COMMA
|
||||
; PERIOD
|
||||
; LBRACKET
|
||||
; RBRACKET
|
||||
; TILDE
|
||||
; BKSLASH
|
||||
; FWSLASH
|
||||
; SEMICOLON
|
||||
; QUOTE
|
||||
; F1
|
||||
; F2
|
||||
; F3
|
||||
; F4
|
||||
; F5
|
||||
; F6
|
||||
; F7
|
||||
; F8
|
||||
; F9
|
||||
; F10
|
||||
; F11
|
||||
; F12
|
||||
; NUMPAD0
|
||||
; NUMPAD1
|
||||
; NUMPAD2
|
||||
; NUMPAD3
|
||||
; NUMPAD4
|
||||
; NUMPAD5
|
||||
; NUMPAD6
|
||||
; NUMPAD7
|
||||
; NUMPAD8
|
||||
; NUMPAD9
|
||||
|
||||
|
||||
[Commands]
|
||||
;file menu
|
||||
FileNew=N+CTRL
|
||||
FileOpen=O+CTRL
|
||||
FileSave=S+CTRL
|
||||
;Exit=
|
||||
|
||||
; edit menu
|
||||
Undo=Z+CTRL
|
||||
Copy=C+CTRL
|
||||
Paste=V+CTRL
|
||||
;Preferences=
|
||||
|
||||
; view menu
|
||||
NextView=TAB+CTRL
|
||||
;ToggleCamera=
|
||||
;ToggleConsole=
|
||||
;ToggleEntity=
|
||||
;ToggleZ=
|
||||
CenterView=END
|
||||
UpFloor=PAGEUP
|
||||
DownFloor=PAGEDOWN
|
||||
ZoomOut=INSERT
|
||||
ZoomIn=DELETE
|
||||
ZZoomOut=INSERT+CTRL
|
||||
ZZoomIn=DELETE+CTRL
|
||||
FilterWorldBrushes=1+ALT
|
||||
FilterEntities=2+ALT
|
||||
FilterPatches=3+ALT
|
||||
FilterTranslucent4+ALT
|
||||
FilterLiquids=5+ALT
|
||||
FilterCaulk=6+ALT
|
||||
FilterClips=7+ALT
|
||||
FilterPaths=8+ALT
|
||||
FilterAINodes=9+ALT
|
||||
FilterLights=0+ALT
|
||||
FilterDetails=D+CTRL
|
||||
FilterHintsSkips=H+CTRL
|
||||
FilterModels=M+CTRL
|
||||
FilterAreaportals=P+CTRL
|
||||
FilterTriggers=T+CTRL
|
||||
CameraFromEntity=J+CTRL
|
||||
CameraToEntity=J+CTRL+SHIFT
|
||||
CameraGridMove=FWSLASH
|
||||
;ToggleCubicClip=
|
||||
CubicClipZoomOut=RBRACKET
|
||||
CubicClipZoomIn=LBRACKET
|
||||
ToggleSizePaint=Q+SHIFT
|
||||
CenterXYFromCamera=X+ALT
|
||||
; select menu
|
||||
DragEdges=E
|
||||
DragVertices=V
|
||||
CloneSelection=SPACE
|
||||
CloneSelectionExact=SPACE+CTRL
|
||||
UnSelectSelection=ESCAPE
|
||||
DeleteSelection=BACKSPACE
|
||||
SelectCompleteEntity=E+CTRL
|
||||
;SelectNextTarget=
|
||||
;SelectAllOfType=
|
||||
SelectSnapPointsToGrid=G+CTRL
|
||||
SelectClampPlanePoints=G+CTRL+SHIFT
|
||||
IncreaseLightmapDensity=RBRACKET+CTRL
|
||||
DecreaseLightmapDensity=LBRACKET+CTRL
|
||||
MouseRotate=R
|
||||
MouseScale=L
|
||||
;SelectScale=
|
||||
ToggleClipper=X
|
||||
FlipClip=TILDE
|
||||
ClipSelected=RETURN
|
||||
SplitSelected=RETURN+SHIFT
|
||||
EntityColor=K
|
||||
ConnectSelection=K+CTRL
|
||||
MakeDetail=D+CTRL+SHIFT
|
||||
MakeStructural=D+CTRL+ALT
|
||||
ToggleDetail=D+CTRL+ALT+SHIFT
|
||||
|
||||
; grid menu
|
||||
SetGrid1=1
|
||||
SetGrid2=2
|
||||
SetGrid4=3
|
||||
SetGrid8=4
|
||||
SetGrid16=5
|
||||
SetGrid32=6
|
||||
SetGrid64=7
|
||||
;ToggleGrid=
|
||||
;GridUp=
|
||||
;GridDown=
|
||||
|
||||
; texture menu
|
||||
ShowAllTextures=A+CTRL
|
||||
ShowInUseTextures=U
|
||||
SurfaceInspector=S
|
||||
CloseSurfDialog=ESCAPE+SHIFT
|
||||
PatchInspector=P
|
||||
TextureFit=F+CTRL
|
||||
ToggleMoveLock=M+SHIFT
|
||||
ToggleRotateLock=R+SHIFT
|
||||
|
||||
; misc menu
|
||||
NextLeakSpot=L+CTRL
|
||||
PrevLeakSpot=L+SHIFT
|
||||
|
||||
; brush menu
|
||||
Brush3Sided=3+CTRL
|
||||
Brush4Sided=4+CTRL
|
||||
Brush5Sided=5+CTRL
|
||||
Brush6Sided=6+CTRL
|
||||
Brush7Sided=7+CTRL
|
||||
Brush8Sided=8+CTRL
|
||||
Brush9Sided=9+CTRL
|
||||
|
||||
; curve menu
|
||||
InvertCurve=I+CTRL
|
||||
BendMode=B+CTRL
|
||||
PatchTAB=TAB
|
||||
TogglePatchOverlay=Y+CTRL
|
||||
;MakeOverlayPatch=
|
||||
;ClearPatchOverlays=
|
||||
;RedisperseRows=
|
||||
;RedisperseCols=
|
||||
ThickenPatch=T+CTRL
|
||||
;IncPatchColumn=
|
||||
;IncPatchRow=
|
||||
;DecPatchColumn=
|
||||
;DecPatchRow=
|
||||
IncreaseComplexity=RBRACKET+SHIFT
|
||||
DecreaseComplexity=LBRACKET+SHIFT
|
||||
|
||||
; commands not on the menu
|
||||
ViewEntityInfo=N
|
||||
ViewConsole=O
|
||||
ViewTextures=T
|
||||
ToggleCurveSelection=U+CTRL
|
||||
CameraForward=UP
|
||||
CameraBack=DOWN
|
||||
CameraLeft=LEFT
|
||||
CameraRight=RIGHT
|
||||
CameraUp=D
|
||||
CameraDown=C
|
||||
CameraAngleUp=A
|
||||
CameraAngleDown=Z
|
||||
CameraStrafeRight=PERIOD
|
||||
CameraStrafeLeft=COMMA
|
||||
CameraGridForward=UP+CTRL
|
||||
CameraGridBack=DOWN+CTRL
|
||||
;CameraGridUp=
|
||||
;CameraGridDown=
|
||||
CameraGridStrafeRight=PERIOD+CTRL
|
||||
CameraGridStrafeLeft=COMMA+CTRL
|
||||
CameraFastForward=UP+SHIFT
|
||||
CameraFastBack=DOWN+SHIFT
|
||||
CameraFastUp=D+SHIFT
|
||||
CameraFastDown=C+SHIFT
|
||||
CameraFastStrafeRight=PERIOD+SHIFT
|
||||
CameraFastStrafeLeft=COMMA+SHIFT
|
||||
IncreaseLightRadius=RBRACKET+ALT
|
||||
DecreaseLightRadius=LBRACKET+ALT
|
||||
;TexShiftLeft=
|
||||
;TexShiftRight=
|
||||
;TexShiftUp=
|
||||
;TexShiftDown=
|
||||
;TexScaleLeft=
|
||||
;TexScaleRight=
|
||||
;TexScaleUp=
|
||||
;TexScaleDown=
|
||||
TexRotateClock=PAGEDOWN+SHIFT
|
||||
TexRotateCounter=PAGEUP+SHIFT
|
||||
TexDecrement=SUBTRACT+SHIFT
|
||||
TexIncrement=ADD+SHIFT
|
||||
MoveSelectionDown=SUBTRACT
|
||||
MoveSelectionUp=ADD
|
||||
SelectNudgeLeft=LEFT+ALT
|
||||
SelectNudgeRight=RIGHT+ALT
|
||||
SelectNudgeUp=UP+ALT
|
||||
SelectNudgeDown=DOWN+ALT
|
21
MOHAATools/radiant_ai_cfg/aipreset.cfg
Normal file
|
@ -0,0 +1,21 @@
|
|||
// this defines all the preset key-pair values in the ai dialog in radiant
|
||||
// the syntax is "rootmenu_submenu_menuitem", followed by a "{", a list of key-pairs, and a "}"
|
||||
|
||||
german_wehrmacht_officer
|
||||
{
|
||||
targetname "enemy"
|
||||
health 120
|
||||
}
|
||||
|
||||
german_wehrmacht_soldier
|
||||
{
|
||||
targetname "enemy"
|
||||
health 80
|
||||
}
|
||||
|
||||
allied_captain
|
||||
{
|
||||
targetname "friend"
|
||||
health 100
|
||||
accuracy 100
|
||||
}
|
94209
m4l0/m4l0.map
Normal file
343
m4l0/m4l0.scr
Normal file
|
@ -0,0 +1,343 @@
|
|||
// FARM HOUSE
|
||||
// ARCHITECTURE: TODD/AC
|
||||
// SCRIPTING: AC/MACKEY/Z
|
||||
|
||||
exec global/ai.scr
|
||||
exec global/loadout.scr maps/m4l0.scr
|
||||
exec global/exploder.scr
|
||||
|
||||
main:
|
||||
level waittill prespawn
|
||||
local.tempstring = "0.25 0.15 0.1"
|
||||
setcvar cg_playermodel 0
|
||||
level.farplane = 25000
|
||||
level.farplanecolor = local.tempstring
|
||||
|
||||
fadeout 0.1 0 0 0 1
|
||||
|
||||
huddraw_alpha 100 0
|
||||
|
||||
exec global/bomber.scr
|
||||
exec global/ambient.scr m4l0
|
||||
|
||||
// exec global/weather.scr 3500 (0.333 0.333 0.359)
|
||||
exec global/friendly.scr
|
||||
exec global/door_locked.scr
|
||||
|
||||
level waittill spawn
|
||||
fadein 2 0 0 0 1
|
||||
wait 2
|
||||
|
||||
|
||||
thread dogs
|
||||
println "disabling AI"
|
||||
level.frienddebug = 1
|
||||
|
||||
level.friendly1 exec global/disable_ai.scr
|
||||
level.friendly2 exec global/disable_ai.scr
|
||||
level.friendly3 exec global/disable_ai.scr
|
||||
level.friendly4 exec global/disable_ai.scr
|
||||
|
||||
// level.friendly1 scale 5
|
||||
level.friendly1.health = 755
|
||||
level.friendly2.health = 750
|
||||
level.friendly3.health = 750
|
||||
level.friendly4.health = 750
|
||||
|
||||
for (local.i=1;local.i<level.enemys+1;local.i++)
|
||||
{
|
||||
println local.i
|
||||
// level.enemy[local.i] exec global/disable_ai.scr
|
||||
}
|
||||
|
||||
|
||||
|
||||
level.script = "maps/m4l0.scr"
|
||||
|
||||
level.flyplane = 1
|
||||
|
||||
|
||||
|
||||
waitthread global/objectives.scr::add_objectives 1 2 "Find allied soldiers." $obj1.origin
|
||||
waitthread global/objectives.scr::add_objectives 2 2 "Take secret German documents." $obj2.origin
|
||||
waitthread global/objectives.scr::add_objectives 3 1 "Exfiltrate." $obj3.origin
|
||||
waitthread global/objectives.scr::current_objectives 1
|
||||
|
||||
// $player.origin = ( 5192.00 1168.00 502.00 )
|
||||
end
|
||||
|
||||
|
||||
dogspawn local.origin local.set:
|
||||
local.ent = spawn animal/german_shepherd
|
||||
local.ent model "animal/german_shepherd.tik"
|
||||
local.ent.origin = local.origin
|
||||
local.ent.targetname = "dogspawn"
|
||||
local.ent.set = local.set
|
||||
end
|
||||
|
||||
killself:
|
||||
wait 1
|
||||
self delete
|
||||
end
|
||||
|
||||
dogs:
|
||||
level.spawneddogs = 0
|
||||
local.origin1 = (1064 -3576 136)
|
||||
local.origin2 = ( -544 720 280)
|
||||
local.origin3 = ( -3040 6448 -16)
|
||||
thread dogspawn local.origin1 1
|
||||
thread dogspawn local.origin2 2
|
||||
thread dogspawn local.origin3 3
|
||||
local.doghealth = 25
|
||||
|
||||
for (local.i=1;local.i<$dogspawn.size + 1;local.i++)
|
||||
{
|
||||
level.dogs = 1
|
||||
if ($dogspawn[local.i].set != NIL)
|
||||
{
|
||||
local.ent = spawn script_origin
|
||||
local.ent.origin = $dogspawn[local.i].origin
|
||||
local.ent.set = $dogspawn[local.i].set
|
||||
level.dogspawner[local.i] = local.ent
|
||||
$dogspawn[local.i] thread killself
|
||||
}
|
||||
else
|
||||
println ("dogspawn at " + $dogspawn[local.i].origin + " has no #set")
|
||||
}
|
||||
|
||||
|
||||
local.count = 0
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (level.spawneddogs < 1)
|
||||
{
|
||||
if (local.count == 0)
|
||||
{
|
||||
if (vector_length ($player.origin - local.origin1) > 3000)
|
||||
{
|
||||
local.doghealth += 5
|
||||
thread global/ai.scr::spawndog 1 local.doghealth
|
||||
}
|
||||
else
|
||||
local.count++
|
||||
}
|
||||
else
|
||||
if (local.count == 1)
|
||||
{
|
||||
if (vector_length ($player.origin - local.origin2) > 3000)
|
||||
{
|
||||
local.doghealth += 5
|
||||
thread global/ai.scr::spawndog 2 local.doghealth
|
||||
}
|
||||
else
|
||||
local.count++
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vector_length ($player.origin - local.origin3) > 3000)
|
||||
{
|
||||
local.doghealth += 5
|
||||
thread global/ai.scr::spawndog 3 local.doghealth
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
wait 1
|
||||
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// Enables AI: Hear gun fire in the distance//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
trigger1:
|
||||
|
||||
for (local.i=1;local.i<level.enemys+1;local.i++)
|
||||
{
|
||||
println local.i
|
||||
level.enemy[local.i] exec global/enable_ai.scr
|
||||
}
|
||||
|
||||
level.friendly1 exec global/enable_ai.scr
|
||||
level.friendly2 exec global/enable_ai.scr
|
||||
level.friendly3 exec global/enable_ai.scr
|
||||
level.friendly4 exec global/enable_ai.scr
|
||||
|
||||
level.friendly1.friendtype = 5
|
||||
level.friendly2.friendtype = 0
|
||||
level.friendly3.friendtype = 0
|
||||
level.friendly4.friendtype = 0
|
||||
|
||||
|
||||
level.friendly1 thread global/friendly.scr::friendlythink
|
||||
level.friendly2 thread global/friendly.scr::friendlythink
|
||||
level.friendly3 thread global/friendly.scr::friendlythink
|
||||
level.friendly4 thread global/friendly.scr::friendlythink
|
||||
|
||||
level.friendly1.mins = 50
|
||||
level.friendly1.maxs = 150
|
||||
level.friendly2.mins = 50
|
||||
level.friendly2.maxs = 150
|
||||
level.friendly3.mins = 50
|
||||
level.friendly3.maxs = 150
|
||||
level.friendly4.mins = 50
|
||||
level.friendly4.maxs = 150
|
||||
|
||||
|
||||
level.friendly3.destination = level.friendly1
|
||||
level.friendly4.destination = level.friendly2
|
||||
|
||||
// level.friendly3.dist = 400
|
||||
// level.friendly4.dist = 300
|
||||
|
||||
thread enemythread1
|
||||
end
|
||||
////////////////////////////////////////////////////////////
|
||||
// Changes friendly max and min dist//
|
||||
///////////////////////////////////////////////////////////
|
||||
trigger2:
|
||||
|
||||
|
||||
level.friendly1 maxdist 2000
|
||||
level.friendly1 mindist 128
|
||||
level.friendly2 maxdist 2000
|
||||
level.friendly2 mindist 128
|
||||
level.friendly3 maxdist 2000
|
||||
level.friendly3 mindist 128
|
||||
level.friendly4 maxdist 2000
|
||||
level.friendly4 mindist 128
|
||||
|
||||
end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
//Scene 2: Follow the Yellow Brick Road//
|
||||
//Spawn enemies in on left hill side, run to destinations//
|
||||
//////////////////////////////////////////////////////////
|
||||
|
||||
charge1:
|
||||
|
||||
//thread global/ai.scr:: 11
|
||||
|
||||
end
|
||||
|
||||
charge2:
|
||||
|
||||
//thread global/ai.scr:: 12
|
||||
|
||||
end
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
//Scene 3: The House//
|
||||
//Kill all enemies in the house, door opens//
|
||||
/////////////////////////////////////////////////////////
|
||||
|
||||
enemythread1:
|
||||
waitthread global/objectives.scr::add_objectives 1 3 "Find allied soldiers." $obj1.origin
|
||||
// waitthread global/objectives.scr::current_objectives 2
|
||||
// waitthread global/objectives.scr::add_objectives 2 2 "Take secret German documents." $obj2.origin
|
||||
// trigger $obj1_door
|
||||
// trigger $nco1
|
||||
// trigger $nco2
|
||||
end
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//Scene 4: German siege//
|
||||
//Enemyspawners spawn in once papers have been taken//
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
objective2:
|
||||
waitthread global/objectives.scr::add_objectives 2 3 "Take secret German documents." $obj2.origin
|
||||
waitthread global/objectives.scr::current_objectives 3
|
||||
waitthread global/objectives.scr::add_objectives 3 2 "Exfiltrate." $obj3.origin
|
||||
|
||||
if (isalive level.friendly2)
|
||||
level.friendly2.friendtype = 1
|
||||
|
||||
if (isalive level.friendly3)
|
||||
level.friendly3.friendtype = 1
|
||||
|
||||
if (isalive level.friendly4)
|
||||
level.friendly4.friendtype = 1
|
||||
|
||||
$documents remove
|
||||
$level_end_so remove
|
||||
$level_end_trigger remove
|
||||
// thread global/ai.scr::spawn 3
|
||||
// thread global/ai.scr::spawn 4 4
|
||||
// thread global/ai.scr::spawn 5 8
|
||||
// thread global/ai.scr::spawn 6 12
|
||||
end
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//Scene 5: Open Field Battle//
|
||||
//Enemyspawners, make way to end of level//
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
objective3:
|
||||
waitthread global/objectives.scr::add_objectives 3 3 "Exfiltrate" $obj3.origin
|
||||
exec global/missioncomplete.scr m4l0
|
||||
end
|
||||
|
||||
mass_ending1:
|
||||
|
||||
// thread global/ai.scr::spawn 7
|
||||
end
|
||||
|
||||
mass_ending2:
|
||||
|
||||
// thread global/ai.scr::spawn 8 5
|
||||
|
||||
end
|
||||
|
||||
mass_ending3:
|
||||
|
||||
// thread global/ai.scr::spawn 9 10
|
||||
|
||||
end
|
||||
|
||||
mass_ending4:
|
||||
|
||||
// thread global/ai.scr::spawn 10 15
|
||||
|
||||
end
|
||||
|
||||
level_end_trigger:
|
||||
iprintln "You have not completed all of your Objectives."
|
||||
end
|
||||
|
||||
t:
|
||||
println ">>>>>>>>>>>>>"
|
||||
for (local.i=1;local.i<level.friendlys+1;local.i++)
|
||||
{
|
||||
// if (level.friendly[local.i].destination.targetname == "friendly")
|
||||
// println ("friendly" + level.friendly[local.i].fnum + " goes to " + level.friendly[local.i].destination + "/" + level.friendly[local.i].destination.fnum)
|
||||
// else
|
||||
// println ("friendly" + level.friendly[local.i].fnum + " goes to player")
|
||||
|
||||
// if (level.friendly[local.i].destination.fnum == NIL)
|
||||
// println ("friendly" + level.friendly[local.i].fnum + " : Type " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].areapast + " : Destination Node " + level.friendly[local.i].destination.set)
|
||||
// else
|
||||
// println ("friendly" + level.friendly[local.i].fnum + " : Type " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].areapast + " : Destination Entity " + level.friendly[local.i].destination.fnum)
|
||||
|
||||
// println level.playernodeset
|
||||
if (level.friendly[local.i].destination != NIL)
|
||||
if (level.friendly[local.i].destination.set == NIL)
|
||||
println ("friendly" + level.friendly[local.i].fnum + " : Type " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].areapast + " : destination " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].destination )
|
||||
else
|
||||
println ("friendly" + level.friendly[local.i].fnum + " : Type " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].areapast + " : destination " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].destination.set )
|
||||
|
||||
}
|
||||
println "<<<<<<<<<<<<<"
|
||||
wait 4
|
||||
goto t
|
||||
|
||||
end
|
||||
|
||||
|
||||
// Exploder for showin off exploders
|
||||
kablam:
|
||||
thread global/exploder.scr::explode 5
|
||||
end
|