### Setup GtkRadiant Dependencies with SCons Source: https://icculus.org/gtkradiant/documentation/windows_compile_guide Executes the SCons build target 'setup' to download game install paks, library dependencies, and prepare the project for compilation. ```bash $ cd radiant-work\GtkRadiant $ scons.bat target=setup ``` -------------------------------- ### Match Template Example Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html Example of a match template for MTCONTEXT_INITIALTEAMCHAT, showing fixed strings, variables, and type flags. ```c "( ", NETNAME, "): ", ADDRESSEE, " camp at ", KEYAREA, " for ", TIME = (MSG_CAMP, $evalint(ST_ADDRESSED|ST_NEARITEM|ST_TIME)); ``` -------------------------------- ### Q3A Skin File Structure Example Source: https://icculus.org/gtkradiant/documentation/New_Teams_For_Q3TA This example illustrates the required file structure for a Q3A skin, emphasizing the need for both a base skin and a layered skin within a specific directory. Ensure both files are present for the model to function correctly. ```text tm_kreechurs.pk3 Name    Modified       Size    Ratio   Packed Path kreechurs.team 5/9/2001 12:01 PM      1,968   61%     770 kreechurs_readme.txt   5/9/2001       3,162   59%     1,286   animation.cfg 5/161/2001 4:32 PM     1,173   59%     478         models\players\characters\BoB\ default_flame1.jpg     513/2000 7:19 PM       5,972   10%     5,385        models\players\characters\BoB\ default_flame2.jpg     51312000 7:19 PM       5,984   10%     5,359        models\players\characters\BoB\ default_flame3.jpg     5/3/2000 7:20 PM       5,623   11%     5,014        models\players\characters\BoB\ default_flame4.jpg     51312000 7:20 PM       5,284   12%     4,658        models\players\characters\BoB\ default_flame5.jpg     513/2000 7:21 PM       5,231   10%     4,691         models\players\characters\BoB\ default_flame6.jpg     5/3/2000 7:21 PM       5,318   11%     4,735         models\players\characters\BoB\ qefault_flame7.jpg     5/3/2000 7:21 PM       5,807   11%     5,197         models\players\characters\BoB\ default_flame8.jpg     5/3/2000 7:22 PM       6,114   10%     5,510         models\players\characters\BoB\ default_flameball.jpg 5/3/2000 7:22 PM       3,010   26%     2,216         models\players\characters\BoB\ defaultjets.tga        611412000 2:55 AM      49,196 37%     31,075         models\players\characters\BoB\ icon_blue.tga 6/13/2000 8:15 PM      16,402 58%     6,845         models\players\characters\BoB\ icon_red.tga   6/13/2000 8:15 PM      16,402 61%     6,327         models\players\characters\BoB\ lower.md3      3/3/2001 12:11 PM      593,972        33%     398,956         models\players\characters\BoB\ lower_1.md3    3/3/2001 12:11 PM      593,972 33%     398,956         models\players\characters\BoB\ lower_2.md3    3/3/2001 12.11 PM      593,972        33%     398,956         models\players\characters\BoB\ upper.md3      3/3/2001 12:11 PM      721,388        33%     483,599         models\players\characters\BoB\ upper_1.md3    3/3/2001 12:11 PM      721,388        33%     483,599         models\players\characters\BoB\ upper_2.md3    3/3/2001 12:11 PM      721,388        33%     483,599         models\players\characters\BoB\ icon_default.tga       6/13/2000 8:15 PM      16,402 61%     6,328         models\players\ characters\BoB\ blue.tga       10/23/2000 7: 17 PM    196,626        41%     115,756         models\players\characters\BoB\kreechurs\ lower_blue.skin        4/6/2001 11 :20 AM     203     52%     98         models\players\characters\BoB\kreechurs\ lower_default.skin     4/6/200 111:25AM       204     50%     102         models\players\characters\BoB\kreechurs\ lower_red.skin 4/6/2001 11:20AM       204     50%     102         models\players\characters\BoB\kreechurs\ red.tga        10/23/2000 7:17 PM     196,626        43%     111,607         models\players\characters\BoB\kreechurs\ upper_blue.skin        41612001 11:20AM       281     58%     118         models\players\characters\BoB\kreechurs\ upper_default.skin     416/2001 11:25AM       282     58%     119         models\players\characters\BoB\kreechurs\ upper_red.skin 4/6/2001 11 :20 AM     282     58%     119         models\players\characters\BoB\kreechurs\ blue_h.tga     6/14/2000 10:26 AM     196,652        56%     86,873         models\players\heads\Kreecha\ default_fc.tga 5/29/2000 10:07 AM     3,090   90%     323         models\players\heads\Kreecha\ default_visor.tga      10/23/2000 7:57 PM     196,626        96%     7,656         models\players\heads\Kreecha\ Kreecha.md3    3/3/2001 12:12 PM      5,868   46%     3,171         models\players\heads\Kreecha\ Kreecha_1.md3 3/3/2001 12:12 PM      5,868   46%     3,171         models\players\heads\Kreecha\ Kreecha_2.md3 3/3/2001 12:12 PM      5,868   46%     3,171         models\players\heads\Kreecha\ head_blue.skin 3/12/2001 4:58 PM      56      7%      52         models\players\heads\Kreecha\ head_default.skin      3/1212001 4:57 PM      53      8%      49         models\players\heads\Kreecha\ head_red.skin 3/12/2001 4:58 PM      55      7%      51         models\players\heads\Kreecha\ icon_blue.tga 6/13/2000 8:15 PM      16,402 58%     6,846        models\players\heads\Kreecha\ ``` -------------------------------- ### Example of q3map_lightimage usage Source: https://icculus.org/gtkradiant/documentation/Q3AShader_Manual/ch03/pg3_1.htm This example demonstrates how to use q3map_lightimage to emit light from a shader, sourcing color from a specified texture. It also includes qer_editorimage and q3map_surfacelight. ```q3shader textures/eerie/ironcrosslt2_10000 { q3map_lightimagetextures/gothic_light/ironcrosslt2.blend.tga // this TGA is the source for the color of the blended light qer_editorimagetextures/gothic_light/ironcrosslt2.tga //base TGA (used because the shader is used with several // different light values q3map_surfacelight 10000 //emitted light value of10,000 { map $lightmap //source texture is affected by the lightmap rgbGen identity // this command handles the overbright bits created by "sunlight" // in the game } { maptextures/gothic_light/ironcrosslt2.tga blendFunc filter rgbGen identity } { maptextures/gothic_light/ironcrosslt2.blend.tga blendFunc add } } ``` -------------------------------- ### Quake 3 Arena Voice Script Example Source: https://icculus.org/gtkradiant/documentation/New_Teams_For_Q3TA This is a complete example of a .voice file. Each block defines a category of voice command (e.g., 'getflag', 'yes') followed by curly braces. Inside the braces, each line specifies a sound file path and the corresponding text that will be displayed on screen. Ensure proper syntax to avoid game errors. ```quake_voice_script //voice file starts here getflag { sound/voices/male5/or_01.wav "Get the flag" sound/voices/male5/or_02.wav "Secure the flag" } offense { sound/voices/male5/or_03.wav "You're on offense" } defend { sound/voices/male5/or_04.wav "Stay Home" sound/voices/male5/or_05.wav "Guard the base" sound/voices/male5/or_07.wav "You're on defense" } defendflag { sound/voices/male5/or_06.wav "Guard our flag" } patrol { sound/voices/male5/or_08.wav "Patrol" sound/voices/male5/or_09.wav "Take point" sound/voices/male5/or_10.wav "Go on patrol" } followme { sound/voices/male5/or_11.wav "Follow me" sound/voices/male5/or_12.wav "Cover me" sound/voices/male5/or_13.wav "Watch my back" } yes { sound/voices/male5/re_01.wav "Yessir" sound/voices/male5/re_02.wav "Yes ma'am" sound/voices/male5/re_03.wav "Aye, aye, sir" sound/voices/male5/re_04.wav "Aye, aye, ma'am" sound/voices/male5/re_05.wav "Affirmative" sound/voices/male5/re_06.wav "Copy" sound/voices/male5/re_07.wav "Roger" } no { sound/voices/male5/re_08.wav "No sir" sound/voices/male5/re_09.wav "No ma'am" sound/voices/male5/re_10.wav "Negative" sound/voices/male5/re_11.wav "I'm busy" } ihaveflag { sound/voices/male5/gs_01.wav "I'm coming in hot!" sound/voices/male5/gs_02.wav "I've secured the flag!" sound/voices/male5/gs_03.wav "I've got the flag!" sound/voices/male5/gs_04.wav "Bringing home the bacon!" } baseattack { sound/voices/male5/gs_05.wav "We're taking enemy fire!" sound/voices/male5/gs_06.wav "Security breach!" sound/voices/male5/gs_07.wav "Our base is under attack." } enemyhasflag { sound/voices/male5/gs_08.wav "Our flag is gone!" sound/voices/male5/gs_09.wav "They've got our flag!" sound/voices/male5/gs_10.wav "Enemy has secured our flag!" } ongetflag { sound/voices/male5/ps_03.wav "Getting the flag..." } onoffense { sound/voices/male5/ps_01.wav "I'm taking offense" sound/voices/male5/ps_02.wav "I'm going in..." } ondefense { sound/voices/male5/ps_04.wav "I'll stay home" sound/voices/male5/ps_05.wav "Securing base" sound/voices/male5/ps_06.wav "Guarding the base now" } onpatrol { sound/voices/male5/ps_07.wav "On patrol..." sound/voices/male5/ps_08.wav "Patroling..." sound/voices/male5/ps_09.wav "I'll take point" } startleader { sound/voices/male5/ps_10.wav "I'm the leader" ``` -------------------------------- ### Example Item Specification: Heavy Armor Source: https://icculus.org/gtkradiant/documentation/bot_manual/itemspecs.html An example demonstrating the fields and values for the 'Heavy Armor' item specification. ```c iteminfo "item_armor_body" { name | | "Heavy Armor" model | | "models/powerups/armor/armor_red.md3" modelindex | | MODELINDEX_ARMORBODY type | | ITEM_ARMOR index | | INVENTORY_ARMOR respawntime | | 20 mins | | {-15,-15,-15} maxs | | {15,15,15} } ``` -------------------------------- ### Animation Configuration File Example Source: https://icculus.org/gtkradiant/documentation/Model_Manual/model_manual.htm This is an example of an animation configuration file used to define frame sequences, looping, and frame rates for character animations. It is placed in the character's directory and can be reloaded in-game by using 'vid_restart'. ```cfg //////////////////////////////////////////////////////////////////////////////// // animation config file sex m headoffset 0 0 0 footsteps normal // first frame, num frames, looping frames, frames per second 0 30 0 25 // BOTH_DEATH1 29 1 0 25 // BOTH_DEAD1 30 30 0 25 // BOTH_DEATH2 59 1 0 25 // BOTH_DEAD2 60 30 0 25 // BOTH_DEATH3 89 1 0 25 // BOTH_DEAD3 90 40 0 20 // TORSO_GESTURE 130 6 0 15 // TORSO_ATTACK (MUST NOT CHANGE -- hand animation is synced to this) 136 6 0 15 // TORSO_ATTACK2 (MUST NOT CHANGE -- hand animation is synced to this) 142 5 0 20 // TORSO_DROP (MUST NOT CHANGE -- hand animation is synced to this) 147 4 0 20 // TORSO_RAISE (MUST NOT CHANGE -- hand animation is synced to this) 151 1 0 15 // TORSO_STAND 152 1 0 15 // TORSO_STAND2 153 8 8 20 // LEGS_WALKCR 161 12 12 20 // LEGS_WALK 173 9 9 18 // LEGS_RUN 182 10 10 20 // LEGS_BACK 192 10 10 15 // LEGS_SWIM 202 8 0 15 // LEGS_JUMP 210 1 0 15 // LEGS_LAND 211 8 0 15 // LEGS_JUMPB 219 1 0 15 // LEGS_LANDB 220 10 10 15 // LEGS_IDLE 230 10 10 15 // LEGS_IDLECR 240 7 7 15 // LEGS_TURN ////////////////////////////////////////////////////////////////// ``` -------------------------------- ### Setup Radiant Dependencies with SCons Source: https://icculus.org/gtkradiant/documentation/windows_compile_guide_vb2010/radiant-compile-win7-vs2010.html Run this command in the Radiant directory to download necessary dependencies using SCons. ```bash C:\Python27\Scripts\scons.bat target=setup ``` -------------------------------- ### Synonym Context Example Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html Example of a synonym context definition for CONTEXT_NEARBYITEM, showing weighted synonyms. ```c CONTEXT_NEARBYITEM { [("Heavy Armor", 0), ("red armor", 0), ("Heavy Armour", 0), ("red armour", 0), ("ra", 0)] } ``` -------------------------------- ### Vertex Lighting Replacement Shader Example Source: https://icculus.org/gtkradiant/documentation/Terrain_Manual/pages/terrain_related_worldspawn_features.html This is an example of a shader definition used to replace standard terrain shaders when the map is run in Quake 3 Arena's vertex lighting mode. It includes parameters for surface properties and lighting. ```shader // ************************************************* // * // * // * Vertex Lighting Replacement Shaders // * // * // ************************************************* textures/terrain/vxmpterra2 { surfaceparm nolightmap q3map_novertexshadows q3map_forcesunlight { map textures/stone/pjrock10b_2.tga rgbGen vertex tcmod scale 0.125 0.125 } } ``` -------------------------------- ### Normal Synonym Context Example Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html Example of synonym contexts for CONTEXT_NORMAL, demonstrating high-probability synonyms for common phrases. ```c CONTEXT_NORMAL { [("do not", 1), ("don't", 1), ("dont", 1)] [("checkpoint", 1), ("check-point", 1), ("cp", 1)] } ``` -------------------------------- ### Match Template with Alternating Strings Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html Example demonstrating how the '|' token in match templates allows for matching multiple alternative strings. ```c "you"|"we", " are ", 0, " don't you think?" ``` -------------------------------- ### Example: Creating a Volume with Treacle Source: https://icculus.org/gtkradiant/documentation/Compile_Manual/q3map.html Outlines the steps to add and use a custom content flag 'treacle'. This involves modifying 'custinfoparms.txt', writing a shader script, compiling with '-custinfoparms', and updating game source files. ```text treacle 0x4000 ``` -------------------------------- ### Console Message Logging Source: https://icculus.org/gtkradiant/documentation/q3radiant_manual/ch12/pg12_1.htm This setup configures keybinds to toggle console message logging on and off, controlling developer output and log file verbosity. Replace 'your key' with your desired key. ```q3config bind "_your key_ " vstr dbg set dbg vstr debug_1 set developer 0 set logfile 0 set debug_1 "set dbg vstr debug_0;echo DEBUGMODE ON;developer 1;logfile 2" set debug_0 "set dbg vstr debug_1;echo DEBUGMODE OFF;developer 0;logfile 0" ``` -------------------------------- ### MPTerra2 Root Shader Example (mpterra2_1) Source: https://icculus.org/gtkradiant/documentation/Terrain_Manual/pages/the_meta_shader.html Defines another root shader for mpterra2, similar to mpterra2_0 but using a different base stone texture. ```shader textures/terrain/mpterra2_1 { surfaceparm nolightmap q3map_novertexshadows q3map_forcesunlight { map textures/stone/pjrock12b_2.tga rgbGen vertex tcmod scale 0.1 0.1 } { map textures/skies2/clouds.tga blendfunc filter detail tcmod scale 0.01 0.01 tcMod scroll -0.05 0.05 tcmod transform 1 0 1 1 1 1 } } ``` -------------------------------- ### Environment Box Shader Example Source: https://icculus.org/gtkradiant/documentation/q3radiant_manual/appndx/appn_d.htm A sample shader definition for creating an environment box (skybox) in Quake 3. It specifies texture paths, surface properties, sun lighting, and sky parameters. ```glsl //******************************************************* //* Sample environment box shader //******************************************************* textures/[mymapname]/[skyname]01 { qer_editorimage textures/[mymapname]/[skyname] surfaceparm noimpact surfaceparm nolightmap surfaceparm sky q3map_sun 0.933333 0.541176 03.13725 60 160 11 q3map_surfacelight 100 //lots of diffuse light skyparms - 512 - sky env/[skyname] // the following stuff lays clouds over the skybox map which you may not want with a city skyline //{ // map textures/skies/dimclouds.tga // // tcMod turb 0 0.001 0.5 0.001 // tcMod scale 3 3 // tcMod scroll 0.01 0.01 // blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR // depthWrite //} //{ // map textures/skies/pjbasesky.tga // blendfunc GL_ONE GL_ONE // tcMod scroll -0.01 -0.01 // tcMod scale 5 5 //} } ``` -------------------------------- ### Using clampTexCoords for a Stretching Texture Source: https://icculus.org/gtkradiant/documentation/Q3AShader_Manual/ch05/pg5_1.htm This example demonstrates how to use 'clampmap' and 'tcMod stretch' to control a texture that stretches. It ensures the texture does not tile and manages its appearance when distorted. ```q3a_shader textures/sfx/metalbridge06_bounce { //q3map_surfacelight 2000 surfaceparm nodamage q3map_lightimage textures/sfx/jumppadsmall.tga q3map_surfacelight 400 { map textures/sfx/metalbridge06_bounce.tga rgbGen identity } { map $lightmap rgbGen identity blendfunc gl_dst_color gl_zero } { map textures/sfx/bouncepad01b_layer1.tga blendfunc gl_one gl_one rgbGen wave sin .5 .5 0 1.5 } { clampmap textures/sfx/jumppadsmall.tga blendfunc gl_one gl_one tcMod stretch sin 1.2 .8 0 1.5 rgbGen wave square .5 .5 .25 1.5 } // END } ``` -------------------------------- ### Adding Surface Flag Define in Game Source Source: https://icculus.org/gtkradiant/documentation/Terrain_Manual/pages/new_or_revised_q3map_shader_comm.html Example of adding a new surface flag definition (SURF_GRASS) to the game's source file (e.g., game/surfaceflags.h). ```c #define SURF_GRASS 0x80000 ``` -------------------------------- ### MPTerra2 Root Shader Example (mpterra2_0) Source: https://icculus.org/gtkradiant/documentation/Terrain_Manual/pages/the_meta_shader.html Defines a root shader for the mpterra2 terrain, including base texture, vertex lighting, and a detail cloud texture with scrolling and scaling. ```shader textures/terrain/mpterra2_0 { surfaceparm nolightmap q3map_novertexshadows q3map_forcesunlight { map textures/stone/pjrock9b_2.tga rgbGen vertex tcmod scale 0.125 0.125 } { map textures/skies2/clouds.tga blendfunc filter detail tcmod scale 0.01 0.01 tcMod scroll -0.05 0.05 tcmod transform 1 0 1 1 1 1 } } ``` -------------------------------- ### Reply Chat Example with 'hate you' Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html An example of a reply chat that can be used when a player says 'I hate you'. It is not used if the player says 'I don't hate you' due to the '!' prefix on 'not'. ```plaintext ["hate you", !"not"] = 7 { "why do you hate me"; "there's no reason for you to hate me"; } ``` -------------------------------- ### Basic Quake III Arena Shader Syntax Source: https://icculus.org/gtkradiant/documentation/Q3AShader_Manual/ch01/pg1_1.htm Demonstrates the fundamental syntax for a single shader process in Quake III Arena, including deformVertexes, tessSize, and map directives. ```shader textures/liquids/lava d{ deformVertexes wave sin 0 3 0 0.1 tessSize 64 { map textures/common/lava.tga } } ``` -------------------------------- ### Use '-light' Algorithm for Surfaces Source: https://icculus.org/gtkradiant/documentation/Compile_Manual/q3map.html Applies the '-light' lighting algorithm to all surfaces unless a shader explicitly uses 'q3map_vlight'. ```command-line q3map -tracelight ``` -------------------------------- ### Reply Chat Example: Allowed Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html A simple reply chat that is always allowed. ```plaintext ["allowed"] = 7 { "everything is allowed."; } ``` -------------------------------- ### Sample .vc Script for Voice File Path Source: https://icculus.org/gtkradiant/documentation/New_Teams_For_Q3TA This is a sample .vc script file. The content specifies the path to a voice file for a bot. Ensure the voice file path is correctly nested within the scripts directory. ```plaintext scripts/newcharacter.voice ``` -------------------------------- ### Reply Chat Example: Not Allowed Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html A reply chat with a lower priority that is used when 'not allowed' is mentioned. ```plaintext ["not allowed"] = 5 { "why isn't that allowed?"; } ``` -------------------------------- ### q3map Lighting Calculation Switches Source: https://icculus.org/gtkradiant/documentation/Compile_Manual/q3map.html Options for controlling the lighting compilation process, including radiosity, light tracing, and sampling methods. ```bash q3map -light -threads -bounce [NEW] -bouncegrid [NEW] -fast [NEW] -fastgrid [NEW] -fastbounce [NEW] -cheap [NEW] -cheapgrid [NEW] -area -point -notrace -patchshadows -novertex -nogrid -smooth [NEW] -extra -extrawide ``` -------------------------------- ### Reply Chat Example for Female Bots Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html This reply chat can only be used by female bots when a player expresses 'love you'. ```plaintext ["love you", !"not", &female] = 6 { "am I the only woman you love?"; "I love you to"; } ``` -------------------------------- ### Example: Making Footsteps on Grass Sounds Source: https://icculus.org/gtkradiant/documentation/Compile_Manual/q3map.html Details the process for adding and utilizing a custom surface flag 'grass'. This includes updating 'custinfoparms.txt', creating a grass shader, compiling with '-custinfoparms', and modifying game source files. ```text grass 0x80000 ``` -------------------------------- ### Toggle Multitexture and Restart Video Source: https://icculus.org/gtkradiant/documentation/q3radiant_manual/ch12/pg12_1.htm Binds a key to toggle the r_ext_multitexture setting and restart the video. This is useful for applying texture changes and ensuring the game re-initializes correctly. ```q3config bind "_your key_ " "toggle r_ext_multitexture;vid_restart" ``` -------------------------------- ### Weapon Specification Example Source: https://icculus.org/gtkradiant/documentation/bot_manual/weapspecs.html Defines the 'Rocket Launcher' weapon, linking it to the 'rocket' projectile and specifying its firing speed. ```c weaponinfo { name | | "Rocket Launcher" --- | number | | WEAPONINDEX_ROCKET_LAUNCHER projectile | | "rocket" numprojectiles | | 1 speed | | 900 } ``` -------------------------------- ### Random String Set Definition Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html Example of defining a set of random strings named 'cars' which includes references to other sets. ```c ferrari = {"F40"; "F50"} BMW = {"BMW Z3"; "BMW Z8"} cars = {ferrari; BMW; "F1 Mc Laren"} ``` -------------------------------- ### q3map Compilation with Custom Info Params Source: https://icculus.org/gtkradiant/documentation/Terrain_Manual/pages/new_or_revised_q3map_shader_comm.html Command-line parameter for q3map to include custom information parameters from 'custinfoparms.txt'. ```bash q3map -custinfoparms ``` -------------------------------- ### Match Template with Empty String Fallback Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html Example showing the use of an empty string with the '|' token as a fallback match in a template. ```c "I am the ", "team "|"", "leader" ``` -------------------------------- ### Dump Prefab Files Source: https://icculus.org/gtkradiant/documentation/Compile_Manual/q3map.html Dumps prefab files when used with radiosity for each bounce. ```command-line q3map -dump ``` -------------------------------- ### MPTerra2 Blend Shader Example (mpterra2_0to1) Source: https://icculus.org/gtkradiant/documentation/Terrain_Manual/pages/the_meta_shader.html Defines a blend shader to transition between mpterra2_0 and mpterra2_1, incorporating textures from both and a cloud layer. ```shader textures/terrain/mpterra2_0to1 { surfaceparm nolightmap q3map_novertexshadows q3map_forcesunlight { map textures/stone/pjrock9b_2.tga rgbGen vertex alphaGen vertex tcmod scale 0.125 0.125 } { map textures/stone/pjrock12b_2.tga tcmod scale 0.1 0.1 rgbGen vertex alphaGen vertex blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA } { map textures/skies2/clouds.tga blendfunc filter detail tcmod scale 0.01 0.01 tcMod scroll -0.05 0.05 tcmod transform 1 0 1 1 1 1 } } ``` -------------------------------- ### Creating a Jump Pad Source: https://icculus.org/gtkradiant/documentation/q3radiant_manual/appndx/appn_d.htm This describes the process of creating a jump pad using trigger_push and target_position entities. Ensure the target_position is higher than the trigger_push for proper functionality. ```text 1. Make the brush that contains your pulsing pad texture. It can be set in the floor or raised up on separate brush. 2. Make a trigger_push brush entity that is smaller than the pad (the id triggers are usually octagonal). 3. Create a target_position entity and move it to the height and location you want. The target position is both the aiming point for the trigger_push and the highest point (apex) of the assisted jump. 4. Hi-light the trigger first, then the target_position (order is important). 5. Press CTRL + k to connect the two entities (pointing the first at the second). 6. Compile and test it. The first compile needs to be a full or fast vis. If you need to make adjustments to the target_position, you only need to use an entities compile. ``` -------------------------------- ### Reply Chat Example for Specific Bot Names Source: https://icculus.org/gtkradiant/documentation/bot_manual/chatsystem.html This reply chat is restricted to bots named 'Grunt' or 'Stripe' and is triggered by the word 'camper'. ```plaintext ["camper", !"not", &<"Grunt", "Stripe">] = 6 { "I love camping"; "I'm the king of all camp grounds"; "camping with the rocket launcher is what Graeme told me to do"; "so?.. you got a problem with campers?"; } ``` -------------------------------- ### Create Working Directory Source: https://icculus.org/gtkradiant/documentation/windows_compile_guide Creates a directory named 'radiant-work' in the user's home directory to store GtkRadiant source code and build files. ```bash $ mkdir radiant-work ``` -------------------------------- ### MPTerra2 Blend Shader Example (mpterra2_1to2) Source: https://icculus.org/gtkradiant/documentation/Terrain_Manual/pages/the_meta_shader.html Defines a blend shader for transitioning between mpterra2_1 and mpterra2_2, utilizing their stone textures and a cloud layer. ```shader textures/terrain/mpterra2_1to2 { surfaceparm nolightmap q3map_novertexshadows q3map_forcesunlight { map textures/stone/pjrock12b_2.tga rgbGen vertex alphaGen vertex tcmod scale 0.1 0.1 } { map textures/stone/pjrock10b_2.tga tcmod scale 0.05 0.05 rgbGen vertex alphaGen vertex blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA } { map textures/skies2/clouds.tga blendfunc filter detail tcmod scale 0.01 0.01 tcMod scroll -0.05 0.05 tcmod transform 1 0 1 1 1 1 } } ``` -------------------------------- ### Projectile Specification Example Source: https://icculus.org/gtkradiant/documentation/bot_manual/weapspecs.html Defines a 'rocket' projectile with specific damage, radius, and damage types. Note the use of $evalint for combining damage types. ```c projectileinfo { name | | "rocket" --- | damage | | 100 radius | | 120 }; damagetype | | $evalint(DAMAGETYPE_IMPACT|DAMAGETYPE_RADIAL) } ```