🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.games.quake2
Article #283230

Re: Binding weapons

#283230
From: McG.
Date: Sun, 17 Jun 2007 02:22
1213 lines
58434 bytes
This was goooooooood Awebb!!!!!
McG.

"Awebb" <masterfreak@arcor.de> wrote in message 
news:463631ad$0$23142$9b4e6d93@newsspool1.arcor-online.net...
> OscartheGrouch schrieb:
>> "Profil1" <jay@neostrada.pl> wrote in message
>> news:f0vv66$llb$1@nemesis.news.tpi.pl...
>>> Is there an option in the game to do so, or do I have to use some 
>>> commands
>>> for it? If command are needed couls somebody paste me an example?
>>>
>>> Cheerio
>>>
>>>
>>
>> bind r "use rocket launcher" etc.
>>
>>
>
> This is the best tut i know:
>
>
> --------------------------------------------------------------------------
>
>
> Quake 2 Console Tutorial
> Abstract
>
> Author: JakFrost
> Email: jakfrost(at)planetquake(dot)com
> Web Site: http://www.planetquake.com/console/
> Created: January 23, 1998
> Last Modified: May 18, 2000
> Based On: Quake 2 v3.12
> Source: http://www.planetquake.com/console/tutorials/quake_2.html
>
> Copyright (C) 1998-2000 JakFrost, All Rights Reserved
>
> This document is a tutorial for the Quake 2 console. It describes all
> aspects of the console; such as the syntax, the usage of commands and
> variables, the creation of aliases and bindings, and script. There is a
> great amount of information contained in this tutorial which should help
> anybody who is willing to read it and learn from it.
> Table Of Contents
> Introduction
> Foreword
> Document Conventions
> Definitions
> The Console
> Introduction
> Syntax
> Special Characters
> Dollar Sign
> Double-Quote
> Double-Slash
> Newline
> Semicolon
> Space
> Console Commands
> Introduction
> Commands
> Action
> Function
> Operation
> Variables
> Bitmap
> Command Line Parameter
> Register
> String
> Toggle
> Bindings
> Introduction
> Single Command
> Multiple Commands
> Aliases
> Introduction
> Simple Aliases
> Advanced Aliases
> Action
> Toggle
> Scripts
> Introduction
> The Outside
> Idea
> Execution
> The Format
> The Inside
> Bindings
> Aliases
> Settings
> Documentation
> Afterword
> Version Information
> Legal
> Copyright
> License
> Trademarks and Servicemarks
> Warranty Disclaimer
> 1. Introduction
> 1.1. Foreword
>
> I have decided to write this document to better educate the Quake 2
> players about the console and its powerful use. The console is very easy
> to use and very easy to understand. Now all of those Quake 2 players who
> have wondered about aliases and bindings will have a clear picture of
> what everything means. After reading and understanding this document the
> console will lose its mystic value and will become just another part of
> Quake 2.
>
> This is actually my second console tutorial. I have written one before
> this for the Quake console. That tutorial did explain a lot of things
> about the console but it did not go into such detail as this tutorial
> does. That tutorial was like a beta version of this tutorial to tell you
> the truth. By the way, the Quake console is almost identical to the
> Quake 2 console, so even though this is a Quake 2 tutorial and I'm using
> Quake 2 specific commands all of the same ideas can be applied to Quake.
>
> I would like to recommend that while reading this document you take a
> look at the Quake 2 Console Commands document which is available at this
> site. That document will become an invaluable tool for you in the
> understanding of the console. All of the console commands and console
> variables are described in that document. With this tutorial and that
> document you will be making aliases and scripts in no time.
>
> I hope you enjoy this tutorial and that it increases your knowledge of
> Quake 2 in some way. Enjoy...
> 1.2. Document Conventions
>
> Right now I would like to touch-up on a couple of conventions that I use
> though this document. It is very important to understand exactly what
> these conventions. Don't worry these conventions are very similar to
> other conventions used in technical documents, so if you ever read a
> technical document before you will feel right at home. In case you are
> wondering, I took these conventions right out of the definitions that
> are given for them in the HTML Recommendations for the specific markup 
> tags.
> Code
> I use the convention of code to designate the names of commands or words
> which appear exactly in the console. Anything that is designated as code
> stays the same, which is the opposite of variable which would change.
> For example in the syntax of a command the word "command" is designated
> as the code since it stays the same throughout the console. The example
> of the syntax for a command would be 'command (parameter)'.
> Keyboard
> I will sometimes use the convention of keyboard input to designate the
> name of a key that should be pressed. For example I would say something
> like "...and bind that command to the pgup key." I will usually name the
> key the same as it is named by Quake 2.
> Quotation
> If I want to show an example inside a paragraph I will use single-quotes
> ( ' ) to quote the whole example. For example, I would quote the example
> such as 'command (parameter)' to show syntax information, or 'bind
> mouse1 +attack' to show the exact string of code. The reason why I quote
> whole lines of code is to make it easier to differentiate between the
> text in a paragraph and the example itself.
> Sample
> I will usually use the convention of sample code to show off whole
> strings of commands which are used in the console. When something is
> designated as a sample, it should be used exactly as shown. An example
> of a sample code would be 'bind mouse1 +attack'. This is somewhat
> similar to my use of the code convention but they are not exactly the 
> same.
> Variable
> Variables are parameters which change from one use of a command to
> another. The command stays the same, it's the variables that change. For
> example in the example of the syntax of a command the word "parameter"
> is designated as a variable since it can be anything, a word, a number,
> etc. The example of the syntax for a command would be 'command 
> (parameter)'.
>
> Throughout this document you might see examples of code. Most of the
> code that I show in this tutorial is taken right from my very own Quake
> 2 script. You will probably see a lot of familiar things along the way.
> I chose to use examples from my script because it is better to use
> examples from the real world than some made up ones. Soon after you will
> learn a lot of things from my script and will become familiar with the
> way that I play. Consider this an extra benefit like a extra tutorial on
> a comfortable playing style. :)
> 1.3. Definitions
>
> Below are a couple of confusing terms which I decided to describe. This
> is just a precaution to make sure that I don't mislead anybody with
> weird words that I make up and use.
> command
> A command is bridge to a function which is carried out by the game. The
> player uses commands to interact with the game through the console.
> console command
> A console command is a regular command which takes one or more
> parameters. A console command is just a name of the group of commands to
> go along with the name "console variables".
> console variable
> A console variable is a command which holds an alphanumeric value. I
> might refer to console variables as commands, since they act the same as
> console commands.
> executable string
> An executable string is a single line of code which is executed by the
> console. The ending of an executable string is a carrige-return or a
> newline which is produced by the ENTER key. An executable string might
> be composed of a command, its parameters, and special characters.
> parameter
> A parameter is a value which is used with a command to execute a
> specific function. Some commands accept parameters which change the
> function of the command to carry out a different task.
> 2. The Console
> 2.1. Introduction
>
> The console is a wonderful idea for a game as complex as Quake 2. It
> allows the player to have a lot of control and more chances to customize
> the game to his liking. It's no wonder that the console was implemented
> in this game; it would be quite hard to make a menu system to access all
> the different features that this game offers. The console is a very
> powerful tool and is very useful to the player.
>
> First off, the easiest way to access the console is to hit the ~ (tilde)
> key which is located to the left of the 1 key on and above the TAB key
> on the keyboard. It is very easy to access the console, and you can do
> it even if you are inside the game playing on a map. All of the features
> of Quake 2 are accessed and set with the console or with the menu if you
> don't know the appropriate commands.
>
> It is also possible to access the console from outside the game by using
> the operating system command line to pass commands to the console before
> the game is loaded up. The way that this works is that you specify
> parameters after the name of the executable file to run Quake 2. The
> name of the console command has to be preceded by the + character to
> indicate that it is a console command. An example of this would look
> like 'quake2.exe +exec myscript.cfg +map base1'.
> 2.2. Syntax
>
> First, what "syntax" means is how commands and parameters are put
> together to form acceptable strings. There are certain rules to follow
> when putting in commands together with their parameters for the console
> to understand. The syntax for the Quake 2 console is very simple so
> don't worry about remembering a lot of weird things. It's all logical.
>
> Any executable string for the console is made up of a couple of parts
> usually. The main part is the command. Sometimes the command is
> accompanied by parameters for that command. Sometimes there are even
> multiple commands in an executable string. A simple executable string
> might be 'alias' which is just composed of the single alias command. A
> more complex string might be 'alias foomsg "say I am the Foo Master!"',
> which is composed of the alias command and it's parameters. Another
> example of a complex executable string might be 'set name JakFrost;set
> skin male/howitzer', which is composed of two instances of the set
> command and some parameters.
>
> As you notice each of the above mentioned examples of executable strings
> always has the command. Sometimes the command has parameters, and
> sometimes there are more than one command on a single line. Basically
> you can divide an executable string into commands, parameters, and
> special characters. As you noticed the second example used quotes in the
> executable string, and the third example used the semicolon ( ; ). These
> are special characters to the console and they have special meanings.
> The sections below will describe exactly what these characters do and
> how to use them.
> 2.3. Special Characters
> 2.3.1 Dollar Sign
>
> The dollar sign is the $ character. This character is special in a sense
> that it allows for the substitution of a variable name preceded with the
> dollar sign character into the value which is held by that variable. The
> power of this is that you can display the values that variables hold and
> you can even copy the values from one variable to another, and back.
> This allows for an alias to copy the original value of a variable into a
> backup variable, change the value of the original variable to execute
> the alias, and after it is finished the original value from the backup
> variable is copied into the original variable. This way, the alias will
> return the variable to its original state.
>
> Before this feature was implemented, all of the aliases which had to
> modify variables would change the variable to a preset value that was
> stored in the alias. This was problematic in that the player had to
> change every value in the alias so that those values would be put into
> the variables after the alias finished executing. If a player set a
> variable to a setting which was different than the one that appeared in
> the alias, then after the alias was executed the changes to that
> variable would be lost because the alias would set the variable into the
> preset value stored inside the alias.
>
> Also, I would like to mention something about creating backup variables
> to store values from the original variables. I personally create a
> backup variable with the same name as the original variable, except that
> I append the character - to the end of the backup variable. So, if I
> made a backup variable of the name variable, the backup variable would
> be name-. By using this technique you can be sure of what the backup
> variable is holding. I think that this is a much better solution, than
> creating backup variables with extraneous names like temp, backup, or a.
> This is just a little thing I picked up while learning about Linux. :)
> echo $name
> echo $sensitivity
>
> In the examples above, the echo command displays the value of the name
> and sensitivity variables.
> set myname $name
>
> In the example above the myname variable is created with the copied
> value from the name variable.
> set coolname "$name is the Foo Master"
> echo $name is the Foo Master
>
> In the example above the coolname variable is created which takes the
> value from the name variable and appends the string " is the Foo Master"
> to it. In my case the value of the coolname variable would be "JakFrost
> is the Foo Master". The second example just displays the string
> "JakFrost is the Foo Master". These examples show that the displayed
> values can appear inside strings or strings can be appended to the values.
> // Rocket Jump Quake 2 Alias - Custom Version
> alias +rj "rj1;rj2"
> alias rj1 "set cl_pitchspeed- $cl_pitchspeed;cl_pitchspeed
> 100000;wait;+lookdown;wait;-lookdown;set cl_pitchspeed $cl_pitchspeed-"
> alias rj2 "set hand- $hand;hand 2;+moveup;+attack;echo Rocket Jump"
> alias -rj "-attack;-moveup;set hand $hand-;centerview"
>
> The example above is a version of the Rocket Jump alias which works no
> matter what is the setting of the hand variable. The alias above will
> save the value in a backup hand- variable, it will then set the value of
> hand to 0 so that the rocket is fired from the center of the body. After
> the alias is finished, the value from the backup hand- variable will be
> restored into the hand variable. This allows the player to hold the gun
> in any hand that he wishes, and still make this alias work. The same
> principle is used with setting the value of the cl_pitchspeed variable
> to allow instantaneous look down speed.
> 2.3.2. Double-Quote
>
> The double-quote is the " character. This pair of special characters is
> used to reverse the function of the special characters, space, and
> semicolon. Unlike the space and the semicolon which are used to
> separate, the double-quote is used to joining. Usually when a command
> accepts only a single parameter but you must include a space or a
> semicolon in that parameter you would use double-quotes to enclose that
> string to form a single parameter. Examples of such commands are the
> alias and name commands which will be discussed later.
> name "The Foo Master!"
>
> In the example above the double-quotes were used to pass the name which
> is composed of three words separated by spaces as a single parameter to
> the name command.
> alias +grapple "use grapple;+attack;echo Quick Grapple"
>
> In the example above the double-quotes were used to make the string of
> commands into a single parameter which will be used by the alias
> command. As you notice, the string contains spaces and semicolons.
> 2.3.3. Double-Slash
>
> The double-slash is the // character pair. This pair of characters
> signifies a comment. It is usually found inside script files where
> authors chose to leave comments on their work. Anything after the pair
> of characters is ignored as a comment and is not executed. It is
> possible to include a comment on the same line that an executable string
> is on but I recommend that comments should appear on a separate line
> above the code to be commented. It is also possible for the comments to
> appear on the same line as the executable string but I don't recommend
> that practice.
> // Quick Grapple Quake 2 Alias
> alias +grapple "use grapple;+attack;echo Quick Grapple"
> alias -grapple "-attack"
>
> In the example above, the double-slash was used to comment on the name
> of the alias that was used and also on the name of the author for that
> alias. This is one of the aliases which I use in my script.
> // These are the user settings that I use when I play the game.
> set msg 1
> set name JakFrost
> set skin male/howitzer
>
> In the example above, the double-slash was used to make a comment on
> what the commands below are used for.
> 2.3.4. Newline
>
> The newline character is the carrige-return character and is invisible.
> It is invoked by the ENTER key. The importance of this character is that
> is separates commands, just like the semicolon separates commands. Even
> though this might seems like a very basic concept, I felt that it was
> important to mention this.
> set m_pitch -0.022
> set sensitivity 17
>
> In the example above the two instances of the set command are separated
> by the invisible newline character. If the newline character was
> missing, the commands would not execute properly.
> 2.3.5. Semicolon
>
> The semicolon is the ; character. The semicolon character is a very
> important one. It allows the grouping of multiple commands on a single
> line. This is a great feature which is very useful when making complex
> aliases or bindings. The semicolon will become a very useful feature
> once you start creating complex scripts.
> alias +sz "set fov- $fov;fov 20;m_pitch -0.004;m_yaw 0.004"
> alias -sz "set fov $fov-;m_pitch -0.022;m_yaw 0.022"
>
> In the example above, you will notice that the semicolon was used to
> separate three different commands inside the Sniper Zoom alias.
> 2.3.6. Space
>
> The space is the invisible separator character. The space character is
> another separation character. This character is similar to the newline
> character but instead the space character separates commands from their
> parameters and parameters from other parameters. The space character is
> also used to separate words when using strings for parameters.
> set cl_run 1
>
> In the example above, you will notice that the set command was separated
> from its first parameter by a space, and the first parameter was
> separated from the second parameter by another space.
> 3. Console Commands
> 3.1. Introduction
>
> Console commands are the commands which are used to carry out certain
> tasks with the console. There are two major classes of console commands.
> The first class is the commands which are basically all the left over
> commands from the variables class. The variables class is second major
> class of console commands. The difference between a console command and
> a console variable is that a console command performs a certain task
> where the console variable is only used to display or store a value.
>
> There are also sub-classes for console commands and variables. These
> sub-classes are all extraneous to the game, which means that I just use
> them to describe the syntax for a specific command or a variable and
> that the game doesn't know anything about these different classes. I
> felt that it was necessary to classify commands since it is much easier
> to explain the usage of a command or a variable if you group the
> appropriate commands and variables. Some of these classes might be
> merged but I felt that it was necessary to have these very separate
> groups to avoid any confusion.
>
> A lot of this information was taken directly from the Quake 2 Console
> Commands document which has a section devoted to grouping and
> identifying the different classes of commands and variables.
> 3.2. Commands
> 3.2.1. Action
>
> An action command performs an action when the +action part of the
> command is executed and terminates that action when the -action part of
> the command is executed. When an action command is bound to a key, the
> +action is executed when the key is pressed, and the -action is executed
> when the key is released. The default syntax for an action is +command
> or -command.
>
> It is possible for you to make your own action commands by creating two
> aliases, one starting with a + and another one with -. The beauty of
> action commands is that their use is only momentary, so you can create
> special aliases or functions which only work for as long as a key is
> held down.
> 3.2.2. Function
>
> A function command performs a single function based on the parameters
> included for that operation. A function usually has extra parameters and
> they are usually necessary for the proper execution. The default syntax
> for a function is 'command (parameter)'. All function commands have
> their own unique syntax.
> 3.2.3. Operation
>
> An operation command performs a single function in the game every time
> the command is executed. It does not use any parameters. The default
> syntax for an operation is 'command'.
>
> An operation is exactly the same as a function, except that it does not
> accept any parameters at all. I felt that it was important to make this
> group because it is important to know if a command accepts parameters or
> not. I would be pretty funny if somebody was trying to pass parameters
> onto an operation command and then get angry that it's not working
> because he didn't know that it does not accept any parameters.
> 3.3. Variables
> 3.3.1. Bitmap
>
> A bitmap variable is able to toggle more than one feature by using a
> single value. The way that a bitmap variable works is that a value is
> assigned to each bit. Each bit is like a toggle, only being able to be
> set to an off and on value. To turn on the desired features all the
> values representing individual bits are added together. The default
> syntax for a bitmap variable is 'variable (value)'. Allowable values for
> a bitmap variable include integers only.
>
> A bitmap variable might be the toughest one to explain of all of them
> since it involves a little knowledge of programming and the binary base
> system. I'll try to do my best to explain this, since it's important to
> understand it.
>
> Ok, let's take the variable dmflags for example. As you might or might
> not know, it allows the setting of all the different features for
> deathmatch, such as if weapons disappear and respawn, if health is
> available on the level, or if weapons have infinite ammo. So, one
> command is able to set all of these features independently of each other
> with only one value.
>
> I really don't want to get into the binary part of the explanation here,
> so I'm going to avoid that topic. For example, let's say that you wanted
> to create a total blood bath game and wanted to use the settings of: no
> health, no powerups, weapons stay, spawn farthest, force respawn, no
> armor, and infinite ammo. You would set a value of 11783 because 1 + 2 +
> 4 + 512 + 1024 + 2048 + 8192 = 11783. The reason for this value is that
> each setting represents a value, and to achieve all of the settings you
> have to add all the values. If for example you wanted to create another
> game of deathmatch which is not as bloody you might choose the settings
> of: weapons stay, instant powerups, and spawn farthest. You would set
> the value of 532 because 4 + 16 + 512 = 532.
>
> Below is a list of the settings to the dmflags variable. This list will
> make it easier to understand the explanation.
>
> 1 - No Health.
> 2 - No Powerups.
> 4 - Weapons Stay.
> 8 - No Falling Damage.
> 16 - Instant Powerups.
> 32 - Same Map.
> 64 - Teams by Skin.
> 128 - Teams by Model.
> 512 - Spawn Farthest.
> 1024 - Force Respawn.
> 2048 - No Armor.
> 4096 - Allow Exit.
> 8192 - Infinite Ammo.
>
> The reason why all of this works is because each of the values
> represents a single bit. When you use a setting with that value in it,
> that bit is turned on. The bit representation for the value of 532 is
> 1000010100. If you notice, for that value I chose to only turn on 3
> settings thus you have three instances of the number one. I chose to use
> the setting of "weapons stay" which has the value of 4 and from the list
> above is the third one from the top. If you notice the third bit from
> the right is turned on. The same rule applies to the other two settings.
> By now, I hope that you have seen that each bit has a specific value
> associated with it. For example the value of 8 determines the value of
> bit number 4.
> 3.3.2. Command Line Parameters
>
> A command line parameter is a variable which is set from a command line.
> The reason for setting a variable from the command line is that some
> variables are write protected once the game starts and cannot be
> changed. Command line parameters are usually used to enable or disable a
> handful of features before loading up the game. The default syntax is
> "quake2.exe +set variable (value)".
>
> This variable has replaced the old use of the command line parameters
> which started with a dash -parameter. This is an advantage because you
> can check inside the game if a command line parameter has been accepted
> correctly or not. The old use of command line parameters was limited in
> that the user had to guess if the value has been accepted or not.
> 3.3.3. Register
>
> A register variable is able to store any type of numeric information.
> Register variables are used for numeric data which does not have clearly
> defined boundaries. The default syntax for a register variable is
> "variable (value)". Allowable values for a register variable include
> integers, fractions, and negative values.
>
> This group of variables is similar to the command group of functions in
> that all the left over variables are put into the group. Registers
> usually hold numeric information, sometimes positive numbers, negative
> numbers, whole number, or fractions.
> 3.3.4. String
>
> A string variable is able to store any type of text information. The
> default syntax for a string variable is 'variable "(text)"'. Allowable
> values for a string variable include all numbers and all text characters.
>
> The reason for string variables is to allow the storing of human
> readable information, such as names, addresses, or other things. It
> should be clear to see why string variables exist in the game.
> 3.3.5. Toggle
>
> A toggle variable is able to turn a feature on, off, or set to an
> alternative setting. All the values for a toggle are integers, usually
> only 0 and 1. Sometimes there are alternative settings for a toggle, in
> which case subsequent numbers are used. The default syntax is 'variable
> (value)'. Allowable values for a toggle variable include integers only
> in increments of 1.
>
> Toggle variables are a little similar to bitmap variables but toggle
> variables are only able to store the information about one setting
> instead of multiple settings.
> 4. Bindings
> 4.1. Introduction
>
> Bindings allow the connection of commands to keys. The binding of keys
> is done with the use of the bind command. This command allows the player
> to bind a command or a series of commands to a key or a button. This is
> very useful for a number of reasons. Because of this command, you will
> be able to hit a key and have a single command executed or a whole bunch
> of commands. This command also allows the input devices such as the
> keyboard and mouse to serve as an interface to the console.
> 4.2. Single Command
>
> A single command binding is the most simple of all bindings. It just
> binds a single command to a key. All of the action commands are bound
> with the use of a single command binding.
>
> In the example below you see the bindings of all the movement keys which
> I use. You will notice that the binding is composed of the bind command,
> the key to bind such as e, and the command which should be bound to the
> key which would be +forward.
> bind e +forward
> bind s +moveleft
> bind d +back
> bind f +moveright
> bind alt +movedown
> bind space +moveup
>
> In the example below you will notice that the keys F7 and F8 were bound
> to non-action commands. Just another simple example.
> bind f7 menu_keys
> bind f8 menu_video
> 4.3. Multiple Commands
>
> The binding of multiple commands is somewhat more advanced. It allows
> one key to perform multiple functions. The benefit of this is that it
> allows the creation of key-stroke saving keys, where you press one key
> and it executes a frequently used list of commands.
>
> In the example below, you will notice that three commands have been
> bound to the keys. Each command was separated by the semicolon character
> which is used especially for separating commands. One thing to remember
> is that when binding multiple commands you have to enclose the commands
> in double-quotes since the semicolon character and spaces were used.
> bind F6 "echo Quick Saving...; wait; save quick"
> bind F9 "echo Quick Loading...; wait; load quick"
> 5. Aliases
> 5.1. Introduction
>
> Aliases is where the real power of the console lies. With aliases you
> can create very elaborate strings of commands to perform almost any
> function imaginable. Aliases kind of imitate commands in that after an
> alias is created you can execute the commands for that alias just by
> specifying the name of the alias. The only real draw back that aliases
> have is that they can't accept parameters like real commands do.
>
> It is possible to create an alias which will execute another aliases.
> For as long as the game is concerned an alias is an operation command.
> You can create an alias which will execute other aliases and in turn
> those other aliases execute even more aliases. So as you see, you are
> not only limited to using aliases for commands or variables, you can
> create execution trees of aliases. You can even create other aliases
> from inside aliases.
>
> There are different types of aliases. There are those very simple
> aliases which are just strings of commands executed by the use of the
> alias name. Then there are action aliases which mimic the action
> commands. There are also toggle aliases which kind of mimic the toggle
> variables. There are also more advanced aliases then those, but they are
> too complex to try to classify.
> 5.2. Simple Aliases
>
> Simple aliases are just strings of commands condensed into a single
> command which is the name of the alias. Simple aliases are usually used
> to save time on frequently used commands, they are also quite similar in
> syntax and use to the single command bindings.
>
> In the example below is an alias which when executed would execute the
> commands within it. As you see the string is composed of the alias
> command, the name of the alias which is settings, and the following
> commands which are separated by semicolons.
> alias settings "set msg 1;set name JakFrost;set skin male/howitzer"
> 5.3. Advanced Aliases
>
> There are aliases which I chose to classify as advanced aliases because
> their functions are not as basic as the simple aliases. There are a
> bunch of advanced alias groups, and each one differs from another by the
> function and the type of coding that is used.
> 5.3.1. Action
>
> Action aliases are just like action commands in all respects. The
> benefit of using action aliases is for special functions which only
> should be active when a key is pressed and held down, and when the key
> is released that function should stop.
>
> In the example below you have the famous Quick Grapple alias. As you
> notice it is actually two aliases. One starts with the + character and
> enables the function as long as the key is pressed and held down. The
> other starts with the - character and disables the function once the key
> is released.
> bind x +grapple
> alias +grapple "use grapple;+attack;echo Quick Grapple"
> alias -grapple "-attack"
> 5.3.2. Toggle
>
> Toggle aliases are similar to toggle variables, in that they usually
> turn a feature on or off. Sometimes though, toggle aliases select from a
> list of settings which necessarily does not involve the enabling or
> disabling of a feature. The benefit of using such aliases is that you
> can choose from a list of options just by using one alias instead of
> having to resort to using multiple aliases.
>
> In the example below you have an alias which will cycle through all the
> settings for setting the crosshair. The name of this alias is ch which
> stands for crosshair. The first line of this alias creates the initial
> setting in that when the ch alias is executed it will execute the ch1
> alias. When the ch1 alias is executed by the use of the ch alias it will
> in turn set the ch alias to execute the ch2 alias next time. Because of
> this, a cycle is created which allows the single ch alias to execute all
> of the other aliases on subsequent executions. The other part of the
> other aliases sets the crosshair toggle variable to another setting and
> displays a message to the player.
> bind x ch
> alias ch ch1
> alias ch0 "alias ch ch1;crosshair 0;echo Crosshair Off"
> alias ch1 "alias ch ch2;crosshair 1;echo Crosshair 1"
> alias ch2 "alias ch ch3;crosshair 2;echo Crosshair 2"
> alias ch3 "alias ch ch0;crosshair 3;echo Crosshair 3"
>
> The example below is very similar to the example above, except that a
> different coding was used to perform the same function. As you notice
> the bind command was used to achieve the cycling effect. In this alias,
> every time an alias is executed the X key is rebound to another alias.
> This type of a toggle alias is not as flexible as the above version in
> that if the player wants to move the alias to another key, he has to
> change every instance of the bind command instead of just changing just
> one like in the alias above.
> bind x ch0
> alias ch0 "bind x ch1;crosshair 0;echo Crosshair Off"
> alias ch1 "bind x ch2;crosshair 1;echo Crosshair 1"
> alias ch2 "bind x ch3;crosshair 2;echo Crosshair 2"
> alias ch3 "bind x ch0;crosshair 3;echo Crosshair 3"
> 6. Scripts
> 6.1. Introduction
>
> Scripts are files which have been made by players to hold their aliases,
> bindings, and settings. Scripts are quite useful in that all the
> information necessary for setting up the controls for the game reside in
> a single file.
>
> The benefit of that is that you can take that single file to other
> computers and use it, or distribute the file on the Internet for other
> people to see. The problem with putting settings in the config.cfg file
> is that it is modified by Quake 2 every time it boots and it does not
> maintain aliases. Another benefit of scripts is that only the
> information for setting the bindings and controls are stored in the file
> so that settings which are specific to the computer are not stored in
> the file. The reason why this is a benefit is that if you move the
> script from one computer to another you don't have to worry about sound
> or video card settings for that computer. It is also easier to edit a
> script which is cleanly made instead of having to go through all the
> crud that's inside the config.cfg file.
> 6.2. The Outside
> 6.2.1. Idea
>
> Basically before making a script you have to have an idea of what it is
> and what it does. It is also a good idea to know what purpose the script
> is supposed to serve. Most of the time scripts are made to be
> distributed to other computers or given to friends.
>
> The script file should hold information which is only necessary for
> settings the controls and settings for the player and should not contain
> any information which is specific to the machine. The reason for this is
> that it is much easier to distribute scripts like that since the
> receiving person doesn't have to go through the script file and take out
> all the instances of code which is computer dependent, such as the video
> card settings, or the sound settings. Usually, it's a good idea to place
> all of the necessary bindings, all of the aliases, and a couple of
> player dependent settings inside the script.
> 6.2.2. Execution
>
> Before you go off and starting making aliases and scripts you should
> first think where you are going to put all of that work. First, you
> should think of a filename where your script is stored. It is not a good
> idea to store your script inside the autoexec.cfg in the quake2/baseq2/
> directory because that file should be kept as small and possible only
> with links to other files which should be executed. Think of a file
> name, maybe one that is based on the nick name that you use when you
> play. For example, for my script I chose the filename of jf_q2cfg.cfg.
> Also, make sure that when you make your script file that you place it in
> the quake2/baseq2/ directory.
>
> If you ever want to create scripts which are made up of more than one
> file then you should create your own directory to keep all of those
> files there and not clutter up the main directory. For example, I would
> make a directory like quake2/baseq2/jf_q2cfg/ to hold all the files if I
> made a large script. It's a good idea to be organized and not clutter up
> your system, that's what directories are for.
>
> The way that you want to have your script executed by Quake 2 is to put
> in a line like 'exec jf_q2cfg.cfg' in the quake2/baseq2/autoexec.cfg
> file. That file is executed by Quake 2 every time that Quake 2 is
> started up. Remember, avoid putting in other commands into the
> autoexec.cfg file.
>
> Below is an example of my autoexec.cfg file. The first two lines of code
> prevent the startup introduction from playing. The last line executes my
> script.
> alias d1 ""
> toggleconsole
>
> exec jf_q2cfg.cfg
> 6.2.3. The Format
>
> I would now like to describe a format which I use for making script
> files. This is just a recommendation from me and is in no way related to
> how Quake 2 will feel about your script. These are only things which I
> do to keep my script organized.
>
> Your script should have a heading which would idenfity it as a Quake 2
> script. The reason for having a heading is if somebody stumbles on your
> script file he will know exactly what that file does. Below is the
> heading which I have in my script file.
> // JakFrost's Quake 2 Configuration Script
> // =======================================
> // Copyright 1998 JakFrost, All Rights Reserved.
>
> Next, your script should have some information about it, like its
> author, how to contact the author, its version or release, and the last
> date of its update. It is important to state such things in a file so
> that it's easy to find out who the script belongs to and who the
> rightful author is. You might want to a create comment inside the script
> file which would specify all of that information or just create a small
> section in your alias with a couple of echo commands which would display
> that information on the Quake 2 console whenever the game starts up.
>
> Below is the section of my script file which displays the information
> for my script to the Quake 2 console upon startup.
> echo
> echo ------- Configuration Script -------
> echo Version: Release 4
> echo Date: February 20, 1998
> echo Author: JakFrost
> echo ------------------------------------
> echo
>
> The example shown below would be if I wanted to include a heading in the
> script file which would not be displayed on the Quake 2 console. This is
> for the people who do not want to clutter up the console when the game
> starts up but still want the information about the script displayed.
> This information should appear directly under the heading for the script
> file.
> // JakFrost's Quake 2 Configuration Script
> // =======================================
> // Copyright 1998 JakFrost, All Rights Reserved.
> //
> // Version: Release 4
> // Date: February 20, 1998
>
> Also each script should have an ending marker. This is totally not
> necessary for the script or for Quake 2 but I include it in my script
> files. The reason why I include this is that Quake and Quake 2 suffer
> from a couple of bugs, one of which involves commands which appear at
> the very end of a script. If a command appears on the last line of the
> script it will not be executed when the script is executed by Quake 2.
> If you put a comment on the last line of your script you will be able to
> avoid this bug.
>
> Below is an example of the ending marker that I use for my script files.
> The acronym EOF stands for end-of-file.
> // EOF
> 6.3. The Inside
> 6.3.1. Bindings
>
> I think that bindings are the most important part of a script file.
> After all, bindings are what set up your controls for playing. The
> reason that you should include your bindings in your script file is that
> you can avoid the ever changing structure of the config.cfg file which
> is changed every time that Quake 2 starts. Settings bindings in a script
> also allow you to make the script more modular, enabling for the
> distribution of the script without having to distribute the config.cfg 
> file.
>
> The one thing that you should put in a script before you put in any
> bindings is the unbindall command which will clear all the bindings that
> Quake 2 has. This is very important because some phantom bindings are
> saved in the config.cfg file which could come back later to haunt you
> and screw up your setup. You have to remember that you will have to redo
> all of the bindings after you use the unbindall command.
>
> When you put your bindings into your script file, it is a good idea to
> organize the bindings in groups. Later on you will find that it's easier
> to change bindings if they are grouped instead of having all of them in
> an alphabetical list. It would be a good idea to group bindings by the
> functions that they carry out. For example you could separate some
> bindings and make them into the "Movement Keys" group, or take all of
> the number key bindings and make a group called "Weapon Keys". This is
> not necessary but it's just for being neat.
>
> Below is the bindings section from my script. Look over this list and
> notice the groupings of bindings by their functions. Also if you are
> interested you will be able to learn the keys that I use to play. This
> is just an example to show you what I mean in the paragraphs above.
> // Bindings
> // --------
>
> unbindall
>
> // Special Keys
> bind escape togglemenu
> bind pause pause
> bind ` toggleconsole
> bind - sizedown
> bind = sizeup
> bind tab "cmd help"
>
> // Function Keys
> bind f1 "cmd help"
> bind f2 menu_savegame
> bind f3 menu_loadgame
> bind f4 menu_keys
> bind f5 menu_startserver
> bind f6 "save quick"
> bind f7 menu_playerconfig
> bind f8 menu_addressbook
> bind f9 "load quick"
> bind f10 menu_quit
> bind f11 menu_credits
> bind f12 screenshot
>
> // Weapon Keys
> bind 1 "use blaster"
> bind 2 "use shotgun"
> bind 3 "use super shotgun"
> bind 4 "use machinegun"
> bind 5 "use chaingun"
> bind 6 "use grenade launcher"
> bind 7 "use rocket launcher"
> bind 8 "use hyperblaster"
> bind 9 "use railgun"
> bind 0 "use bfg10k"
>
> // Movement Keys
> bind e +forward
> bind s +moveleft
> bind d +back
> bind f +moveright
> bind alt +movedown
> bind space +moveup
>
> // Quick Keys
> bind q "use rocket launcher"
> bind w "use hyperblaster"
> bind r "use railgun"
> bind t "use bfg10k"
> bind a qw
> bind g +rj
> bind z "use power shield"
> bind x "use grenades"
> bind v "use invulnerability"
> bind b "use quad damage"
> bind shift +sz
> bind ctrl +speed
>
> // Option Keys
> bind y "use environment suit"
> bind u "use rebreather"
> bind i "use silencer"
>
> // Inventory Keys
> bind [ invprev
> bind ] invnext
> bind \ inven
> bind ' invdrop
> bind enter invuse
>
> // Wave Keys
> bind h "wave 0"
> bind j "wave 1"
> bind k "wave 2"
> bind l "wave 3"
> bind semicolon "wave 4"
>
> // Message Keys
> bind n messagemode
> bind m messagemode2
>
> // Mouse Buttons
> bind mouse1 +attack
> bind mouse3 +grapple
> 6.3.2. Aliases
>
> It is a good idea to place all of your favorite aliases in the script
> file. That's what a script file was designed to do. Your script is the
> only place to actually keep aliases since you can't put them inside the
> config.cfg file since they will be deleted by Quake 2.
>
> Before you start putting in all of your little aliases, I think that it
> would be a good idea to give names to those aliases in case other people
> like those aliases and use them. I personally name all of the aliases
> that I use which serve specific functions.
>
> There is one thing that I would like to mention about aliases. Most of
> the time people take aliases posted on the Internet which were made by
> other people. I think that those people deserve respect and recognition
> for the work that they did. I feel that it would be a good idea to
> include some information about the original author of an alias right on
> top of that alias and below its name. If the author information is
> included in an alias and somebody decides to take that alias out of your
> script and use it in their script, they could just cut and paste the
> alias and information which would save them time.
>
> Below are all of the aliases from my script file. Notice that all of the
> aliases have names to them and include information about the author.
> // Aliases
> // -------
>
> // Quick Grapple Quake 2 Alias
> alias +grapple "use grapple;+attack;echo Quick Grapple"
> alias -grapple "-attack"
>
> // Quick Weapon Quake 2 Alias - Best Weapon Version
> // Author: Craig "Vermin" Morris (cmorris@aol.com)
> alias qw "msg 3;qw1;qw2;msg 1;echo Quick Weapon"
> alias qw1 "wait;use grenades;wait;use shotgun;wait;use super
> shotgun;wait;use grenade launcher;wait;use machinegun;"
> alias qw2 "wait;use chaingun;wait;use railgun;wait;use rocket
> launcher;wait;use hyperblaster;wait;use bfg10k;"
>
> // Rocket Jump Quake 2 Alias - Custom Version
> alias +rj "rj1;rj2"
> alias rj1 "set cl_pitchspeed- $cl_pitchspeed;cl_pitchspeed
> 100000;wait;+lookdown;wait;-lookdown;set cl_pitchspeed $cl_pitchspeed-"
> alias rj2 "set hand- $hand;hand 2;+moveup;+attack;echo Rocket Jump"
> alias -rj "-attack;-moveup;set hand $hand-;centerview"
>
> // Sniper Zoom Quake 2 Alias - Inverted Mouse Version
> alias +sz "set fov- $fov;fov 20;m_pitch -0.004;m_yaw 0.004"
> alias -sz "set fov $fov-;m_pitch -0.022;m_yaw 0.022"
> 6.3.3. Settings
>
> You should also include a section where you keep a couple of your
> settings for your configuration. It is a good idea to place things such
> as the player's name here, the skin that he uses, and a couple of other
> settings. This section is just for things that you use to help you with
> your bindings and aliases.
>
> Below is the settings section from my script. Notice there are a lot of
> personal settings there. There are also a couple of settings for my
> keyboard and my movement.
> // Settings
> // --------
>
> // Personal
> set hostname "JakFrost's Fridge"
> set msg 1
> set name JakFrost
> set skin male/howitzer
>
> // Other
> set cl_run 1
> set crosshair 3
> set freelook 1
> set hand 0
> set lookspring 0
> set lookstrafe 0
> set m_filter 0
> set m_pitch -0.022
> set skill 2
> 6.3.4. Documentation
>
> If you are planning to release your script on the Internet, it would be
> a good idea to write something about your script file. It is usually a
> good idea to give some background information about the script such as
> the author information, the version information, and the date of the
> last update. You should also mention a couple things about the bindings
> in the script and maybe explain the aliases that you used. I would
> recommend that you write something about your script that would enable
> other people to know what's going on.
>
> Also, if you are planning to release your script on the Internet it
> would be a good idea to release it with the script file and the
> documentation file inside a compressed archive file, usually a .zip
> file. I would recommend that you would name your documentation file with
> the same file name as your script file except that the extension to that
> documentation should be .txt. So if my script filename is jf_q2cfg.cfg
> the filename of the documentation file would be jf_q2cfg.txt. I would
> also recommend that the filename of the compressed archive be the same
> as that of your script and documentation. My script file is usually
> released on the Internet with the filename of jf_q2cfg.zip.
>
> If you plan to include documentation with your script, I suggest you
> make it a regular text file. If the script is written in plain text I
> think that the documentation file should be too. Please, avoid releasing
> your file in any other format since not everybody can read Word
> documents or Rich Text Files.
> 7. Afterword
>
> If you are reading this part I guess that you didn't fall asleep yet. By
> now if you understood everything mentioned above you should have a
> pretty clear picture of how the console works and what you can do with
> it. Make sure that you take a look at that Quake 2 Console Commands
> document that I mentioned to get all the information about all of those
> Quake 2 commands and variables which have been used throughout this
> document. You should also know a little about my script and the setup
> that I use to play.
>
> If you are interested in obtaining my script and other scripts for Quake
> 2 please visit Walnut Creek (ftp.cdrom.com) by using the link
> ftp://ftp.cdrom.com/pub/quake2/console/.
>
> If you found any problems with this document such as spelling, grammar,
> or technical errors please contact me so I could fix them. Also, I would
> like to mention that even though I wrote this alias to help others learn
> about the console I am not a personal tutor. Please do not send me email
> asking me to help you with console problems because I will not answer
> such email.
> 8. Version Information
> May 18, 2000
> Updated the legal and licensing terms of this document and it is now
> released under the Free Software Foundation's GNU Free Documentation
> License, Version 1.1.
> Removed the links to the Cascading Style Sheet file which was providing
> the stylistic markup for this document in order to solve an existing
> major problem with troublesome web serving software and to promote
> better accessibility and availability of this document for the future at
> the price of removing the coloring and formatting markup from this 
> document.
> Changed the format of my email address from URL format to a proprietary
> format in order to defeat the automatic gathering of my email address by
> web crawler software and to prevent the increasingly annoying barrage of
> unsolicited commercial advertisements that I have been receiving.
> Removed all other HTML LINK tags to prevent future problems with web
> serving software.
> Renamed the Index section to Table Of Contents to correct this long
> lasting mistake.
> November 6, 1998
> New legal terms for this document. It is now released under the Free
> Software Foundation's GNU General Public License Version 2.
> Changed the definition list formatting in sections 1.2. Document
> Conventions and 1.3. Definitions from bold to italic.
> September 29, 1998
> Updated the HTML markup in the document. This should be the last such
> update because I think I solved all of the previous problems with HTML
> and the correct display of this document.
> Updated the HTML 4.0 deceleration to include the URI of the DTD, as
> stated in the standard.
> Added the MIME Content-Type and Content-Language fields to explicitly
> set the character set encoding and language information.
> Added HTML meta information to each document to include all necessary
> header information to help search engines.
> Changed the Modified: field to Last Modified:, and Location: to Source:
> to avoid ambiguity.
> Changed the usage of bold and italic stylistic markup in order to
> facilitate better display of this document in browsers which do not
> support Cascading Style Sheets.
> July 20, 1998
> I have removed my email address from this document because I was getting
> unwanted emails. If you want to contact me, go to my web site.
> July 16, 1998
> Changed the internal HTML style for indentations and also to space out
> the fields for easier reading.
> Added subsection 9.4. Trademarks in the 9. Legal section to take care of
> any trademark legalities.
> Added a copyright notice to the Abstract section along with a short
> description about this document.
> March 13, 1998
> Made some formatting changes.
> March 1, 1998
> Fixed a lot of spelling and grammatical errors thank to the careful eye
> of David "Veritas" Luntz. Without readers like him, my bad grammar and
> spelling would be free to roam the 'net unchecked. I extend my greatest
> thanks to David for his proofreading. :)
> February 24, 1998
> Changed the description of "Double-Backslash" to "Double-Slash" thanks
> to Martin Kuhne for noticing this huge blunder. I'm surprised that I
> didn't catch this error a very long time ago when I was writing the
> Quake Console Tutorial.
> Switched the sections 2.3.2 and 2.3.3 around because of the above
> mentioned change to keep the sections in alphabetical order.
> February 22, 1998
> Added the dollar sign special character which reappeared in the Quake 2
> v3.12 code to the console syntax section.
> Added my email address to the Abstract section. It was been removed long
> time ago because of too many emails, and I hope that this isn't the case
> this time.
> Updated the outdated comments in the alias displayed in section 2.3.2.
> Changed all of the Quick Hook aliases to Quick Grapple because of the
> new Quake 2 CTF release.
> Updated the example of my script file to my current settings.
> Added a sentence to each of the special console characters to show what
> they look like.
> Substituted the old Rocket Jump and Sniper Zoom aliases for newer
> versions of those aliases which use the dollar sign special character
> for storing variable values.
> Moved the Abstract section to the top of the document above the Table Of
> Contents.
> February 5, 1998
> Fixed a few grammatical errors in the document, thanks to Clambake.
> February 2, 1998
> Added the Legal sections to allow free distribution of this tutorial.
> Added the Location: field in the Abstract so people can find the
> original location of this document.
> February 1, 1998
> Fixed two spelling errors thanks to KingWolf.
> January 23, 1998
> Original release.
> 9. Legal
> 9.1. Copyright
>
> This work is copyrighted pseudonymously by the author under all
> applicable laws. The author reserves all rights to this work. The
> copyright statement for this work is "Copyright (C) 1998-2000 JakFrost,
> All Rights Reserved".
> 9.2. License
>
> Permission is granted to copy, distribute and/or modify this document
> under the terms of the GNU Free Documentation License, Version 1.1 or
> any later version published by the Free Software Foundation; with no
> Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. You
> can access the license at http://www.gnu.org/copyleft/fdl.html or you
> can write to the Free Software Foundation, Inc., 59 Temple Place, Suite
> 330, Boston, MA 02111-1307, USA to request a copy. Please preserve all
> authorship and contact information when distributing or modifying this
> work. All derivative works or works containing parts of this work must
> be released under the same license or a later version of it.
> 9.3. Trademarks and Servicemarks
>
> All trademarks and servicemarks used in this work are acknowledged and
> are the property of their rightful owners.
> 9.4. Warranty Disclaimer
>
> THIS WORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY; WITHOUT EVEN THE
> IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
> THE AUTHOR IS NOT LIABLE FOR ANY RESULTS ARRISING FROM THE USE OF THIS
> WORK. ALL RISKS AND RESULTS THEREOF FALL ON THE USER.
>
> Copyright (C) 1998-2000 JakFrost, All Rights Reserved
>
>
> -------------------------------------------------------------------------- 
Technical Details
Message-ID: <46748c95$0$30632$4c368faf@roadrunner.com>
Path: mbox-mo1.pugleaf.net!number1.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!nx01.iad01.newshosting.com!newshosting.com!post02.iad01!roadrunner.com!not-for-mail
References: <f0vv66$llb$1@nemesis.news.tpi.pl> <u5kZh.2847$b61.2326@trndny09> <463631ad$0$23142$9b4e6d93@newsspool1.arcor-online.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!number1.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!nx01.iad01.newshosting.com!newshosting.com!post02.iad01!roadrunner.com!not-for-mail
From: "McG." <McGrandpaNOT@NOThotmail.com>
Newsgroups: alt.games.quake2
References: <f0vv66$llb$1@nemesis.news.tpi.pl> <u5kZh.2847$b61.2326@trndny09> <463631ad$0$23142$9b4e6d93@newsspool1.arcor-online.net>
Subject: Re: Binding weapons
Date: Sat, 16 Jun 2007 20:22:19 -0600
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.3790.1830
X-RFC2646: Format=Flowed; Original
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.1830
Lines: 1215
Message-ID: <46748c95$0$30632$4c368faf@roadrunner.com>
Organization: Road Runner High Speed Online http://www.rr.com
X-Complaints-To: abuse@rr.com
Bytes: 58299
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit