Admin Mod v2.50.60 Documentation and Online Help

Admin Mod Banner

Admin Mod Version 2.50.60

Documentation and Online Help

August 19, 2004

v2.50.60

Please visit our web site at http://www.adminmod.org/

Admin Mod works alongside Metamod

Check out Metamod at http://metamod.org/

The latest version of the Admin Mod documentation can always be

found online, at the Admin Mod web site: http://www.adminmod.org/manual

Visit the Admin Mod web forums to discuss Admin Mod with others and to

get help if you can't find answers to your questions in the manual.

Copyright © 1999-2003 Alfred Reynolds

Admin Mod is liscensed under the

GNU General Public License

Documentation Revision Information:

v2.50.60

Updated to be correct for Steam usage and for 2.50.60 Admin Mod changes

---

v2.50.56.130703

Updated users.ini section with VALVE/STEAM Id settings

Description for changed behaviour of cvars

---

v2.50.51.130103

Corrections in description for setting up clients

---

v2.50.50.020902

Updated Installation information

Re-worked MySQL guide

Re-worked File layout

---

v2.50e.150601

---

v2.50d.060601

Revision information for recent release is available

in the Reference Section

---

v2.50b.080401

New Admin Mod minor (fix) version, 2.50b

Corrected several errors in spelling, layout and content

Now supporting TFC

Added cross-links to several areas

Improved server.cfg setup information

Added missing default commands for CS to commands list


license Agreement

License and Copyright Information

Admin Mod is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

In addition, as a special exception, the author gives permission to link the code of this program with the Half-Life Game Engine ("HL Engine") and Modified Game Libraries ("MODs") developed by VALVe, L.L.C ("Valve") and Modified Game Libraries developed by Gearbox Software ("Gearbox"). You must obey the GNU General Public License in all respects for all of the code used other than the HL Engine and MODs from Valve or Gearbox.

            GNU GENERAL PUBLIC LICENSE
               Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                          675 Mass Ave, Cambridge, MA 02139, USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

            GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

             END OF TERMS AND CONDITIONS

In addition, as a special exception, the author gives permission to
link the code of this program with the Half-Life Game Engine ("HL
Engine") and Modified Game Libraries ("MODs") developed by VALVe,
L.L.C ("Valve") and Modified Game Libraries developed by Gearbox
Software ("Gearbox").  You must obey the GNU General Public License
in all respects for all of the code used other than the HL Engine and
MODs from Valve or Gearbox. If you modify this file, you may extend
this exception to your version of the file, but you are not obligated
to do so.  If you do not wish to do so, delete this exception statement
from your version.

    Appendix: How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    Copyright (C) 19yy

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) 19yy name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  , 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.


What this document covers

What this document covers (and what it doesn't)

This documentation specifically covers the version 2.50.60 release of Admin Mod.

Who should use Admin Mod - and who should not

Simply put: If you don't know what a file extension is or how to make your operating system display them to the user, or if you don't understand how to set up a Half-Life server without Admin Mod, or if you have not even set up your server and tested it to make sure it is running smoothly, PLEASE, STOP NOW. Admin Mod is probably not for you (at least not yet, anyhow). We're being serious here - Admin Mod is a server application that requires some practical knowledge of how computers work and the operating relationship between servers and their clients, etc. Just keep in mind that if you dive in too early, you may be frustrated and disappointed with the results.

There. You have been forewarned. =)

This documentation assumes that you already have a working Half-Life Server up and running. Your server may be a dedicated (stand-alone) server, or it may be one where you start it in-game and host a temporary server (called a listen server). If you do not already have a stable Half-Life server up, running, tested and confirmed to be bug-free, do not install Admin Mod. Instead, fix whatever Half-Life Server problems you have and install Admin Mod only after you have a working server.

ALWAYS MAKE BACK-UPS OF YOUR CONFIGURATION BEFORE INSTALLING ANY SOFTWARE THAT MODIFIES ANY PROGRAM ON A COMPUTER, INCLUDING HALF-LIFE AND HLDS. ADMIN MOD'S INSTALLATION PROCEDURE REQUIRES THE ALTERATION OF SEVERAL FILES THAT ALREADY EXIST IN YOUR HALF-LIFE SETUP.

We have not attempted to document how to install a HLDS system in this manual - This documentation explains how to install, configure and use Admin Mod. If you don't know what HLDS means, you need to stop now - You have plenty to do and learn before Admin Mod will do you any good.

Admin Mod Versions 2.50.xx represent a significant number of changes over previous versions, so be sure you are using the same version of the mod as covered by this document. The software version covered can always be found on the front page of this documentation.


Introductory Information

Introductory Information (or, Read Me First)

Setting up Half-Life Admin Mod isn't all that difficult nor tedious; it just requires some understanding of what’s going on. It actually could (in a perfect world) take you less than ten minutes to get it up and running after you read this. We will address each file you need to configure separately. Hopefully this will lessen the confusion.

READ THIS DOCUMENTATION BEFORE YOU START

We recommend highly that you read this entire document before attempting your first installation of the Admin Mod, including the key information presented below. The basics presented here will carry you a long way in understanding how and why it works the way it does. We're not kidding. If you don't have the time or inclination to read the documentation in detail, you probably should not be running a server with Admin Mod.

Important Note About Editing Configuration Files

In order to properly edit the configuration files supplied with and created by Admin Mod, you MUST use a PLAIN TEXT editor. You CANNOT use editors such as Microsoft Word or WordPerfect or anything along those lines. Most Windows server administrators use Notepad, which is part of every Windows setup. Another good text editor you might want to try that is popular with Admin Mod server administrators is The Programmer's File Editor. Any plain text editor will work just fine.

How Admin Mod Works

Admin Mod is an application that runs on top of the Half-Life server engine. It can be used with the Half-Life Dedicated Server (or HLDS for short) or the Half-Life Listen Server (Please note, we do not design or test Admin Mod to run with Listen Servers. While the functionality should be the same, the level of sophistication of this tool is intended for the environment of a true, dedicated server, so we do encourage you to use those instead.). It works in conjunction with another application called MetaMod, which enables the HLDS to have multiple other helper applications running at any given point in time. MetaMod allows Admin Mod to support any number of modifications of the Half-Life game, and since MetaMod takes on the task of integrating and assuring compatibility with game mods, the developers of helper applications like Admin Mod can focus on growing and expanding their own programs' capabilities.

MetaMod essentially sits between the engine and game DLL, catching routines, and passing them on, thus modifying functionality. However, rather than providing just the additional server features built in to the Admin Mod DLL, MetaMod allows you to add features from multiple, separate DLLs. Under that framework, Admin Mod can be a plugin itself, and be run alongside numerous other plugins. And, as of version 2.50, Admin Mod has now transitioned to running as a MetaMod plugin.

Admin Mod intercepts messages between the server and its clients. A " client " machine in this case is the computer that a person uses to connect to the game server - so when we say "clients," we mean the computers on which people are playing the game.

Admin Mod is able to provide a whole new level of administration alongside the Half-Life server application. With its integrated security model, a server owner can delegate administrative authority to individuals. Admin Mod also incorporates some functionality that would probably better be described as "fun" rather than "administrative." But it's all part of the same application, and it's all completely configurable by the server owner, just as long as they have some idea about how to set it up properly.

How Admin Mod Is Organised

Admin Mod uses a set of what are called ".ini" and ".cfg" files to let the mod know about certain information it needs to be able to function. The information that you put in these files includes things like the names of the players that you want to allow to use the Admin Mod commands, their passwords, the maps that you want to allow people to vote for on the server, what Admin Mod options you want to have enabled on your game server, and a variety of other important and useful things. For that reason, please take the time to read each of the sample .ini and .cfg files that are provided with Admin Mod, as discussed later.

In addition to the configuration files discussed above, Admin Mod allows the use of a scripting language to define features and functionality of the application itself. In other words, the plugin "scripts" that come with Admin Mod are what provide its core functionality and features. However, the beauty of the system is that users can develop their own plugins for Admin Mod, thus extending the features and functionality of the mod on their servers. Scripting and compiling is discussed later in this document in part, and in more detail on the AScript web site. In addition, the AScript site has a large library of plugins developed by members of the Admin Mod community, freely available to download and use.

Next: Extracting Admin Mod the Right Way


Introducing Admin Mod

What is Admin Mod?

Admin Mod is a modification add-on for the Half-Life multiplayer game server, most commonly used for the modifications Counter-Strike and Team Fortress. There are a significant number of other modifications (commonly called "mods") of the original Half Life game.

This server-side modification application will let you give people access to manage and administer your HLDS (Half-Life Dedicated Server) machines, without giving direct access to rcon (server-speak terminology for "Remote Console"). It also lets you define users who can access the server to play, each with a different password, and allows you to assign players the ability to execute Admin Mod's commands during the game. The security is configurable per-player, meaning you can assign each player differing access levels, and therefore allow or restrict any given set of Admin Mod commands.

It is a plugin modification designed to work using metamod to interface with the halflife server engine. A list of its main uses can be found in the What Can Admin Do section.

Introducing Metamod

Before metamod (in the good old days when kids respected their elders and all that) every game modification was loaded as a gamedll by the half-life game engine. The problem with this was that if you wished to use more than one modification you had to daisy chain them together each loading one other dll as a gamedll. This is a poor approach and has its problems, such as stability and ease of use. Metamod solves these problems.

Metamod (http://www.metamod.org) is loaded by the half-life game engine as the gamedll, metamod then loads all metamod plugins and treats them as equal plugins, no more daisy chaining and no more editing half a dozen config file to make a single dll load. Your plugins are no longer at the mercy of plugin further up the chain and rely only on metamod for their stability not on the stability of all the other mods in the chain above them.

Mod support

Metamod handles all mod compatibility. Metamod plugins are avilable to any mod (depending on the author of the metamod plugin) that metamod supports. Admin Mod itself is mod agnostic. Always use the latest version of the metamod DLL file, available from the Metamod website, to assure you are current and able to use Admin Mod with the latest supported games.)

If you are a mod author and you want metamod to support your mod you should contact Will Day at http://www.metamod.org so he can add support for your mod; it's easy but he will need a complete list of the game's entities to do so. Mods that do not follow the normal procedures for things like menu selection or which alter base classes may have compatibility problems, for details on these problems see the metamod mod compatibility list

Security

Admin Mod is written with security in mind, so there should be no problems with the code (but there is always a possibility... Remember that security is an ongoing process both for software authors and the people who use the software).AdmiN mod is open source and the spurce code is always available in bth beta for and as tagged releases on the sourceforge CVS server.

Contacting the developers

If you are interested in contacting Alfred, the original author of the Admin Mod, or if you are interested in participating in the community of server administrators who use the Admin Mod on their servers, please see "Where to go for more help" at the end of this document.


What Can Admin Mod Do?

Lots of things, here's a quick summary of some of the features

  • 'That green message...'

    By far the most popular asset of Admin Mod is the ability to send messages, to one or all players on the server, that will appear in different places on the screen allowing server advertisments, notices and other important information to be passed along without fear of losing the message in the chat window. The messages can be any colour you desire and can even fade from one shade to another

  • Votes, votes everywhere!

    Using Admin Mod you can start votes (and optionally allow users to start votes) for multiple options. They can be used to pass important messages that will not disapear until the user votes, to give users the choice of whether or not to kick disruptive users or to enable weapon restrictions for the next map. Votes are also avilable through the plugin interface allowing as many custom votes as you can dream of.

  • HALFD style voting

    HALFD is anoter server administration tool which allows users to vote by simply saying their choice. This ability is emulated in one of the default Admin mod plugins allowing more versatile user-server interactions.

  • Highly configurable per-user access

    The main feature and strength of Admin mod is the abiltiy to configure per-user access to commands. Rather than allowing all your Admin Remote console access and having to change the password for everyone should it be compromised you can give each user access to different functions with a password unique to them. Should the password leak only one pass needs to be changed and life continues as normal for your other Admins.

    Each Admin will only be able to see the commmands they have access to, allowing seamless and unnoticed addition of new commands and abilities. The help system can be used by administrators to look up command parameters and a short description for those forgetful people.

  • Name reservation

    With Admin Mod you can password protect your user name (similar to access configuration). This will stop other users from taking your name and making your stats look bad, it also lets everyone on the server know that when you are playing it really is you and not an imposter. This can be extended to reserve clan tags or prevent certain names from being used (player for example). Almost anything you want can be achieved using regular expressions to define name patterns.

  • Gagging

    Ever wished you could shut that irritating user up without kicking them and making the teams uneven? Well Admin Mod allows you to gag that person; they can still play (and optionally use team chat) but you no longer have to be distracted by their inane chatter if you don't want to. An underappreciated feature until you use it, then you'll wonder how you survived without it.

  • Reserved Slots

    Introduced for those servers which are impossible to join at peak times. Users granted access to a reserved slot will always be able to join the server as the users with the highest ping or lowest access rights will be kicked to make place for the incoming administrator. Sounds unfair? Well, yes, but Admin Mod exports this cvar so users can check in their favorite server browser to see if reserve slots are in effect before they join the server. This is generally considered fair warning. There are several reserved slots modes that can be used in different situations. Reserved slots can be reserved by IP range, by name or by WONID.

  • Dedicated Server console access

    As of Admin version 2.50, all of the Admin Mod commands are available to server administators without ever having to join the game, as you might want to monitor the server from work, where you cannot join the game. By preceding any command with the string "admin_command", you will be able to execute any command from the HLDS window that you would normally execute in your client console if you had full access.

  • Plugins

    By far the most popular feature of Admin Mod is the ability to write your own custom plugins. Most of the Admin Mod functionality is written into plugins. Plugins are written in Small (a derivative of the C programming language) which allows even relative beginners to change, add and expand Admin Mod features.

  • Much much more...

Plugins should not be underestimated. Using plugins, you can set up autoresponses to common questions, cause sounds to be played on client machines to impart information or for fun. You can monitor user messages allowing admins to stop spamming or censor offensive phrases. Plugins have been created to manage the rate settings for users on the server maintaining a good network speed for everyone on the server. Fun plugins have been written which allow users to play games of chance, the prizes ranging from instant death to godmode for a single round.

Though the possibilities seem endless, it is not possible to do everything through the plugin interface. However, most people find everything they need in the 150+ plugins available on the Admin mod scripting website. There are also many more plugins which have not been submitted that are available only through the authors or on the Admin Mod forums. Your only problem should be deciding which plugins to implement on your server.


What's New in version 2.50.60?

What's New in Admin Mod 2.50.60?

For a complete list of changes, refer to the NEWS or NEWS.txt file in the Adminmod directory or the changelogs in the reference section of this documentation.

Whats New in Admin Mod 2.50.60

Whats New in Admin Mod 2.50.58

Whats New in Admin Mod 2.50.56

Whats New in Admin Mod 2.50.52

Whats New in Admin Mod 2.50.50

Whats New in Admin Mod 2.50.26

Whats New in Admin Mod 2.50.09

Whats New in Admin Mod 2.50e

Whats New in Admin Mod 2.50d

Whats New in Admin Mod 2.50

New in version 2.50.60 release (August 22, 2004):

AMD64 Support

Admin Mod 2.50.60 can now be used in 64 bit mode on amd64 architectured computers. For details see the amd64 package.

Lots of bug fixes and small additions. Installers and documentation updates, For details see the changelog but in general nothing really new has been added. Stability and usability are improved.

New in version 2.50.58 release (October 5, 2003):

Steam Support

This release bring full support for Steam Ids. Admin Mod now has full support throughout for STEAM enabled mods, Wonid support is still present but depreciated. Support for reserved names and reserved slots with Steam Ids is now complete as well.

Include Directives in

Ini files can now use #include directives (covered in detail later in this document) to allow the loading of several files in differnt locations as parts of the same file.

PostgreSQL Version

Thanks to user contribution there is now a PostgreSQL enabled version of Admin Mod.

Plugins loaded from a directory

Specify a directory as the target of the admin_plugin_file and admin will load all plugins found in that directory (in alphabetical order).

Far far too many bug fixes...

Including (but not limited to)

  • Map change permissions loss with counterstrike is fixed
  • no plugins is no longer an error condition, admin will load and be minimally functional
  • Counter-strike timeleft shoudl now be correct in windows
  • plugins update to remove various errors and bugs and to include new functionality for counter-strike
  • uselist format updated
  • Console password information messages have been changed to show only when the debug cvar is enabled

New in version 2.50.56 release (July 13, 2003):

Steam and Valve Ids

This release bring support for Steam and Valve Ids. With Day of Defeat 1.0 Retail new unique authentication Ids were introduced by VALVe. They resemble the Ids used in Steam versions. The format of the Ids were changed between two server updates. Admin Mod does now support new and old versions of these Steam and Valve Ids.

MD5 encryption

Admin Mod passwords can now be stored in the users.ini file encrypted with MD5 hashes. The Unix crypt() encryption method that was available only in the Linux version before is available in the Windows version now, too. Users of the MySQL version of Admin Mod can also use the MySQL PASSWORD() encryption method, offering seamless integration with existing user databases.

Mixed script binary support

Before script binaries of the correct format had to be used since the Windows and Linux script binary format differs. Admin Mod can now load either format, converting it on the fly while loading it. This prevents crashes that happened before when loading Windows scripts on a Linux server or vice versa. Since the conversion has still to be carried out, it is still recommended to convert the script baniries offline before installing them on a server.

New in version 2.50.52 release (March 21, 2003):

Security

An remotely exploitable format string error was found in Admin Mod which could be used to execute arbitrary code on a server running Admin Mod. This has been fixed. Another such error exists in all HL clients thus it can only be fixed by VLAVe, but Admin Mod includes a mechanism to prevent commands sent through Admin Mod to exploit that error on the client.

Banning both Id and IP

A new option was added to the ban() function so that one can choose to ban by Id and IP at the same time, providing only a name

Bug Fixes

Various bugs were fixed in this version. Among those:

  • Fixes preventing timers getting killed by other scripts and timers crashing the server
  • File handling functions were fixed.
  • An error loading the AMX engine from a network drive was corrected.

New in version 2.50.50 release (September 2, 2002):

Menus

Thanks to Olo, author of Clanmod, single user menu's are now available in Admin mod. At the moment these are in beta form while their use and advantages are evaluated. They can be enabled using a new beta features CVAR.

Password Security

Due to the prevalence of the OGC hook cheat and other programs able to read the setinfo buffer admin passwords were for a time insecure. This problem is resolved by prexifing the password_field CVAR value with an underscore character ( _ ). This is now the default and all upgrading users are urged to update their password_field CVAR to increase password security.

IP reservation

The users.ini file can now take IP addresses in the name/wonid field. This allows LAN servers to allocate access based on IP addresses.

Other fixes...

  • The default plugins have been updated so as to be compatible with the new include files.
  • More work has been done to try and prevent loss of admin rights during map changes with Counter-Strike
  • This manual has finally been updated.
  • New Win32 installer and updated Linux installer.

New in version 2.50.26 release (December 13, 2001):

Bot protection update

Due to a mistake the bot protection in 2.50.09 was broken and would only activate if reserved slots were enabled; this has been fixed and more bot protection has been added to try and ensure fewer Admin Mod related crashes when running with bots.

Individual Csay messages

Those of you who like to write your own scripts will be pleased to hear that it is now possible to send individual csay messages. These are limited to the default green colour and are accessed using the messageex() function with the final parameter as print_csay.

Private server mode

With the addiion of two new CVAR's you can now use Admin Mod to make your server private.

  • amv_private_server <#>
  • amv_prvt_kick_message "<string>"

If the amv_private_server CVAR is set anyone who is not authorised by an entry in either the users.ini or the ips.ini file will not be allowed to join the game and the amv_prtv_kick_message will be printed to their console. This allows you to use the full power of Admin Mod to restrict and allow groups of people as you desire.

Ban by IP or ID

For use on a LAN server the ability to ban by wonid simply wasn't working. The ban function has now been changed to enable you to ban by IP or by ID allowing you to keep those you don't like on your local LAN from playing on your server.

Other fixes...

A great number of small fixes have been added and tweaked to give better stability and some extra functionality. The list is long and few of you would be interested in most of it but suffice it to say a lot of work has been put into this new version.

New in version 2.50.09 release (October 24, 2001):

  • Better Security

    A security bug has been fixed where admin passwords have been exposed to non-admin clients. It is recommended to update your Admin Mod installation with this version.

  • Improved file access functions

    The line buffer size for the Small readfile() and writefile() functions has been raised to 250 characters.

  • The amv_autoban CVAR has been removed.

    See below for more detail.

  • Fixed Maxplayers bug

    A bug with the maxplayers slots reported when using reserve_type 1 has been fixed. It will now always report only one reserved slot.

Fewer CS mapchange drops

With CS 1.3 some people have problems with getting dropped from the server at mapchange and not getting back in because they lose their authentification as administrator. To address this problem we have added a CVAR which you can set to create a time slot during which administrators can rejoin the server into a different slot than before without losing authentification. Please be aware that this does open a certain security hole, although the risk should be minimal most of the time. The administrator is still identified by his name, IP and WONID.

The CVAR is called amv_reconnect_time. It is set in seconds. Setting it to 0 (default) turns off this feature. If you experience aforementioned problems you can set this CVAR but keep it as low as possible. 30 seconds should be enough in most cases. The maximum value is 90 seconds.

Anti Cheat options

Another new CVAR is being introduced with this release: amv_anti_cheat_options. You can set it to enable certain cheat countermeasures in Admin Mod. There are currently two such options available.

The first one is the known Name Crash Cheat. Players could crash your players clients when using special characters in their names. Admin Mod did already protect against this in earlier versions. Since VALVe fixed this exploit in HL1108 the protection via Admin Mod is now by default disabled. But since you may be running a LAN server with an older server version you can reenable it. The option identifier for this anti cheat option is "nc". See further below for an explanation on how to enable it.

The second option is still experimental and thus also disabled by default. (Thanks to BillDoor for his suggestion). It tries to prevent players from using the spectator cheat in the current TFC version. The option identifier for this option is "sp".

How do you set these options? Here is the magic: Each option is described by an identifier, as mentioned above, and an option setting. The option setting is a number that gets appended to the identifier. The above options have the following settings:

Name Crash Cheat:

  1. off, take no action.

  2. kick, kick the offending player from the server.

  3. ban, kick the offending player and ban his WONID for 24 hours.

Spectator Cheat:

  1. off, take no action.

  2. on, prevent the player from cheating.

To set options you put their identifier and setting together in a string. Multiple options are seperated by a colon. The resulting string has no spaces. Lets look at some examples:

To disable all options (the default) the string would be: "nc0:sp0"
To kick name cheaters and leave the spectator anti cheat off: "nc1:sp0"
To ban name cheaters and enable the spectator anti cheat: "nc2:sp1"

This string is the value assigned to the CVAR amv_anti_cheat_options:
    amv_anti_cheat_options "nc1:sp0"
or
    amv_anti_cheat_options "nc2:sp1"

The order of the options in the string does not matter. To enable the spectator anti cheat but disable the name crash anti cheat you could thus also set:

    amv_anti_cheat_options "sp1:nc0"

In fact (those already confused should not read this paragraph :)) if you want to keep the default setting for an option you don't have to set it at all. The last example is the same as:

    amv_anti_cheat_options "sp1"

New in version 2.50e release (June 15, 2001):

  • Version 2.50e contains several bug-fixes and performance enhancements. See the change logs in the Admin Mod Reference section for details.

  • The procedure for using Bots with Admin Mod has been changed, and is now simpler. Please see How to Use Bots with Admin Mod for more information.

  • Updated the credits for the A-Team in the readme and docs.

New in version 2.50d maintenance/bug-fix release (June 2001):

Among the most notable of the changes made for 2.50d are:

Client Authentication instructions and procedures modified

For security reasons, the installer will no longer create an autoexec.cfg file. Instead, it creates a file called adminpass.cfg , which you can either exec from the console, or you can add it to a desktop shortcut just for connecting to your server. More information is available in the section Required Client Configuration Instructions.

New CVARs: admin_repeat_freq, admin_vote_echo, amv_autoban

You now have the ability to specify in your server.cfg file how often the center-say repeating message should appear. You also can control voting display a little better, and an auto-kick/ban option has been added for dealing with players that use non-printable characters in the game to crash people.

Access levels chaged for admin_exec functions

All admin_exec functions have now been changed to a higher access level. See that section of the documentation for more information.

You can now use * in a plugin script without it being recognized as a comment

This was causing some confusion and unnecessary tech support requests. It has been fixed in this version.

Improved bot protection

If you use bots with Admin Mod, you probably know about the admin_bot_protection cvar setting already (See How to Use Bots with Admin Mod for more info). Bot protection has been enhanced, so it's even safer now to run bots on your server.

Changes made to the sample wordlist.txt file

To assure people are happy and content, and because it seemed like a worn out joke, one word has been removed from the sample wordlist.txt file that is used for filtering "bad" words on the server.

A partial list of changes introduced in v2.50:

Plug-in Scripts!

You can now use multiple scripts. Yes, that is correct, you can use multiple scripts - we call them plugins now. Thanks to the plugin.ini file, simply list the path to the plugin script you wish to use. This feature can easily be disabled if you prefer to stick to the old way of doing everything in one big script, but we think if you give the plugin setup a try, you'll love it.

Metamod Integration

Metamod allows you to add features from multiple, separate DLLs. Under that framework, Admin Mod is a sort of plugin itself, and can be run alongside other applications, like bots. Check out the Metamod web site for more information.

"admin_command" allows commands to be entered in server console or RCON

You are now able to enter commands directly into the HLDS console window, or via rcon . Enter admin_command followed by the normal command you would enter if you were in game. For example, to do an admin_csay while you are working at the HLDS console, just enter:

admin_command admin_csay All your base are belong to us.

Partial name matching is now available.

Instead of having to enter the whole name of player to execute a command on him, you can enter only a portion of his name. However, that portion of his name must be unique to his name. For example, to slay a player called Superkalifragilisticespialidocous (i can't spell it, its atrocious) enter:

admin_slay kalifrag

and if no one else on the server has the string "kalifrag" in their name, the above-mentioned player will go dead. This works with all commands where you would specify a player name. As long as you specify a unique name or partial name match, the user will be found.

The vote option chosen by each user is echoed to all clients

This is optional and can be turned off via a cvar in the (listen)server.cfg file.

No more need for "old password_timeout" cvar

There is no longer a password_timeout problem, thanks to our next new friend:

admin_reconnect_timeout

The admin_reconnect_timeout cvar allows users to reconnect for a few minutes after dropping from the server, without having to re-enter a password. You just set how long you want people t be able to be gone for before they have to re-enter or re-exec their authentication info.

admin_connect_msg

Every client receives a customized text message 30 seconds after connecting, welcoming them to the server.

admin_highlander

There can only be one. One admin that is. When multiple administrators are connected to a server, only the one with the highest access level will have access to the admin commands.

admin_fun_mode

If you get bored, enable the fun mode to make things a little more spicy. This cvar gives you access to a multitude of other commands that will keep you laughing ... til the next release.

admin_reject_msg

All rejection messages are easily configurable by setting this cvar. If someone tries to use an un-authorized commands, he will be politely informed.

admin_repeat_msg

How do I change that green thing that appears every ten minutes and says, "This server uses Admin Mod?" Simple really: Change this cvar in the server.cfg or listenserver.cfg and it will be whatever you want it to be.

admin_quiet

A classic. The old verbosity setting has been changed to this handy little option, setting which admin commands are echoed to the clients, and which are not.

admin_vault_file

To keep your admin settings over map changes, enable admin_vault_file in your server configuration file. Can be used by plugins to store and retain information over map changes and server restarts.

admin_vote_maxextend

No need to go compile scripts to change the number of times a map can be extended by a vote.

admin_disco

This cannot be explained, and neither can its counterparts. Go see it for yourself, but enable fun mode first. : )

admin_restartround

Self explanatory.

admin_denymap and say denymap

If you are the admin and you are sick of playing a certain map that keeps on getting voted for, deny it and its votes will be disregarded.

admin_prematch

TFC only. To get warmed up and ready for clan matches.


Default Windows Installation of Admin Mod

First of all, if you have not yet read the Introductory Information page in the "Before you start" section of this document, you should do that now. In that section we discuss some key concepts as well as the differences between Admin Mod version 2.50.50 and prior versions. There are some key differences, so whether you are new to this or if you have been working with Admin Mod since it was first born, that section is important to become familiar with.

Admin Mod can be installed on any 32 bit Windows platform that supports the HLDS server application ranging from Windows 95 to the Server 2003. It is not reccomended that you run a server on a 98 family operating system (windows 95, 98 or ME). It should work but its just a bad idea, use a more modern OS if at all possible.

Admin also works on linux, any linux which can run hlds_l can also run Admin Mod. Similarly if your BSD server can run hlds_l you can use Admin Mod with it, though you may need to do a little more setup in this case.

For those of you performing Windows installations, a Visual Basic script is supplied that automates and simplifies installation of the mod, as long as you have a fairly typical installation of Half Life and any game mods. If you have specified any ultra-custom paths for your mods or half-life, the installation script may get confused, and you will need to do a manual installation which is covered later in this documentation.

There are a few important things to consider from the onset – if you are skimming this file, stop and read this next part carefully:

THE FIRST THING YOU SHOULD DO IS BACK UP YOUR CONFIGURATION AND OTHER CUSTOM FILES!!!

If you think you’ll figure it out later, you might just be in for a surprise. Now, Admin Mod is easy to install, but our experience has shown us that people tend to skip this step. So, it bears repeating:

THE FIRST THING YOU SHOULD DO IS BACK UP YOUR CONFIGURATION AND OTHER CUSTOM FILES!!!

Okay. Hopefully you get the picture. Come back here after you have completed your backup.

Next: Extracting Admin Mod the Right Way


Unzipping Admin Mod the Right Way

Extracting Admin Mod the Right Way

When you download the Admin Mod distribution file (.zip for windows and .tag.gz for linux), you need to be sure to unzip it and use the folder information in the archive file – This means that when you extract the contents it will create a folder called Admin and several subfolders, the structure is shown in the figure below.

If you don't see these folders/directories after extracting the files you have done something wrong, so STOP NOW and save yourself a headache. You most likely did not use the folder names included in the archive file.

IMPORTANT

DO NOT unzip the file into your game mod directory! If you do, you will have problems. You will need to keep the unzipped Admin Mod folder even after Admin Mod is installed. Admin Mod installs only the files required to run Admin Mod. The distribution directory contains the help files, plugin scripts, compilers, include files and example configuration files. You may need all of these after installing Admin Mod. Think ahead and put them somewhere you will remember and find easily.

Windows

On windows operating systems The install script uses the registry to locate your Halflife, Steam or HLDS installation directories, this means that it doesn't matter where you unzip the Admin Mod distribution to. Both the install script and the manual installation instructions still refer to the distribution folder locations though so you must conserve the folder structure from the zip archive.

Linux

You unzip the Admin Mod distribution to the SAME FOLDER that contains HLDS.EXE or HL.EXE. This directory is also the directory in which your game mods are installed, so you will see a subdirectory for each of your mods here. This will be the same directory as the hlds_l .so runtime.

Next: Running the Windows Installation Script


Running the Windows Installation Script

Foreword

If you experience difficulties running the installation script that is supplied with Admin Mod, it is possible you either have an outdated version of the Windows Scripting Host or you do not have it installed on your computer. In either case, the latest version of Windows Scripting can be downloaded from:

http://msdn.microsoft.com/scripting/

It is also possible that your anti-virus program might warn you or prohibit you from running VBScript files such as this installer. If that is the case, you will need to disable your anti-virus software while installing Admin Mod, but be sure to re-enable it after you are done.

To install Admin Mod, you will run a friendly little VBScript that will greatly simplify the process of installing the Admin Mod. If you need to install Admin Mod on a computer where you do not have direct access then you will need to install Admin manually, this is relatively simple and instructions can be found in the Manual Installation - Walk-Through.

When reading this page be aware that dash enclosed sections or sections which are contained in pseudo-html tags (<Begin section> to <End section>) are related to specific choices or situations. On a clean installation you should not need those segments of the guide. The heading for each dashed section gives an idea what it pertains to so you can decide to read it or not as you go along. It might be advisable for you to read the entire page despite not needing to.

Installation

Having extracted the Admin Mod files from the distribution archive you can now run the install_admin.vbs file located in the \Admin folder. The image below shows the location of install_admin.vbs in the distribution, if you don't have these folders of are missing the script then you may not have extracted the files from the distribution properly.

If an error occurs before the installer starts

<Begin installation error section>

If you are not experiencing an error before the installer starts then skip ahead to the end tag

If you have unzipped the Admin Mod files properly you should never see this message box. If you don't then please skip past this box.

If you have made a mistake extracing admin mod or have deleted the precompiled scripts supplied with Admin Mod you will presented with a dialigue like the one below indicating a problem with the distribution and preventing you from installing Admin Mod.

If you ever do then simply follow the advice it gives you.

The default scripts come pre-compiled for you and in the correct location, just so long as the files and folders were unzipped properly. If you do not have the script files compiled ahead of time, or if they are not in the appropriate folder (Adminmod\scripting\examples), the above window will pop-up. As explained in the window, you simply need to run the file named compile_all.bat in the Adminmod\scripting\examples folder. Doing this will - of course - compile all of the scripts so they are ready to use. The image below shows the location of that folder in the Windows Explorer view.

<End installation error section>

If everything has been unzipped to the right location and the installer is able to locate all the files it requires for installation it will prompt you with the message below.

If you chooose cancel the script will stop, nothing will have been installed and you can go about your business.
If you choose OK the script will continue by looking at several registry keys to locate the installed games to which Admin Mod can be installed.

The script is capable of finding registry keys for Normal Half-life, Retail CounterStrike and Half-Life Dedicated server installations.
Most users will have only a single Half-Life or Retail Counter-Strike installed. You will be prompted to confirm that you wish to install to the location found in the registry. Read the message which will look something like the one in the picture below and take your choice.

If you have multiple Half-life, Retail Counter-Strike, dedicated server, dod or other installations you will be asked which of them you wish to install to. Simply input the NUMBER (not the path or the folder name) for the one you wish to install to, then press OK.
The form of this choice is show below.

If you chose to install to STEAM

<Begin STEAM install section>

If you are not installing to STEAM then skip ahead to the end tag

If you chose to install to a STEAM install you will be asked which account you wish to install Admin Mod into. This takes the form of a multiple choice, as before you must input the number to the left of the choice you want. Only the number, nothing else. An example of this choice is pictured below.

When the account has been chosen the installer will need to know which game to install to inside that account. This is another multiple choice question in which you provide the number of the choice you want. The choice is presented as shown below.

<End STEAM install section>

Now the installer knows where you want to install Admin mod to it needs to know which Mod you want to use it with. This dialog shows you a list of the mod folder which can be installed to. If the mod of choice is not on this list then the script cannot install to that Mod and you will have to perform a manual installation (details are included later in this manual).

Simply choose the Mod folder that corresponds to the Mod you wish to use Admin with and type in its number from the list on the left hand side. Each folder presented corresponds to a mod that can be installed to. If a mod is not in this list then the installer cannot install Admin Mod to it.

The installer now copies across the Admin Mod files to the correct folders in the Mod directoy. It changes the Mod liblist.gam file so that metamod will be loaded when the server starts (metamod loads admin and then loads the gamedll, don't worry about it). The installer also appends the line

exec addons/adminmod/config/adminmod.cfg

to the server.cfg and listenserver.cfg files if they are found. This ensures that the adminmod configuration settings stored in the adminmod.cfg file are executed when either the dedicated server or listenserver is started.

If listenserver.cfg and server.cfg are not found

<Begin config files missing section>

If you do not get a message telling you that the config files are missing then skip ahead to the end tag

If neither listenserver.cfg or server.cfg are located and the appropriate exec line appended to them the installtion script will warn you of this fact. By default the installer will attempt to create a listenserver.cfg file if it is not located (to help steam users who may not have the appropriate file) and this failure can result in Admin Mod being installed in a non-working state. If this is the case the warning below will be shown. Take notice and rectify this situation if you can.

<End config files missing section>

Upgrade installations

<Begin upgrade install section>

If you are not installing Admin Mod over an existing installation then skip ahead to the end tag

If you are installing over an older version of Admin Mod you will be asked if you wish to retain your old configuration files. In some cases this is not a good idea because your old files will not contain any Cvars introduced in the new version.

You will also be warned about changes in configuration that could cause you problems unless you are careful. This dialogue is shown below, it is advisable that you take notice and do as it says if you see it.

<End upgrade install section>

You should now be asked if you wish to create a shortcut to the manual on your desktop, this is a good idea for new users because will will be needing this reference quite a lot to begin with, simply make your choice between yes or no.

Now providing that no errors have occured in this process the installation is complete and you should see the message below.

So what's Next?

Unless you need to know how to uninstall Admin mod or how to set up a MySQL version of Admin Mod you should now skip ahead to the section of the manual that deals with configuration.

There are other smaller tools provided with Admin mod which can be found in the admin\tools directory. Currently these include:

  • A script to uninstall Admin Mod (but why would you want to?)
  • A script which creates users.ini and adminpass.cfg entries
  • A small program which will create MD5 hashes or crypt hashes of passwords
    Use encrypt --help at the commandline to see the full option list.

Note that not every problem can be resolved in this documentation, but we suggest strongly that you look here first. If you have problems you can't solve after reading this manual - and that does happen occasionally - please ask your question in the forums at http://www.adminmod.org. Please do not email your questions to the team directly, as we cannot guarantee we will be able to respond to individual emails in a timely fashion.

Next: Setting up your .cfg and the *.ini files


Manual Installation - Walk-Through

Note:This portion of the guide discusses a manual installation of Admin Mod, and is not recommended for people who do not have a clear understanding of directory structures, file editing, etc. – For a script-based, more automated installation, please read the Running the Windows Installation Script section. However, no matter what type of installation you are undertaking, there is a lot of good information to learn from here, so be sure to read it at some point in time, even if you do script-based installation.

Note:For Linux users, the installation process is identical to the one described below, except for the .dll files. When reading, mentally replace '.dll' with '_i386.so'. This means that 'metamod.dll' corresponds to 'metamod_i386.so'. Furthermore, slashes must be inverted when discussing file paths.

This walkthrough will leave you with a fully functional default installation of Admin Mod. It does not cover adding users or plugins to your server.

  1. Stop What you are doing

    If your server is running stop it. Atempting to install Admin Mod with the server running is a bad idea.

  2. Unpack/unzip the file you downloaded.

    Make sure to allow the directory structure in the ZIP file to be recreated when the files are unzipped. If you are using WinZip, you should make sure the box labeled "Use folder names" is checked before you extract the files from the zip archive. There should also be a way to specify this in any other archive program you may use.

    We will refer to the location where you have unpacked/unzipped Admin Mod as the "Admin Mod Directory" (<AM>)

  3. Find your Half-Life Installation.

    Where do you want to install Admin Mod to? First find the folder where you installed Half-Life or Counter-Strike. In this folder there should be one or more executable files with the Half-life or Counter-Strike icon, as well as the files hl.exe hlds.exe OR cstrike.exe if you have the Counter-Strike Retail version of Half-Life. This folder will be refered to as the Half-Life folder (<HL>).

  4. Find your Mod Directory.

    In the Half-Life folder there are a set of folders, such as tfc, dmc and Ricochet and you may have others. Many of these folders will have a game modification in them. For example cstrike is the Counter-Strike mod folder and dod is the Day Of Defeat Mod folder.

    You need to find the folder of the mod for which you want to install Admin Mod. If I wanted to install Admin Mod for Counter-Strike, my mod folder would be cstrike, if i wanted to install for Science and Industry Mod, the mod folder would be si. This is refered to as the "Mod Directory" (<MOD>). Normally it is trivially simple to work out what mods are in which folders but if you can't work it out try looking at the names of the maps in the <MOD>\maps\ directory.

  5. Install Metamod

    • In the <MOD> directory create a new folder. Name it addons

    • In the <MOD>\addons\ folder create a new folder. Name it metamod

    • In the <MOD>\addons\metamod\ folder create a new folder. Name it dlls

    • Copy the file metamod.dll from <AM>\dlls\metamod.dll to <MOD>\addons\metamod\dlls\metamod.dll

    • Copy the file metamod.ini from <AM>\config\metamod.ini to <MOD>\addons\metamod\plugins.ini

      • All the metamod files are now installed. To activate it when the server starts, the liblist.gam file needs to be modified. This is best left until last.

  6. Install Admin Mod

    • In the <MOD>\addons\ directory create a new folder. Name it adminmod

    • In the <MOD>\addons\adminmod\ directory create three new folders. Name them dlls, config and scripts

    • Copy all files with a .amx extension from <AM>\scripting\binaries\ to <MOD>\addons\adminmod\scripts\

      If there are no .amx files in the <AM>\scripting\binaries\ folder then you will need to create them. To do this run the compile_all.bat batch file on windows or the compile_all shell script on linux. This is in <AM>\scripting\examples\ folder. Once it has finished you should copy the newly created .amx files across as described above.

    • Copy the files admin_MM.dll and amx_admin.dll from <AM>\dlls\ to <MOD>\addons\adminmod\dlls\

    • Copy the files plugin.ini and adminmod.cfg from <AM>\config\ to <MOD>\addons\adminmod\config\

    • Edit your current config file(s)

      If you are running a listenserver (you launch a server with the 'Create Game' button and do not tick the 'Dedicated Server' box) then you need to edit the listenserver.cfg file.

      If you are running a dedicated server you need to edit your server.cfg file

      If you use both server types edit both files

      Open the .cfg file in a plain text editor (notepad, vim or something similar that will save as plain text) and go to the bottom of the file. Add the lines:

      // execute the adminmod config file
      exec addons/adminmod/config/adminmod.cfg

      Save the file. Close the file.

  7. Add Admin Mod to the Metamod plugins.ini

    Open the file <MOD>\addons\metamod\plugins.ini in a plain text editor

    • Windows users

      add the line
      win32 addons/adminmod/dlls/admin_MM.dll

    • *nix users

      add the line
      linux addons/adminmod/dlls/admin_MM_i386.so

    Save the file. close the file

  8. Edit your Admin Mod config file

    See: Setting up your Admin Mod config file

  9. Edit your users.ini file

    See: Setting up your users.ini file

  10. Edit your plugin.ini file

    See: Setting up your plugin.ini file

  11. Set up any other files you may need

    if you know that you need one or more of these files then you should read the relevant sections linked to below. If you don't know what these files are for then you probably don't need them yet so you should move on to the next step.

    • maps.ini: Setting up your maps.ini file

    • models.ini: Setting up your models.ini file

    • ips.ini: Setting up your ips.ini file

  12. Backup your liblist.gam file

    It is always a good idea to have a backup of the liblist.gam file in case things go badly and you need to revert to a normal server without MetaMod enabled.

    Copy the file <MOD>\liblist.gam to <MOD>\AdminMod_backup_of_liblist.gam

  13. Edit your liblist.gam

    If you did not stop your server at the begining of this guide then do so now.

    • Windows users

      Open the <MOD>\liblist.gam file in a plain text editor (notepad, etc). Find the line which begins with the word gamedll. For Science and Industry mod, this line reads:

      gamedll "dlls\si.dll"

      Change the path inside the double quotes so that it points to the metamod.dll file:

      gamedll "addons\metamod\dlls\metamod.dll"

    • *nix users

      Open the <MOD>\liblist.gam file in a plain text editor (vim, etc). Find the line which begins with the word gamedll_linux. For Science and Industry mod, this line reads:

      gamedll_linux "dlls/si_i386.so"

      change the path inside the double quotes so that it points to the metamod.dll file:

      gamedll_linux "addons/metamod/dlls/metamod_i386.so"

    Save the file and exit the editor.

  14. Restart the server

    Admin Mod and MetaMod are now installed and enabled. When you start the server it will load MetaMod, MetaMod will load Admin Mod and the server will then continue as normal.

Configuration of access levels, users accounts, name reservations and other features are explained elsewhere in this documentation. This guide leaves you only with Admin Mod installed and working, the rest is up to you. We strongly reccomend that you read the rest of this manual thoroughly before you proceed to try and use Admin Mod.


Linux Installation Information

Extract the tarball (the .tar.gz file) to a location of your choice, e.g. /usr/local. This will create the directory Adminmod which contains the Admin Mod files. Change into this directory and run the install_admin shell script to perform an installation of Admin Mod. Alternatively you can install manually, but the shell script does a good job of getting the basic components in place.

Linked below is the output of the install script sessions for your reference.

  • 1st Time Linux Install

  • Linux Upgrade Install

Information is also available about creating Linux Passwords

Following installation of the Admin Mod, proceed to The Admin Mod Configuration Files section to begin setting your configuration variables. Once you have your files in place, configuration of Admin Mod is essentially the same for Linux and Windows.


1st Time_Linux Install

1st Time Linux Install output

Installing Admin Mod on a Linux system is just as easy as installing on a Win32 platform. After unzipping the tarball run the install_admin shell script. You can provide the MOD you want to install Admin Mod for as an argument to the installer by using the MOD directory name:

./install_admin cstrike

This would install Admin Mod for Counter-Strike. If you leave out the MOD and call the installer without arguments, it will present you with a list of your installed MODs to choose from.

The installation of Admin Mod with the install_admin script is pretty self-explanatory. Below we show some steps the installer takes when installing Admin Mod on a machine that does not have Admin Mod installed on it yet. This content is provided for reference. We will assume that if you have successfully installed hlds_l on a Linux machine, you don't need to have your hand held. :)

install_admin Walkthrough

The installer will first try to locate the tools that it needs to do it's work. If some of the required tools cannot be found it will exit since it cannot complete the installation. Normally that should not happen since it uses only tools that every standard Linux installation should have installed like 'sed', 'grep' or 'cp'. After the setup it will greet you with a welcome screen.

Setting up installation... ok

               Admin Mod Installation Script
                       Version 2.50.60

   This script will install Admin Mod version 2.50.60 on your
   system. It will ask you for the directory that you installed
   the Half-Life server in. To accept defaults just press Return.
   After the binaries are installed you should read the docu-
   mentation and configure Admin Mod before you use it for the
   first time.

Shall I proceed with the installation? (y/n) [y]

This is your chance to quit the installer if you invoked it unintentionally. When the installer prompts you for input it will normally show you some possible inputs like 'y' for yes, 'n' for no or 'q' for quit. It will usually provide a default (shown in brackets, e.g. '[y]') which you can accept by simply hitting the Return key.

When you choose to continue the installer will try to locate your HLDS installation.

Trying to locate your HLDS... done

Please enter the directory where your HL server is installed,
or hit Return to accept the default.
[/usr/local/games/hlds_l]:

If it found a version of the HLDS on your system it will present you with a default location. If that is the HLDS you want to install Admin Mod for you can accept the default. Otherwise enter the path to the HLDS installation you want Admin Mod installed for.

If you did not provide the MOD you want to install Admin Mod for on the commandline, the installer will search for your installed MODs and give you a list to choose from. If your MOD is not listed, quit the installer and call it again with the MOD directory as an argument.

You seem to have the following MODs installed:
        MOD             Description
----------------------------------------------
  [1]:  cstrike         Counter-Strike
  [2]:  dmc             Deathmatch Classic
  [3]:  dod             Day of Defeat
  [4]:  ricochet        Ricochet
  [5]:  si              Science and Industry
  [6]:  tfc             Team Fortress
  [7]:  valve           Half-Life

Please choose the number of the MOD you
want to install Admin Mod for (q to quit): 5

Choose the MOD to install Admin Mod for. In this example we chose "Science and Industry" by entering '5' at the prompt. The installer will check if it can find the MOD installation and present you with another prompt:

Looks like you have Science and Industry installed in
/usr/local/games/hlds_l/si.
I can now install the Admin Mod files. Proceed? (y/n) [y]

This is your last chance to chicken out. If you answer 'y' here the installer will continue and install the Metamod and Admin Mod files into the MOD directory.

Installing Metamod binaries to si/addons/metamod ... done.

Updating your liblist.game file ... done.

Installing Admin Mod files to si/addons/adminmod ... done.

Updating your Metamod plugins file ... done.

After the files have been installed, and Metamod and Admin Mod have been configured to be loaded the next time you start the server, one more thing is left. To set the configuration variables (cvars) for Admin Mod the file containing the cvars has to be read by the server upon startup.
This is achived by having the server "exec" the adminmod.cfg file from the server.cfg file. An entry in the server.cfg file is required for this. The installer can make this entry for you. Since you do a fresh install of Admin Mod it is usually a good idea to let the installer add the line to your server.cfg file.

The Admin Mod files have now been installed. It looks like you install this
version of Admin Mod for the first time. You will have to edit your
adminmod.cfg file in the directory
/usr/local/games/hlds_l/si/addons/adminmod/config
to configure Admin Mod for your server. Then add this line to the bottom of your
/usr/local/games/hlds_l/si/server.cfg file:

exec addons/adminmod/config/adminmod.cfg.

I have copied an adminmod.cfg file with default settings to your
/usr/local/games/hlds_l/si/addons/adminmod/config
directory and can now add the necessary line to your server.cfg file.
Edit the adminmod.cfg file afterwards to configure it to your needs.

Shall I add the line to your server.cfg file? (y/n) [y]

The installer is now done installing Admin Mod.

Congratulations, Admin Mod is now installed.
To configure it you should now edit your adminmod.cfg file and create
users.ini, maps.ini, ips.ini, models.ini and wordlist files as needed.
Follow the instructions in the documentation and check for more infor-
mation at the Admin Mod website http://www.adminmod.org.

Enjoy!

Be sure to edit the adminmod.cfg file to set the correct values for your setup. See the section on configuring Admin Mod to learn how to customize Admin Mod for your server.


Linux Upgrade Install

The installer will aid you through the process of upgrading a previous installation of Admin Mod. After unzipping the tarball run the install_admin shell script. You can provide the MOD you want to install Admin Mod for as an argument to the installer by using the MOD directory name:

./install_admin cstrike

This would install Admin Mod for Counter-Strike. If you leave out the MOD and call the installer without arguments, it will present you with a list of your installed MODs to choose from.

The upgrade of Admin Mod with the install_admin script is pretty self-explanatory. Below we show some steps the installer takes when installing Admin Mod on a machine that has a previous version of Admin Mod installed on it. Since an installation of Admin Mod can be customized in many ways, upgrading an existing installation is not as straightforward as a fresh install. You may be required to change some things by hand. Depending of your setup there are various paths through the upgrade process. We will show here one possible situation. In general just follow the instructions the installer gives you.

This content is provided for reference. We will assume that if you have successfully installed hlds_l on a Linux machine, you don't need to have your hand held. :)

install_admin Upgrade Walkthrough

The installer will first try to locate the tools that it needs to do it's work. If some of the required tools cannot be found it will exit since it cannot complete the installation. Normally that should not happen since it uses only tools that every standard Linux installation should have installed like 'sed', 'grep' or 'cp'. After the setup it will greet you with a welcome screen.

Setting up installation... ok

               Admin Mod Installation Script
                       Version 2.50.60

   This script will install Admin Mod version 2.50.60 on your
   system. It will ask you for the directory that you installed
   the Half-Life server in. To accept defaults just press Return.
   After the binaries are installed you should read the docu-
   mentation and configure Admin Mod before you use it for the
   first time.

Shall I proceed with the installation? (y/n) [y]

This is your chance to quit the installer if you invoked it unintentionally. When the installer prompts you for input it will normally show you some possible inputs like 'y' for yes, 'n' for no or 'q' for quit. It will usually provide a default (shown in brackets, e.g. '[y]') which you can accept by simply hitting the Return key.

When you choose to continue the installer will try to locate your HLDS installation.

Trying to locate your HLDS... done

Please enter the directory where your HL server is installed,
or hit Return to accept the default.
[/usr/local/hlds_l]:

If it found a version of the HLDS on your system it will present you with a default location. If that is the HLDS you want to install Admin Mod for you can accept the default. Otherwise enter the path to the HLDS installation you want Admin Mod installed for.

If you did not provide the MOD you want to install Admin Mod for on the commandline, the installer will search for your installed MODs and give you a list to choose from. If your MOD is not listed, quit the installer and call it again with the MOD directory as an argument.

You seem to have the following MODs installed:
        MOD             Description
----------------------------------------------
  [1]:  cstrike         Counter-Strike
  [2]:  dmc             Deathmatch Classic
  [3]:  dod             Day of Defeat
  [4]:  ricochet        Ricochet
  [5]:  si              Science and Industry
  [6]:  tfc             Team Fortress
  [7]:  valve           Half-Life

Please choose the number of the MOD you
want to install Admin Mod for (q to quit): 2

Choose the MOD to install Admin Mod for. In this example we chose "Deathmatch Classic" by entering '2' at the prompt. The installer will check if it can find the MOD installation and present you with another prompt:

Looks like you have Deathmatch Classic installed in
/usr/local/hlds_l/dmc.
I can now install the Admin Mod files. Proceed? (y/n) [y]

This is your last chance to chicken out. If you answer 'y' here the installer will continue and install the Metamod and Admin Mod files into the MOD directory.
Since you do an upgrade, the installer will report that your installed Metamod version is older then the one that comes with the Admin Mod package.

You have an older version of Metamod installed than the one
that comes with this package (1.17.2).
Should I update your Metamod with the new version (y/n/q)? [y]

You are given the choice to update your installed version with the newer one. If your Metamod installation dates back from before the new directory structure of the ADS was introduced the installer provide you with the choice to move the Metamod files to the new standard location. Unless you have an unusual custom setup of your Metamod files we suggest that you choose to use the new directories.

The installation of your old Metamod version does not adhere to the new
addons directory standard. You may keep your Metamod version installed
where it is now or switch to the new standard location.
Should I upgrade your Metamod to use the new standard directory (y/n/q)? [y]

Answering yes will make the installer move your Metamod files to the new location adhering to the ADS directory structure. It will then continue with copying the new Metamod binaries over your old ones.

Installing Metamod files to dmc/addons/metamod ... done.

Updating your liblist.game file ... done.

Next it will continue with the installation of Admin Mod. Again, you are asked if you want to upgrade your old Admin Mod installation with the new one.

You have an older version of Admin Mod installed than the one
that comes with this package (2.50.60).
Should I update your Admin Mod with the new version (y/n/q)? [y]

You will again be given the choice to have your Admin Mod files moved to to the new standard directory for Admin Mod. As with the other prompts you are also given the choice to quit the installer if something went wrong or when you maybe want to make backups of your files first.

The installation of your old Admin Mod version does not adhere to the new
addons directory standard. You may keep your Admin Mod version installed
where it is now or switch to the new standard location.
Should I upgrade your Admin Mod to use the new standard directory (y/n/q)? [y]

The installer continues now with installing the files for the new version of Admin Mod. The binaries are installed into the dlls directory. It will then try to find your configuration files (e.g. users.ini, maps.ini, etc) and moves them to the new config directory. Backup copies of your old files will be stored in their old location but with the extension 'old' appended. If you don't need them anymore you can later remove them by hand.

Installing Admin Mod binaries to dmc/addons/adminmod/dlls ... done.

Trying to locate your config files and moving them to dmc/addons/adminmod/config ...
/usr/local/hlds_l/dmc/users.ini
    --> /usr/local/hlds_l/dmc/addons/adminmod/config/users.ini
/usr/local/hlds_l/dmc/plugin.ini
    --> /usr/local/hlds_l/dmc/addons/adminmod/config/plugin.ini
done.
Backup copies of your config files have been saved with the extension '.old'.
Remove them by hand if you do not need them anymore.

Next, the installer will also move your installed Admin Mod script files from the <mod>/dlls directory to the new adminmod/scripts directory. Script files installed in other directories will not be moved, assuming that you had them installed in some other directory on purpose. The base scripts coming with Admin Mod will also be replaced with the new versions.

Relocating your script files to dmc/addons/adminmod/scripts ...
dlls/plugin_base.amx
    --> addons/adminmod/scripts/dlls/plugin_base.amx
dlls/plugin_chat.amx
    --> addons/adminmod/scripts/dlls/plugin_chat.amx
dlls/plugin_hldsld_mapvote.amx
    --> addons/adminmod/scripts/dlls/plugin_hldsld_mapvote.amx
dlls/plugin_message.amx
    --> addons/adminmod/scripts/dlls/plugin_message.amx
dlls/plugin_retribution.amx
    --> addons/adminmod/scripts/dlls/plugin_retribution.amx
dlls/plugin_fun.amx
    --> addons/adminmod/scripts/dlls/plugin_fun.amx
Leaving "some/dlls/plugin_other.amx" in place. You can move it by hand if you need it.

Installing new versions of script files ... done.

Updating your Metamod plugins file ... done.

To set the configuration variables (cvars) for Admin Mod the file containing the cvars has to be read by the server upon startup. This is achived by having the server "exec" the adminmod.cfg file from the server.cfg file. An entry in the server.cfg file is required for this.

The installer can make this entry for you. Since you upgrade from a previous version, your server.cfg file is probably filled with the old Admin Mod cvars. The installer can either delete them from the server.cfg file for you or only comment them out. Commenting them out may be the better choice if you want to lookup your old settings to replicate them in the new adminmod.cfg file. The default is that the installer leaves your server.cfg untouched.

The Admin Mod files have now been installed. It looks like you had installed a
version of Admin Mod before which did not use the directories laid forth in the
new Addons Directory Standard. You will have to edit your adminmod.cfg file in
the directory /usr/local/hlds_l/dmc/addons/adminmod/config
to configure Admin Mod for your server. Then add this line to the bottom of your
/usr/local/hlds_l/dmc/server.cfg file:

exec addons/adminmod/config/adminmod.cfg.

You should remove all other Admin Mod settings from the server.cfg file. Note that
you will have to set up the Admin Mod configuration before you can use Admin Mod.

I can try and remove the old Admin Mod settings from your server.cfg file or,
alternatively, comment them out.

Shall I Delete the old settings, Comment them out or Leave the file as it is (d/c/l) [l] c

If you choose to let the installer modify the server.cfg file a backup copy will be saved which you may delete by hand when you don't need it anymore. Letting the installer add the line to read the adminmod.cfg file is usually safe and we suggest you let it add it.

I can now add the necessary line to set the Admin Mod cvars from the adminmod.cfg
file to your server.cfg file.

Shall I add the line to your server.cfg file? (y/n) [y]

That concludes the upgrading of your Admin Mod installation.

   Congratulations, Admin Mod is now installed.
   To configure it you should now edit your adminmod.cfg file and create
   users.ini, maps.ini, ips.ini, models.ini and wordlist files as needed.
   Follow the instructions in the documentation and check for more infor-
   mation at the Admin Mod website http://www.adminmod.org.

   Enjoy!

Be sure to edit the adminmod.cfg file to set the correct values for your setup. See the section on configuring Admin Mod to learn how to customize Admin Mod for your server.


Uninstalling Admin Mod

How do I uninstall Admin Mod ?

You don't. :D

Just kidding...

If you are trying to uninstall version 2.50.50 or later it's pretty simple. In the addons/adminmod/tools directory there should be visual basic script (.VBS file) with will uninstall Admin Mod for you. The only thing it does not do is remove the lines that try to execute the adminmod.cfg file from you listenserver.cfg and your server.cfg file but this is easily done by hand. For mor einformation about the uninstaller script see the Running the Uninstallation Script page of this manual.

It is important to note that if you use this uninstaller to remove previous versions of Admin Mod, the Admin Mod CVARs located in your (listen)server.cfg will not be removed either. You should remove these by hand after uninstalling Admin Mod.

If for some reason you can't use the uninstaller you will have to uninstall manually. Hopefully you were a good scout and made a backup of your original files just in case. If so, just restore your old liblist.gam file and all is done.

But if you didn't (shame on you), it's really quite simple. If you are uninstalling a 2.50 version to keep things clean and tidy, you should remove the Admin Mod specific CVARs from your server.cfg or listenserver.cfg (whichever one applies to your situation). then remove all your Admin mod specific config files (users.ini, wordlist.txt, etc..) from the <mod> directory.

If you are uninstalling a 2.50.50 or greater version you should remove the line "exec addons/adminmod/adminmod.cfg" from both listenserver and server.cfg (as before depending on which one you use.). The delete the <mod>\addons\adminmod directory

Then edit your liblist.gam file in your server's mod directory to return the gamedll file setting back to "dlls\mp.dll" (if you're using counter-strike for Windows) or "dlls/cs_i386.dll" (in the case of counter-strike running under Linux) The gamedll name depends on the mod you are using.

That's it.

Unless of course you want to use the windows uninstallation script, in which case you should read the Running the Uninstallation Script page.


Running the Windows Installation Script

Running the Windows Uninstallation Script

Foreword

If you experience difficulties running the uninstal script that is supplied with Admin Mod, it is possible you either have an outdated version of the Windows Scripting Host or you do not have it installed on your computer. In either case, the latest version of Windows Scripting can be downloaded from:

http://msdn.microsoft.com/scripting/

It is also possible that your anti-virus program might warn you or prohibit you from running VBScript files such as this uninstaller. If that is the case, you will need to disable your anti-virus software while uninstalling Admin Mod, but be sure to re-enable it after you are done.

To uninstall Admin Mod you run a friendly little VBScript that will greatly simplify the process of uninstalling Admin Mod. This script is located in the tools folder of the Admin Mod distribution zip.

The uninstaller relies on the presence of the backup liblist.gam file that the installer creates for you the first time you install. If you did not install using the script the uninstaller will not be able to find the installation and you will have to remove it by hand. The uninstaller can remove any 2.50 installation apart from the Admin Mod cvars. With 2.50.50 and later it is important that you do not have these cvars littering the standard half-life configuration files, they can and will probably cause problems because of duplicate disparate values being set. You are strongly advised to remove them as soon as possible and certainly before you attempt to run the server

When you run the uninstaller you should be prompted with this dialogue.

It is recommended for most users to allow the uninstaller to read the Half-Life registry keys (there are no Admin Mod registry keys) allowing it to locate any Admin Mod installations it can. If you were forced to manually enter the path to your Half-Life or hlds executable file to install Admin Mod then you may need to use the "No" option which will allow you to again input a full path to the game Half-Life or hlds executable.

If you allow the uninstaller to read the registry keys it should find all Admin Mod installations present on the system. If there is only a single installation you will be prompted and simply asked if you wish to remove it with a dialogue similar to that below.

a single mod uninstallation prompt

If there are multiple installations you will be asked to pick one from a list as shown in the picture below. In each case only the number should be entered. Any other input is erroneus and the uninstaller will quit.

multiple admin uninstall options

If there are no other Metamod dlls installed Metamod will be uninstalled along with Admin Mod and the following dialogue will be shown.

or perhaps you have other Metamod plugins installed, in which case they should be detected and the following message will be shown.

What it does

  • The uninstaller will remove any Admin Mod 2.50 series and Metamod 1 series installation (unless Metamod dependant dlls are found
  • The uninstaller will backup all files it removes or edits
  • The uninstaller will not ever delete or overwrite any backup files it has created, be careful if you are low on disk space and uninstall many times.
  • The uninstaller will not remove Admin Mod cvars or comments from your server.cfg or listenserver.cfg files

The uninstaller creates it's diretcory names from a date time stamp at the moment it creates the folder, it is in the form

Admin Mod 2.50 uninstall YYYYMMDD-HHMMSS

this allows you to find files uninstalled on a particular time and date as well as creating a unique folder name for each uninstallation.

When the installation script detects that the location it is installing Admin Mod to has a version already in place it will attempt to run the uninstaller. If it fails it will refuse to run, telling the user they must first uninstall their previous Admin Mod version. If it succeeds the uninstaller will silently uninstall the previous version with the same behavior explained above.


Manual Uninstallation - Walk-Through

Note:This portion of the guide discusses a manual uninstallation of Admin Mod, and is not recommended for people who do not have a clear understanding of directory structures, file editing, etc. – For a script-based, more automated uninstallation, please read the Running the Windows Installation Script section. However, no matter what type of uninstallation you are undertaking, there is a lot of good information to learn from here, so be sure to read it at some point in time, even if you do script-based installation.

Note:For Linux users, the installation process is identical to the one described below, except for the .dll files. When reading, mentally replace '.dll' with '_i386.so'. This means that 'metamod.dll' corresponds to 'metamod_i386.so'. Furthermore, slashes must be inverted when discussing file paths.

This walkthrough will leave you with your server without Admin Mod and possibly Metamod if you decide to uninstall it.

  1. Stop What you are doing

    If your server is running stop it. Atempting to uninstall Admin Mod with the server running is a bad idea.

  2. Find your Admin Mod Installation.

    Where did you want to install Admin Mod to? First find the folder where you installed Half-Life or Counter-Strike. In this folder there should be one or more executable files with the Half-life or Counter-Strike icon, as well as the files hl.exe hlds.exe OR cstrike.exe if you have the Counter-Strike Retail version of Half-Life. This folder will be refered to as the Half-Life folder (<HL>).

    The Admin mod installation you wish to remove is in one of the mod folders under the <HL> directory. Find the mod which contains the Admin mod installation you want to remove. Typically ths name of the folder corresponds to the name of the mod in some obvious way. The folder that the mod is contained in will be refered to as the Mod folder (<MOD>).

  3. Remove Admin Mod

    Admin Mod is almost entirely contained in the folder <MOD>\addons\adminmod All Admin mod dlls plugin binaries and configuration files are located here by default. If you wish to back up the Admin mod installation before you uninstall it then you should copy this folder structure and keep it in a safe location elsewhere.

    Delete the <MOD>\addons\adminmod folder and all its subfolders and files.

  4. Remove Admin Mod from the Metamod plugins.ini

    Note: if you wish to uninstall metamod as well you can skip this step.

    Open the file <MOD>\addons\metamod\plugins.ini in a plain text editor

    • Windows users

      remove the line
      win32 addons/adminmod/dlls/admin_MM.dll

    • *nix users

      remove the line
      linux addons/adminmod/dlls/admin_MM_i386.so

    Save the file. Close the file

  5. Remove Metamod

    If you have no other Metamod plugins installed (such plugins include some bots, administative and gameplay modification mods, refer to their specific documentation for details) then you may want to remove metamod. If you remove metamod and you are using metamod plugins that rely on it those plugins will require metamod to be reinstalled and reconfigured before they will be functional.

    Metamod is almost entirely contained in the folder <MOD>\addons\metamod If you wish to back up the Admin mod installation before you uninstall it then you should copy this folder structure and keep it in a safe location elsewhere.

    Delete the <MOD>\addons\metamod folder and all its subfolders and files.

  6. Edit your server config file

    your <MOD>\(listen)server.cfg file should contain an number of lines which execute the admin mod configuration file. You should delete these lines. For details see: Setting up your Admin Mod config file. Simply remove any lines known to be linked to Admin Mod

  7. Restore your liblist.gam file

    When Admin Mod was installed a backup of the normal liblist.gam file was created named <MOD>\AdminMod backup of liblist.gam. If this file exists then follow the instructions below. If it does not then you will have to edit the liblist.gam file and change the gamedll manually.

    • Delete <MOD>\liblist.gam

    • Rename the file <MOD>\AdminMod backup of liblist.gam to <MOD>\liblist.gam

  8. Restart the server

    Admin Mod (and possibly Metamod) is now uninstalled. You can now start your server.


The Admin Mod Configuration Files

Introducing Configuration Files

If you have run a Half-Life dedicated server for more than a minute or two already, then you know that the server uses configuration files (usually with a file extension of .cfg) to set many optional configuration variables that the server reads when it is started. Admin Mod has a similar set of files, which determine how the Admin Mod is configured and behaves. Most of Admin Mod's configuration files have an extension of ".ini" - although some of Admin Mod's configuration options are set in a ".cfg."

Include Directives in Ini Files

From Admin mod 2.50.58 onwards .ini files can now make use of include directives. Programmers of C or related/similar languages will be familiar with the preprocessor syntax and idea behind this feature. For those of you who aren't programmers heres a quick summary.

in the ini files a line is started with with symbol and keyword combination #include and is followed the relative path to another file enclosed in double quotes, like this "otherfile.ini". When Admin Mod loads the ini file it will read the path in the double quotes and attempt to load the file that it points to as an ini file of the current type. This means that files included in this way in the users.ini will be treated as users.ini formatted files, similarly files loaded from include directives in the plugins.ini will be treated as plugins.ini style files.

So in users.ini the line

#include "..\..\host-administrators.ini"

will be found and the file host-administrators.ini from two directories above the current ini file will be loaded as a file which contains users.

The Configuration Files

Here's a quick description of what each of the specific Admin Mod .cfg and .ini files are used for with links to detailed descriptions:

adminmod.cfg

The adminmod.cfg was a new addition to 2.50.50, so as to conform with the new Addon Development Standards. All Admin Mod cvars are now located in this file.

See: Setting up your server.cfg and adminmod.cfg files

users.ini

The users.ini file is used to specify who will have special rights on your server (by name, IP Address or WON ID) and what commands they have permissions to execute.

See: Setting up your users.ini file

ips.ini

The ips.ini file is used for slot reservation on your server based on IP address. All you have to do is specify the IP addresses of the computers that can use one of your reserved slots.

See: Setting up your ips.ini file

models.ini

The models.ini file is used for model reservation. It prevents players from using the specified models unless they set the correct password. It lets you protect any given model from use by unauthorized players.

See: Setting up your models.ini file

maps.ini

The maps.ini file is used to control which maps users can vote for. It has the same format at the mapcycle.txt file. Note that it does not replace the mapcycle.txt file (which controls the maps that run on your server and the order they are played in). Instead, it is just a list of maps available to be started via an Admin Mod vote.

See: Setting up your maps.ini file

plugin.ini

New to version 2.50, this file is used to denote the compiled script files that are to be used on your server. The scripts that come with Admin Mod 2.50.50 are organized and split into chunks by functionality and by game type. So, to add a custom script or disable certain parts of the functionality, one has the option with this file to do so without having to recompile every piece of functionality, every time you make a change. Want to test a new script? Just compile it, dump it into the mod's dlls directory, add the script name to the plugin.ini file and reload - presto, you can test away, and you didn't have to modify (and possibly break) your already existing scripts.

See: Setting up your plugin.ini file

wordlist.txt

This file contains the list of banned words for the server. Each word should be placed on its own line within this file. The list is made available to through the check_words() and censor_words() scripting functions. There is no ability to use wildcard or regular expression matches in this file, all banned words must be entered verbatim individually.

Another file, named "liblist.gam," is a plain text file on your server that the server program reads when started to determine what it should do and some of the files it should load and run. This file is not unique to Admin Mod -- all servers utilize this file to specify what base runtime options and resources the server should use. Admin Mod requires that this file be changed in order to allow the server to start Admin Mod when the server itself is fired up. The specifics of this file and it's setup for Admin Mod are discussed later in a section covering manual installation. If you are doing the standard, automated installation, this file is configured for you.


Setting up server.cfg, adminmod.cfg and the *.ini files

Now is the time to take a quick break if you need one. Clear your head. The next steps are not complicated, but they will make you think.

These files determine how Admin Mod interacts with your server and the users of the Admin Mod. You must set up each of these files as described in the ../half-life/<mod>/addons/adminmod/config/ directory of your Half-Life installation depending on which modification you intend to use. A section entitled The Admin Mod Configuration Files contains descriptive information about each file. Please choose a configuration file below to get more information about configuration of that particular file.

  • Setting up your server.cfg and adminmod.cfg files (required)

  • Setting up your users.ini file (required if you want to set up admin user accounts on the server)

  • Setting up your plugin.ini file (required unless you are using the old-skool scripting style)

  • Setting up your ips.ini file

  • Setting up your maps.ini file

  • Setting up your models.ini file

It's time to look back to the addons/adminmod/config and addons/adminmod/config/samples directories. In those folders you will find all of the .ini files that we need to work with, as well as a sample server.cfg and adminmod.cfg files and the wordslist.txt file.


Setting up your server.cfg and adminmod.cfg files

NOTE: The adminmod.cfg and (listen)server.cfg files are the configuration link between Half-Life and Admin Mod. Without a proper setup, Admin Mod will cause more problems than it will solve. Each portion of the setup is critical, so read through this section carefully. Many configuration variables (or CVARs for short - we uses the term CVARs in this document extensively, so now you know what we mean) have been removed or changed with Admin Mod 2.50.50, and file structure has also been altered so everyone should read this section, confirmed user or not.

// This is a comment

In the (listen)server.cfg and adminmod.cfg files, any line beginning with " // " (comment characters) is ignored by the server when it loads this file. In addition, if the " // " characters appear anywhere on a line, anything after those characters is ignored by the server. Any line not beginning with the comment characters is assumed to contain server instructions, and is parsed by the server for execution.

Please note that a 'dedicated' server will, unless told otherwise, read it's initial settings from 'server.cfg'. A 'listen' server, on the other hand, reads them from 'listenserver.cfg'.

As of Admin Mod v2.50.50, there is much less to edit in these files. Depending on which type of server you are using, add the following lines to either your server.cfg or listenserver.cfg.

// Execute Admin Mod adminmod.cfg file:
exec "addons/adminmod/config/adminmod.cfg"

All of the Admin Mod configuration variables (CVARs) haven been moved to a new file to conform with the new ADS. They are now located in the <mod>/addons/adminmod/config/adminmod.cfg file.

If you do not know what type of server you are running, you can add these lines to both files. We recommend however that you do know so that you can edit other options that are not Admin Mod related. Here is the simple explanation of the difference between the server.cfg and listenserver.cfg files for all the visual people out there:

Type of Server | File to Configure
Dedicated Server (runs in a text window on the computer - you don't play the game on this machine, you just connect to it) | server.cfg
Listen Server (you start the server in your Half-Life game, and you can play on the same machine while it is acting as a server for other players) | listenserver.cfg

A listen server is one that you start from within the Half-Life VGUI itself: it starts when you join, it ends when you quit, and you have 0 ping. A dedicated server is started from the HLDS program, and appears on the server machine as just a lot of text information. If you have no idea what type of server you are running, even after this explanation, simply configure your server.cfg file to your liking with all the necessary CVARs and copy the contents of the server.cfg file to the listenserver.cfg file. This way, no matter what you do, you are covered.

Creating/Configuring your adminmod.cfg file:

The default adminmod.cfg file for Admin Mod 2.50.60 can be found in the Adminmod/config folder. The file itself is contains comments which explain the uses of each of the cvars listed within the file and each cvar and it's settings are explained in the reference section of the manual on the Admin Mod Configuration Variables (CVARs) page.

All Admin Mod and Half-life .cfg files are plain text files which can be opened and edited in any text editor, such as Notepad, UltraEdit, vi, pico, Emacs, or any other text editor that can be guaranteed to save the file in plaintext format. Please note that word processing tools such as Microsoft Word® or any other equivalent will often add formatting information making the file invalid for Half-life's purposes.


Setting up your users.ini file

This file controls the access levels of administrators to Admin Mod commands. To be an administrator on the server, your name, WONID, or IP must be in this file. The users.ini file also enables nick name and WONID protection/reservation.

The users.ini file is where you will store all of the player names, WONIDs, IPs, passwords, and access levels of the users to whom you wish to grant privileges on your server. In the interest of being complete, but not confusing some, we will start with simple examples here and get more technical as we go along. The sample users.ini file that comes with the Admin Mod distribution is documented with internal comments, as well. For clarity names, WONIDs and IPs will be highlighted in green, passwords fields in blue and access levels in red. If you get confused, remember this legend.

The normal format of the users.ini like this:

username:password:accesslevel

Without the appropriate password, a user identified in the users.ini file and the wrong password will not able to use the rights granted to them which can include not being able to join the server if they have reserved access.

Each of the three segments will be explained below.

Field One: Names

There are four ways to identify users in this file and give them access. Each method of specifying the user's identity (player name, WONID, Steam Id or IP) offers its own different advantages and disadvantages:

  • Player Name

    • playername:password:accesslevel

    Using someone's player name to give them access to Admin Mod commands means that, to use the commands, the person has to use the name exactly as it is in the users.ini file. (Names AND passwords are case sensitive.) However, they can use their name and password from any computer. The player name cannot be numeric (composed only of numbers), as it will always be interpreted as a WONID. If a name contains one or more colon characters (":") they are required to be 'escaped' or Admin Mod will see them as dividers and mis-parse the data. To escape a character, place a backslash in front of it (so ::AM::alfred becomes \:\:AM\:\:alfred). Divider colons must never be escaped.

  • WONID

    • wonid:password:accesslevel

    Using someone's WONID to give them access to Admin Mod commands has the advantage of letting a player use any name he wishes while playing, because, as long as he stays on the same computer, his WONID will not change. On the other hand, because of the way the WONID is calculated, if the player who has access to Admin Mod commands attempts to play using another CD key, he will be unable to access those commands. If the user is on his computer, but does not have the appropriate password, he will be kicked from the server to which he should normally have access. Had the permission been given through the use of the player name, he would have been able to access the server with a different name.

    N.B.
    WONIDs are no longer available for internet play and cannot be used to provide access. This information is retained for compatibility reasons and for those who may be using a WONID provider other than the central WONID servers previously used by Valve.
    Admin Mod can still use WONIDs internally but their use is deprecated from Admin Mod 2.50.58 onwards.
    For general use WONIDs should no longer be used to grant access to individuals. Steam Ids should be used instead.

  • Steam Ids

    • authid:password:accesslevel

    A Steam Id can either look like this STEAM_0:1234:56789, which is the word STEAM followed by an underscore, a number, a colon and a second number. Or it can look like so: STEAM_0:1234:56789, which is a second colon and a third number in addition to the format above. You enter the Steam ID exactly in the same format that you see when you use the "users" or "status" command in the server console.

    The colons in the Steam Ids should not be 'escaped'. This is different from using colons in names (see above). Admin Mod will recognize that a Steam Id has been used in the users.ini field and will use the colons to recognize the correct format. Do not 'escape' the colons. As an example, using the example Ids from above a users.ini line with a Steam Id would look like the following:

    STEAM_0:1234:56789:secretpass:1023

    or

    STEAM_1:23456789:hushhush:121356

  • IP address

    • IP:password:accesslevel

    The ability to use IP (Internet Protocol) addresses to determine Admin Mod access was a new addition to version 2.50.50. The purpose of using an IP to determine player identification is mainly for LAN servers. In the past, a server administrator could not allocate administrative access with WONIDs on a LAN since the same cd key can be used on multiple computers when playing LAN games. However, IPs are unique to every computer, and a LAN user can therefore be granted access even though they have the same WONID as another user. The disadvantage is that since access is granted by computer, any user on a computer with Admin Mod access can execute Admin Mod commands.

Field Two: Passwords

  • Passwords are case sensitive which means for example that 'T' and 't' are two different characters. If this is ignored the users may not be able to gain access to their rights.

  • Passwords can be blank. this allows you to allocate access/name reservation without forcing the user to supply a password. Global default access should be allocated with the default_access CVAR though.

  • Encrypted passwords are available which can increase password security. *nix based operating systems have the required tools as part of the OS distribution and tools are provided with Admin Mod allowing encryption to be used in Windows based OSs

  • As of Admin Mod 2.50.26, passwords are only ever exchanged between the server and individual client system preventing cheats from sniffing the passwords.

Field Three: Access Levels

You determine a user’s permissions by adding up the access levels for all of the commands you want that person to be able to use on the server. We have provided a friendly little javascript calculator that will do the work for you. The chart provided shows the access levels, and the associated Admin Mod commands, followed by some simple instructions covering how to calculate the correct access level for the commands you want to provide to a user.

The access levels are simply numbers. The numbers are fairly meaningles in decimal notation but viewing in binary shows you that each access level corresponds to a single bit in the number. The numbers can easily be worked with by treating each level as a switch bit in the binary representation of the number, 1 is on 0 is off for that level. If you don't understand binary numbers then it is best to deal with the access levels as decimal numbers but it is far easier to quickly understand access levels in binary notation.

The access levels used in Admin Mod plugins are defined in the include files that are used to compile the plugins. If you wish to change the access levels for any reason (for example to move commands to different levels) then the plugins shoudl be edited to change the individual commands. If you wish to change all commands on a single access level then the include file should be edited to change that access level. Both these methods of alteration require some knowledge of plugin scripting. All the access levels use by Admin Mod apart from a small number (reserved slot access level and reserved name access level) can be changed by the user.

The rules of Users.ini

Access levels

Note that if you give a user access to a given level, you are giving access to all commands on that level (level 512 gives access to admin_cfg, admin_servercfg and admin_hostname, for example). You cannot selectively give access to only one command in a given level – they come as a package. They have been grouped in a way that makes good logical sense, though, so you will most likely not find the grouping to be a problem. If you are an adventurous scripter, you can modify the access levels for each command and create your own custom security levels, but that is beyond the scope of this configuration document.

As you can see, access relies on the equation between two things: name/WONID/IP and password. In the same users.ini file, multiple players can have the same password, and the same player name can have different access levels with different passwords.

The users.ini is read from the top to the bottom which allows some interesting configurations. Be careful, however, as this is also an easy sources of hard-to-find errors.
A pair of entries like this for example:

player:testpass:199

player:testpass:65535

Will always give player access level 199, the second line will never come into effect because once the player and password are matched, the searching stops.

There is an exception to this. If a name is reserved anywhere in the users.ini and the connecting player and password combination does not have the reserved access level (level 16384) then they will not be allowed to join. So in the example below

player:access_pass:199

player:name_pass:16384

If player connects with his password set to access_pass despite the fact that the first line will be matched first Admin Mod will still check the to see if the name is reserved, if it is and he does not have the proper password or access to reserved nick (his use of access_pass only grants him the access level of 199 and not the reserved access level of 16384) he will be kicked. In this case the levels could be combined and given the same password.

Using a blank password

If you have a player who you don't want to provide a password for then you should leave the password section of the entry blank. The colons separating fields are still required. For example if you are specifying a user by their Steam Id you may not need a password because no-one but that user has their Id. In which case you would use something like this:

STEAM_0:1111:2222::65535

now the user can connect from machine and as long as the the Steam Id is matched they will be granted the access level in the final part of the string.

Reserving a user name and WONID

If you have a player who mostly plays from home but occasionally plays from someone else's computer, you can allocate their access by reserving both their username and WONID. This method works because both username and WONID reservation use the same password and have the reserved name access. You create two entries in the users.ini, one using the WONID and the second with the user name:

WONID:password:16384

username:password:16384

now the user can connect with his the same password from anywhere. if he is at his own machine the WONID entry will be matched and if he is at another machine the user name can be matched.

Linking a user name and WONID

Another interesting ability is that of linking a WONID and user name. This allows you to reserve access using WONIDs (better security) and to prevent other players using the nickname. This is accomplished by first adding the user with a normal WONID type entry. Then on the next line put the name you wish to reserve, replace the password with the WONID from the entry above it and the access number should always be minus 16384. It sounds complicated but it's really not:

123456:password:access

player:123456:-16384

This allows player to connect and gain access using his wonid, it will also prevent other people from using his user name.

Using REGEX for your user names

REGEX is a text formatting tool supported by Admin Mod , which allows you to do a number of things, such as using special characters in user names, blocking or protecting parts of a name and protecting clan tags.

Getting started with REGEX and AM:

It's important to realize that once you turm on REGEX you have to adapt your users.ini to match the REGEX rules.

In order to utilize REGEX in Admin Mod, you first must set the value of the use_regex CVAR in your server.cfg file to "1" to enable it.

Once enabled, you can use a partial name in your users.ini file, for example, to protect your clan tag. Let's say your clan uses the tag [AMbT].

\[AMbT\]Jaguar:PaSsWoRd:65535

\[AMbT\]Rope:paSSwOrd:65535

\[AMbT\]:PAssWOrd:16384

The above entries would allow Jaguar and Rope to connect using the clan tag, if they successfully authenticate, but will not allow anyone who is not listed in users.ini to connect with the [AMbT] tag. Note that with this setup, anyone who is not listed by username, but who uses the tag and supplies the correct password, would be given only reserved nickname access (16384) and nothing else in the above example.

Note that the brackets in the above example are both preceded by back-slash characters ("\"). The back-slash character denotes that the character to the right of it is to be treated as a text character, rather than as an operator. In other words, it allows non-alphanumeric characters to be used as part of a username. This is especially helpful when you are wanting to assign a username that includes any of the "forbidden characters." As a general rule, any character not listed below should be escaped (preceded with a back-slash) when using REGEX.

A-Z

a-z

0-9

- _ / .

A complete discussion of REGEX, it's uses and detailed explanation is beyond the scope of this manual. If you need REGEX support with Admin Mod, feel free to post your questions in the Admin Mod Forums.

More information about REGEX can be found on the web:

http://www.delorie.com/gnu/docs/regex/regex_toc.html


Setting up your plugin.ini file

The plugin.ini file is a new addition to the Admin Mod 2.50.x series

This lets a server use multiple scripts at the same time. The default installation provides a number of scripts, but has both mod-specific plugins disabled. This means that you must go into the plugin.ini file and enable the Counter-Strike or Team Fortress Classic specific plug-ins.

The default plugin.ini file looks like this when newly-installed:

addons/adminmod/scripts/plugin_antiflood.amx

addons/adminmod/scripts/plugin_base.amx

addons/adminmod/scripts/plugin_chat.amx

addons/adminmod/scripts/plugin_cheat.amx

# addons/adminmod/scripts/plugin_CS.amx

# addons/adminmod/scripts/plugin_TFC.amx

addons/adminmod/scripts/plugin_hldsld_mapvote.amx

addons/adminmod/scripts/plugin_message.amx

addons/adminmod/scripts/plugin_retribution.amx

addons/adminmod/scripts/plugin_fun.amx

# addons/adminmod/scripts/plugin_spawn.amx

In the stock/default plugin.ini file hown above, note that there are two lines that are commented out by semi-colons (";") or hash characters ("#"). They are:

#addons/adminmod/scripts/plugin_CS.amx

#addons/adminmod/scripts/plugin_TFC.amx

If you play TFC, you should remove the hash in front of the second line. You will therefore have this:

#addons/adminmod/scripts/plugin_CS.amx

addons/adminmod/scripts/plugin_TFC.amx

If you play CS, remove the hash in front of the first line that has one. You will have:

addons/adminmod/scripts/plugin_CS.amx

#addons/adminmod/scripts/plugin_TFC.amx

Obviously, there are lines in the file other than the two shown above.

The default installation uses plugin script files, and retrieves the list of files to use from the plugin.ini file. If you decide to do things differently and use only one script, you can disable the plugins by setting the admin_plugin_file cvar to 0 in your adminmod.cfg. The script_file location must then be specified by the script_file cvar. Unless one of these cvars is defined, Admin Mod will not allow the server to start. If both cvars (admin_plugin_file and script_file) are defined in the adminmod.cfg file, the plugin format will be used and the script_file setting will be ignored.

Comments in the plugin.ini file can be preceeded with either a semicolon character(;) or a hash character (#). On this page only hashes are used but exchanging them for semicolons will have exactly the same effects.

See also: Admin Mod Configuration Variables (CVARs), Downloading and Installing Additional Plugins and Compiling Admin Mod Scripts 101 elsewhere in this documentation.


Setting up your ips.ini file

The ips.ini will determine which IP addresses have access to reserved slots. IP stands for Internet Protocol. IP addresses are a series of 4 numbers, with each number in the range 0 to 255.

What's my IP address?

If you do not know your IP address, you can get it by running in Windows 9x/ME

Start >> Run >> type in winipcfg

For Windows XP/2000/NT users, run a command line interface (CLI):

Start >> Run >> type in cmd and enter "ipconfig" at the command prompt.

Linux users get their IP by entering on the command line:

hostname –i or, even better, ifconfig.

How do I enter the IP addresses in my ips.ini file?

Single IP numbers can be entered as follows (no port numbers are required):

129.49.231.126

172.54.512.7

If you use subnets (common in Ethernet Local Area Networks) you can specify your subnet mask (kind of like and IP inside an IP)

129.49.231.126/255.255.255.0

To cover all IPs between 168.23.21.0 and 168.23.21.255, simply set the last digit to 0

168.23.21.0

To cover all IPs starting with 168.23, simply add:

168.23.0.0


Setting up your maps.ini file

This OPTIONAL plain-text file takes the same format as your server's mapcycle.txt, so it's contents would look something like this:

cs_aztec

cs_assault

de_dust

If you do not have a maps.ini file declared in the maps_file cvar in adminmod.cfg all maps in the mapcycle.txt are available. If this file exists and is specified in the adminmod.cfg, it controls what maps may be voted for using Admin Mod. If you have defined this file, but the file is not present, Admin Mod will throw a "Bad map name" error when trying to execute admin_map commands or anyother map voting plugin.

How to use the maps_file

The default adminmod.cfg that is included with Admin Mod (and which is copied to your adminmod.cfg file when you run the installation script) includes an empty entry already for maps_file, which you can modify.

Most commonly, people will call their maps_file "maps.ini" and they can declare it this way:

maps_file "addons/adminmod/config/maps.ini"

If you do not want to use a maps_file, you would declare it like this:

maps_file 0

More information about setting up your adminmod.cfg file can be found elsewhere in this chapter, in Setting up your server.cfg and adminmod.cfg files.


Setting up your models.ini file

The format for this file is model_name:password

To restrict the use of the CS "sas" model without the password "pawsoff"

sas:pawsoff

Specify passwords for models that you want to reserve - Only users with password clanpass set can use gordon in normal Half-life:

gordon:clanpass

Reserve hostage models in CS so they cannot be used for cheating:

hostage1:off

hostage2:off

hostage3:off

If you use Linux you can use encrypted passwords instead

plaintext passwords by setting encrypt_passwords to 1 in

your adminmod.cfg . DON'T mix plain-text and encrypted passwords!

This is an example of an encrypted password

barney:HFwILz6hzetcs


How to Use Bots with MetaMod (AM 2.50 and up)

How to Use Bots with Admin Mod

NOTICE TO USERS OF VERSIONS 2.50d AND EARLIER: This section covers using bots with Admin Mod version 2.50e and later only. All Admin Mod versions prior to 2.50e use a different mechanism for supporting and running bots. If you are using a version of Admin Mod prior to 2.50e, you must consult the documentation for the earlier version.

Beginning with Admin Mod version 2.50e, the procedure for running bots with Admin Mod has been changed. Bot support is now started from the command line or Windows shortcut, rather than from an .ini file. The new procedure is described here. If you have bots already running, you are not required to change your implementation, but realize that future support will be given using this new style of implementation.

What are bots and how do I use them?

Bots are computer-generated players that can be used on a Half-Life server. They are essentially a Half-Life mod, or add-on, which is downloaded and installed just like any other Half-Life mod. Please note that because different bots interact in different ways with the server, your mileage may vary when you try to use bots with Admin Mod. Setting up the bots and Admin Mod to co-exist can be tricky, but in most all cases it can be done.

Metamod, the application that Admin Mod runs with to operate with the Half-Life server, is designed to give you the capability to install plugin applications that interact with your server. Admin Mod and Bots are examples of these types of plugin applications. An application has to be specifically written as a Metamod plugin in order to be used directly with MetaMod.

Installing Bots and Admin Mod:

To use a bot (or other server mod) with Metamod that is not designed as a Metamod plugin, you should first install the bot program. The bot's installation will change the liblist.gam file in your mod's directory. That is why you should install the bots before you install Metamod/Admin Mod, as the bot installation would overwrite the changes made by the Admin Mod installation otherwise.

Next, install Admin Mod. The Admin Mod installation will alter your liblist.gam file by exchanging the bot's "gamedll" line with a new one that points to the metamod.dll file. It will also create a backup of your original liblist.gam file for your reference and in case you want to return the file to its prior version. Now your server will run with Admin Mod when you start it. But since the bots' DLL file is no longer specified to run (because it is no longer listed in the liblist.gam file), your bots don't load. Never fear - there's one more thing you need to do.

To get the bots working, you will need to create a config.ini in <MOD>/addons/metamod.

For Linux-based servers:

gamedll addons/podbot/dlls/Pod_bot.so

For Windows-based servers:

gamedll addons/podbot/dlls/pod_bot.dll

  • Note that you must use forward slashes in this command line section -- Back-slashes will not work!

  • This is an example for podbot. consult the documentation provided with your Bot software for more information about the correct location of your bot.dll or .so.

Protecting bots (and your server) from crashing:

When you are using bots and you use admin_ commands on them like admin_execclient, you server is likely to crash. If this is the case you can set the admin_bot_protection cvar in the server.cfg file to 1. This should prevent you from executing client commands on bots (which can be quite hard on your server).

If you start your server you should now have Admin Mod running together with the bots. If you have problems after having followed all these instructions, head on over to the forums and let us know.


Encrypted Passwords

Password encryption

For security reasons, administrators are encouraged to encrypt their passwords.

This is done by setting the cvar encrypt_password in the adminmod.cfg configuration files.

To encrypt a password, go to the Adminmod/tools directory, and use the command line encrypt executable provided there.

The command

encypt password

Will output a unix crypt of the password argument. If you wish to use MD5 sums (dependant on the encrypt_password setting) you should use the -m argument before the password when you run the command as exemplified below

encrypt -m password

Will output the MD5 hash of the password argument.

What to put where

  • Put the Encrypted version of the password in the user.ini file.

  • Use the plaintext version of the password from the client machine, either with the admin_login command from the client setup configuration file.

This pattern allows the user to be in control of their password. The password is only ever used from the client machine and the server is not aware of the full password. Should the server be compromised it would not be possible to harvest user passwords maintaining the security of their passwords.


MySQL Setup

Setting up Admin Mod with MySQL

General Information

To run Admin Mod in combination with a MySQL database you have to setup the database and then configure Admin Mod to use it. The information that Admin Mod can retrieve from a database is the information normally kept in the files users.ini, models.ini, ips.ini, wordlist.txt and plugins.ini. You can still use the files with the MySQL version of Admin Mod. You can mix file and database operation but the database tables, if specified, will take precedence. Data is read only from tables or files, not both. If Admin Mod fails to read data from the specified MySQL table it will fall back to using files. Please read the manual first to understand how to set up Admin Mod in general and what the configuration files are about and their contents.

MySQL database setup

On your MySQL server you will have to set up a database to store the data for Admin Mod to use. What name you give to the database and what tables it contains is up to you. You can also have more fields in tables than those described below. This document only describes the maximum set of tables and columns available for a complete Admin Mod setup. You can leave out tables which you don't need or add other tables unrelated to Admin Mod. The names for the tables are also free. The only thing which you cannot choose freely are the column names. But we get to that later.

The database

Let's start with the database. For this example we choose to call it adminmod. You can choose another name. If you haven't created a database, yet, do so now with the CREATE DATABASE command. Refer to the MySQL manual for any details concerning MySQL commands and syntax.

mysql> CREATE DATABASE adminmod;

The users table

Next we create the table holding the admin users. We choose to call it users. You can give it another name. The users table has three columns: nick, pass and access. These columns correspond to the three fields for entries in the file specifies by the users_file cvar. nick is the nickname of the user, pass is his password and access his access level.

mysql> CREATE TABLE users( nick VARCHAR(30) PRIMARY KEY NOT NULL,
   --> pass VARCHAR(20) NOT NULL, access INTEGER UNSIGED NOT NULL);

mysql> DESCRIBE users;

+--------+-------------------+------+-----+---------+-------+
| Field  | Type              | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+-------+
| nick   | varchar(30)       |      | PRI |         |       |
| pass   | varchar(20)       |      |     |         |       |
| access | int(10) unsigned  |      |     | 0       |       |
+--------+-------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

The tags table

The tags table has the same layout as the users table. We choose to make the field for the tag shorter than that for the nicknames since we expect a tag regex to use less space. The tags table is used to hold clan tags in addition to user nicknames in the users table. As with all tables, you don't have to create this table if you have no need for it. The reason for the tags table is that clan tags are usually matched against with a regular expression. The MySQL REGEX function is very slow. If the users table was matched with REGEX that would take a long time if the users table was large. Since Admin Mod is also used in large envirounments with table sizes of over 10,000 entries, the tags table has been seperated from the users table. The columns correspond to the three columns in the users table. The tag column holds a clan tag or a regex to match against, pass is the password required, and access the access level attached to it.

mysql> CREATE TABLE tags( tag VARCHAR(30) PRIMARY KEY NOT NULL,
   --> pass VARCHAR(20) NOT NULL, access INTEGER UNSIGNED NOT NULL );
Query OK, 0 rows affected (0.00 sec)

mysql> DESCRIBE tags;

+--------+-------------------+------+-----+---------+-------+
| Field  | Type              | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+-------+
| tag    | varchar(30)       |      | PRI |         |       |
| pass   | varchar(20)       |      |     |         |       |
| access | int(10) unsigned  |      |     | 0       |       |
+--------+-------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

The models table

The models table has two columns: nick and pass. These two columns correspond to the fields in an entry of the file specified by the models_file cvar. nick is the name of the model and pass is the assigned password. We choose to call it models. You can choose a different name.

mysql> CREATE TABLE models( nick VARCHAR(20) PRIMARY KEY NOT NULL,
   --> pass VARCHAR(20) NOT NULL );

mysql> DESCRIBE models;

+--------+-------------------+------+-----+---------+-------+
| Field  | Type              | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+-------+
| nick   | varchar(20)       |      | PRI |         |       |
| pass   | varchar(20)       |      |     |         |       |
+--------+-------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

The ips table

The table to hold the IPs corresponds to the file specified by the ips_file cvar and has only one column called ip. We choose to name the table ips. You can give it a different name.

mysql> CREATE TABLE ips( ip VARCHAR(15) NOT NULL );

mysql> DESCRIBE ips;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ip    | varchar(15) |      |     |         |       |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.01 sec)

The words table

The words table holds the words to be filtered from player chat. It corresponds to the file specified by the words_file cvar and has only one column called word. We choose to name the table words. You can give it another name.

mysql> CREATE TABLE words ( word VARCHAR(30) NOT NULL );

mysql> DESCRIBE words;

+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| word    | varchar(30) |      |     |         |       |
+---------+-------------+------+-----+---------+-------+
1 row in set (0.01 sec)

The plugins table

This table lists the plugins to be used on the server. It has only one column called plugin. It corresponds to the file specified by the admin_plugins_file cvar. We choose to call it plugins. You can give it another name.

mysql> CREATE TABLE plugins( plugin VARCHAR(60) NOT NULL );

mysql> DESCRIBE plugins;

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| plugin   | varchar(60) |      |     |         |       |
+----------+-------------+------+-----+---------+-------+
1 row in set (0.01 sec)

Admin Mod variables setup

To use Admin Mod with the database that you just set up you have to tell it how to connect to the MySQL server and what database and tables to use. Admin Mod provides you with a set of cvars to do so. You set these cvars in the server.cfg file just like all the other cvars.

Connecting to the MySQL server

To connect to the server you need to specify the address of the server, the user to access it as and the password to use.

  • mysql_host <string>

    This variable specifies the address of the machine that the MySQL server is running on.
    Examples:

    mysql_host "192.168.2.1"

    mysql_host "localhost"

    mysql_host "some.machine.net"

  • mysql_user <string>

    This variable specifies the username under which Admin Mod should connect to the MySQL server.
    Examples:

    mysql_user "adminmod"

    mysql_user "someclient"

  • mysql_pass <string>

    This variable specifies the password of the user to connect to the MySQL server.
    Examples:

    mysql_pass "somepass"

Retrieving data from tables

The following variables are used to specify which database and which table to use. The format is "database.table". The list should be self-explanatory. The examples use the database and table names which were used in the examples above.

  • mysql_dbtable_users <string>

    The table for admin users
    Examples:

    mysql_dbtable_users "adminmod.users"

  • mysql_dbtable_models <string>

    The table for models
    Example:

    mysql_dbtable_models "adminmod.models"

  • mysql_dbtable_ips <string>>

    The table for IPs
    Example:

    mysql_dbtable_ips "adminmod.ips"

  • mysql_dbtable_words <string>

    The table for censored words
    Example:

    mysql_dbtable_words "adminmod.word"

  • mysql_dbtable_plugins <string>

    The table for plugins
    Example:

    mysql_dbtable_plugins "adminmod.plugins"

You don't have to use all available tables. As an example you can choose to only use the users and plugins tables from the database. The reserved models will be read from a local file and you don't want to use the IPs. That would result in the following setup:

models_file "models.ini"

ips_file 0

mysql_dbtable_users "adminmod.users"

mysql_dbtable_plugins "adminmod.plugins"

It is a good idea to have users.ini and plugins.ini files, too. That way Admin Mod can fall back to those files if it is unable to read from the MySQL tables.

  • mysql_database <string>

    The database. If you have all the tables you use stored in one database, you can also set the following variable. Now this database will be used for every query that Admin Mod makes. You then do not need to specify the database in the table cvars anymore.
    Example:

    mysql_database "adminmod"

    mysql_dbtable_users "users"

    mysql_dbtable_plugins "plugins"

Other MySQl Cvars

The following variables are used to give a little more flexibility when using Admin mod with MySQL.

  • mysql_preload <1|0>

    This variable controls whether Admin Mod will load each table into memory on startup. Loading the table into memory removes the need to query the database during the round. A significant number of queries are made per second so loading the table into memory may help with the performance of your server. The tradeoff is the memory required to load a complete table into memory. If you have more than 1,000 users defined in your users table then consider disabling this option. This Cvars defaults to 1.

    Example:

    mysql_preload "1"

  • mysql_users_sql <string>

    This variable allows you to customise the SQL command Admin Mod uses to retrieve a users password and access value. The default statement will work with the setup instructions described in this document. This variable can be altered to allow you to get Admin Mod passwords and access levels from an existing database, such as a web based forum, which may have different column names than the default ones mentioned above.

    Note: This cvar will only be used if mysql_preload is set to 0

    Valid values:
    any valid SQL query that returns a password in the first column and an access number (in integer format) in the second column. It must also contain 3 "%s" symbols that are filled in by Admin Mod by (in this order) the mysql_dbtable_users value, the name of the user and the authentication id (i.e. WONID or SteamID) of the player.

    Example:

    mysql_users_sql "SELECT password,access FROM %s where username='%s' or username='%s'"

  • mysql_tags_sql <string>

    This query is identical to the mysql_users_sql query except it is used to match user tags rather than complete user names. A tag is a substring contained within a username, such as the clan tags used by many people. This query uses the "REGEX" functionality of MySQL which means the "nick" column of this database must be valid REGEX expressions. This query is seperate to the mysql_users_sql query as the "REGEX" function of MySQL is extremely slow, so the size of this table should be extremely limited to maintain server performance (i.e keep the number of rows below 100 or so). First exact username matches are attempted using the "mysql_users_sql" query, if that doesn't return any results the "mysql_tags_sql" query is run in an attempt to get the password and access level for any tags contained within the username string. This function allows you to grant access to certain commands to people in a clan, or to stop people using a particular tag without the correct password.

    Valid values:
    as for mysql_users_sql variable.

    Example:

    mysql_tags_sql "SELECT password,access FROM %s where tag REGEXP '%s' or tag='%s'"


Client configuration via setinfo commands

The Basics of Client Configuration

Maybe you already have some sort of idea how this all works, and you are just trying to figure out exactly what to configure and where without the explanation?

To summarize this section, here's the basics of what you can do to get your clients up and going.

  1. In the adminmod.cfg file on your server, make sure you have this line:

    password_field "_pw-home"

  2. In the users.ini file on your server, make sure you have this line:

    UserName:PassWord:#####

    Note that in the above example, "UserName" must be replaced with the player's name, "PassWord" must be replaced with the desired password, and "#####" must be replaced with the numeric access level to be granted to that user. More information about access levels can be found in "Setting up your users.ini file."

  3. In your adminpass.cfg file on your CLIENT machine, make sure you have this line:

    setinfo "_pw-home" "password"

    Note that "_pw-home" in the above line must match the value assigned to the password_field cvar in your adminmod.cfg file from step 1 above.

  4. Create a shortcut on your desktop to the game you will be playing, or copy an existing shortcut. Edit the shortcut, and in the "Target" field, add the this text:

    +exec adminpass.cfg

    For example, if your Counter-Strike shortcut looked like this:

    C:\SIERRA\Half-Life\hl.exe -console -game cstrike

    you would change it to say:

    C:\SIERRA\Half-Life\hl.exe -console -game cstrike +exec adminpass.cfg

    (to set up your shortcut to allow you to automatically connect to your server, add: +connect 0.0.0.0 - and put your server's IP address in place of the zeros)

Remember: Never use the shortcut for admin privileges to connect to a server other than the one you are an admin on, or you will risk exposing your password to the outside world.

If you need to load your password configuration file again while in the game, you can type:

exec adminpass.cfg

in the console. This loads the information in the file in the same way the startup shortcut does.

In order for a person to successfully log onto your server and gain access through Admin Mod, you must prepare the client computer ahead of time. That is what this section covers.

The setinfo line is the most important part of client access to the Admin Mod on a server. It is also the part that tends to cause the most difficulty, but it doesn't need to. It requires some level of knowledge about what is going on when you connect to a server running Admin Mod. We'll try to explain that here in a fairly simple fashion.

In previous 2.5x series installers a default user was configured and an adminpass.cfg file created for you. This is no longer the case and you will have to create this file using notepad or another plain text editor. The filename adminpass.cfg is used only because it tells you the function of the file, feel free to change all reference to adminpass.cfg to whatever you decided to call it on your system.

What is this file for? Basically, when you connect to the server, the Admin Mod looks at your player name that you have specified in your game settings. If your name is listed in the users.ini file on the server, it recognizes that you are connecting as an admin, and then checks your password against the one it has in it's users.ini file to make sure it's really you.

The way the server interacts with the client, in simplified terms, is like this: Once the server recognizes your player name as being on the admin list (in users.ini), it requests information about your password from your client machine (that's the machine you play on and are using to log into the server).

In order to request that information from your client machine, it makes a request based on where it expects the password to be stored, sort of like you going to your mailbox to get your mail, since the client's password storage mechanism has a unique identity and can hold information that you put in there. Let's say your mailbox is called "_pw-home" and you have specified that in the adminmod.cfg file, like this:

password_field "_pw-home"

If that is the case, the server is going to send your game a message asking the client machine to send anything that is stored in the "mailbox" called "_pw-home." For those who prefer to use accurate terms rather than metaphors, it's actually a "variable," or some would call it a "field."

Therefore, you need to store your player password in the field called _pw-home on your game machine. You do this using a "setinfo" command, which is simply a command that Half-Life uses to store information in specified places. In tech terms, "_pw-home" is a variable for storing data, and "setinfo" is a command used to assign values to Half-Life game variables. In this case the data being stored is your Admin Mod password.

N.B.
From Admin Mod 2.50.50 onwards using an underscore as the first character of the password field is now compulsory. The change to the secure underscore including forms was made several versions previously but was not enforced. Unfortunately not all users took notice and passwords were left in the clear for cheats to find and exploit. With compulsory first character underscores the server will print a warning message and then quit if a password_field not beginning with underscore is used. This behavior is added to ensure better security for both client and server.

The setinfo line that needs to be used on the client machine looks like this:

setinfo "_pw-home" "password"

with "_pw-home" being the mailbox variable defined by the password_field setting in the adminmod.cfg , and the "password" being the same one listed in the server's users.ini file for your player name or WON ID.

For example, if your users.ini file looked like this:

PlayerX:testpass:65535

and the adminmod.cfg file had:

password_field "_pw-home"

the setinfo line for PlayerX would be:

setinfo "_pw-home" "testpass"

For any player attempting to gain access to your server, the first item in quotes in the line above (again, as defined in password_field) will always be the same. The second quoted item - the player's password - will give the player access to your server, as long as the password provided here matches the one set on the client machine. Once again, in our "mailbox" metaphor, the mailbox name (field where info is stored) is called "_pw-home" and the user's password is "testpass"

The setinfo line can be specified in many places. Every person that will connect to your server as an Admin needs to follow these instructions. Note that we recommend only one safe and secure way to do this. Please follow these instructions carefully.

On the client (game) machine, go into the <mod> directory of the game you will play on the server running Admin Mod.

For example, if you play TFC and your HL is installed on your c:\ drive, it would be:

c:\Sierra\Half-Life\tfc

Your adminpass.cfg file should contain the information you need already, if you created it with the Windows installer for Admin Mod, but check it to be sure. You were instructed to put a copy of this file in your mod directory earlier in this chapter. If the file is not already there, you either need to go back and copy it, or you can create it with a plain-text editor such as Notepad, emacs, vi, Textpad, etc.

First off, you need to edit the adminpass.cfg file with a plain text editor such as notepad, and add these lines if they are not already there:

setinfo "_pw-home" "password"

developer 1

echo client admin mod password has been set

developer 0

Make sure you replace "_pw-home" and "password" in the example above with the appropriate information from the password_field in your adminmod.cfg and the password listed for your user name in the users.ini file. Be sure to include the quotation marks around the words as shown above - you need to keep those to ensure the file will be read properly by the game when it loads.

Finally, create a shortcut on your desktop to the game you will be playing, or copy an existing shortcut to your game. Edit the shortcut (right-click on it and choose "Properties," and then click on the "Shortcut" tab), and in the "Target" field, add the this text: "+ exec adminpass.cfg"

For example, if your Counter-Strike shortcut originally looks like this:

C:\SIERRA\Half-Life\hl.exe -console -game cstrike

you should change it to read:

C:\SIERRA\Half-Life\hl.exe -console -game cstrike +exec adminpass.cfg

To set up your shortcut to allow you to automatically connect to your server, you can also add:

+connect 0.0.0.0:[port]

to the shortcut entry - but remember to put your server's IP address in place of the "0.0.0.0" and the port number for your server if needed in place of "[port]" in the example:

C:\SIERRA\Half-Life\hl.exe -console -game cstrike +exec adminpass.cfg +connect 192.168.0.1:27015

Remember: Use this new shortcut to connect only to the server you have admin privileges on, or you will risk exposing your password to the outside world. Rename this shortcut to something obvious that will identify it as the one that invokes your Admin Mod password. You might call it, for example, "ADMIN Counter-Strike."

If you need to load your password configuration file again at any time, you can type:

exec adminpass.cfg

in the console. This loads the information in the file in the same way the startup shortcut does.

If all the passwords and variables are in the right place and are (of course) correctly entered, you automatically have access to the server whenever you connect to it. You can also play on any other servers without changing anything. Remember that everything, passwords and names, are case sensitive.


The Admin Mod Default Plugins

The following plugins are provided with Admin Mod. A brief description of each one is provided as well. To get into the meat of what each plugin does, go to the Admin\scripting\examples directory, where you will find the plugins in their original uncompiled text format with .sma extensions. Opening these .sma files in a text editor will allow you to examine the contents of each plugin and to learn specifically about how they work.

(Note: Don't ask us to make each of you your own command list - read the files yourself. This is not kindergarten)

=)

plugin_antiflood.amx

This plugin will prevent overly talkative players from spamming the server and also prevents some exploits by putting a limit on the number of times players can speak or execute Admin Mod commands in any given time period.

plugin_base.amx

This plugin contains the main, core admin mod functions, such as kicking and banning, admin_say and csay (etc.), user lists, rcon access, and the like.

plugin_chat.amx

Contains a few commands for responding to chat messages (currentmap, timeleft, nextmap).

plugin_cheat.amx

Includes actions which would generally be considered cheating by a player during a game. Includes godmode, noclip, stack, teleport, etc.

plugin_fun.amx

Fun mode commands are provided in this plugin, including (but not limited to) disco mode, glow commands, and - well - anyhow....

plugin_hldsld_mapvote.amx

Contains AM commands to cancel vote, deny map and start vote, as well as public "say" style commands to do similar tasks plus actually participate in the votes.

plugin_message.amx

Shows message on connect as well as the periodic center_say message. There are no commands provided in this plugin, just functionality.

plugin_retribution.amx

Contains commands for dealing with cheaters, llamas, and the like. Includes such commands as slay, slap, gag, llama, ungag, unllama, etc.

The following plugins provide functions for specific Mods, to ensure Admin Mod comptability with all supported Mods they are disabled by default. If you wish to use these plugins you will have to edit your plugin.ini file and enabled them. For more detail on how to do this see the manual section Setting up your plugin.ini file.

plugin_TFC.amx

Provides commands specific to and to be used with TFC game servers. Includes team balancing, changing teams, prematch setting.

plugin_CS.amx

Contains commands to be used specifically and only with Counter-Strike game servers. Includes commands like weapon restrictions, ability to force players to join either the Counter-Terrorist or Terrorist teams, restartround, etc.


Downloading and Installing Additional Plugins

Having trouble integrating those %@#&$^! plugins?

Yes, we know, plugins were supposed to resolve all the problems for those who were not hard core programmers. so here is a step-by-step plugin for dummies tutorial:

These instructions are geared toward a Windows user compiling the plugins. If you are using Linux, please note that the procedure is similar, but where we refer to Windows batch file, you will need to use the equivalent Unix shell script.

There are three ways to download a plugin:

  • from the plugin page of the Admin Mod web site

  • from the Admin Mod forums

  • from the author's website and other third party websites.

Downloading the plugins is a simple task to perform:

  • Right-click (for Windows) on the Download link, and choose "Save Target As."

  • Go to the Adminmod\scripting\myscripts folder. (It is a folder that you extracted when you extracted Admin Mod from the zip file.)

  • Change the "Save as type" from "Text Document" to "All files". Press save and watch the file download.

If you download the script from the forum, the file will either be in the zip format, or in a plain text format.

  • If the first case presents itself, unzip the CONTENTS of the file into the Adminmod\scripting\myscripts folder.

  • Otherwise, right click on the link, and do as mentioned above.

So, you now have the plugin you wish to implement on your server in the scripting\myscripts folder. Go to that folder and double click on the compile_all.bat file. (Only files that start with "plugin_" and end in a .sma entension will be compiled automatically.)

Your scripts will be "translated," or "compiled" into a file that the program can understand. These compiled files will be placed in the Adminmod\scripting\mybinaries folder automatically by the compile_all program. You will notice that the extensions of your compiled scripts will be different. They no longer end with ".sma" but with ".amx" instead. That is how you know it is a compiled plugin.

  • Copy all the .amx files into the <mod>\addons\adminmod\scripts folder (<mod> being your game folder).

The last step in integrating the files is adding their locations in the plugin.ini file. This file was created when you installed Admin Mod 2.5.

  • Find the plugin.ini file in the <mod>/addons/adminmod/config directory (i.e. half-life\cstrike or half-life\tfc).

  • Open this file in a text editor and add the location of the plugins you want to add.

At the end of the file, add an entry in this format:

addons/adminmod/scripts/plugin_nameofplugin.amx

For example, if I downloaded the plugin_coffee.sma file, the compiled file would be plugin_coffee.amx. To add that file to your plugin.ini, simply add this to the last line in the file:

addons/adminmod/scripts/plugin_coffee.amx

Now you can fire up your server, and try the new plugin. You must restart your server or change maps for new plugins to take effect.


A Beginner's Guide to Scripting

A SCRIPTING CRASH-COURSE

This is not intended to be a complete guide to programming in the Small language. For that, there is a good set of complete documentation available at:

http://www.adminmod.org/index.php?go=help

AdminMod uses a specific version of the small virtual machine. the version of the small compiler currently available from the Small website may or may not be fully compatible with Admin Mod usage. It is strongly reccomended that you use the compiler verison supplied with the Admin Mod distribution.
The manual for this specific version of the Small compiler is available for download from the Admin Mod website, not the Small website. If you find you need it use this link

The point of this section is to give new and fledgling coders a chance to learn the basics of authoring and compiling plugins for Admin Mod. For information about compiling completed plugins, please take a look at Compiling Admin Mod Scripts 101 in this documentation.

IMPORTANT NOTE: Plugins written to function with Admin Mod therefore use native functions the Admin Mod team provides. Under the terms of the GPL, since the plugins would not work without these native functions, all plugins written for Admin Mod are linked code and are therefore bound by the GPL.

Admin Mod uses a programming language called Small, which is a derivative of the C programming language. So, technically this isn't scripting - it's programming. When you write Small code, you eventually compile it into a binary form. So it's not really scripting. But we call it that. :0)

This section takes for granted that you have some basic programming fundamentals of some sort under your belt.

Declaring variables:

To declare a variable, you must use the "new" declaration. And, unlike C/C++, You can use this to declare any variable, may it be a string (a lot of characters put together...kind of like a phrase) or a number. So if you wanted to declare a new number, you would use:

new iValue = 0;

If you wanted to declare a string, you would use:

new sName[MAX_DATA_LENGTH];

where MAX_DATA_LENGTH is the number of characters that string can have. It is predefined by Admin Mod to 200. Augmenting the number could cause clients to crash, so playing with this is not recommended.

If you wished to give a value to that String when you define it, simply add its value:

new sName[MAX_DATA_LENGTH] = "Hello world.";

For those of you who have no idea what is going on, just keep in mind that the one thing that you can ALWAYS edit is whatever is found between quotes. In other words, where a plugin has text output, such as in the "Hello World" example above, you could easily replace the text inside the quotes without to much fear of ruining things. Doing so will not create any errors unless an unknown symbol is used.

Commenting:

Comments are VERY valuable. Something that is "commented out" is completely disregarded by the compiler. This means that you can do absolutely anything in a commented-out area. Authors use this to make comments on their code and explain to other users how the code works. Comments come in two formats:

//

and

/* */

The first type of comment (//) tells the compiler to disregard everything that comes after it in a line. For example, if you wrote:

// new iVal1=0;
   new iVal2=0;

the variable iVal1 would NOT be declared. Since "new iVal2=0;" is on a different line, iVal2, on the contrary will be declared.

The second (/* */) comments out everything between /* and */. For instance:

new iVal1=0; /*
new iVal2=0;
*/ new iVal3=0;

the declaration of iVal2 would be disregarded because it is between /* and */ unlike the declaration of iVal1 and iVal2. This type of comment is often used like this:

/*****************************
Admin Mod 2.5
*****************************/

Here, everything is commented out, because when you look closely, this is the same as:

/*
****************************
Admin Mod 2.5
****************************
*/

Note, that /* */ comments CANNOT be nested, i.e. you should not place comment inside of comments. It is safe to have //-style comments in /* */- style commented regions.

Using functions:

Using functions (methods or snippets) is easy. For example, the streq method, which compares two values. Here is the code:

streq(String1,String2,iMaxlength) {

new iNum;

// be careful about how much we check
if (iMaxlength > strlen(String1)) iMaxlength=strlen(String1);
if (iMaxlength > strlen(String2)) iMaxlength=strlen(String2);
for(iNum=0;iNum<iMaxlength;iNum++)
if (String1[iNum]!=String2[iNum]) return 0;
return 1;
}

To use this code, you would write another function:

admin_foo () {
    new String1[MAX_DATA_LENGTH] = "Hello world.";
    new String2[MAX_DATA_LENGTH] = "Little Bunny Foo Foo";
    streq(String1, String2, MAX_DATA_LENGTH);
}

The result would obviously be false (0) because these two strings are different. Had the two been the same, the result would be 1. You could also just add this is inside an existing method, but be careful not to use a variable that might already be in use for something else. All of the methods in Admin Mod are (should be) clearly explained by their authors.

Statements and Loops:

Statements and loops are the basic parts of any computer program. They are the "thinking" portion of a program.

There are 3 basic statements and loops that are used in Admin Mod. They are:

  • if/else

  • while

  • for

The first is quite self explanatory:

if (condition) {
    //do something here
}

This means that if the condition is fulfilled than the program will execute what is between the braces. If the condition is not met, the code inside the braces will be ignored. You can add to the if statement with "else"s. For example:

if (iNum == 0 ) {
    iNum = 34;
} else {
    iNum = 94;
}

If iNum has a value of 0, iNum will be reassigned to 34. If iNum is not 0, then iNum will be assigned to 94. To spice things up, you can add a bunch of if's inside each else. For example:

if ( iNum == 0 ) {
    iVal = 2;
} else if ( iNum == 1 ) {
    iVal = 3;
} else if ( iNum < 0 ) {
    streq( sStringA, sStringB, MAX_DATA_LENGTH);
} else {
    iVal = 10;
}

The while loop is the less used loop, but it can be very useful. Its construction is:

while ( condition ) {
    //do something
}

The program will keep on doing that something until the condition IS met. For example:

while ( iNum < 0 ) {
    say("Please enter a positive number");
}

The program will keep on prompting for a positive number as long as the number imputed is not positive. If the user puts a positive number in on the first try, then the program will ignore the loop right away. The for loop is the most used loop. It is in almost every complicated method or function out there. Its structure is:

for ( starting number; condition; implement number ) {
    // do something
}

The program will go through the loop, starting at the starting number, and will do something with it, then restart the whole loop, after implementing the number. An example is necessary for this loop:

for ( iNum = 0; iNum<15; iNum++ ) {
    iCount++;
}

This is a simple for loop, just for explanation. The loop will start with iNum=0 (you must have previously defined iNum) and, since iNum=0 is smaller than 15 will add 1 to count (which must have also been defined previously). Since there is nothing left to do inside the loop, iNum will be incremented by 1, and the loop will continue. iNum=1 is smaller than 15, so count is incremented by 1 and since there is nothing else, iNum is incremented. The loop will break when iNum=15, because iNum=15 is not smaller than 15. The result of this loop is obvious, but normally, it is not easy to understand for loops.

Other Scripting things:

There are a multitude of other functions that this small crash-course tutorial will not cover. The most basic will be briefly explained:

break

The break statement ends the loop in which it is nested (inside). No matter the circumstances, if the program comes upon a break statement, the loop will be instantly terminated.

return

The return statement ends the method or function in which it is nested. Like the break statement, it will automatically end all processes that are currently underway. For example:

admin_foo() {

    new iNum;
    new iCount;
    new sString1[MAX_FATA_LENGTH] = “Hello world”;
    new sString2[MAX_DATA_LENGTH] = “LittleBunnyFooFoo”;

    if ( streq(sString1, sString2, MAX_DATA_LENGTH) ) {
        for( iNum = 0; iNum < 15; iNum++ ) {
            if ( iNum > 5 ) {
                break;
            }
            iCount++;
        }

        if ( iCount < 343 ) {
            return 1;<
        }

        if ( iNum == iCount ) {
            do_something();
        }
    }
}

In this example, as soon as, in the for loop, iNum is bigger than 5, the loop will end, without increasing iNum or count. In this far-fetched example, count will always be smaller than 343 so the method admin_foo will end and return a value of 1.

Reference Materials

The Small language is a C derivative, C is a popular and very well supported programming language so finding reference materials on the internet or your local library shouldn't be too hard. One very well reccomended book if you are interested is "The C programming Language" by Brian Kernighan and Dennis Ritchie, the creators of the C language. This explains the language how and why it works and is a good reference work for basic C. It is not directly applicable to Small but if you use the small manual and this book with time you should be scripting just about anything you want pretty quickly.

Editors ...

Most programmers prefer one editor or another to work on their scripts, it is perfectly possible to work on your scripts in a very basic editor such as notepad but most people prefer to use an editor which features syntax highlighting. This allows you to more intuitively see the logical structures you are using and lets you use all those pretty colours on your monitor instead of dull old black and white.

Which do you prefer?
this:

    convert_string(HLData,Data,MAX_DATA_LENGTH);
    convert_string(HLUserName,User,MAX_NAME_LENGTH);
    snprintf(Text, MAX_TEXT_LENGTH, "(Admin) %s: %s", User, Data);
    for(i=1; i<=maxplayers; i++) {
        strinit(Name); //initialize the string before use
        if(playerinfo(i,Name,MAX_NAME_LENGTH,SessionID,WONID,Team)==1) {
            if(access(ACCESS_CHAT,Name)!=0) {
                messageex(Name, Text, print_chat);
            } // end inner if
        } // end if
    } // end for
    log(Text);
    return PLUGIN_HANDLED;

or this?

    convert_string(HLData,Data,MAX_DATA_LENGTH);
    convert_string(HLUserName,User,MAX_NAME_LENGTH);
    snprintf(Text, MAX_TEXT_LENGTH, "(Admin) %s: %s", User, Data);
    for(i=1; i<=maxplayers; i++) {
        strinit(Name); //initialize the string before use
        if(playerinfo(i,Name,MAX_NAME_LENGTH,SessionID,WONID,Team)==1) {
            if(access(ACCESS_CHAT,Name)!=0) {
                messageex(Name, Text, print_chat);
            } // end inner if
        } // end if
    } // end for
    log(Text);
    return PLUGIN_HANDLED;

Of course if you prefer the first option then you already have an editor that you will feel comortable with on your system be it Linux or Windows. If you prefer the second then you may have to download a suitable editor and syntax definition.

If you are using Linux then you will most probably be familiar with either vim or xemacs, both of which provide syntax highlighing for the C/C++ languages. You can use these highlighting schemes with small sucessfully. Gvim is another alternative.

Windows users dont' get a fully featured editor by default, you'll have to download a suitable one yourself. The good news is that there is a lot of choice, most notably UltraEdit, Edit+ and TextPad and OmniPad. Small syntax definitions are known to have been created for each of these editors. There are probably a great many other editors out there that can be used, either with dedicated small support or wth general C/C++ syntax highlighting, the choice is yours.


Compiling Admin Mod Scripts 101

The point of this section is to let anyone create their own version of the Admin Mod script. This handy little program is open-source, meaning that the authors only want groveling and absolute submission from you. Unlike Bill Gates, they believe you should keep your money so that you can actually do something with your nerdy, pointless, pathetic lives.

:0)

Okay - enough of that - back to the topic at hand... You may also want to check out the section called A Beginner's Guide to Scripting in this document for more information about the scripting language works from a programmer's point of view.

This section assumes you know something about file extensions and how to properly view them on your computer. Nothing personal, but if you don't know how to do this, you probably shouldn't be running a server and chances are you don't have one running yet. Go do some learning and come back once you're ready.

DOWNLOADING ADMIN MOD PLUGINS

There are really three ways to download plugins:

  • From the plugin page of the Admin Mod web site

  • From the Admin Mod forums

  • From the website of the plugin author

In any case, the task is simple to perform. From the plugin page, right-click (for Windows) on the Download link, and choose "Save Target As."

Go to the Adminmod\scripting\myscripts folder. (It is a folder that was created when you extracted Admin Mod from the zip file.) Make sure that the "Save as type" is set to Winzip (or whatever similar archive software you use) or "All files" if you are prompted. Press save and watch the file download. The result should be a file in the "myscripts" folder that ends with ".zip". The script is in the.zip file and has a ".sma" ending, there may also be a readme.txt and other files for the plugin, it is advised that you read the instructions carefully if they are provided.

If you download the script from the forum, the file will either be in the zip format, or in a .txt extension. If the first case presents itself, unzip the CONTENTS of the zip file into the Adminmod\scripting\myscripts folder. Otherwise, right click on the link, and do as mentioned above.

A BASIC COMPILING TUTORIAL

First of all, the scripts that you write or make changes to are plain text files with a file name "extension" of ".sma". The "extension" part of a filename is the three letters after the period at the end of the file name.

Compiling is the process of changing coding language into assembly line language, or a language that the computer can understand and use. When you compile your *.sma file, you will that the output will be a *.amx file. The *.amx file is the compiled plugin file that Admin Mod uses. There is no way to retrieve the original script from a compiled file, so do not delete your *.sma file. Keep it around just in case you might need it or want to make changes in the future.

Compiling files is really very simple. The Admin Mod v2.50 release offers unprecedented ease of use. Everything is already set up for you.

To compile your own script (or add-on scripts that you've downloaded), simply place your new .sma file in the Adminmod\scripting\myscripts directory. Note that your file name must end with. sma for all this to work, so if it ends with something like .txt or the like, you will need to rename it.

Run the compile_all.bat in your "myscripts directory" - This nifty program looks for scripts you have dropped in the "myscripts" folder (again, it expects *.sma files) and compiles them.

It then places the compiled plugins that resulted from the compiling process in the "mybinaries" folder. So, after compiling, just look in the "mybinaries" folder for your compiled plugin files, which will have the same name, except that they will end with ".amx" - which denotes the file is a compiled binary version of your script.

You now need to copy all the .amx files you just compiled into the <mod>/addons/adminmod/scripts folder (<mod> being cstrike, tfc, or any other modification you are hosting). Unless you copy them here, your game server cannot use them.

The final step in making the plugin files work is adding their locations to the plugin.ini file. This file was created when you first installed Admin Mod. Find the file in the <mod>/addons/adminmod/config directory (i.e. half-life\cstrike\addons\adminmod\config or half-life\tfc\addons\adminmod\config).

Open the plugin.ini file and add the location of the plugins you want to add. Usually you can just add the plugin to the bottom of the list of plugins already in your plugin.ini file. The format used to specify a plugin is:

addons/adminmod/scripts/plugin_nameofplugin.amx

For example, if I downloaded the plugin_coffee.sma file, the file name after I compiled it would be "plugin_coffee.amx" to add that file to your plugins, simply add addons/adminmod/scripts/plugin_coffee.amx

ERRORS AND WARNINGS DURING COMPILING

Disregard any "Warnings" in the text that is displayed on the console screen during compiling sessions, as they are simply warnings.

However, if you get "errors" during compiling, you are in trouble. The compiling process will not produce a valid *.amx file when it encounters errors (or if it does, the .amx file will have a file size of 0 bytes). So, in order to come up with a working plugin, you have to go and find the errors in your code and fix them.

Remember that errors can occur due to faults in lines that come both before and after the line number indicated by the compiler. The line number indicated in an error message is simply the one where the compiler realized it could not make sense of what was going on. The problem that the compiler choked on could have occurred somewhere else in the script, but as the compiler read the code it did not recognize the error until it ran across something else that didn't work. The most common errors are spelling, loose/missing/extra braces, and undefined variables.

Lately there have been many reports of compilation errors reporting a missing ";" such as this example:

plugin_xxxxxx.sma(91) Error [1]: expected token: ";", but found "xxxxx"

To rectify this error, open plugin_xxxx.sma into your favorite editor and go to line corresponding to the number between parenthesis. In this case, scroll down to line 91. Look for the first line of code (non-blank) preceding (before) the line the compiler reported. If there is a missing ";" at the end of that line, add it, save the change you made and recompile. The errors should be gone.

In the code used to make Admin Mod plugins, one loose brace (braces are the { and } characters) can create a great deal of errors, so after every error you correct, recompile and see if that solved the problem. Keep on searching for mistakes until the compiling process returns a valid *.amx file.

Then have fun!

See also: A Beginner's Guide to Scripting


Compiling by hand

Compiling scripts by hand

You can compile your script at the command line simply enough, assuming you are comfortable working at the command line and that you have a basic knowledge of directory traversal in text mode.

Start in the "myscripts" directory of your Admin Mod installation, and compile using sc (or sc.exe) with the command:

..\compiler\sc -i..\include xxx.sma

where xxx.sma is replaced with your script name.

Note: This is for Win32, for Linux replace all backslashes ( " \ " ) with forward slashes ( " / " )

You might see either warnings or errors, or both, displayed. Warnings are okay - one of the more common is a warning that your indentation is "loose" - Okay, so you're a little sloppy, not that big of a deal. However, errors are a problem - they indicate that there is a flaw that is keeping the compiler from successfully parsing and compiling your script. The key thing to look for is for the compiler to show you no errors. If you see the message "Compilation aborted" at the end of it's output, it did not work. If you get nothing but warnings and maybe even a message that says, "Done," you have a compiled script that is ready to test in the server environment.

A note about working with the compiler output:

Small Compiler errors and warnings contain some useful information that can help you in determining what is wrong with your script when it generates them. The first item on an error or warning line is the name of the file you are compiling, followed by a number in parentheses, such as "(217)" - This is the line number where the compiler encountered the problem, which is useful information if you are trying to find out where the problem might be.

Keep in mind that a list of 20 errors on 20 lines might just be dependant upon one problematic line in the script. For example, if I accidentally typed three curly-brackets ( {{{ ) in a row instead of the proper single curly bracket, I might get errors on multiple lines according to the compiler. So, I would choose to go to the first listed line with an error and look there, make my fix, and then recompile and see what happens.

Remember: recompile often to check to see where you're at, and always make periodic backups of files, so that you can go back to an older version of your script when your brain gets so mushy from vapor lock that you can't remember what changes you've made.

If all goes well, the compiler produces a file called yourscriptname.amx, which will be located in the same directory as your original yourscriptname.sma file. Now copy the .amx to the addons/adminmod/scripts directory for your mod (i.e. half-life\cstrike\addons\adminmod\scripts) and fire up the server and test. Rinse and repeat until you get the desired results.

NOTE - Linux and windows .amx files ARE DIFFERENT, You MUST either recompile for each platform or use the Windows to LInux AMX converter available from the Admin Mod download page. It's the same source code file, just slightly different binaries.

More on Manual Compiling ...

Isn't there an easier way to do these compiling things? What's all this dot-dot-slash stuff??? Sheez!

The simple answer is, "Yes." You could copy all of the files from the \include directory, along with the sc.exe and your .sma files, into a new directory and run it from there, thus negating the need to do all the dot-dot-slash stuff. But you're learning here, and if you're going to be doing this sort of stuff it helps to understand what's going on, and so here's some information about the dot-dot-slash concept for those who are command-line challenged:

The dots and slashes are part of how we communicate with the computer to tell it where we want to go, or where we want it to go to find something on the drive. Here is an attempt to illustrate what those things mean:

. | (a single dot) | This refers to the directory you are in now
.. | (two dots) | This tells the computer to look in the “parent” directory
../mydirectory | (dot-dot-slash-dir_name) | Tells the computer to go to the parent directory (one level above) and then look for a directory called “mydirectory” and go there.
../mydirectory/cool.exe | (dot-dot-slash-dir_name-slash-program_name) | Tells the computer to go to the parent directory (one level above) and then look for a directory called "mydirectory" and go there, and run the program called "cool.exe"


Check If Admin Mod Is Loaded

Once you have sucessfully installed Admin Mod it should load when you run the server. But how can you tell?

Start the server as normal. Once the server has loaded the map and is just sitting idly use the meta list command at the console. This should result in a listing like this:

meta list
Currently loaded plugins:
      description      stat pend  file              vers      src  load  unlod
 [ 1] Adminmod         RUN   -    admin_mm.dll      v2.50.60  ini  Start Start
1 plugins, 1 running

This listing tells you two things:

  • The first thing it tells you is that metamod is running. Metamod responds to the meta command, the meta list lists all metamod mods that metamod is aware of.

    • If the meta list command does not produce an output listing then metamod is either not loaded or not working.

  • The second thing it tells you is whether or not Admin Mod is loaded. In this example Admin Mod can be seen to have been loaded from an entry in the ini file. We are told when it can be started and stopped and that it is currently active.

    • If Admin Mod is not on this list then it is not present in the metamod plugins.ini file.

    • If Admin Mod is present but not active then there will be a reason that metamod could not load or start Admin Mod. This reason can be found in the log files by settting the meta_debug cvar to level 2 or 3 and reading the debug messages produced by metamod.


Check Which Plugins Are Loaded

Use the command admin_version at the console and a list of all plugins loaded on the server will be generated.

e.g.

admin_version
Admin Mod version 2.50.60
* Plugin # 1: Admin Anti-Flood Plugin (v. 2.50.04)
  Auto kicks flooders
* Plugin # 2: Admin Base Plugin (v. 2.50.05)
  Basic Admin Mod commands.
* Plugin # 3: Admin Chat Plugin (v. 2.50.06)
  Commands for responding to chat.
* Plugin # 4: Admin Cheating Plugin (v. 2.50.04)
  Commands for noclip, teleporting, godmode, etc.
* Plugin # 5: Admin hlds_ld-style Map Vote Plugin (v. 2.50.04)
  Runs a chat-based interface map vote, similar to hlds_ld.
* Plugin # 6: Auto-Messaging Plugin (v. 2.50.05)
  Shows message on connect, as well as a message every x minutes.
* Plugin # 7: Admin Retribution Plugin (v. 2.50.06)
  Commands for getting back at llamas and cheaters.
* Plugin # 8: Fun Plugin (v. 2.50.05)
  Does silly stuff.


Force Admin Mod To Load When The Map Starts

Admin Mod reacts to user initiated events. As far as admin is concerned the server starting is not a user initiated event which means that Admin is not started when the server is started

Do not confuse loading with starting. Admin Mod is loaded when the server starts but it takes no actions apart from its load time procedures. It does not read its config files or load any of its plugins. When admin starts it reads the config files and loads the plugins. There are two separate events.

Admin Mod can be made to load when the server starts by placing an admin command in the load order. Make sure that the command will be issued well after the Admin mod specific configuration file is executed or you will recieve an error message.

The best command to use is considered to be admin_version. So the server.cfg would require the line:

admin_command admin_version

Steam Users

Most of the known steam mods no longer execute the server.cfg on mapchange. If you want to start Admin Mod on mapchange you will need to force a config file to be executed on map changes. This is done by setting the cvar mapchangecfgfile to server.cfg and then follow the instructions above.

You can also create a new file like mapchange.cfg with admin_command admin_version inside and set mapchangecfgfile mapchange.cfg in the server.cfg. That way you may avoid the possibly overwriting cvars which were set in server.cfg during the mapchange while still automatically start Admin Mod.


Use Admin Mod Commands On_Dedicated Servers

Admin Mod ignores all input from the dedicated server console unless it is clearly an Admin Command. In order to recognise a command as specifically an Admin Mod command at the dedicated server console the command must be prefixed with the string admin_command .

For example to use the admin_help command from a client system you simply type admin_help at the console. On a dedicated server this command would have no effect. In order to use the help command you must type admin_command admin_help.

In order to use Admin mod commands in config files to be executed on the server this rule must be followed. This is because config files are simply lists of command to be executed by the server and as such all syntax rules apply equally to the console and config files.


Use Weapon Restrictions

Requirements

  • The admin_cs_restrict cvar must be set to 1 in adminmod.cfg
  • The countrstrike specific plugin must be installed and loaded
  • Restricting or unrestricting requires access level 32.
  • Saving or removing map or server default restrictions requires access level 512
  • If you wish to save map or default values then the vault_file cvar must be set in adminmod.cfg

Command Access

The easiest way to restrict weapons is to add amv_enable_beta "menu1" in adminmod.cfg. This allows you to use the command admin_restrictmenu in console and a menu (like the buy menu) appears in game for restricting weapons and items.

The standard method of using plugin commands from the console still works, if you want to enter restrictions manually in console or use the commands in a config file the syntax described in the next section.

Command Syntax

admin_restrict

admin_restrict [ <weapon-name> | <item-name> | menu [<menu-name>|<menu-number>] ]
admin_restrict [ team [ t | ct ] | player <player-id> ] (as above)
admin_restrict [ save | delete ] [ map | default ]
admin_restrict
admin_restrict [ help | on | off | restore | weapons | all ]

admin_unrestrict

admin_unrestrict [ <weapon-name> | <item-name> | menu [<menu-name>|<menu-number>] ]
admin_unrestrict [ team [ t | ct ] | player <player-id> ] (as above)
admin_unrestrict
admin_unrestrict [ help | weapons | all ]

The admin_unrestrict commmand uses the same basic syntax for adding or removing restrictions with the exception of the advanced management functions being unavailable. The effects of the arguments are identical except that they cause an unrestriction rather than a restriction. For example admin_unrestrict all will unrestrict everything.

  • Using the command with no following arguments will print out the current status of restrictions on the server.
  • Using help as the argument will print information on how to use the plugin.
  • Using team followed by one of t or ct will make the restrictions following it apply only to that team. The rest of the command syntax is identical to standard restriction.
  • Using player followed by a player identification, one of name wonid steamid or uniqueid, will apply the following restrictions commands only to the identified player. The restriction syntax is identical to standard restrictions.
  • The argument save followed by map saves the current restrictions as the default for the current map, if the user has access enough to do so, similarly the save default arguments will cause the current restrictions to be the default restrictions on the server. Map restrictions override default restrictions when both are present.
  • the argument delete will delete either map or default weapon restrictions.
  • The restore argument causes weapon restrictions to be resotred to the default state for the current map. This means that if there are saved map restrictions they will be used, else if there are default restrictions those will be used, else there will be no restrictions.
  • The on and off commands toggle weapon restrictions on and off respectively.
  • The all command affects everything available, weapons and items.
  • the weapon command affects everything except items.

Weapon and Item restriction

Weapon And Item Names

To restrict weapons and items the syntax is

admin_restrict [ <weapon-name> | <item-name> | menu [<menu-name>|<menu-number>] ]

The unrestriction syntax is identical. The weapon-name, item-name and menu-names will be explained below.

The list of weapon-names and item-names available for counter-strike is:

glock | usp | p228
deagle | elites | fn57
m3 | xm1014 | mac10
mp5 | ump45 | p90
tmp | gallil | ak47
scout | sg552 | awp
g3sg1 | famas | aug
m4a1 | sg550 | m249
vest | vesthelm | flash
hegren | sgren | defuser
nvgs | shield

The new names for some weapons can also be used. The table below complements the table above, an empty cell means that there is no alternative name to the name above, an entry in the table below can be used in place of the entry in the same position in the table above. For example glock can also be known as 9x19mm but there is no other name for elites.

9x19mm | km45 | 229compact
nighthawk |  | fiveseven
12gauge | autoshotgun |
smg |  | c90
mp | defender | cv47
 | krieg552 | magnum
d3au1 | clarion | bullup
 | krieg550 |

As well as being able to restrict individual weapons and items it is possible to restrict them in menu-names using their menu positions. These menu-name names can be used in place of weapon-name or item-name. Each menu menu-name also has a number, these numbers are the menu-name menu entry number. You can use the number instead of the menu-name name when restricting or unrestricting the menu-name.

The menu-name names and numbers available as as follows:

Name (<menu-name>) | Number (<menu-number>)
pistols | 1
shotguns | 2
smg | 3
rifles | 4
machine guns | 5
equipment | 8

for example if you wanted to restrict all rifles you could either use the command admin_restrict menu rifles or admin_restrict menu 4. Both will restrict all rifles. Similarly if you wish to unrestrict all rifle usage you could use admin_unrestrict menu 4 or admin_unrestrict menu rifles.

Examples

This command will prevent all users from using the 12gauge shotgun.
admin_restrict 12gauge

The following commands will restrict all rifles for the duration of the current map only
admin_restrict menu rifles
admin_restrict menu 4

This command will save the current restrictions as the default restrictions on the server
admin_restrict save default

this command will prevent the user whos name is A User from using the mac10 rifle.
admin_restrict player "A User" mac10

this command will prevent all terrorists from using the awp rifle.
admin_restrict team t awp


Materials for reference when installing, configuring and using Admin Mod

  • Admin Mod Commands

  • Access Levels

  • Admin Mod Configuration Variables (CVARs)

  • Admin Mod Error Codes

  • Frequently Asked Questions (FAQ)


 Admin Mod Commands

Admin Mod Commands

Note: This list of commands includes all the commands that are provided with Admin Mod "out of the box." It does not include any commands that are created by the use of additional plugins. Please see the new plugin's documentation and/or admin_help for assistance with any additional plugins you add to your server's setup.

Console Commands

Built In Commands

Command | Access Level | Descirption
admin_help | - | Prsents a help listing. It can be used to display a list of all command using index numbers or used with command names to provide help with a particular function.
admin_version | - | Presents Admin Mod version information and a list of the loaded plugins.
admin_status | - | Echos the access level of the calling user to the console.
admin_login | - | Allows users to provide Admin Mod with their password so they can be granted access
admin_password | - | identical to admin_login
admin_command | - | Allows the use of Admin mod commands from the server console, see this HowTo for details.
admin_cmd | - | Shotened version of admin_command.

Admin Base Plugin

Command | Access Level | Descirption
admin_abort_vote | 2 | admin_abort_vote: Aborts a vote in progress.
admin_ban | 256 | admin_ban <target or WONID or IP> [<minutes>] ['ip']: Bans target. 0 minutes is a permanent ban.
admin_banip | 256 | admin_banip <target or WONID or IP> [<minutes>]: Bans targets ip address. 0 minutes is a permanent ban.
admin_cfg | 512 | admin_cfg <config file>: Executes config file on server.
admin_chat | 64 | admin_chat <msg>: Shows message only to other admins.
admin_csay | 64 | admin_csay [color] <msg>: Shows message in center of screen.
admin_dmesg | 512 | admin_dmesg <idtype> <userid> <message>: Direct message
admin_fraglimit | 2 | admin_fraglimit <fraglimit>: Sets the mp_fraglimit cvar.
admin_friendlyfire | 32 | admin_friendlyfire <friendlyfire>: Sets the mp_friendlyfire cvar.
admin_gravity | 32 | admin_gravity <gravity>: Sets the sv_gravity cvar.
admin_hostname | 512 | admin_hostname <name>: Sets the hostname cvar.
admin_kick | 128 | admin_kick <target> [<reason>]: Kicks target.
admin_listmaps | 0 | admin_listmaps: Shows maps in mapcycle.
admin_map | 2 | admin_map <map>: Changes map.
admin_nextmap | 0 | admin_nextmap: Shows next map in cycle.
admin_nopass | 16 | admin_nopass: Clears the server's password.
admin_pass | 16 | admin_pass <password>: Sets the server's password.
admin_pause | 8 | admin_pause: Sets the pausable cvar to 1.
admin_psay | 64 | admin_psay <target> <msg>: Sends a private msg to target.
admin_rcon | 65536 | admin_rcon <cmd>: Executes rcon command.
admin_reload | 4 | admin_reload: Reloads Admin Mod files.
admin_say | 64 | admin_say <msg>: Shows a message from you as admin.
admin_servercfg | 512 | admin_servercfg <config file>: Sets the config file as the server's default.
admin_ssay | 64 | admin_ssay <msg>: Shows a message admin without identification.
admin_teamplay | 32 | admin_teamplay <teamplay>: Sets the mp_teamplay cvar.
admin_timeleft | 0 | admin_timeleft: Shows the time left.
admin_timelimit | 2 | admin_timelimit <timelimit>: Sets the mp_timelimit cvar.
admin_tsay | 64 | admin_tsay [color] <msg>: Prints msg on lower left of screen.
admin_unban | 256 | admin_unban <WONID or IP>: Unbans target.
admin_unpause | 8 | admin_unpause: Sets the pausable cvar to 0.
admin_userlist | 0 | admin_userlist [<name>]: Shows a list of users.
admin_vote_kick | 1 | admin_vote_kick <target>: Starts a vote to kick target.
admin_vote_map | 1 | admin_vote_map <map>: Starts a vote to change the map.
admin_vsay | 64 | admin_vsay <question>: Presents question as a vote.

Admin Retribution Plugin

Command | Access Level | Descirption
admin_bury | 8192 | admin_bury <target>: Bury target in the ground.
admin_execall | 65536 | admin_execall <command>: Force everyone to execute command.
admin_execclient | 65536 | admin_execclient <target> <command>: Force target to execute command.
admin_execteam | 65536 | admin_execteam <team> <command>: Force everyone on team to execute command.
admin_gag | 2048 | admin_gag <target> [<minutes>]: Gag target. 0 minutes is a permanent gag.
admin_llama | 8192 | admin_llama <target>: Llama-fy target.
admin_slap | 128 | admin_slap <target>: Slaps target.
admin_slay | 128 | admin_slay <target>: Slays target.
admin_slayteam | 128 | admin_slayteam <team>: Slays everyone on team.
admin_unbury | 8192 | admin_unbury <target>: un-Bury target from the ground.
admin_ungag | 2048 | admin_ungag <target>: Ungag target.
admin_unllama | 8192 | admin_unllama <target>: Unllama-fy target.

Admin hlds_ld-style Map Vote Plugin

Command | Access Level | Descirption
admin_cancelvote | 2 | admin_cancelvote: Cancels the current hlds_ld vote.
admin_denymap | 2 | admin_denymap <map>: Removes all votes for map.
admin_startvote | 1 | admin_startvote: Starts an hlds_ld vote.

Fun Plugin

Command | Access Level | Descirption
admin_disco | 8192 | admin_disco: Starts disco fever. Fun mode only.
admin_fun | 8192 | admin_fun <^"on^" | ^"off^">: Turns fun mode on or off.
admin_glow | 8192 | admin_glow <color | ^"off^">: Causes you to glow that color.

Admin Cheating Plugin

Command | Access Level | Descirption
admin_godmode | 8192 | admin_godmode <target> <^"on^" | ^"off^">: Sets godmode on target.
admin_noclip | 8192 | admin_noclip <target> <^"on^" | ^"off^">: Sets noclip on target.
admin_stack | 8192 | admin_stack: Will stack everyone on top of you.
admin_teleport | 8192 | admin_teleport <target> <X> <Y> <Z>: Teleports target to the given coordinates. See admin_userorigin.
admin_userorigin | 8192 | admin_userorigin <target>: Returns the X, Y, Z coordinates of target.

Admin Chat Plugin

Command | Access Level | Descirption
admin_messagemode | 0 | admin_messagemode <command>: Will treat 'say' as command.
admin_nomessagemode | 0 | admin_nomessagemode: Will treat 'say' as 'say'.

Admin Counterstrike Plugin

Command | Access Level | Descirption
admin_autokick | 0 and 512 | admin_autokick: [<1 or 0>]: mp_autokick on or off. Level 512 is needed to make changes.
admin_autoteambalance | 0 and 512 | admin_autoteambalance: [<#>]: setting for mp_autoteambalance. Level 512 is needed to make changes.
admin_buytime | 0 and 512 | admin_buytime: [<#>]: setting for mp_buytime. Level 512 is needed to make changes.
admin_c4timer | 0 and 512 | admin_c4timer: [<#>]: setting for mp_c4timer. Level 512 is needed to make changes.
admin_chattime | 0 and 512 | admin_chattime: [<#>]: setting for mp_chattime. Level 512 is needed to make changes.
admin_consistency | 0 and 512 | admin_consistency: [<#>]: setting for mp_consistency. Level 512 is needed to make changes.
admin_ct | 128 | admin_ct <target>: Changes target to the counter-terrorist team.
admin_fadetoblack | 0 and 512 | admin_fadetoblack: [<1 or 0>]: mp_fadetoblack on or off. Level 512 is needed to make changes.
admin_flashlight | 0 and 512 | admin_flashlight: [<1 or 0>]: mp_flashlight on or off. Level 512 is needed to make changes.
admin_footsteps | 0 and 512 | admin_footsteps: [<1 or 0>]: mp_footsteps on or off. Level 512 is needed to make changes.
admin_forcecamera | 0 and 512 | admin_forcecamera: [<#>]: setting for mp_forcecamera. Level 512 is needed to make changes.
admin_forcechasecam | 0 and 512 | admin_forcechasecam: [<#>]: setting for mp_forcechasecam. Level 512 is needed to make changes.
admin_freezetime | 0 and 512 | admin_freezetime: [<#>]: setting for mp_freezetime. Level 512 is needed to make changes.
admin_ghostfrequency | 0 and 512 | admin_ghostfrequency: [<#>]: setting for mp_ghostfrequency. Level 512 is needed to make changes.
admin_hpenalty | 0 and 512 | admin_hpenalty: [<#>]: setting for mp_hostagepenalty. Level 512 is needed to make changes.
admin_limitteams | 0 and 512 | admin_limitteams: [<1 or 0>]: mp_limitteams on or off. Level 512 is needed to make changes.
admin_kickpercent | 0 and 512 | admin_kickpercent: [<#>]: setting for mp_kickpercent. Level 512 is needed to make changes.
admin_maxrounds | 0 and 512 | admin_maxrounds: [<#>]: setting for mp_maxrounds. Level 512 is needed to make changes.
admin_mapvoteratio | 0 and 512 | admin_mapvoteratio: [<#>]: setting for mp_mapvoteratio. Level 512 is needed to make changes.
admin_playerid | 0 and 512 | admin_playerid: [<#>]: setting for mp_playerid. Level 512 is needed to make changes.
admin_restartround | 2 | admin_restartround : Restarts the round.
admin_restart | 2 | admin_restart : Restarts the round. Alias for admin_restartround.
admin_restrict | 0,32 and 512 | admin_restrict: Views / Configures / Saves weapon restrictions. Anyone can view the restrictions, level 32 is needed to change them, and level 512 to save the changes so they become permanent for the server. Run "admin_restrict help" for details
admin_restrictmenu | 32 | admin_restrictmenu: Change weapon restirctions via a menu. Requires menus to be enabled.
admin_roundtime | 0 and 512 | admin_roundtime: [<#>]: setting for mp_roundtime. Level 512 is needed to make changes.
admin_startmoney | 0 and 512 | admin_startmoney: [<800/16000>]: setting for mp_startmoney. Level 512 is needed to make changes.
admin_t | 128 | admin_t <target>: Changes target to the terrorist team.
admin_tkpunish | 0 and 512 | admin_tkpunish: [<1 or 0>]: mp_tkpunish on or off. Level 512 is needed to make changes.
admin_unrestrict | 32 | admin_unrestrict: Remove weapon restirctions. Run "admin_unrestrict help" for details.
admin_vote_restart | 1 | admin_vote_restart: Starts a vote to restart the round.
admin_winlimit | 0 and 512 | admin_winlimit: [<#>]: setting for mp_winlimit. Level 512 is needed to make changes.

Admin TFC Plugin

Command | Access Level | Descirption
admin_balance | 32 | admin_balance <^"on^" | ^"off^">: Sets the forced team balancing.
admin_blue | 8192 | admin_blue <target>: Changes target to the blue team.
admin_green | 8192 | admin_green <target>: Changes target to the green team.
admin_prematch | 4 | admin_prematch <prematch>: Sets the tfc_clanbattle_prematch cvar.
admin_red | 8192 | admin_red <target>: Changes target to the red team.
admin_yellow | 8192 | admin_yellow <target>: Changes target to the yellow team.

Chat commands

Admin hlds_ld-style Map Vote Plugin

Command | Access Level | Descirption
cancelvote | 2 | say cancelvote: Cancels the current hlds_ld vote.
denymap | 2 | say denymap <map>: Removes all votes for map.
mapvote | 1 | say mapvote: Starts an hlds_ld vote.
rockthevote | 1 | say rockthevote: Starts an hlds_ld vote.
vote | 1 | say vote <map>: Places a vote for the map.

Fun Plugins

Command | Access Level | Descirption
currentmap | 0 | say currentmap: Will respond with the current map's name.
nextmap | 0 | say nextmap: Will respond with the next map in the cycle.
timeleft | 0 | say timeleft: Will respond with the time left.
glow | 0 | say glow <color | ^"off^">: Causes you to glow that color. Fun mode only.


Admin Mod Configuration Variables (CVARs)

Admin Mod CVARs

used in v2.50

(detailed information below)

admin_balance_teams

admin_bot_protection

admin_connect_msg

admin_cs_restrict

admin_debug

admin_fun_mode

admin_fx

admin_gag_name

admin_gag_sayteam

admin_highlander

admin_ignore_immunity

admin_plugin_file

admin_quiet

admin_reconnect_timeout

admin_reject_msg

admin_repeat_freq

admin_repeat_msg

admin_vault_file

admin_version

admin_vote_autostart

admin_vote_echo

admin_vote_freq

admin_vote_maxextend

admin_vote_ratio

allow_client_exec

amv_autoban

amv_anti_cheat_options

amv_enable_beta

amv_log_passwords

amv_prvt_kick_message

amv_private_server

amv_reconnect_time

amv_register_cmds

amv_vote_duration

default_access

encrypt_password

file_access_read

file_access_write

help_file

ips_file

kick_ratio

map_ratio

models_file

models_kick_msg

mysql_* (all cvars for mysql)

nicks_kick_msg

password_field

pretty_say

public_slots_free

reserve_slots

reserve_slots_msg

reserve_type

use_regex

users_file

vote_freq

words_file

This is a listing of all of the server configuration variables (CVARs) specific to Admin Mod. You set these like any other server CVAR (such as mp_timelimit, etc).

NOTE: CVARs are no longer placed in your server.cfg!!! All Admin Mod CVARs (the ones listed here) are now located in the file half-life/<mod>/addons/adminmod/config/adminmod.cfg.

NOTE: This is not a list of Admin Mod commands. Rather, this is a list of all the server-side configuration variables you can use when you are configuring your Half-Life server.

Please note that a 'dedicated' server will, unless told otherwise, read it's initial settings from 'server.cfg'. A 'listen' server, on the other hand, reads them from 'listenserver.cfg' Executing your /<mod>/addons/adminmod/config/adminmod.cfg in server.cfg when you're running a listen server, and vice versa, means that the Admin Mod CVARs will NOT be loaded. A listen server is one that you start from within Half-Life itself: it starts when you join, it ends when you quit, and you have a 0 ping. A dedicated server is started from the HLDS program, and appears on the server machine as just lots of text information in a DOS-like console window.

Document notation standards

A cvar can either accept numeric ('123') or alphabetic ('abc') data. If it can accept alphabetic data, it will look like this in this document:

cvar_name "<string>"

If it can accept numeric data, it will look like this:

cvar_name <#>

Numeric data will either be '0' (disable or off), or anything else (enable or on). If the description of a cvar talks about it being 'enabled', that means non-zero (usually 1). Exceptions are noted. Note that if a cvar is not explicitly set, it defaults to 0 (disabled).

In addition to these standard types of cvar Admin Mod uses what we call "options cvars". An options cvar takes a string data but that string can be used to set many different name-value pairs. The standard format for setting an options cvar is this.
Each option is a pair comprised of a name string followed by a value.
If the value is numeric there should be no space between the name and the value.
If the value is a string then there should be one space between the name and the string.
Pairs are separated using the colon character ( : ).
It sounds complicated but it's not, here's an example

admin_beta_enable "nc0:ssl on"

that sets the option nc to 0 and the option ssl to "on". Many of these options can be combined into a single cvar setting allowing more configurability without using many more cvars and making older settings obsolete. Look at the list on the right, I'm sure you begin to appreciate how using less cvars is a good idea. It can quickly become confusing when you are dealing with many at once.

In the descriptions below, examples of how to write the cvar are provided. Reading this entire document is a good idea if you are planning to do much at all with the Admin Mod.

About "relative directories" and files

Cvars that represent files are said to be 'relative' to a directory (usually the <mod> directory). This means the file name should be treated as if looking from the specified 'relative' directory. As an example, admin_plugin_file is relative to the <mod> directory; if I'm running a TFC server, my <mod> directory might be C:\HLServer\TFC. If I wanted my plugin file to be at C:\HLServer\TFC\addons\adminmod\config\plugin.ini, I would simply set admin_plugin_file to addons/adminmod/config/plugin.ini.

Miscellaneous Notes

  • If vote_freq is not defined voting will be disabled.

  • If map_ratio is not defined map voting is disabled.

  • If kick_ratio is not defined kicking will be disabled.

  • If models_file is not defined model passwords will be disabled.

  • If nicks_file is not defined nick reservation will be disabled.

  • If maps_file is not defined then users can vote for any map in the mapcycle.txt file. If it is defined, all votable maps must be included in the file indicate by the maps_file cvar (typically this file would be named maps.ini)

  • You can un-define or make null any variable by setting to 0 like this: nicks_file 0

admin_balance_teams <#>

Used by the TFC plugin. If enabled, an attempt to switch teams will be rejected if it would unbalance the teams (unless the team being switched to, or the team being switched from, has less than two people) . If disabled, people can switch teams freely.

admin_bot_protection <#>

When running bots on the server, setting this variable to "1" will protect bots from exec_client commands in Admin Mod, and thus prevent bot related server crashing problems.

admin_connect_msg "<string>"

admin_connect_msg "All your base are belong to Jaguar."

Used by the message plugin. This is the message that will be displayed to everyone thirty seconds after connecting to the server. Setting admin_connect_msg to "0" will not display a connect message, although the timer is run.

admin_cs_restrict <#>

Used by the CS plugin. If enabled, the CS plugin's weapon restrictions go into effect (if any are set, that is). If disabled, the CS weapon restrictions are ignored (if any are set).

admin_debug <#>

If enabled, your logs will be filled with lots and lots of debugging messages related to Admin Mod. Not recommended for general use.

admin_fun_mode <#>

Used by the Fun plugin. Determines whether or not the fun commands are allowed.

admin_fx <#>

Enables special effects to accompany certain commands, such as teleport and slap.

admin_gag_name <#>

Used by the retribution plugin. If enabled, people who are gagged will be unable to change their name while gagged. If disabled, people who are gagged will be able to change their names as normal.

admin_gag_sayteam <#>

Used by the retribution plugin. If enabled, people who are gagged will not be able to use the say_team command. If disabled, people who are gagged will be able to use the say_team command as normal.

admin_highlander <#>

There can be only one! Normally (when disabled), everyone gets the access assigned to them. If admin_highlander is enabled, only the person with the highest access actually gets their's; everyone else gets the default. Thus, only one admin (the one with the highest access level)will be able to execute commands at any given time.

admin_ignore_immunity <#>

This is referenced by CheckImmunity() in adminlib.inc.
Normally (when disabled), people with ACCESS_IMMUNITY (4096) become immune to many of the other admin commands (though not to straight rcon). If admin_ignore_immunity is enabled, ACCESS_IMMUNITY is ignored and does nothing.

admin_plugin_file "<string>"

admin_plugin_file "plugin.ini"

This is the file to load plugins from. It should be relative to the <mod> directory (e.g., for TFC, it should be relative to the half-life\tfc directory). If this cvar exists, the plugin-style of scripting will be used. If it does not exist, the single-script style of scripting will be used (see script_file). Note that, regardless of where this file is situated, the plugins it referenced are relative to the <mod> dir, _not_ the location of the plugin file (eg, if the admin_plugin_file is <mod>\AdminMod\plugin.ini, the plugins referenced will still be relative to <mod> not <mod>\AdminMod).

from Admin mod 2.50.58 onwards this cvar can be set to a directory name. All plugins located in the directory specified will be loaded in alphabetical order by Admin Mod. For example settings admin_plugin_file to addons/scripts in a default installation will load all the provided plugins from that directory.

admin_reconnect_timeout <#>

admin_reconnect_timeout 300

This is the time that a password is considered to stay valid after the player has disconnected from the server. If the player reconnects to the server within <#> seconds using the same name and the same IP, he does not have to reenter his password first. Don't set this value too high.

admin_reject_msg "<string>"

admin_reject_msg "This is a restricted command which you cannot use."

This message is displayed to users who try to execute commands that they don't have the appropriate access rights for.

admin_repeat_freq <#>

admin_repeat_freq 300

Used with the admin_repeat_message cvar. This determines how often (in seconds) the "pretty say " repeat message appears on the screen. The repeat message frequency can be set with admin_repeat_freq. The units are seconds. The minimum value is 15 seconds. Setting it to 0 will not start the timer. The timer cannot be started by setting it to a different value during a map. It will only be started at a map change.

admin_repeat_msg "<string>"

admin_repeat_msg "Don't look now! They're right behind you!"

Used by the message plugin. This is the message that is shown to everyone on the server in the center of the screen. Setting admin_repeat_msg to "0" will not display a repeat message, but the timer is not killed if it was started. It will continue to run, and setting admin_repeat_msg to a different value will again display that string.

admin_quiet <#>

admin_quiet 0

admin_quiet 1

admin_quiet 2

This is referenced by SayCommand() in adminlib.inc.
Here's how it functions by default:

    • Certain commands override admin_quiet (such as those found in the cheating plugin). These over-riding commands, when used, will always show the message 'ADMIN Command: <Player> used <command>" regardless of what value this cvar is set to.

    • If admin_quiet is 0, executing admin command on others will result in the command being executed and the message 'ADMIN Command: <Player> used <command>' being displayed to all players.

    • b>If admin_quiet is 1, the same effect occurs as with the "0" value: Admin Mod will display the message 'ADMIN Command: Admin used <command>' but will not identify the admin by name.

    • For any other value of admin_quiet (for example, "admin_quiet 2"), all commands will not display a message at all, but will only get logged, with the exception of the commands that over-ride the cvar as mentioned above (generally these are commands that would be considered cheating if no one knew they were being executed).

admin_vault_file "<string>"

admin_vault_file "vault.ini"

This file will be used to store configuration data across maps and even across server incarnations.

admin_version "<string>"

Returns the current Admin Mod version of the DLL. Setting this does nothing.

admin_vote_autostart <#>

Used by the HLFD map vote plugin. If enabled, a HALFD-style map vote will automatically start five minutes before the end of a map. If disabled, it won't.

admin_vote_echo <#>

If set to 1, when a vote is in progress the option a user voted for is echoed to all clients in the format:

<player> voted for option #<option number>

admin_vote_freq <#>

This is the number of seconds that must elapse after the start of the map, or the end of another vote, before another HALFD- style map vote can be called by someone without the ACCESS_CONTROL_VOTE access. NOTE: If you don't have it explicitly set in in your .cfg, it defaults to 600 (ten minutes). If 0, then _only_ those people with ACCESS_CONTROL_VOTE may call for votes. Note that this only controls the HALFD-style votes; for the HL menu-style votes, see vote_freq.

admin_vote_maxextend <#>

Used by the HLFD map vote plugin. Controls how many times the current map can be extended for thirty minutes (e.g., admin_vote_maxextend 2 would allow for, at most, two extensions). If set to zero or a negative number, the current map can never be extended.

admin_vote_ratio <#>

Used by the HLFD map vote plugin. Controls the percent of the players who have to vote for a map to get it to win (note that this ratio applies only to the HALFD-style map vote. For the admin_vote_map, see map_ratio, below). If zero or negative, whichever map gets the most votes wins. Otherwise, a map must get at least (admin_vote_ratio * playercount / 100) votes to win (e.g., if the admin_vote_ratio is 60, and there are 10 people on, a map must get at least (60 * 10 / 100) = 6 votes to win.)

alarm_message "<string>"

This cvar is no longer used.

alarm_time <#>

This cvar is no longer used.

allow_client_exec <#>

This controls whether or not the execclient() scripting function is enabled in the Admin Mod DLL. If enabled, execclient() is enabled; if disabled, execclient() is disabled. Enabling execclient() functionality allows scripts to execute commands remotely on players.

amv_autoban <#>

This cvar is no longer available in Admin mod 2.50.50 onwards,
please see the amv_anti_cheat_options Cvar.

amv_anti_cheat_options (options cvar)

Option: Name Crash Cheat.
id: nc

Values:

  • 0 = off, take no action
  • 1 = kick, kick the offending player from the server
  • 2 = ban, kick the offending player and ban his WONID for 24 hours.

Option: Spectator Cheat.
id:sc

Values:

  • 0 = off, take no action
  • 1 = on, try to prevent the player from cheating

For example: amv_anti_cheat_options nc2:sp1

For more detail see the Whats new in Admin Mod section.

amv_enable_beta (options cvar)

An Admin Mod version may include also some beta features. These are features which aren't considered stable enough or which haven't got tested enough to be considered part of the released version. They are still included to provide a broader audience with the possibility to test them and to see if they like them. These features are disabled by default and have to be explicitly enabled with this cvar. Note, that they may cause instabilities to your server when enabled and that they are not guaranteed to work as expected.

Option: Client Menus
id: menu
Description: Enable the admin to use GUI menus like the buy menus in CS to execute Admin Mod commands. Requires a plugin which provides a menu system.
Values:

  • 0 = off, feature disabled
  • 1 = on, feature enabled

Option:Check for broken entities
id: melog
Description: Some server admins report that their servers sometimes have missing or non-functional entities. This is a temporary feature to help diagnose these errors. When turned on, it will check all entities and report those that it suspects to be broken or missing to the log file.
Values:

  • 0 = off, don't check for broken entities
  • 1 = on, check for broken entities

Option: Fix broken entities
id:mefix
Description: If a broken entity is found, Admin Mod can try and fix it so that it works again. This option controls if Admin Mod should attempt to fix broken entities.
Values:

  • 0 = off, do not fix broken entities
  • 1 = on, try to fix broken entities

amv_log_passwords <#>

When set to 0, and debug is enabled, Admin Mod passwords will not be logged in cleartext.

amv_private_server <#>

Enables private server mode. This allows only users who have authorisation either via the users.ini or the ips.ini files to gain access to the server. All others attempting to join will be refused access and give the amv_prvt_kick_message cvar message.

amv_prvt_kick_message "<string>"

If the server is set to private using the amv_private_server cvar users who are not authorised to connect will see this message in their consoles.

amv_reconnect_time <#>

If a user with admin access disconnects and upon reconnect gets put into a different server slot than the one he occupied before, he will loose his access rights. This cvar controls the time during which an admin will keep his access rights even if he joins into a different server slot. The maximum is 90 seconds. Setting it to 0 disables this.

amv_register_cmds "<string>"

This cvar is only of interest to other Metamod plugin developers. Space separated list of registering commands similar to "logd_reg" of LogD and "sm_register" of StatsMe to allow the use of "admin_command" with the exec() scripting function.

amv_vote_duration <#>

(def:30) Defines the max time length in seconds of voting process. The minimum is 2, and the maximum is 1800.

default_access <#>

This controls the default access that people get (aside from being granted special user privileges). It works exactly like the user level access rights, but everyone gets it.

encrypt_password <#>

NOTE: If you don't have it explicitly set in your .cfg, it is SET TO 1. This determines whether or not the passwords people enter for their user privileges are encrypted on the server. Admin Mod supports different methods of password encryption:

  • None:
    Setting this variable to 0 will turn password encryption off, i.e. Admin Mod expects passwords to be stored in plain text.
  • Unix crypt:
    When this variable is set to 1 Admin Mod expects passwords to be encrypted with the Unix crypt method.
  • MD5 hash:
    When this variable is set to 2 Admin Mod expects passwords to be encrypted with the MD5 hash method.

MySQL only
MySQL PASSWORD: When this variable is set to 3 Admin Mod expects passwords stored in MySQL tables to be encrypted with the MySQL SQL statement PASSWORD().

file_access <#>

This cvar is no longer used. See file_access_read, file_access_write.

file_access_read <#>

This controls whether or not the scripting functions are allowed to read files on the server. If enabled, the scripting functions are; if disabled, they are not.

file_access_write <#>

This controls whether or not the scripting functions are allowed to write to files on the server. If enabled, the scripting functions are; if disabled, they are not.

help_file "<string>"

help_file "admin_help.cfg"

This is not used for the plugin-style scripting; if you have admin_plugin_file defined, this cvar is ignored. If you are using the old single-script style, this is the file to load the help information from. It is relative to the <mod> directory.

ips_file "<string>"

ips_file "ips.ini"

If you're using MySQL, this cvar is ignored (see mysql_dbtable_ips). Otherwise, this is the file (relative to the <mod> dir) that priority IPs are loaded from. NOTE: If you don't have it explicitly set in your .cfg, it is 'ips.ini'. Priority IPs are those that are allowed to take a reserved spot (if any are set up) without a password.

kick_ratio <#>

Used by admin_vote_kick. This is the ratio of players who must vote 'yes' to a kick for it to be successful. e.g. if the kick_ratio is 60, and there are 20 people on the server, 12 of them must vote 'yes' to a kick vote for it to be successful.

map_ratio <#>

Used by admin_vote_map. This is the ratio of players who must vote 'yes' to a map change for it to be successful. e.g., if map_ratio is 40, and there are 20 people on the server, 8 of them must vote 'yes' to a map vote for it to be successful. Note that this cvar does not control the HALFD-style map vote; see admin_vote_ratio.

maps_file "<string>"

maps_file "maps.ini"

A list of maps available during map votes. This list can contain maps not listed in your regular server map cycle, or it can contain a limited number of maps if you want to restrict voting to just a few maps. If you disable it (by setting the value to "0"), the list of votable maps will instead be taken from your mapcycle.txt

models_file "<string>"

models_file "models.ini"

If you're using MySQL, this cvar is ignored (see mysql_dbtable_models). Otherwise, this is the file (relative to the <mod> dir) that reserved models are loaded from.

models_kick_msg "<string>"

models_kick_msg "This model is reserved."

This is the message shown to someone who gets kicked for trying to use a reserved model.

mysql_dbtable_ips "<string>"

mysql_dbtable_ips "ips"

If you're not using MySQL, this cvar is ignored (see ips_file). Otherwise, this is the database table to get the priority IP information from. Priority IPs are those that are allowed to take a reserved spot (if any are set up) without a password.

mysql_dbtable_models "<string>"

mysql_dbtable_models "models"

If you're not using MySQL, this cvar is ignored (see models_file). Otherwise, this is the database table to load the reserved model names from.

mysql_dbtable_plugins "<string>"

mysql_dbtable_plugins "plugins"

If you're not using MySQL, this cvar is ignored (see users_file). Otherwise, this is the database table to load the plugins from.

mysql_dbtable_users "<string>"

mysql_dbtable_users "users"

If you're not using MySQL, this cvar is ignored (see users_file). Otherwise, this is the database table to load the privileged names from.

mysql_dbtable_words "<string>"

mysql_dbtable_words "words"

If you're not using MySQL, this cvar is ignored (see words_file). Otherwise, this is the database table to load the swear words from.

mysql_host "<string>"

mysql_host "127.0.0.1"

If you're not using MySQL, this cvar is ignored. Otherwise, it's the address of the host the MySQL database exists on.

mysql_pass "<string>"

mysql_pass "milk"

If you're not using MySQL, this cvar is ignored. Otherwise, it's the password used to connect to the MySQL database.

mysql_use_sqlPASSWORD <#>

When enabled, uses encryption algorithm PASSWORD( ) instead of the default crypt( )

mysql_user "<string>"

mysql_user "moocow"

If you're not using MySQL, this cvar is ignored. Otherwise, it's the username used to connect to the MySQL database.

nicks_kick_msg "<string>"

nicks_kick_msg "This name is reserved."

This is the message shown to someone who gets kicked for trying to use a name that has reserved access (16384).

password_field "<string>"

password_field "_pw-home"

This is the setinfo field that people need to enter their password into on the client before connecting to the server, if they wished to be authorized at connect time. NOTE: If you don't have it explicitly set in your .cfg, it is 'pw'. As an example, if the password_field is 'pw-home', and there is a user whose password is "milk", then the setinfo line in the user's adminpass.cfg would be 'setinfo "_pw-home" "milk"'.

N.B.
From Admin Mod 2.50.50 onwards using an underscore as the first character of the password field is now compulsory. The change to the secure underscore including forms was made several versions previously but was not enforced. Unfortunately not all users took notice and passwords were left in the clear for cheats to find and exploit. With compulsory first character underscores the server will print a warning message and then quit if a password_field not beginning with underscore is used. This behavior is added to ensure better security for both client and server.

password_timeout <#>

This cvar is no longer used. It is no longer present in 2.50.38 onwards.

pretty_say <#>

This cvar controls how the centersay() script function works. NOTE: If you don't have it explicitly set in your .cfg, it is ENABLED. If pretty_say is enabled, centersay() fades in and out and does some other tricks. If it's disabled, centersay() just appears as normal text in the middle of the screen.

public_slots_free <#>

Returns the number of slots free on the server (after taking into account reserved slots). Setting this does nothing.

reserve_slots <#>

Controls how many of the server's slots are reserved. This is useful only if reserve_type, below, is either 0 or 2.

reserve_slots_msg "<string>"

reserve_slots_msg "There are no free slots available."

This is the message shown to someone who gets kicked when there are only reserved slots left on the server, and they do not have reserved access.

reserve_type <#>

This controls how reserve slots work on the server (the default is 0).

  • reserve_type 0
    Public slots are used in preference to reserved slots. Reserved slots are freed before public slots.
  • reserve_type 1
    One slot is always reserved (regardless of reserve_slots). If someone with reserve access joins into that slot, the highest pinger without reserve access is kicked to make room. Thus, one slot always remains free.
  • reserve_type 2
    Reserve slots are used in preference to public slots. Public slots are freed before reserved slots. The difference between reserve_type 0 and reserve_type 2 may not be immediately apparent. Here's an example: Suppose there is a 16 player server, with 2 reserved slots. Thus, with no one on, there are 14 public slots, and 2 reserved slots

  • reserve_type 0:
    Someone with reserved access joins. There are now 13 public slots, and 2 reserved slots (the person does not take a reserved slot, because those are used only when necessary). The server later fills up, so there are 0 public slots and 0 reserved slots. If anyone leaves, whether they have reserved access or not, it is a reserved slot that is freed, not a public one.
  • reserve_type 2:
    Someone with reserved access joins. There are now 14 public slots, and 1 reserved slot (the person takes a reserved slot). The server later fills up, so there are 0 public slots and 0 reserved slots. If someone with reserved access leaves, it frees up a reserved slot; if someone without reserved access leaves, it frees up a public slot.

script_file "<string>"

This variable is depreceated and will be removed in a future version of Admin Mod. Don't use it anymore. Instead, use plugins and the admin_plugin_file variable.

use_regex <#>

If enabled, names are compared to those who have privileges with regular expressions; otherwise, they are compared with a straight match. Using regular expressions is useful for matching parts of names (such as clan tags), whereas, without use_regex, you would have to add each name with that tag you wanted to assign privileges to.

users_file "<string>"

users_file "users.ini"

If you're using MySQL, this cvar is ignored (see mysql_dbtable_users). Otherwise, this is the file (relative to the <mod> directory) that privileged names are loaded from.

vote_freq <#>

This is the minimum number of seconds allowed between votes called with the vote() scripting function (such as admin_vote_kick and admin_vote_map). If 0 or disabled, the vote() scripting function is disabled. Note that this delay also applies to the beginning of the map; if vote_freq is 240 (240 seconds = 4 minutes), admin_vote_kick and admin_vote_map won't work for the first four minutes of the map, as well as for the four minutes following any previous admin_vote_kick or admin_vote_map. Note that this only applies to HL vote-style votes for HLFD-style votes, see admin_vote_freq.

vote_freq_kick <#>

This cvar is no longer used. See vote_freq.

vote_freq_map <#>

This cvar is no longer used. See vote_freq.

words_file "<string>"

words_file "wordfile.txt" ;This is the file containing the list of words that will match the check_words() and censor_words() functions (useful for swear word detection). Note that these words are case-insensitive.


Access Levels

[Counter-Strike game mod]

[Team Fortress Classic game mod]

User Access Levels - Version 2.50.60

For information about setting access levels for your users, please see: Setting up your users.ini file

Note: Some commands changed access levels beginning with v2.50d (Voting control commands moved out of public access levels). This chart lists only the default Admin Mod commands. If you add additional functionality via plugins, the commands provided by those plugins will also be assigned access levels. Consult the plugin text files and/or any documentation packaged with each plugin.

To use the calculator, check the boxes for the access levels you want to give to your users. Once you have selected all the access levels for a user, press the "Calculate" button at the bottom of the page. The correct value to be inserted in to the users.ini file will be displayed below. Please note that adding plugins or altering the standard scripts will result in either additional or fewer commands being available than shown in this table, as this calculator pertains only to the default access levels and commands.

Grant Access? | Access Level | Commands Allowed |
 | public commands | admin_listmaps admin_nextmap admin_messagemode admin_nomessagemode admin_timeleft admin_userlist admin_version | say currentmap say nextmap say timeleft
 | 1 | admin_vote_restart say mapvote say rockthevote admin_restartround | say vote <map> admin_vote_kick admin_vote_map
 | 2 | admin_cancelvote admin_denymap admin_restartround say cancelvote say denymap | admin_fraglimit admin_map admin_startvote admin_timelimit
 | 4 |  | admin_reload
 | 8 | admin_pause | admin_unpause
 | 16 | admin_pass | admin_nopass
 | 32 | admin_friendlyfire admin_gravity admin_restrict admin_restrictmenu | admin_unrestrict admin_teamplay admin_balance
 | 64 | admin_chat admin_say admin_ssay | admin_csay admin_psay
 | 128 | admin_slap admin_slay admin_ct ( CS ) | admin_t (CS) admin_slayteam admin_kick
 | 256 | admin_ban | admin_unban
 | 512 | admin_cfg admin_servercfg | admin_hostname
 | 1024 | (unused) |
 | 2048 | admin_gag | admin_ungag
 | 4096 | makes player immune to admin commands damage
 | 8192 | admin_godmode admin_noclip admin_stack admin_teleport admin_userorigin admin_blue ( TFC ) admin_green (TFC) admin_red (TFC) admin_yellow (TFC) admin_autokick admin_buytime admin_autoteambalance admin_c4timer admin_c4timer admin_chattime admin_consistency admin_fadetoblack admin_flashlight admin_footsteps admin_forcecamera | admin_forcechasecam admin_freezetime admin_ghostfrequency admin_hpenalty admin_limitteams admin_kickpercent admin_maxrounds admin_mapvoteratio admin_playerid admin_restrict admin_roundtime admin_startmoney admin_tkpunish admin_winlimit admin_fun admin_disco admin_llama admin_unllama admin_listspawn admin_movespawn admin_removespawn admin_spawn
 | 16384 | flags this user name as a reserved nickname
 | 32768 | allow this user to use a reserved server spot
 | 65536 | admin_rcon (use with caution) admin_execall admin_execclient admin_execteam

Access Right for users.ini:


Contractions, Abbreviations and Acronyms

Throughout the Admin Mod documentation, we often refer to many long names, types of setup and generals rules of thumb. For the convenience of both the writers and the readers, we have composed a list of these different contractions, abbreviations and acronyms.

Contractions and Abbreviations:

  • (listen)server.cfg
    By far the most prevalent contraction in the manual is (listen)server.cfg. Admin Mod can be installed on a listen server (started by clicking on "Create" in the Half-Life GUI) or a dedicated server (ressembles the MS-DOS command window). Even though these two servers may seem very different, their installation is identical, apart from the fact that a listen server retrieves it's settings from the file listenserver.cfg located in the mod directory, whereas the dedicated server gets it's information from the file server.cfg, also located in the mod directory. So, when we refer to the (listen)server.cfg, we are refering to either listenserver.cfg or server.cfg, depending on which way you intend to use Admin Mod.
    (Note: you can have Admin Mod run on both your server.cfg and listenserver.cfg by installing Admin Mod on a dedicated server, then copying the contents of the server.cfg to listenserver.cfg.)

  • mod or <mod> directory
    Throughout the manual and the forums, we refer to your <mod> directory. This is supposed to represent the directory to which you installed Admin Mod, or the mod to which you applied Admin Mod. For example:

    c:\Sierra\Half-Life\<mod>\dlls

    is the same as:

    c:\Sierra\Half-Life\cstrike\dlls

    if you were using the modification Counter-Strike, which is installed into the directory cstrike.

  • <hl> or <half-life> directory
    Just like the <mod> directory, this refers to your base Half-Life installation folder. This is usually C:\Sierra\Half-life\. If you are running Counter-Strike retail version, your <hl> directory is your C:\Sierra\Counter-Strike\ directory. If you do not know where your Half-Life base directory is, look for your <mod> directory and then browse to its parent folder (back one directory).

  • rcon
    What Admin Mod replaces. Back in the days, before Alfred messed with the system, server administration was obtained by submitting a remote console password, which gave the client access to do... well, everything. This password could be used by any client from any computer, therefore rendering the servers very insecure. This is the reason for Admin Mod's existence, and we thank Alfred for his inability to trust people. =)

  • CVAR
    Configuration Variable. This is one of the most basic and important of the list. Admin Mod uses CVARs to let the server administrator have access to a vast array of possible settings. Most of the CVARs are located in the server.cfg file. Admin Mod's cvar are located in the adminmod.cfg file. This is discussed in further detail in the Admin Mod CVARs section.

  • *nix
    *nix is a contraction for Unix and it's flavors. This includes, but is not limited to Linux (and all its sub flavors), BSD, Solaris and so on.

  • Win9x
    Windows Operating Systems can be classified in two general categories: *bleeep!* and decent. The '*bleeep!*' are refered to as Win9x which are: Windows 95, Windows 98, Windows 98se and Windows Millenium Edition (WinME). We strongly suggest that you do NOT use these OS's as servers for everyone's good.

  • WinNT
    Microsoft is not completly worthless. Indeed they have a range of Operating System's that are actually fairly good compared to their old standards. These OS's all run on some form of the NT (New Technology) kernel. There are, but are not limited to: Windows NT4, Windows NT5 (a.k.a. Windows 2000) and Windows XP.

Acronyms:

  • AM
    Admin Mod. 'nuff said.

  • MM
    MetaMod. Without this nifty little program written by Will Day, life would resemble hello for anyone out there who is a mod developer. I am dead serious. MetaMod sits between the GameDLL and the mod DLL and provides all its plugins with almost infinite possibilities. Check out the MetaMod homepage for more info.

  • HLDS
    Half-Life Dedicated Server. Also know as "that DOS window thingy that pops up when I select Dedicated Server." When Alfred created Admin Mod back in the day, he was thinking of this program. If you did not know what HLDS stood for before reading this page, we seriously recommend not running a Half-Life server, dedicated or not, with Admin Mod for now, as this is usually a sign that you are not ready.

  • RTFM
    Our personal favorite. =) Taken directly from my sig:
    RTFM /R-T-F-M/ imp. [Unix]
    Abbreviation for `Read The ****ing Manual'. 1. Used by gurus to brush off questions they consider trivial or annoying. Compare Don't do that then!. 2. Used when reporting a problem to indicate that you aren't just asking out of randomness. "No, I can't figure out how to interface Unix to my toaster, and yes, I have RTFM." Unlike sense 1, this use is considered polite. See also FM, RTFAQ, RTFB, RTFS, STFW, RTM, all of which mutated from RTFM, and compare UTSL.

  • STFW
    This goes hand in hand with the preceding acronym: Search The Freaking Web (polite version). This should be simple enough to understand.

  • TFC, CS, etc.
    All those wonderful modifications. They come in all shapes, sizes, colors and sexual orientations. The most common are: TFC (Team Fortress Classic), CS (Counter-Strike), DoD (Day of Defeat), AHL (Action Half-Life) and so on.

  • WONID
    World Online Network Identification. This is a number generated by Half-Life using your CD key to identify you to the rest of the world. Each CD key has a unique corresponding WONID. Admin Mod takes advantage of this to recognize you if you opt to use WONID in your users.ini.


Where to Go for Help

M00's Guide to getting Access to your server.

Guide to getting access to your server.
by M00 version 1.3

Attention: This guide was made for Counter-Strike admins. The parts that you need to change to fit your mod are labeled in TEAL.

This guide is a comprehensive look at solving one of the greatest woes of newer server admins. The dreaded problems of:
1. [ADMIN] That name is reserved on this server.
2. You do not have access to this command.
3. Unknown command: admin_*****

If you follow this guide completely, your problem will be solved. If not, then you take your fate into your own hands. May God be with you.

[Legend of colors:]

RED is for file names.
BLUE is for your password.
GREEN is for important things.
PURPLE is for examples.
TEAL is for mod-dependent changes.

NOTE: If you are using a different mod, (tfc, dod, etc...) then replace cstrike with your mod's folder.

Stuff that you need to know:

  1. When I make reference to these files:server.cfg and users.ini Those are the files on your server, in the cstrike directory.
    (C:\HLServer\cstrike or C:\SIERRA\Half-Life\cstrike)

  2. When I make reference to this file:config.cfg That is the file on your own computer, in the cstrike directory.
    (C:\SIERRA\Half-Life\cstrike or C:\SIERRA\Counter-Strike\cstrike)

  3. Disregard anything that anyone has ever told you about setting up passwords.

  4. This way will work. I promise. If it doesn't, then you didn't read carefully enough. If you have some other question, feel free to post it on the forums.

  5. When I make reference to "secretpass" in this guide, you can use whatever password you want to use in its place. No special characters or spaces though. Note: Make sure that the password in the users.ini and your config.cfg match. If you have multiple users (more than one line) in the users.ini, make sure that each admin has his/her own personal config.cfg set up to match his/her password. Between you and me, as of right now, with only using WONID's the passwords don't even have to be completely secure. I can tell you that the password for my WONID is "m00licious". It doesn't matter because you can't use it against me unless you are on my computer. (Thus have my WONID.)

Facts:

  1. With recent security issues, you should not use names in your users.ini file. Only WONID's. If you want to use names in your users.ini then you do so at your own risk and without any support from me or this guide.

  2. There is also an issue/bug with this version of adminmod that creates a problem for many users. When you use traditional methods of access and password archiving, your password times out and you get kicked or are left without access. This guide bypasses that. It doesn't deal with automatic logging-in, or command-line and autoexec.cfg editing. This is easier and quicker to set up, and it works!

The Steps:

  1. You may want to take a picture of this, but I am actually telling you to not read the manual. I know that sounds weird, but it has conflicting information with some of what I am going to tell you. If you want success. I suggest that you follow this guide only. If you have a better grasp of Admin Mod later on and want to change things, that's fine. Just not now.

  2. This step is going to deal with getting rid of any other forms of access-granting that you may have tried. This manual is very tyrannical, but that is how it has to be. My way or the highway. Now, navigate to your cstrike directory (on your computer, not the server) and locate a file called autoexec.cfg. If there is none. Good. If there is, open it up with a text editor. (Notepad is the one that comes with Windows.) You will need to look for these two lines:

    exec adminpass.cfg setinfo "pw-home" "somepassword"

    The "somepassword" could be anything. If one or both of those lines are in there, delete those lines. Yay. Now, I am going to assume that you use some sort of shortcut to open your Half-Life game. If you do not, fine. If you do, go to it and right-click on it and select "Properties" from the drop down menu. There is a section in the properties labeled "Target." It should look similar to this:

    C:\SIERRA\Half-Life\hl.exe -console -game cstrike

    If there is any mention of "adminpass.cfg" or "setinfo pw-home somepassword" in there, delete those words.

    C:\SIERRA\Half-Life\hl.exe -console -game cstrike +exec adminpass.cfg +setinfo pw-home somepassword

    (Delete the green stuff! Leave the teal stuff though, or change it to your mod. (tfc, valve, dod, etc...).

  3. Navigate to your users.ini on your server. Open it with a text-editor. (Notepad.exe will do.) The format for this file is as follows.

    WONID:PASSWORD:ACCESS-LEVEL
    333999:secretpass:114687

    Notice the lack of names. ONLY WONID's. If you already have admins in there with names, get their WONID's and substitute them in instead of their names. You will also notice the access level. That is set up for FULL access. Everything except a reserved name. You can't reserve a name with a WONID, so you need to subtract the level of reserved name. (16384) Thus, the full access with reserved name: 131071 minus reserved slot: 16384 yields 114687. You can calculate other levels here. Just don't forget to take out the reserved name access.

  4. Navigate to your config.cfg on your computer. (The one that you play Half-Life on.) Open the file with a text-editor. (Notepad.exe) If you are indeed using notepad.exe, Click on the "Edit" menu and select "Find... Ctrl+F". In the box that pops up, type bind "f11". If it finds it. That means that you have something bound to the F11 key already. If it instead pops up a box that says "Cannot find bind "f11"" then be happy. If it did find one, you will have to select a different key to use. Just follow these directions but use a different key instead (PAUSE is a good one to use also. It's well out of the way of normal operation.) Anyway, go to the end of the file and add another line (hit enter). On that new line add the following:

    bind "F11" "admin_login secretpass"

    Now save and close the file.

  5. Hooray! You are done. Now to implement all of our hard work. Log onto your server. When you are in the game, hit F11, (or PAUSE or whatever key you used.) Open the console. You should see (in the console) the message: [ADMIN] Password received. [ADMIN] Password accepted for user '333999' (The 333999 is an example of a WONID, yours will be different.)

Now you have access to admin commands. Whatever level you set up in your users.ini you now possess. Go ahead and try a sample admin command to get your blood pumping. like:

admin_slay N3wBi3

Now. Go forth and start Llama'ing those newbs.

Note: If you feel the need to respond to this guide, or have any things to say to M00 about it. You can discuss it here.

Last edited on: 02/13/02


Half Life Sounds

This list is provided as a helper for those who use the admin_speech plugin, which can be downloaded from the AScript web site, along with many other plugin files for Admin Mod.

Also note that if you want to use your own custom sounds (any plugin using the playsound() function), the wav files must be in PCM format. For Windows users, Sound Recorder (in the Start->Accessories folder) can convert most WAV formats to PCM format.

The section labelled VOX is the default voice. If you want to use any other set of sounds, you must put the directory ahead of the sound name, a forward slash, and then the sounds name, without the .wav extension. Like this:

admin_speakall barney/somethingstinky

Have fun.

HalfLife Pak audio files
(Valve Dir)

| agrunt | ambience | apache | aslave | barnacle | barney | boid | bullchicken | buttons | common | controller | debris | doors | fans | fvox | garg | gman | gonarch | hassault | headcrab | hgrunt | holo | hornet | houndeye | ichy | items | leech | nihilanth | plats | player | roach | scientist | squeek | tentacle | tride | turret | vox | weapons | x | zombie |

agrunt

ag_alert1.wav
ag_alert2.wav
ag_alert3.wav
ag_alert4.wav
ag_alert5.wav
ag_attack1.wav
ag_attack2.wav
ag_attack3.wav
ag_die1.wav
ag_die2.wav
ag_die3.wav
ag_die5.wav
ag_fire1.wav

ag_fire2.wav ag_fire3.wav
ag_idle1.wav
ag_idle2.wav
ag_idle3.wav
ag_idle4.wav
ag_idle5.wav
ag_pain1.wav
ag_pain2.wav
ag_pain3.wav
ag_pain4.wav
ag_pain5.wav

ambience (return to top)

_comma.wav
alien_beacon.wav
alien_blipper.wav
alien_builder.wav
alien_chatter.wav
alien_creeper.wav
alien_cycletone.wav
alien_frantic.wav
alien_hollow.wav
alien_humongo.wav
alien_minddrill.wav
alien_powernode.wav
alien_purrmachine.wav
alien_squit.wav
alien_twow.wav
alien_zonerator.wav
aliencave1.wav
alienclicker1.wav
alienfazzle1.wav
lienflyby1.wav
alienlaser1.wav
alienvalve1.wav
alienvalve2.wav
alienvoices1.wav
alienwind1.wav
alienwind2.wav
bee1.wav
bee2.wav
biggun1.wav
biggun2.wav
biggun3.wav
bigwarning.wav
iotone.wav
boomer.wav
reather.wav
burning1.wav
burning2.wav
burning3.wav
computalk1.wav
cricket.wav
rickets.wav
crtnoise.wav
deadsignal1.wav
deadsignal2.wav

des_wind1.wav
des_wind2.wav
des_wind3.wav
disgusting.wav
distantmortar1.wav
distantmortar2.wav
distantmortar3.wav
drips.wav
dronemachine1.wav
dronemachine2.wav
dronemachine3.wav
flameburst1.wav
flies.wav
hammer.wav
hawk1.wav
industrial1.wav
industrial2.wav
industrial3.wav
industrial4.wav
jetflyby1.wav
labdrone1.wav
labdrone2.wav
labgear.wav
labmoan.wav
littlemachine.wav
oader_hydra1.wav
loader_step1.wav
mechwhine.wav
mgun_burst1.wav
mgun_burst2.wav
mgun_burst3.wav
mgun_burst4.wav
particle_suck1.wav
particle_suck2.wav
port_suckin1.wav
port_suckout1.wav
pounder.wav
pulsemachine.wav
pumper.wav
quail1.wav
rifle1.wav
rifle2.wav
rocket_groan1.wav
rocket_groan2.wav

rocket_groan3.wav
rocket_groan4.wav
rocket_steam1.wav
rocketflame1.wav
rocketrumble1.wav
rotormachine.wav
sandfall1.wav
sandfall2.wav
screammachine.wav
signalgear1.wav
ignalgear2.wav
siren.wav
sparks.wav
squeeks1.wav
squeeks2.wav
squirm2.wav
squitch.wav
squitch2.wav
steamburst1.wav
steamjet1.wav
tankdrivein1.wav
tankdrivein2.wav
tankidle1.wav
tankidle2.wav
techamb2.wav
the_horror1.wav
the_horror2.wav
the_horror3.wav
the_horror4.wav
truck1.wav
truck2.wav
turretrot1.wav
turretrot2.wav
warn1.wav
warn2.wav
warn3.wav
waterfall1.wav
waterfall2.wav
waterfall3.w
wind1.wav
wind2.wav
wren1.wav
xtal_down1.wav
zapmachine.wav
zipmachine.wav

apache (return to top)
ap_rotor1.wav
ap_rotor2.wav
ap_rotor3.wav
ap_rotor4.wav
ap_whine1.wav

aslave (return to top)

slv_alert1.wav
slv_alert3.wav
slv_alert4.wav
slv_die1.wav
slv_die2.wav

slv_pain1.wav
slv_pain2.wav
slv_word1.wav
slv_word2.wav
slv_word3.wav

slv_word4.wav
slv_word5.wav
slv_word6.wav
slv_word7.wav
slv_word8.wav

barnacle (return to top)

bcl_alert2.wav
bcl_bite3.wav
bcl_chew1.wav
bcl_chew2.wav
bcl_chew3.wav
bcl_die1.wav
bcl_die3.wav
bcl_tongue1.wav

barney (return to top)

_comma.wav
aimforhead.wav
aintgoin.wav
aintscared.wav
alreadyasked.wav
ambush.wav
ba_another.wav
ba_attack1.wav
ba_attack2.wav
ba_bring.wav
ba_buttugly.wav
ba_close.wav
ba_die1.wav
ba_die2.wav
ba_die3.wav
ba_dontmake.wav
ba_dotoyou.wav
ba_duty.wav
ba_endline.wav
ba_firepl.wav
ba_friends.wav
ba_gotone.wav
ba_iwish.wav
ba_later.wav
ba_pain1.wav
ba_pain2.wav
ba_pain3.wav
ba_pissme.wav
ba_post.wav
ba_raincheck.wav
ba_seethat.wav
ba_somuch.wav
ba_stepoff.wav
ba_tomb.wav
ba_uwish.wav
ba_watchit.wav
ba_whatyou.wav
ba_whoathere.wav
badarea.wav
badfeeling.wav
beertopside.wav
bequiet.wav
bigmess.wav
bigplace.wav
c1a0_ba_button.wav
c1a0_ba_desk.wav
c1a0_ba_headdown.wav
c1a0_ba_hevno.wav
c1a0_ba_hevyes.wav
c1a0_ba_late.wav
c1a1_ba_glad.wav
c1a2_ba_2zomb.wav
c1a2_ba_4zomb.wav
c1a2_ba_bullsquid.wav
c1a2_ba_climb.wav
c1a2_ba_goforit.wav
c1a2_ba_slew.wav
c1a2_ba_surface.wav
c1a2_ba_top.wav
c1a4_ba_octo1.wav
c1a4_ba_octo2.wav
c1a4_ba_octo3.wav
c1a4_ba_octo4.wav
c1a4_ba_wisp.wav
c2a_ba_hub1a.wav
c2a1_ba_again.wav

c2a1_ba_hub1a.wav
c2a1_ba_hub2a.wav
c2a2_ba_launch.wav
c2a3_ba_assn.wav
c2a4_ba_1tau.wav
c2a4_ba_3tau.wav
c2a4_ba_5tau.wav
c2a4_ba_alive.wav
c2a4_ba_arg1a.wav
c2a4_ba_arg3a.wav
c2a4_ba_arg5a.wav
c2a4_ba_longnite.wav
c2a4_ba_steril.wav
c2a4_ba_teach.wav
c2a5_ba_helpme.wav
c2a5_ba_letout.wav
c2a5_ba_rpg.wav
c2a5_ba_sniped.wav
c3a1_ba_1sat.wav
c3a1_ba_3sat.wav
c3a1_ba_5sat.wav
c3a2_ba_2surv.wav
c3a2_ba_4surv.wav
c3a2_ba_6surv.wav
c3a2_ba_8surv.wav
c3a2_ba_stay.wav
cantfigure.wav
checkwounds.wav
coldone.wav
crewdied.wav
diebloodsucker.wav
dobettertogether.wav
dontaskme.wav
dontbet.wav
dontbuyit.wav
dontfigure.wav
dontguess.wav
donthurtem.wav
dontreckon.wav
getanyworse.wav
gettingcloser.wav
gladof38.wav
gladtolendhand.wav
guyresponsible.wav
hardtosay.wav
haybuddy.wav
hayfella.wav
hearsomething.wav
hearsomething2.wav
hellonicesuit.wav
helpothers.wav
heybuddy.wav
heyfella.wav
hitbad.wav
howdy.wav
howyoudoing.wav

icanhear.wav
 iguess.wav
 illwait.wav
 imdead.wav
 imhit.wav
 imwithyou.wav
 ireckon.wav
 iwaithere.wav
 justdontknow.wav
 leavealone.wav
 letsgo.wav
 letsmoveit.wav
 luckwillturn.wav
 maybe.wav
 missingleg.wav
 mrfreeman.wav
 nodrill.wav
 nope.wav
 nosir.wav
 notelling.wav
 noway.wav
 openfire.wav
 realbadwound.wav
 rightway.wav
 seeya.wav
 slowingyoudown.wav
 somethingdied.wav
 somethingmoves.wav
 somethingstinky.wav
 soundsbad.wav
 soundsright.wav
 standback.wav
 standguard.wav
 stench.wav
 stop1.wav
 stop2.wav
 stophere.wav
 survive.wav
 targetpractice.wav
 teamup1.wav
 teamup2.wav
 thinking.wav
 waitin.wav
 wayout.wav
 whatgood.wav
 whatisthat.wav
 whatsgoingon.wav
 workingonstuff.wav
 yessir.wav
 youbet.wav
 youeverseen.wav
 yougotit.wav
 youhearthat.wav
 youneedmedic.wav
 youtalkmuch.wav
 yup.wav

boid (return to top)

boid_alert1.wav
boid_alert2.wav
boid_idle1.wav
boid_idle2.wav
boid_idle3.wav

bullchicken (return to top)

bc_acid2.wav
bc_attack1.wav
bc_attack2.wav
bc_attack3.wav
bc_attackgrowl.wav
bc_attackgrowl2.wav
bc_attackgrowl3.wav
bc_bite1.wav
bc_bite2.wav
bc_bite3.wav
bc_die1.wav
bc_die2.wav
bc_die3.wav 		bc_idle1.wav
bc_idle2.wav
bc_idle3.wav
bc_idle4.wav
bc_idle5.wav
bc_pain1.wav
bc_pain2.wav
bc_pain3.wav
bc_pain4.wav
bc_spithit1.wav
bc_spithit2.wav
bc_spithit3.wav

buttons (return to top)

bell1.wav
blip1.wav
blip2.wav
button1.wav
button10.wav
button11.wav
button2.wav
button3.wav
button4.wav
button5.wav
button6.wav
button7.wav
button8.wav
button9.wav
latchlocked1.wav 		latchlocked2.wav
latchunlocked1.wav
latchunlocked2.wav
lever1.wav
lever2.wav
lever3.wav
lever4.wav
lever5.wav
lightswitch2.wav
spark1.wav
spark2.wav
spark3.wav
spark4.wav
spark5.wav
spark6.wav

common (return to top)

bodydrop1.wav
bodydrop2.wav
bodydrop3.wav
bodydrop4.wav
bodysplat.wav
launch_deny1.wav
launch_deny2.wav
launch_dnmenu1.wav
launch_glow1.wav
launch_select1.wav
launch_select2.wav
launch_upmenu1.wav
menu1.wav 		menu2.wav
menu3.wav
npc_step1.wav
npc_step2.wav
npc_step3.wav
npc_step4.wav
null.wav
wpn_denyselect.wav
wpn_hudoff.wav
wpn_hudon.wav
wpn_moveselect.wav
wpn_select.wav

controller (return to top)

con_alert1.wav
con_alert2.wav
con_alert3.wav
con_attack1.wav
con_attack2.wav
con_attack3.wav
con_die1.wav
con_die2.wav 		con_idle1.wav
con_idle2.wav
con_idle3.wav
con_idle4.wav
con_idle5.wav
con_pain1.wav
con_pain2.wav
con_pain3.wav

debris (return to top)

beamstart1.wav
beamstart10.wav
beamstart11.wav
beamstart14.wav
beamstart15.wav
beamstart2.wav
beamstart3.wav
beamstart4.wav
beamstart5.wav
beamstart6.wav
beamstart7.wav
beamstart8.wav
beamstart9.wav
bustceiling.wav
bustconcrete1.wav
bustconcrete2.wav
bustcrate1.wav
bustcrate2.wav
bustcrate3.wav
bustflesh1.wav
bustflesh2.wav
bustglass1.wav
bustglass2.wav
bustglass3.wav
bustmetal1.wav
bustmetal2.wav
concrete1.wav
concrete2.wav
concrete3.wav 		flesh1.wav
flesh3.wav
flesh5.wav
flesh6.wav
flesh7.wav
glass1.wav
glass2.wav
glass3.wav
glass4.wav
metal1.wav
metal2.wav
metal3.wav
metal4.wav
metal5.wav
metal6.wav
pushbox1.wav
pushbox2.wav
pushbox3.wav
wood1.wav
wood2.wav
wood3.wav
wood4.wav
zap1.wav
zap2.wav
zap3.wav
zap5.wav
zap6.wav
zap7.wav
zap8.wav

doors (return to top)

aliendoor1.wav
aliendoor2.wav
aliendoor3.wav
aliendoor4.wav
aliendoor5.wav
doormove1.wav
doormove10.wav
doormove2.wav
doormove3.wav
doormove4.wav
doormove5.wav
doormove6.wav 		doormove7.wav
doormove8.wav
doormove9.wav
doorstop1.wav
doorstop2.wav
doorstop3.wav
doorstop4.wav
doorstop5.wav
doorstop6.wav
doorstop7.wav
doorstop8.wav
fans (return to top)
fan1.wav
fan1off.wav
fan1on.wav
fan2.wav
fan2off.wav
fan2on.wav
fan3.wav
fan3off.wav 		fan3on.wav
fan4.wav
fan4off.wav
fan4on.wav
fan5.wav
fan5off.wav
fan5on.wav
fvox (return to top)
_comma.wav
_period.wav
acquired.wav
activated.wav
administering_medical.wav
adrenaline_shot.wav
alert.wav
am.wav
ammo_depleted.wav
ammo_pickup.wav
antidote_shot.wav
antitoxin_shot.wav
armor_compromised.wav
armor_gone.wav
atmospherics_on.wav
automedic_on.wav
beep.wav
bell.wav
bio_reading.wav
biohazard_detected.wav
bleeding_stopped.wav
blip.wav
blood_loss.wav
blood_plasma.wav
blood_toxins.wav
boop.wav
buzz.wav
chemical_detected.wav
communications_on.wav
danger.wav
deactivated.wav
east.wav
eight.wav
eighteen.wav
eighty.wav
eleven.wav
evacuate_area.wav
fifteen.wav
fifty.wav
five.wav
flatline.wav
four.wav
fourteen.wav
fourty.wav
fuzz.wav
get_44ammo.wav
get_44pistol.wav
get_9mmclip.wav 		get_alien_wpn.wav
get_assault.wav
get_assaultgren.wav
get_battery.wav
get_bolts.wav
get_buckshot.wav
get_crossbow.wav
get_egon.wav
get_egonpower.wav
get_gauss.wav
get_grenade.wav
get_medkit.wav
get_pistol.wav
get_rpg.wav
get_rpgammo.wav
get_satchel.wav
get_shotgun.wav
get_tripmine.wav
health_critical.wav
health_dropping.wav
health_dropping2.wav
heat_damage.wav
hev_critical_fail.wav
hev_damage.wav
hev_general_fail.wav
hev_logon.wav
hev_shutdown.wav
hiss.wav
hours.wav
immediately.wav
innsuficient_medical.wav
internal_bleeding.wav
major_fracture.wav
major_lacerations.wav
medical_repaired.wav
meters.wav
minor_fracture.wav
minor_lacerations.wav
minutes.wav
morphine_shot.wav
munitionview_on.wav
near_death.wav
nine.wav
nineteen.wav
ninety.wav
north.wav
one.wav
onehundred.wav 		online.wav
pain_block.wav
percent.wav
pm.wav
position.wav
power_below.wav
power_level_is.wav
power_restored.wav
powerarmor_on.wav
powermove_on.wav
powermove_overload.wav
radiation_detected.wav
range.wav
remaining.wav
safe_day.wav
seconds.wav
seek_medic.wav
seven.wav
seventeen.wav
seventy.wav
shock_damage.wav
six.wav
sixteen.wav
sixty.wav
south.wav
targetting_system.wav
ten.wav
thirteen.wav
thirty.wav
three.wav
time_is_now.wav
time_remaining.wav
torniquette_applied.wav
twelve.wav
twenty.wav
twentyfive.wav
two.wav
vitalsigns_on.wav
voice_off.wav
voice_on.wav
warning.wav
weapon_pickup.wav
weaponselect_on.wav
west.wav
wound_sterilized.wav
your.wav

garg (return to top)

gar_alert1.wav
gar_alert2.wav
gar_alert3.wav
gar_attack1.wav
gar_attack2.wav
gar_attack3.wav
gar_breathe1.wav
gar_breathe2.wav
gar_breathe3.wav
gar_die1.wav
gar_die2.wav
gar_flameoff1.wav
gar_flameon1.wav 		gar_flamerun1.wav
gar_idle1.wav
gar_idle2.wav
gar_idle3.wav
gar_idle4.wav
gar_idle5.wav
gar_pain1.wav
gar_pain2.wav
gar_pain3.wav
gar_step1.wav
gar_step2.wav
gar_stomp1.wav
gman (return to top)
gman_choose1.wav
gman_choose2.wav
gman_mumble1.wav
gman_mumble2.wav
gman_mumble3.wav
gman_mumble4.wav
gman_mumble5.wav
gman_mumble6.wav
gman_nasty.wav 		gman_noreg.wav
gman_noregret.wav
gman_nowork.wav
gman_offer.wav
gman_otherwise.wav
gman_potential.wav
gman_stepin.wav
gman_suit.wav
gman_wise.wav

gonarch (return to top)
gon_alert1.wav
gon_alert2.wav
gon_alert3.wav
gon_attack1.wav
gon_attack2.wav
gon_attack3.wav
gon_birth1.wav
gon_birth2.wav
gon_birth3.wav
gon_childdie1.wav
gon_childdie2.wav 		gon_childdie3.wav
gon_die1.wav
gon_pain2.wav
gon_pain4.wav
gon_pain5.wav
gon_sack1.wav
gon_sack3.wav
gon_step1.wav
gon_step2.wav
gon_step3.wav

hassault (return to top)

hw_gun4.wav
hw_shoot1.wav
hw_shoot2.wav
hw_shoot3.wav 		hw_spin.wav
hw_spindown.wav
hw_spinup.wav

headcrab (return to top)

hc_alert1.wav
hc_alert2.wav
hc_attack1.wav
hc_attack2.wav
hc_attack3.wav
hc_die1.wav
hc_die2.wav
hc_headbite.wav 		hc_idle1.wav
hc_idle2.wav
hc_idle3.wav
hc_idle4.wav
hc_idle5.wav
hc_pain1.wav
hc_pain2.wav
hc_pain3.wav

hgrunt (return to top)

_comma.wav
_period.wav
a!.wav
a.wav
affirmative!.wav
affirmative.wav
alert!.wav
alert.wav
alien!.wav
alien.wav
all!.wav
all.wav
am!.wav
am.wav
anything!.wav
are!.wav
are.wav
area!.wav
area.wav
ass!.wav
ass.wav
at!.wav
away!.wav
backup!.wav
backup.wav
bag!.wav
bastard!.wav
stard.wav
blow!.wav
bogies!.wav
bogies.wav
bravo!.wav
bravo.wav
c2a2_hg_chat1a.wav
c2a2_hg_chat2a.wav
c2a2_hg_chat3a.wav
c2a2_hg_chat4a.wav
c2a2_hg_chat5a.wav
c2a3_ambush_fx.wav
c2a3_ambush_vox.wav
c2a3_hg_1drag.wav
c2a3_hg_2drag.wav
c2a3_hg_3drag.wav
c2a3_hg_4drag.wav
c2a3_hg_5drag.wav
c2a3_hg_laugh.wav
c2a5_hg_abandon.wav
c2a5_hg_lebuz.wav
call!.wav
casualties!.wav
charlie!.wav
charlie.wav
check!.wav
check.wav
checking!.wav
checking.wav
clear!.wav
clear.wav
clik.wav
command!.wav
command.wav
continue!.wav
continue.wav
control!.wav
control.wav
cover!.wav
creeps!.wav
creeps.wav
damn!.wav
damn.wav
delta!.wav
delta.wav
down!.wav
down.wav
east!.wav
east.wav
echo!.wav
echo.wav
eightymeters.wav
eliminate.wav
everything.wav
fall!.wav
fiftymeters.wav
fight!.wav
fight.wav
fire!.wav
fire.wav
five!.wav
five.wav
fivemeters.wav
force!.wav
force.wav
formation!.wav
formation.wav
fortymeters.wav
four!.wav
four.wav
foxtrot!.wav
foxtrot.wav
freeman!.wav
freeman.wav
get!.wav
go!.wav
go.wav
god!.wav
god.wav
going!.wav
going.wav
got!.wav
got.wav
 gr_alert1.wav
gr_die1.wav
gr_die2.wav
gr_die3.wav
gr_idle1.wav
gr_idle2.wav
gr_idle3.wav
gr_loadtalk.wav
gr_mgun1.wav
gr_mgun2.wav
gr_mgun3.wav
gr_pain1.wav
r_pain2.wav
gr_pain3.wav
gr_pain4.wav
Sgr_pain5.wav
gr_reload1.wav
gr_step1.wav
gr_step2.wav
gr_step3.wav
gr_step4.wav
grenade!.wav
guard!.wav
guard.wav
have!.wav
have.wav
he!.wav
heavy!.wav
heavy.wav
hell!.wav
hell.wav
here!.wav
here.wav
hg_civvies.wav
hg_sucks.wav
hold!.wav
hold.wav
hole!.wav
hole.wav
hostiles!.wav
hostiles.wav
hot!.wav
hot.wav
hundredmeters.wav
i!.wav
i.wav
in!.wav
in.wav
is!.wav
is.wav
kick!.wav
lay!.wav
left!.wav
left.wav
lets!.wav
lets.wav
level!.wav
level.wav
lookout!.wav
lookout.wav
maintain!.wav
maintain.wav
mission!.wav
mission.wav
mister!.wav
mister.wav
mother!.wav
move!.wav
move.wav
movement!.wav
movement.wav
moves!.wav
moves.wav
my!.wav
my.wav
need!.wav
negative!.wav
negative.wav
neutralize!.wav
neutralized!.wav
niner!.wav
niner.wav
no!.wav
no.wav
north!.wav
north.wav
nothing!.wav
nothing.wav
objective!.wav
objective.wav
of!.wav
of.wav
oh!.wav
ok!.wav
ok.wav
one!.wav
one.wav
onefiftymeters.wav
orders!.wav
orders.wav
our!.wav
out!.wav
out.wav
over!.wav
over.wav
patrol!.wav
patrol.wav
people!.wav
people.wav
position!.wav 		position.wav
post!.wav
post.wav
private!.wav
private.wav
quiet!.wav
quiet.wav
radio!.wav
radio.wav
recon!.wav
recon.wav
request!.wav
right!.wav
right.wav
roger!.wav
roger.wav
sector!.wav
sector.wav
secure!.wav
secure.wav
seventymeters.wav
shit!.wav
shit.wav
shot!.wav
shot.wav
sign!.wav
sign.wav
signs!.wav
signs.wav
silence!.wav
silence.wav
sir!.wav
sir.wav
six!.wav
six.wav
sixtymeters.wav
some!.wav
some.wav
something!.wav
something.wav
south!.wav
south.wav
squad!.wav
squad.wav
stay!.wav
stay.wav
suppressing!.wav
sweep!.wav
sweep.wav
take!.wav
tango!.wav
tango.wav
target!.wav
target.wav
team!.wav
team.wav
tenmeters.wav
that!.wav
that.wav
the!.wav
the.wav
there!.wav
there.wav
these!.wav
these.wav
thirtymeters.wav
this!.wav
this.wav
those!.wav
those.wav
three!.wav
three.wav
tight!.wav
tight.wav
twentymeters.wav
two!.wav
two.wav
twohundredmeters.wav
uhh.wav
under!.wav
up!.wav
up.wav
we!.wav
we.wav
weapons!.wav
weapons.wav
weird!.wav
weird.wav
west!.wav
west.wav
we've!.wav
we've.wav
will!.wav
yeah!.wav
yeah.wav
yes!.wav
yes.wav
yessir!.wav
yessir.wav
you!.wav
your!.wav
your.wav
zero!.wav
zero.wav
zone!.wav
zone.wav
zulu!.wav
zulu.wav

holo (return to top)

tr_ba_lightson.wav
tr_ba_unuse.wav
tr_ba_use.wav
tr_holo_3jumps.wav
tr_holo_breakbox.wav
tr_holo_breath.wav
tr_holo_button.wav
tr_holo_charger.wav
tr_holo_commencing.wav
tr_holo_congrats.wav
tr_holo_done.wav
tr_holo_drown.wav
tr_holo_duck.wav
tr_holo_fallshort.wav
tr_holo_fantastic.wav
tr_holo_flashlight.wav
tr_holo_greatwork.wav
tr_holo_grenade.wav
tr_holo_hitall.wav
tr_holo_injury.wav
tr_holo_intro.wav
tr_holo_jduck.wav
tr_holo_jump.wav
tr_holo_jumpdown.wav
tr_holo_jumpgap.wav 		tr_holo_keeptrying.wav
tr_holo_ladder.wav
tr_holo_leadguard.wav
tr_holo_lightoff.wav
tr_holo_longjump.wav
tr_holo_medkit.wav
tr_holo_move.wav
tr_holo_nicejob.wav
tr_holo_pipeduck.wav
tr_holo_pullbox.wav
tr_holo_pushbox.wav
tr_holo_radiation.wav
tr_holo_retry.wav
tr_holo_runstart.wav
tr_holo_spinbridge.wav
tr_holo_startlift.wav
tr_holo_steam.wav
tr_holo_target.wav
tr_holo_tryagain.wav
tr_holo_usetrain.wav
tr_sci_goodwork.wav
tr_sci_hardlynoticed.wav
tr_sci_nextstation.wav
tr_sci_unuse.wav
tr_sci_use.wav

hornet (return to top)

ag_buzz1.wav
ag_buzz2.wav
ag_buzz3.wav
ag_hornethit1.wav
ag_hornethit2.wav
ag_hornethit3.wav

houndeye (return to top)

he_alert1.wav
he_alert2.wav
he_alert3.wav
he_attack1.wav
he_attack2.wav
he_attack3.wav
he_blast1.wav
he_blast2.wav
he_blast3.wav
he_die1.wav
he_die2.wav
he_die3.wav
he_hunt1.wav 		he_hunt2.wav
he_hunt3.wav
he_hunt4.wav
he_idle1.wav
he_idle2.wav
he_idle3.wav
he_idle4.wav
he_pain1.wav
he_pain2.wav
he_pain3.wav
he_pain4.wav
he_pain5.wav

ichy (return to top)

ichy_alert1.wav
ichy_alert2.wav
ichy_alert3.wav
ichy_attack1.wav
ichy_attack2.wav
ichy_bite1.wav
ichy_bite2.wav
ichy_die1.wav
ichy_die2.wav
ichy_die3.wav 		ichy_die4.wav
ichy_idle1.wav
ichy_idle2.wav
ichy_idle3.wav
ichy_idle4.wav
ichy_pain1.wav
ichy_pain2.wav
ichy_pain3.wav
ichy_pain5.wav

items (return to top)

9mmclip1.wav
9mmclip2.wav
airtank1.wav
ammopickup1.wav
ammopickup2.wav
clipinsert1.wav
cliprelease1.wav
flashlight1.wav
guncock1.wav
gunpickup1.wav
gunpickup2.wav
gunpickup3.wav 		gunpickup4.wav
medcharge4.wav
medshot4.wav
medshot5.wav
medshotno1.wav
smallmedkit1.wav
smallmedkit2.wav
suitcharge1.wav
suitchargeno1.wav
suitchargeok1.wav
weapondrop1.wav

leech (return to top)

leech_alert1.wav
leech_alert2.wav
leech_bite1.wav
leech_bite2.wav
leech_bite3.wav

nihilanth (return to top)

nil_alone.wav
nil_comes.wav
nil_deceive.wav
nil_die.wav
nil_done.wav
nil_freeman.wav
nil_last.wav
nil_man_notman.wav 		nil_now_die.wav
nil_slaves.wav
nil_thelast.wav
nil_thetruth.wav
nil_thieves.wav
nil_win.wav

plats (return to top)

bigmove1.wav
bigmove2.wav
bigstop1.wav
bigstop2.wav
elevbell1.wav
elevmove1.wav
elevmove2.wav
elevmove3.wav
freightmove1.wav
freightmove2.wav
freightstop1.wav
heavymove1.wav
heavystop1.wav
heavystop2.wav
platmove1.wav
platstop1.wav
rackmove1.wav
rackstop1.wav 		railmove1.wav
railstop1.wav
squeekmove1.wav
squeekstop1.wav
talkmove1.wav
talkmove2.wav
talkstop1.wav
train_use1.wav
train1.wav
train2.wav
ttrain_brake1.wav
ttrain_start1.wav
ttrain1.wav
ttrain2.wav
ttrain3.wav
ttrain4.wav
ttrain6.wav
ttrain7.wav

player (return to top)

breathe1.wav
geiger1.wav
geiger2.wav
geiger3.wav
geiger4.wav
geiger5.wav
geiger6.wav
heartbeat1.wav
pl_dirt1.wav
pl_dirt2.wav
pl_dirt3.wav
pl_dirt4.wav
pl_duct1.wav
pl_duct2.wav
pl_duct3.wav
pl_duct4.wav
pl_fallpain1.wav
pl_fallpain2.wav
pl_fallpain3.wav
pl_grate1.wav
pl_grate2.wav
pl_grate3.wav
pl_grate4.wav
pl_jump1.wav
pl_jump2.wav
pl_jumpland2.wav
pl_ladder1.wav
pl_ladder2.wav
pl_ladder3.wav
pl_ladder4.wav
pl_metal1.wav
pl_metal2.wav 		pl_metal3.wav
pl_metal4.wav
pl_pain2.wav
pl_pain4.wav
pl_pain5.wav
pl_pain6.wav
pl_pain7.wav
pl_shell1.wav
pl_shell2.wav
pl_shell3.wav
pl_slosh1.wav
pl_slosh2.wav
pl_slosh3.wav
pl_slosh4.wav
pl_step1.wav
pl_step2.wav
pl_step3.wav
pl_step4.wav
pl_swim1.wav
pl_swim2.wav
pl_swim3.wav
pl_swim4.wav
pl_tile1.wav
pl_tile2.wav
pl_tile3.wav
pl_tile4.wav
pl_tile5.wav
pl_wade1.wav
pl_wade2.wav
pl_wade3.wav
pl_wade4.wav
sprayer.wav

roach (return to top)

rch_die.wav
rch_smash.wav
rch_walk.wav

scientist (return to top)

_comma.wav
absolutely.wav
absolutelynot.wav
administrator.wav
afellowsci.wav
ahfreeman.wav
alienappeal.wav
alientrick.wav
allnominal.wav
alright.wav
analysis.wav
announcer.wav
areyouthink.wav
asexpected.wav
beenaburden.wav
beverage.wav
bloodsample.wav
c1a0_sci_bigday.wav
c1a0_sci_catscream.wav
c1a0_sci_crit1a.wav
c1a0_sci_crit2a.wav
c1a0_sci_crit3a.wav
c1a0_sci_ctrl1a.wav
c1a0_sci_ctrl2a.wav
c1a0_sci_ctrl3a.wav
c1a0_sci_ctrl4a.wav
c1a0_sci_dis10a.wav
c1a0_sci_dis11a.wav
c1a0_sci_dis12a.wav
c1a0_sci_dis13a.wav
c1a0_sci_dis14a.wav
c1a0_sci_dis15a.wav
c1a0_sci_dis16a.wav
c1a0_sci_dis17a.wav
c1a0_sci_dis1a.wav
c1a0_sci_dis1b.wav
c1a0_sci_dis1c.wav
c1a0_sci_dis1d.wav
c1a0_sci_dis2a.wav
c1a0_sci_dis3a.wav
c1a0_sci_dis4a.wav
c1a0_sci_dis5a.wav
c1a0_sci_dis6a.wav
c1a0_sci_dis7a.wav
c1a0_sci_dis8a.wav
c1a0_sci_dis9a.wav
c1a0_sci_disa.wav
c1a0_sci_getaway.wav
c1a0_sci_gm.wav
c1a0_sci_gm1.wav
c1a0_sci_itsyou.wav
c1a0_sci_lock1a.wav
c1a0_sci_lock2a.wav
c1a0_sci_lock3a.wav
c1a0_sci_lock4a.wav
c1a0_sci_lock5a.wav
c1a0_sci_lock6a.wav
c1a0_sci_lock7a.wav
c1a0_sci_lock8a.wav
c1a0_sci_mumble.wav
c1a0_sci_samp.wav
c1a0_sci_scanrpt.wav
c1a0_sci_stall.wav
c1a0_sci_stayback.wav
c1a1_sci_1scan.wav
c1a1_sci_2scan.wav
c1a1_sci_3scan.wav
c1a1_sci_4scan.wav
c1a1_sci_5scan.wav
c1a2_sci_1zomb.wav
c1a2_sci_3zomb.wav
c1a2_sci_5zomb.wav
c1a2_sci_6zomb.wav
c1a2_sci_dangling.wav
c1a2_sci_darkroom.wav
c1a2_sci_elevator.wav
c1a2_sci_lounge.wav
c1a2_sci_transm.wav
c1a3_sci_1man.wav
c1a3_sci_atlast.wav
c1a3_sci_rescued.wav
c1a3_sci_silo1a.wav
c1a3_sci_silo2a.wav
c1a3_sci_team.wav
c1a3_sci_thankgod.wav
c1a4_sci_blind.wav
c1a4_sci_gener.wav
c1a4_sci_pwr.wav
c1a4_sci_pwroff.wav
c1a4_sci_rocket.wav
c1a4_sci_tent.wav
c1a4_sci_trainend.wav
c1a4_sci_trust.wav
c2a3_sci_icky.wav
c2a3_sci_track.wav
c2a4_sci_2tau.wav
c2a4_sci_4tau.wav
c2a4_sci_alldie.wav
c2a4_sci_arg2a.wav
c2a4_sci_arg4a.wav
c2a4_sci_letout.wav
c2a4_sci_scanner.wav
c2a4_sci_sugicaloff.wav
c2a4_sci_surgury.wav
c2a5_sci_boobie.wav
c2a5_sci_lebuz.wav
c3a1_sci_2sat.wav
c3a1_sci_4sat.wav
c3a1_sci_6sat.wav
c3a1_sci_dome.wav
c3a1_sci_done.wav
c3a2_sci_1glu.wav
c3a2_sci_1surv.wav
c3a2_sci_2glu.wav
c3a2_sci_3glu.wav
c3a2_sci_3surv.wav
c3a2_sci_5surv.wav
c3a2_sci_7surv.wav
c3a2_sci_flood.wav
c3a2_sci_fool.wav
c3a2_sci_forever.wav
c3a2_sci_linger.wav
c3a2_sci_ljump.wav
c3a2_sci_notyet.wav
c3a2_sci_portal.wav
c3a2_sci_portopen.wav
c3a2_sci_position.wav
c3a2_sci_shower.wav 		c3a2_sci_straws.wav
c3a2_sci_uphere.wav
cantbeserious.wav
cantbeworse.wav
canttakemore.wav
cascade.wav
catchone.wav
chaostheory.wav
checkatten.wav
completelywrong.wav
containfail.wav
correcttheory.wav
cough.wav
delayagain.wav
didyouhear.wav
dinner.wav
dontconcur.wav
dontgothere.wav
dontknow.wav
dontwantdie.wav
donuteater.wav
doyousmell.wav
evergetout.wav
everseen.wav
excellentteam.wav
excuse.wav
fascinating.wav
fellowscientist.wav
fine.wav
freeman.wav
freemanalive.wav
fusionshunt.wav
getoutalive.wav
getoutofhere.wav
goodpaper.wav
goodtoseeyou.wav
gottogetout.wav
greetings.wav
greetings2.wav
headcrab.wav
heal1.wav
heal2.wav
heal3.wav
heal4.wav
heal5.wav
hearsomething.wav
hello.wav
hello2.wav
hellofreeman.wav
hellofromlab.wav
hellothere.wav
hideglasses.wav
holdstill.wav
hopenominal.wav
hopeyouknow.wav
howinteresting.wav
hungryyet.wav
ibelieveso.wav
idontthinkso.wav
ihearsomething.wav
illwait.wav
illwaithere.wav
importantspecies.wav
improbable.wav
imsure.wav
inconclusive.wav
inmesstoo.wav
ipredictedthis.wav
istay.wav
iwounded.wav
iwounded2.wav
iwoundedbad.wav
justasked.wav
lambdalab.wav
leadtheway.wav
leavingme.wav
letmehelp.wav
letsgo.wav
letstrythis.wav
letyouin.wav
limitsok.wav
lowervoice.wav
luckwillchange.wav
madness.wav
needsleep.wav
neverseen.wav
newhevsuit.wav
newsample.wav
nodoubt.wav
nogrant.wav
noguess.wav
noidea.wav
noo.wav
nooo.wav
noplease.wav
notcertain.wav
nothostile.wav
notsure.wav
odorfromyou.wav
ofcourse.wav
ofcoursenot.wav
okgetout.wav
okihope.wav
organicmatter.wav
overhere.wav
peculiarmarks.wav
peculiarodor.wav
perfectday.wav
perhaps.wav
positively.wav
protectme.wav
purereadings.wav
recalculate.wav
reconsider.wav
repeat.wav
reportflux.wav
rescueus.wav
ridiculous.wav
right.wav
rightwayout.wav
rumorclean.wav
rumourclean.wav
runtest.wav
sci_1thou.wav
sci_2thou.wav
sci_3thou.wav
sci_4thou.wav
sci_5thou.wav 		sci_aftertest.wav
sci_alone.wav
sci_bother.wav
sci_busy.wav
sci_die1.wav
sci_die2.wav
sci_die3.wav
sci_die4.wav
sci_dragoff.wav
sci_fear1.wav
sci_fear10.wav
sci_fear11.wav
sci_fear12.wav
sci_fear13.wav
sci_fear14.wav
sci_fear15.wav
sci_fear2.wav
sci_fear3.wav
sci_fear4.wav
sci_fear5.wav
sci_fear6.wav
sci_fear7.wav
sci_fear8.wav
sci_fear9.wav
sci_pain1.wav
sci_pain10.wav
sci_pain2.wav
sci_pain3.wav
sci_pain4.wav
sci_pain5.wav
sci_pain6.wav
sci_pain7.wav
sci_pain8.wav
sci_pain9.wav
sci_somewhere.wav
scream01.wav
scream02.wav
scream03.wav
scream04.wav
scream05.wav
scream06.wav
scream07.wav
scream08.wav
scream09.wav
scream1.wav
scream10.wav
scream11.wav
scream12.wav
scream13.wav
scream14.wav
scream15.wav
scream16.wav
scream17.wav
scream18.wav
scream19.wav
scream2.wav
scream20.wav
scream21.wav
scream22.wav
scream23.wav
scream24.wav
scream25.wav
scream3.wav
scream4.wav
scream5.wav
scream6.wav
scream7.wav
seeheadcrab.wav
seencup.wav
shakeunification.wav
shutdownchart.wav
shutup.wav
shutup2.wav
simulation.wav
slowingyou.wav
smellburn.wav
sneeze.wav
softethics.wav
somethingfoul.wav
sorryimleaving.wav
startle1.wav
startle2.wav
startle3.wav
startle4.wav
startle5.wav
startle6.wav
startle7.wav
startle8.wav
startle9.wav
statusreport.wav
stench.wav
stimulating.wav
stop1.wav
stop2.wav
stop3.wav
stop4.wav
stopasking.wav
stopattacking.wav
survival.wav
thatsodd.wav
theoretically.wav
thiswillhelp.wav
tunedtoday.wav
tunnelcalc.wav
uselessphd.wav
ushouldsee.wav
waithere.wav
weartie.wav
whatissound.wav
whatnext.wav
whatyoudoing.wav
whoareyou.wav
whocansay.wav
whoresponsible.wav
whyaskme.wav
whyleavehere.wav
yees.wav
yes.wav
yes2.wav
yes3.wav
yesihope.wav
yesletsgo.wav
yesok.wav
youinsane.wav
youlookbad.wav
youlookbad2.wav
youneedmedic.wav
youwounded.wav

squeek (return to top)

sqk_blast1.wav
sqk_deploy1.wav
sqk_die1.wav 		sqk_hunt1.wav
sqk_hunt2.wav
sqk_hunt3.wav

tentacle (return to top)

te_alert1.wav
te_alert2.wav
te_death2.wav
te_flies1.wav
te_move1.wav
te_move2.wav
te_roar1.wav
te_roar2.wav
te_search1.wav 		te_search2.wav
te_sing1.wav
te_sing2.wav
te_squirm2.wav
te_strike1.wav
te_strike2.wav
te_swing1.wav
te_swing2.wav

tride (return to top)

c0a0_tr_arrive.wav
c0a0_tr_dest.wav
c0a0_tr_emerg.wav
c0a0_tr_exit.wav
c0a0_tr_gmorn.wav 		c0a0_tr_haz.wav
c0a0_tr_jobs.wav
c0a0_tr_noeat.wav
c0a0_tr_time.wav
c0a0_tr_tourn.wav
turret(return to top)
tu_active.wav
tu_active2.wav
tu_alert.wav
tu_deploy.wav
tu_die.wav
tu_die2.wav
tu_die3.wav 		tu_fire1.wav
tu_ping.wav
tu_retract.wav
tu_search.wav
tu_spindown.wav
tu_spinup.wav

vox (return to top)

_comma.wav
_period.wav
a.wav
accelerating.wav
accelerator.wav
accepted.wav
access.wav
acknowledge.wav
acknowledged.wav
acquired.wav
acquisition.wav
across.wav
activate.wav
activated.wav
activity.wav
adios.wav
administration.wav
advanced.wav
after.wav
agent.wav
alarm.wav
alert.wav
alien.wav
aligned.wav
all.wav
alpha.wav
am.wav
amigo.wav
ammunition.wav
an.wav
and.wav
announcement.wav
anomalous.wav
antenna.wav
any.wav
apprehend.wav
approach.wav
are.wav
area.wav
arm.wav
armed.wav
armor.wav
armory.wav
arrest.wav
ass.wav
at.wav
atomic.wav
attention.wav
authorize.wav
authorized.wav
automatic.wav
away.wav
b.wav
back.wav
backman.wav
bad.wav
bag.wav
bailey.wav
barracks.wav
base.wav
bay.wav
be.wav
been.wav
before.wav
beyond.wav
biohazard.wav
biological.wav
birdwell.wav
bizwarn.wav
black.wav
blast.wav
blocked.wav
bloop.wav
blue.wav
bottom.wav
bravo.wav
breach.wav
breached.wav
break.wav
bridge.wav
bust.wav
but.wav
button.wav
buzwarn.wav
bypass.wav
c.wav
cable.wav
call.wav
called.wav
canal.wav
cap.wav
captain.wav
capture.wav
ceiling.wav
celsius.wav
center.wav
centi.wav
central.wav
chamber.wav
charlie.wav
check.wav
checkpoint.wav
chemical.wav
cleanup.wav
clear.wav
clearance.wav
close.wav
code.wav
coded.wav
collider.wav
command.wav
communication.wav
complex.wav
computer.wav
condition.wav
containment.wav
contamination.wav
control.wav
coolant.wav
coomer.wav
core.wav
correct.wav
corridor.wav
crew.wav
cross.wav
cryogenic.wav
d.wav
dadeda.wav
damage.wav
damaged.wav
danger.wav
day.wav
deactivated.wav
decompression.wav
decontamination.wav
deeoo.wav
defense.wav
degrees.wav
delta.wav
denied.wav
deploy.wav
deployed.wav
destroy.wav
destroyed.wav
detain.wav
detected.wav
detonation.wav
device.wav
did.wav
die.wav
dimensional.wav
dirt.wav
disengaged.wav
dish.wav
disposal.wav
distance.wav
distortion.wav
do.wav
doctor.wav
doop.wav
door.wav
down.wav
dual.wav
duct.wav
e.wav
east.wav
echo.wav
ed.wav
effect.wav
egress.wav
eight.wav
eighteen.wav
eighty.wav
electric.wav
electromagnetic.wav
elevator.wav
eleven.wav
eliminate.wav
emergency.wav
energy.wav
engage.wav
engaged.wav
engine.wav
enter.wav
entry.wav
environment.wav
error.wav
escape.wav
evacuate.wav
exchange.wav
exit.wav
expect.wav
experiment.wav
experimental.wav
explode.wav
explosion.wav
exposure.wav
exterminate.wav
extinguish.wav
extinguisher.wav
extreme.wav
f.wav
facility.wav
fahrenheit.wav
failed.wav
failure.wav 		farthest.wav
fast.wav
feet.wav
field.wav
fifteen.wav
fifth.wav
fifty.wav
final.wav
fine.wav
fire.wav
first.wav
five.wav
flooding.wav
floor.wav
fool.wav
for.wav
forbidden.wav
force.wav
forms.wav
found.wav
four.wav
fourteen.wav
fourth.wav
fourty.wav
foxtrot.wav
freeman.wav
freezer.wav
from.wav
front.wav
fuel.wav
g.wav
get.wav
go.wav
going.wav
good.wav
goodbye.wav
gordon.wav
got.wav
government.wav
granted.wav
great.wav
green.wav
grenade.wav
guard.wav
gulf.wav
gun.wav
guthrie.wav
handling.wav
hangar.wav
has.wav
have.wav
hazard.wav
head.wav
health.wav
heat.wav
helicopter.wav
helium.wav
hello.wav
help.wav
here.wav
hide.wav
high.wav
highest.wav
hit.wav
hole.wav
hostile.wav
hot.wav
hotel.wav
hour.wav
hours.wav
hundred.wav
hydro.wav
i.wav
idiot.wav
illegal.wav
immediate.wav
immediately.wav
in.wav
inches.wav
india.wav
ing.wav
inoperative.wav
inside.wav
inspection.wav
inspector.wav
interchange.wav
intruder.wav
invallid.wav
invasion.wav
is.wav
it.wav
johnson.wav
juliet.wav
key.wav
kill.wav
kilo.wav
kit.wav
lab.wav
lambda.wav
laser.wav
last.wav
launch.wav
leak.wav
leave.wav
left.wav
legal.wav
level.wav
lever.wav
lie.wav
lieutenant.wav
life.wav
light.wav
lima.wav
liquid.wav
loading.wav
locate.wav
located.wav
location.wav
lock.wav
locked.wav
locker.wav
lockout.wav
lower.wav
lowest.wav
magnetic.wav
main.wav
maintenance.wav
malfunction.wav
man.wav
mass.wav
materials.wav
maximum.wav
may.wav
medical.wav
men.wav
mercy.wav
mesa.wav
message.wav
meter.wav
micro.wav
middle.wav
mike.wav
miles.wav
military.wav
milli.wav
million.wav
minefield.wav
minimum.wav
minutes.wav
mister.wav
mode.wav
motor.wav
motorpool.wav
move.wav
must.wav
nearest.wav
nice.wav
nine.wav
nineteen.wav
ninety.wav
no.wav
nominal.wav
north.wav
not.wav
november.wav
now.wav
number.wav
objective.wav
observation.wav
of.wav
officer.wav
ok.wav
on.wav
one.wav
open.wav
operating.wav
operations.wav
operative.wav
option.wav
order.wav
organic.wav
oscar.wav
out.wav
outside.wav
over.wav
overload.wav
override.wav
pacify.wav
pain.wav
pal.wav
panel.wav
percent.wav
perimeter.wav
permitted.wav
personnel.wav
pipe.wav
plant.wav
platform.wav
please.wav
point.wav
portal.wav
power.wav
presence.wav
press.wav
primary.wav 		proceed.wav
processing.wav
progress.wav
proper.wav
propulsion.wav
prosecute.wav
protective.wav
push.wav
quantum.wav
quebec.wav
question.wav
questioning.wav
quick.wav
quit.wav
radiation.wav
radioactive.wav
rads.wav
rapid.wav
reach.wav
reached.wav
reactor.wav
red.wav
relay.wav
released.wav
remaining.wav
renegade.wav
repair.wav
report.wav
reports.wav
required.wav
research.wav
resevoir.wav
resistance.wav
right.wav
rocket.wav
roger.wav
romeo.wav
room.wav
round.wav
run.wav
safe.wav
safety.wav
sargeant.wav
satellite.wav
save.wav
science.wav
scream.wav
screen.wav
search.wav
second.wav
secondary.wav
seconds.wav
sector.wav
secure.wav
secured.wav
security.wav
select.wav
selected.wav
service.wav
seven.wav
seventeen.wav
seventy.wav
severe.wav
sewage.wav
sewer.wav
shield.wav
shipment.wav
shock.wav
shoot.wav
shower.wav
shut.wav
side.wav
sierra.wav
sight.wav
silo.wav
six.wav
sixteen.wav
sixty.wav
slime.wav
slow.wav
soldier.wav
some.wav
someone.wav
something.wav
son.wav
sorry.wav
south.wav
squad.wav
square.wav
stairway.wav
status.wav
sterile.wav
sterilization.wav
storage.wav
sub.wav
subsurface.wav
sudden.wav
suit.wav
superconducting.wav
supercooled.wav
supply.wav
surface.wav
surrender.wav
surround.wav
surrounded.wav
switch.wav
system.wav
systems.wav
tactical.wav
take.wav
talk.wav
tango.wav
tank.wav
target.wav
team.wav
temperature.wav
temporal.wav
ten.wav
terminal.wav
terminated.wav
termination.wav
test.wav
that.wav
the.wav
then.wav
there.wav
third.wav
thirteen.wav
thirty.wav
this.wav
those.wav
thousand.wav
threat.wav
three.wav
through.wav
time.wav
to.wav
top.wav
topside.wav
touch.wav
towards.wav
track.wav
train.wav
transportation.wav
truck.wav
tunnel.wav
turn.wav
turret.wav
twelve.wav
twenty.wav
two.wav
unauthorized.wav
under.wav
uniform.wav
unlocked.wav
until.wav
up.wav
upper.wav
uranium.wav
us.wav
usa.wav
use.wav
used.wav
user.wav
vacate.wav
valid.wav
vapor.wav
vent.wav
ventillation.wav
victor.wav
violated.wav
violation.wav
voltage.wav
vox_login.wav
walk.wav
wall.wav
want.wav
wanted.wav
warm.wav
warn.wav
warning.wav
waste.wav
water.wav
we.wav
weapon.wav
west.wav
whiskey.wav
white.wav
wilco.wav
will.wav
with.wav
without.wav
woop.wav
xeno.wav
yankee.wav
yards.wav
year.wav
yellow.wav
yes.wav
you.wav
your.wav
yourself.wav
zero.wav
zone.wav
zulu.wav

weapons (return to top)

357_cock1.wav
357_reload1.wav
357_shot1.wav
357_shot2.wav
bullet_hit1.wav
bullet_hit2.wav
cbar_hit1.wav
cbar_hit2.wav
cbar_hitbod1.wav
cbar_hitbod2.wav
cbar_hitbod3.wav
cbar_miss1.wav
dbarrel1.wav
debris1.wav
debris2.wav
debris3.wav
dryfire1.wav
egon_off1.wav
egon_run3.wav
egon_windup2.wav
electro4.wav
electro5.wav
electro6.wav
explode3.wav
explode4.wav
explode5.wav
g_bounce1.wav
g_bounce2.wav
g_bounce3.wav
g_bounce4.wav
g_bounce5.wav
gauss2.wav
glauncher.wav
glauncher2.wav
gren_cock1.wav
grenade_hit1.wav 		grenade_hit2.wav
grenade_hit3.wav
hks1.wav
hks2.wav
hks3.wav
mine_activate.wav
mine_charge.wav
mine_deploy.wav
mortar.wav
mortarhit.wav
pl_gun1.wav
pl_gun2.wav
pl_gun3.wav
reload1.wav
reload2.wav
reload3.wav
ric1.wav
ric2.wav
ric3.wav
ric4.wav
ric5.wav
rocket1.wav
rocketfire1.wav
sbarrel1.wav
scock1.wav
sshell1.wav
sshell2.wav
sshell3.wav
xbow_fire1.wav
xbow_fly1.wav
xbow_hit1.wav
xbow_hit2.wav
xbow_hitbod1.wav
xbow_hitbod2.wav
xbow_reload1.wav

x (return to top)

nih_die2.wav
x_attack1.wav
x_attack2.wav
x_attack3.wav
x_ballattack1.wav
x_die1.wav
x_laugh1.wav
x_laugh2.wav 		x_pain1.wav
x_pain2.wav
x_pain3.wav
x_recharge1.wav
x_recharge2.wav
x_recharge3.wav
x_shoot1.wav
x_teleattack1.wav

zombie (return to top)

claw_miss1.wav
claw_miss2.wav
claw_strike1.wav
claw_strike2.wav
claw_strike3.wav
zo_alert10.wav
zo_alert20.wav
zo_alert30.wav 		zo_attack1.wav
zo_attack2.wav
zo_idle1.wav
zo_idle2.wav
zo_idle3.wav
zo_idle4.wav
zo_pain1.wav
zo_pain2.wav

This file created by Kleen13
kleen13@hotmail.com (MSN)
5402104 (ICQ)


Plugin Change Log

(Shorthand for Configuration Variable)

Developer Change Log - AM plugins

22.08.2004 2.50.60

Changes/Additions

  • Added possibility to delete previously saved map and server default restrictions. Command-syntax is admin_restrict delete map/default
  • Added console/screenmessage when saving/deleting default restrictions. Before you couldn't see that anything happened at all.
  • Added a submenu to the restrictionmenu "Restrictions defaults" wich can save, delete and apply the map and server default restrictions.
  • Fixed a bug where admin_restrict listed the longer list of items/weapons (restricted or available) instead of the shorter one.
  • Improved version detection, using the new cvar_exists() function.
  • Implemented team - and playerspecific restrictions.

2.09.2002: 2.50.50

Changes/Additions

  • Changed exec() function to not accept "admin_command" as part of the command. Unquoted semicolons get quoted.
  • Changed access() function to return the caller's access rights when called as access(-1).
  • Added get_userAuthId() function which obsoletes get_userWONID().
  • Extended playerinfo() function to return the authid as a string. Example plugins were updated accordingly.
  • Added get_vaultnumdata() and set_vaultnumdata() functions for easier reading and writing of numerical values from/to the vault.
  • Added a new plugin (plugin_antiflood) as a standard flood detection and retribution.
  • Created new mod independent admin_bury and admin_unbury commands in plugin_retribution.
  • Created public declarations of all DLL called plugin functions (admin.inc).
  • Updated all standard plugins to include the admin_ commands calling conventions with the function declaration.
  • Changed timeleft() to account for "sv_restart" in CS. The timeleft should now be more accurate. Only Linux server!
  • Added speakto() command. Similar to playsound() command but uses the HL command "speak" instead of "play". These are independent from the value of allow_client_exec.
  • Added plugin_checkcommand() function to check if a command is implemented by another plugin and can thus be called with plugin_exec(). Returns the number of plugins implementing that command.
  • exec() function has a second parameter controlling if a log entry is created.
  • Plugins hooking HL/MOD commands (e.g. say, menuselect, slot0) MUST register these with ACCESS_ALL.
  • Changed name of Linux compile scripts to "compile" and "compile_all".
  • Removed check for dead changing names in CS

Bug Fixes

  • Corrected description of strcmp() in string.inc.
  • Hopefully removed all of the possibilities of clients spamming via server responses.
  • Corrected swear filter for llama's and team says.
  • Forced coding conventions of having semi-colons for all proper line ends.
  • Corrected the *DEAD* name changes in Counter-strike where the client would change names but the server would not. AdminMod now changes the player name back automatically.
  • Updated all uses of the HandleSay script function to parse correctly when there are quotation marks surrounding the messages from clients.
  • Fixed crash in vote() function when using large menu buffer.

21.06.2002: 2.50.38

Changes/Additions

  • Changed access() function to return the caller's access rights when called as access(-1).
  • Added get_userAuthId() function which obsoletes get_userWONID().
  • Function directmessage() does not accept id type uid_wonid anymore.
  • Changed playerinfo() function to return the authid as a string instead of the numerical wonid. Example plugins were updated accordingly.
  • Added get_vaultnumdata() and set_vaultnumdata() functions for easier reading and writing of numerical values from/to the vault.
  • Added a new plugin (plugin_antiflood) as a standard flood detection and retribution.
  • Created new mod independent admin_bury and admin_unbury commands in plugin_retribution.
  • Created public declarations of all DLL called plugin functions (admin.inc).
  • Updated all standard plugins to include the admin_ commands calling conventions with the function declaration.

Bug Fixes

  • Corrected description of strcmp() in string.inc.
  • Hopefully removed all of the possibilities of clients spamming via server responses.
  • Corrected swear filter for llama's and team says
  • Forced coding conventions of having semi-colons for all proper line ends.
  • Corrected the *DEAD* name changes in Counter-strike where the client would change names but the server would not. AdminMod now changes the player name back automatically.
  • Updated all uses of the HandleSay script function to parse correctly when there are quotation marks surrounding the messages from clients.

15.06.2001: 2.50e (2.50.26)

  • Made the mp_timelimit storing in plugin_base more efficient.

  • Added the plugin_exec() native function definition to admin.inc

26.05.2001:

  • admin_map stores the mp_timelimit. This is useful for people who don't have mp_timelimit set in their server.cfg.>

28.05.2001:

  • Added KillGlow() function to turn off glow when admin_fun is set to 0.

02.05.2001:

  • Fixed various typos throughout

plugin_CS:

  • The restrict message is lowercase to make it narrower.

plugin_TFC:

  • Fixed a bug using admin_tfc_balance instead of the correct cvar name admin_balance_teams.

plugin_base:

  • admin_hostname uses the whole name, not only the first word.

  • admin_map and admin_vote_map store the mp_timelimit before they set it to 1. It is restored after the map change.

  • admin_pass will echo the current password if none is supplied.

  • admin_vsay checks if a vote is allowed.

plugin_hlds_mapvote:

  • ACCESS_CONTROL_VOTE replaces ACCESS_ALL for admin_cancelvote, admin_denyvote and admin_startvote.

Fixed an echoing message and the extend vote

plugin_message:

  • Setting admin_connect_msg to "0" will not display a connect message, although the timer is run.

  • Setting admin_repeat_msg to "0" will not display a repeat message but the timer is not killed if it was started. It will continue to run and setting admin_repeat_msg to a different value will again display that string.

  • The repeat message frequency can be set with admin_repeat_freq. The units are seconds. The minimum value is 15 seconds. Setting it to 0 will not start the timer. The timer cannot be started by setting it to a different value during a map. It will only be started at a map change.

plugin_retribution:

  • admin_slay uses the new slay() function and is thus independent from the setting of allow_execclient. It will only issue the message and the thunderclap noise if the target was really slain. It respects admin_quiet.

  • The same is true for admin_slay_team.

admin.inc:

  • Added rainbow() function.

  • Added slay() function

  • Overriding admin_quiet will not print the admin's name.


DLL Change Log

Developer Change Log - AM DLL

22.08.2004 2.50.60

Changes/Additions

  • Added a 64bit Linux version for AMD64. The 64bit version uses 64bit script binaries which are not compatible with 32bit script binaries. They have the file extension .amx64. To compile for Linux 64bit, a new compiler is used: sc64. The compile and compile_all scripts have optional -32 and -64 switches to explicitely choose the compiler (for cross-compiling).
  • Revised Windows installer install_admin.vbs to properly detect new Steam accounts and have a more consistent user interface. Works with CS:CZ Retail version. A missing listenserver.cfg is now automatically created by the installer. The uninstaller has been updated accordingly.
  • Added cvar_exists() scripting function to check if a cvar exists or not. The function returns 1 if a cvar exists, 0 if not. (Patch 908067 by Kevin Masterson.
  • Added get_timer() scripting function. It returns a value describing the status of the timer index passed in.
  • Added valid_mapex() scripting function. It allows the valid map check to bypass the map.ini check and just check for the existance of the map.
  • Admin Mod is now unloadable at any time. It is still only loadable on server start, though.
  • Allow the use of the loopback IP 127.0.0.1 in the users.ini file. Improves listenserver support.
  • Added format directives 'l' and 'h' for snprintf() to specify long or short values. Useful on AMD64 systems. See a Linux man page or MSDN help page for a description.

New CVARs

  • mysql_port to set the port of the MySQL server if it differs from
  • the default port. (Patch #888683, by Indan Zupancic)

Bug Fixes

  • Fixed some issues in listenserver user detection.
  • Fixed an exploit in admin_passwd.
  • Fixed an exploit on servers with amv_private_server set. Users could join a server under their registered name and then change their nickname to an unregistered name without getting kicked.
  • Fixed rare crashes due to NULL pointer access when starting plugins.
  • Fixed the server crashing instead of exiting cleanly when Admin Mod calls
    • exit during startup, e.g. because the scripting engine could not be loaded.

05.10.2003 2.50.58

Changes/Additions:

  • Reserved nicknames, reserved slots and private servers work correctly with Steam servers. This means full Steam support now.
  • Fixed the problem of admins losing access rights upon mapchange.
  • The plugin_info() function is no longer triggered in plugins before the
    • plugin_connect() function is called for a connecting player.
  • Added support for #include directive to .ini config files which will include another config file. The filename must be enclosed in double quotes ("") or angular brackets (<>). When using #include "file" the file is searched relative to the directory that the including file is in. When using #include the file is searched relative to the MOD directory (e.g. cstrike). The former version is probably easier for most users.
  • Added support for loading plugins from a directory either by specifying a directory name in the plugins.ini file or by using a directory name in admin_plugin_file. All files that end in .amx are loaded from the directory in alphabetical order. To prevent a file from loading, simply
    • add .noload to the end of the filename.
  • A PostgreSQL version of Admin Mod is now available, donated by Idy and AKP.
  • Allow for no plugins being loaded. A warning will still be written to the logs in case this wasn't what the admin intended.
  • Added admin_cmd as a shorter version of admin_command. Both can be used.
  • Made admin_version directly accessible from the server console.
  • CS timelimit reporting is now accurate under Windows, too, for CS 1.6. This does not work with CS 1.5, where timelimit may still be off under Windows.
  • Changed selfmessage() message buffer size to LARGE_BUF_SIZE.
  • Reformatted userlist() output, added access right and immunity status.
  • Changed plugin_CS to work with CS 1.6. Weapon restriction function has been changed considerably. Settings can be made permanent from the console, admin_restrict can be used with weapon names.

New CVARS:

  • Read-only cvar ami_sv_maxplayers: contains the server's original maxplayers value. Can be used by third party server browsers.
  • PostgreSQL version: pgsql_database pgsql_dbtable_ips pgsql_dbtable_models pgsql_dbtable_plugins pgsql_dbtable_users pgsql_dbtable_tags pgsql_dbtable_words pgsql_host pgsql_port pgsql_pass pgsql_user pgsql_preload pgsql_users_sql pgsql_tags_sql The pgsql_port cvar specifyies the port of the PostgreSQL server. For a local server using Unix Domain Sockets instead of TCP/IP the local UDS file is used, e.g. pgsql ".s.PGSQL.5432" with pgsql_host "/tmp". All other cvars work like their MySQL counterparts.

Bug Fixes:

  • Fixed admin_tsay and admin_csay commands so that say text doesn't have to be enclosed in quotes.
  • Another fix to the strbreak() scripting function.
  • Fixed docpath and Specify() bugs in Win32 installer.
  • Do not run plugin_info() for a kicked player.
  • Fixed bug with CS timelimit not working correctly with Linux server.
  • Fixed Linux version of Small compiler to handle DOS files and work when no PWD envvar is set.
  • Fixed exploit which would allow players to switch their name to a reserved IP and gain access rights associated with that IP.
  • Fixed free/reserved slot reporting to be more robust.
  • Fixed exploit in plugin_antiflood.
  • Have "" be accepted as "undefined" in adminmod.cfg for all file and string cvars.
  • Fixed reject and kick messages to work with old and new clients.

Coding:

  • VerifyUserAuth() gets called in any case in AddUserAuth(), no matter if mapchange, reconnect or new connet.
  • INFO_KEYVAL_SIZE replaces BUF_SIZE for get_/set_serverinfo().
  • Removed HAS_SNPRINTF macros. Everybody has snprintf().
  • Changed the semnatics of auth_struct::head() to return the *current* head. Get the next head position with get_head() instead.
  • Changed IsComment() to is_comment(). Overloaded to check for // instead for /.
  • Added various utility functions to check and get a cvar value for cvars
       holding string values or filenames/paths: cvar_string_value_is_set(),
       cvar_string_is_set(), cvar_file_value_is_set(), cvar_file_is_set()
       get_cvar_string_value(), get_cvar_file_value().
  • Added filesystem node abstraction AmFSNode and AmDir.

21.06.2002: 2.50.50

Changes/Additions:

  • Added customized libc functions for efficiency.
  • New scripting functions: get_userFrags(), get_userHealth(), get_userTeam(), get_userArmor().
  • Added the option to use an IP in the users.ini file to grant access rights by IP.
  • Script functions called from plugin_init() or as the result of a vote will be called with access rights of the server console.
  • Changed DLL/DSO loading mechanism. The amx_admin.dll/.so will be loaded from the same location as the admin_MM DLL/DSO and can thus be moved out of the /dlls directory, too.
  • mySQL: Changed name of mySQL version DLL to admin_MM_mysql.dll.
  • mySQL: Added possibility to use the mySQL PASSWORD() function to encrypt passwords in the users/tags/models table. To switch from crypt() to PASSWORD() encryption, set mysql_use_sqlPASSWORD to 1.
  • Added Steamid support. See Note about mySQL usage below.
  • Changed to static linkage with libstdc++.
  • Changed team lookup. Spectators will now be reported to be in team TEAM_SPECTATOR and HLTV proxies will be reported to be in team TEAM_PROXY.
  • Added (BETA!) functionality to check for missing/broken entities. This is not a problem of Admin Mod but we may still be able to gather information for VALVe. Adding "melog1" to amv_beta_enable will switch on checking and logging of broken entities. Adding "mefix1" will attempt to fix them. A fix can also be triggered from during the game by using "admin_adm mefix".
  • Added a warning in the log when a plugin cannot register all of its native functions.
  • A vote no longer accounts for bots when admin_bot_protection is on.
  • Match a player not only by IP but also by port when re-authenticating him.
  • Better debug info for checking lost permissions on mapchange (hopefully).
  • Corrections made to make nextmap() more accurate. Works only when maps are changed with admin_ commands.
  • Changed player lookup in order to prevent exploits where players use the wonid of an admin as their name. Numbers to admin_commands can be escaped with a backslahs to prevent them from being interpreted as a name.
  • Added console message to clients when connecting to a server with allow_client_exec enabled.
  • Made leading underscore compulsory for password_field values

Bug Fixes:

  • Fixed a bug kicking players with ';' in their nicks.
  • Username length set to match engine limit of 33 chars.
  • Fixed security hole in exec() scripting function. It does not allow unquoted semicolons anymore, nor the use of 'admin_command'. The following exception applies: strings starting with "logd_reg" or "sm_register" are allowed to contain "admin_command". This is to allow registering commands for LogD and StatsMe to work. Additional commands can be added for other third party MM plugins with the amv_register_cmds CVAR.
  • Fixed a bug in the AM timer code.
  • Fixed a bug causing player nicks starting with a number to be mistaken for a sessionid or wonid.
  • Obsolete CVAR password_timeout removed.
  • Fixed a bug that prevented the use of empty passwords in users.ini.
  • Fixed a bug in player lookup function.
  • Fixed a bug counting connected players incorrectly and thus filling reserved slots.
  • Fixed playerinfo() function writing to default values of optional parameters.
  • Changed users.ini parsing function not to bail out if a line with an entry ends with an comment.
  • Fixed "Unknown command" message when executing a command without proper access permissions.
  • Fixed a memory leak in the Small AMX which would result in heap-stack collisions.
  • Fixed get_userorigin() to not print debug messages to the client.
  • Fixed that the Highlander was not reevaluted when the current Highlander left the server.
  • admin_reload did not have an immediate effect on connected player access rights.
  • Removed stray line-endings from commands passed to plugins.

New CVARS:

  • amv_log_passwords: (0/1, def:0) If set to 0, passwords will not be logged in cleartext by debug messages.
  • amv_register_cmds: Space separated list of registering commands similar to "logd_reg" of LogD and "sm_register" of StatsMe to allow the use of "admin_command" with the exec() scripting function.
  • mySQL: mysql_use_sqlPASSWORD: (0/1, def:0) If set, passwords will be encrypted with the mySQL PASSWORD() function.
  • amv_vote_duration: (def:30) Controls how long a voting session takes.
  • amv_enable_beta: to enable various beta options deisabled by default.

21.06.2002: 2.50.38

Changes/Additions:

  • Added customized libc functions for efficiency.
  • New scripting functions: get_userFrags(), get_userHealth(), get_userTeam(), get_userArmor().
  • Added the option to use an IP in the users.ini file to grant access rights by IP.
  • Script functions called from plugin_init() or as the result of a vote will be called with access rights of the server console.
  • Changed DLL/DSO loading mechanism. The amx_admin.dll/.so will be loaded from the same location as the admin_MM DLL/DSO and can thus be moved out of the /dlls directory, too.
  • mySQL: Changed name of mySQL version DLL to admin_MM_mysql.dll.
  • mySQL: Added possibility to use the mySQL PASSWORD() function to encrypt passwords in the users/tags/models table. To switch from crypt() to PASSWORD() encryption, set mysql_use_SQLPASSWORD to 1.
  • Added Steamid support. See Note about mySQL usage below.
  • Changed to static linkage with libstdc++.
  • Changed team lookup. Spectators will now be reported to be in team TEAM_SPECTATOR and HLTV proxies will be reported to be in team TEAM_PROXY.

Bug Fixes:

  • Fixed a bug kicking players with ';' in their nicks.
  • Username length set to match engine limit of 33 chars.
  • Fixed security hole in exec() scripting function. It does not allow unquoted semicolons anymore, nor the use of 'admin_command'. The following exception applies: strings starting with "logd_reg" or "sm_register" are allowed to contain "admin_command". This is to allow registering commands for LogD and StatsMe to work. Additional commands can be added for other third party MM plugins with the amv_register_cmds CVAR.
  • Fixed a bug in the AM timer code.
  • Fixed a bug causing player nicks starting with a number to be mistaken for a sessionid or wonid.
  • Obsolete CVAR password_timeout removed.
  • Fixed a bug that prevented the use of empty passwords in users.ini.
  • Fixed a bug in player lookup function.
  • Fixed a bug counting connected players incorrectly and thus filling reserved slots.

New CVARS:

  • amv_log_passwords: (0/1, def:0) If set to 0, passwords will not be logged in cleartext by debug messages.
  • amv_register_cmds: Space separated list of registering commands similar to "logd_reg" of LogD and "sm_register" of StatsMe to allow the use of "admin_command" with the exec() scripting function.
  • mySQL: mysql_use_SQLPASSWORD: (0/1, def:0) If set, passwords will be encrypted with the mySQL PASSWORD() function.

9.12.2001: 2.50.26

Changes/Additions:

  • ban now takes three parameters. Possible to ban by IP or ID
  • Added the Directmessage function to send messages to clients who are connecting and cannot be looked up normally.
  • Added the print_pretty option for the messageex function, it prints to single user in csay text, csay restrictions apply.
  • fixed Csay, it now >= tests line lengths. Messages of exactly 80 chars will not be allowed rather then simply not working
  • The execclient restriction functionality has been changed.
  • Added private server mode where only users authenticaed users can join.

Bug Fixes:

  • Fixed Bot protection Cvar pointer
  • Added code to help with Admin's getting dropped at map change.
  • Many other miscelaneous changes to increase stability and functionality.

15.6.2001: 2.50e (2.50.26)

Changes/Additions:

  • Added system error reports to CPlugin::LoadFile() function.
  • Added the plugin_exec() function.
  • Fixed the bot_protection in teleport() not showing special fx.
  • Added #pragma pack() to the end of amx.h to stop the packing.

  • Tried to move include directives so that amx.h always gets included last. This enabled MySQL support under Windows.

Bug Fixes:

  • Fixed a bug in timer.cpp::IsValidTimer() checking for the wrong constant.
  • Fixed a bug in the bad name detection. make_friendly replaces % now with spaces instead of deleting them.
  • Fixed a bug in the logging functions of centersay et al which messed up the formatting.

2.6.2001: Changes since the admin-2_50-release CVS tag

CLinkList.cpp:

CLinkList.h:

The linked list and list item classes have been converted to templates. This is necessary because we can't use a void* pointer to store data in the items. Using a void* pointer will cause a memory leak since the destructor of an object stored will not be called. The template declaration includes an argument to specify if the list item object will be used to store a single element or an array of elements. This is necessary to call the correct delete operator on destruction. All other files have been adapted to use the templates. I removed some C-type casts which are unnecessary when using the templates. We should gradually change to C++-type casts if they are necessary.

The insertion was fixed which fixes a bug of registered commands not showing up in admin_help.

Makefile:

  • Well, just a little cleanup, removing the double (and wrong) optimization flags. Removed linkfunc.ccp from the MM build.

admin_commands.cpp:

  • The wrong time bug in ban() has been fixed. Log string size has been increased to LARGE_BUF_SIZE.

  • Added debug message to plugin_register*() functions.

  • tsay(), centersay() and rainbow() messages get logged in the logs with newlines replaced with "\n" strings.

  • vote_multiple() function displays all options, not only the last one.

  • Added const_casts on STRING() calls in order to use the original HLSDK STRING() function and get rid of those compiler warnings.

  • Jag moved the contents of the getteamcount() function around. =)

  • Added slay() function which is independent from the setting of allow_execclient.

  • Added more bot protections if admin_bot_protection is on. It should work now also if admin_fx is turned on.

  • Fixed gettarget() and pointto() crashes under Linux. The Linux version of CS and TFC don't like the HLSDK EyePosition() function.

admin_mod.cpp:

  • Cvars added: admin_repeat_freq, admin_vote_echo, amv_autoban. Other CVars have changed default settings: admin_connect_msg, admin_repeat_msg.

  • AM_ClientConnect(): Setting some structures to 0 seems to have fixed that mysterious crash when compiling optimized.

  • Check for player names with non-printable characters. They are denied access. If they change name in mid-game, their HL is closed on the client machine and a 24h ban issued depending on the setting of amv_autoban.

  • Metamod stuff changed to match new interface version.

  • Added MM function GetEngineFunctions_Post()

  • Changed DispatchObjectCollsionBox() to hide the timer entity.

extdll.h:

  • Fixed MSVC compiling problems when compiling in DEBUG mode and added #pragma warning(disable : 4018) to hide the signed/unsigned mismatch warnings.

  • Adapted to use the original STRING() function and updated functions UTIL_LogPrintfFNL() and make_friendly().

hexport.cpp:

  • Catches engine functions to hide the timer entity. This removed the crashes in TFC.

make_pass:

  • Updated to better make use of the new encryption scheme, improving usability.

MSVC schtuff:

  • Oh well, updated the workspace files to work. Added resource file adminmod.rc which adds a version information to the Windows DLL.

timer.h:

timer.cpp:

  • Added MaxVoteChoice member and access functions. Updated the StartVote() function to use ChoiceCount.

users.cpp:

  • Removed ' * ' from the list of comment characters.

  • MySQL fixes from Jon Paul Nollmann.

  • Most changes are to use the new templates.

users.h:

  • Added DEBUG_LOG and DEVEL_LOG macros to make it easier to log debug messages.

util.cpp:

  • Changed make_friendly() to check for non-printable characters. The check is optional and can be enabled with the second.

  • Added UTIL_LogPrintfFNL() function which acts like UTIL_LogPrintf() but converts newlines within the string to "\n" literals, if there is enough space in the array, else they are replaced with blanks.

  • UTIL_LogPrintf() uses vsnprintf() instead of vnprintf() to prevent buffer overflow.

  • CLIENT_PRINTF() replaced with SystemResponse(), fixing crash when the player lookup function found more than one match on a partial name.


Error Codes

Small AMX Error Codes

Not that you'd hope to have to deal with the information on this page, but hey - if it's broken, sometimes you need this stuff to fix it. If you get an error code when running Admin Mod, just look it up in this table to cross reference to a name and description.

This is the list of Small error codes for Admin Mod 2.50.50 and greater.

A note about the error numbers: AMX_ERR_NONE starts at 0, and they count up from there, so that AMX_ERR_SLEEP is 12, and then it takes the jump to 16 for AMX_ERR_MEMORY, where it continues to count. Error Codes 13 through 15 are not used.

Error Code | Error Name | Description
0 | AMX_ERR_NONE |
1 | AMX_ERR_EXIT | forced exit
2 | AMX_ERR_ASSERT | assertion failed
3 | AMX_ERR_STACKERR | stack/heap collision
4 | AMX_ERR_BOUNDS | index out of bounds
5 | AMX_ERR_MEMACCESS | invalid memory access
6 | AMX_ERR_INVINSTR | invalid instruction
7 | AMX_ERR_STACKLOW | stack underflow
8 | AMX_ERR_HEAPLOW | heap underflow
9 | AMX_ERR_CALLBACK | no callback, or invalid callback
10 | AMX_ERR_NATIVE | native function failed
11 | AMX_ERR_DIVIDE | divide by zero
12 | AMX_ERR_SLEEP | go into sleepmode - code can be restarted
16 | AMX_ERR_MEMORY | out of memory
17 | AMX_ERR_FORMAT | invalid file format
18 | AMX_ERR_VERSION | file is for a newer version of the AMX
19 | AMX_ERR_NOTFOUND | function not found
20 | AMX_ERR_INDEX | invalid index parameter (bad entry point)
21 | AMX_ERR_DEBUG | debugger cannot run
22 | AMX_ERR_INIT | AMX not initialized (or doubly initialized)
23 | AMX_ERR_USERDATA | unable to set user data field (table full)
24 | AMX_ERR_INIT_JIT | cannot initialize the JIT
25 | AMX_ERR_PARAMS | parameter error

[Shorthand for "modification," this term most often refers to a game or program that takes the original Half-Life game and changes it into another game.]


Admin Mod Erata

Admin_Epilog

Anyhow...

The idea here is community: one big happy, sometimes dysfunctional, often opinionated family. It takes a village, and it's a big village at that. Check out the forums if you haven't already and join in the fun - learn a little, give a little, and be a part. Oh yeah, and have a really cool Half-Life server too!

Here's the crew that brought you Admin Mod 2.50.xx ...

The core team in no particular order:

Alfred Reynolds | CEO | Alfred
Magua | Admin Mod Man of Mystery | Jaguar
Florian Zschocke | Head of Operations and Lead Coding | Da Rope
Greg Hughes | Borg Communications Officer | Gerg
Scott Brownlow | Keeper of the Scripts | [fah-q] Dio
Will Day | 'He who brought us Metamod' | WillD
David Mart | Jack of all trades | Wraith,
Paul Hickman | Adminmod's answer to Life, the Universe and Nothing | RBBOT
Pieter de Zwart | Scripter, docs, and... umm... frog | Bud-froggy
Chad Ness | Script Sorcerer Extrodinaire and Forum God | yensid
Karel Verbiest | what was it he does? | KaReL
Gerald Mahlmeister | The Scripting Pro in the Background | Ramirez
Jon Paul Nollmann | 3rd Wheel and Forum Meanie | sinster
Falko Hartmann | scripting purist | [WING] Black Knight

And then our beta testers who risked their servers to see if it worked:

Luke Sankey | SuperScripter Sank | Sank
John Bossaller | our Linux beta tester | GeSpot
Tim K. | tested DoD support | thetoulman
Sparks | Server op and buddy to Dio | [fah-q] Sparks
Lee C.S. Young | man, he's got servers | Scoutn
Tim Thelin | Helper, Scripter and LogD Author | Kndroc
Joe Noyes | Instant scripter - Just add caffeine | Caveman
Geoffrey Hichborn | Scripter for hire: Accepts credit, cheques and cash. | SR71Goku
Husayn ibn al-Samarqandi | DoD tester | al-Samarqandi
Marco Hombach | Scripter of LogD Plugins | [WING] Sir Drink a lot
Derek Evan Mart | Linux tester and scripter | Marticus

Our notable IRC helpers, those who ably and eloquently direct you to this manual:

Kevin Masterson | Wraith's personal minion | Cybermind
Felix Kumm | Most likely made out of meat | Rindy
Michael Tharp | Procrastination Technician | GXTi

and of course...

The Forgotten Helper

Thanks especially to all who contributed by finding bugs and making suggestions.

Move along ...

Nothing to see here....

[jedi]

::quivering:: but! but!!

no goldzip, come back, we love you!!!!

well, lets just say your a wonderful guy to pick on

Someday, though...someday, I know in my heart, goldzip will return.

Need I say more?

The Twelve Steps of Admin Mod 2.deleted for security reasons Development and Testing

with apologies where they are most certainly due..

  1. We admitted we were powerless over the Admin Mod, that our lives had become unmanageable.

  2. Came to believe that an admin_power_greater_than_ourselves could restore us to sanity.

  3. Made a decision to turn our will and our lives over to an admin_power_greater_than_ourselves, as we understood him.

  4. Made a searching and fearless server inventory of our bugs.

  5. Admitted to an admin_power_greater_than_ourselves the exact nature of our bugs.

  6. Became entirely ready to have an admin_power_greater_than_ourselves remove all these defects of character, err ... software.

  7. Humbly asked him to remove all our shortcomings.

  8. Made a list of all newbies ... uhhh ... yeah - newbies we had harmed, and became willing to make amends to them all.

  9. Made direct amends to all the newbies wherever possible, except for when the kept whining even after we told them how to make "that cool colored text thingie that shows up in the middle of the screen now and then" work, despite the fact that its all over the friggin forums and ascript web site...

  10. Continued to take bug inventory, and when we crashed our servers, promptly admitted it.

  11. Sought through prayer and meditation to improve our conscious contact with an admin_power_greater_than_ourselves as we understood him, praying only for knowledge of his will for us and the admin_power to carry that out.

  12. Having reached the status of admin_ immunity as the result of these steps, we tried to carry this message to other admins, and to practice these principles in all our affairs.

Many of us exclaimed, "What an order! I can't go through with it!" Do not be discouraged. None of us has maintained anything like perfect adherence to these principle. The point is...

... Well, I am not sure what the point is. Heh. Oh well.

Good night.

Oh yeah,

you'll like this....

[/jedi]


Frequently Asked Questions (FAQ)

Remember - help is available in the Admin Mod web forums, if your questions cannot be answered in the documentation.

Getting Admin Mod to work
 | Q1: | I've installed Admin Mod, but it is not working.
 | Q2: | Admin Mod is working but I can only access public commands / I get the messages "Password Received" or "That name is reserved on this server" when connecting.
 | Q3: | I get an error "Info string length exceeded" when connecting.
 | Q4: | I've installed Admin Mod, and HLDS crashes as soon as I start it, before I get to type any server console commands or a player joins.
 | Q5: | What are the differences between the 2.50.26 and 2.50.60 file layout.
 | Q6: | All of my players are being kicked on a map change.
 | Q7: | All of my players with admin access or reserved slots are being kicked on a map change or loose their admin rights.
Configuring Admin Mod
 | Q8: | What is the highest access level / How do access levels work?
 | Q9: | I have/ want to setup a reserved slot for myself, but when my server is full, I cannot join.
 | Q10: | How do I stop every player from being able to use "public" commands like admin_vote_kick etc.
 | Q11: | How do I remove the warning message about the administrator being able to execute commands when a client connects?
 | Q12: | When I type admin_map <map name> it says "bad map name".
 | Q13: | Everything works except admin_t, admin_ct and admin_restartround.
 | Q14: | How can I protect my clan tag?
 | Q15: | I stuffed up my passwords and now I am locked out of my server!
 | Q16: | Why do all scripts that run commands on client's fail on my server?
 | Q17: | Have a script that accesses files and it doesn't work
Admin Mod Plugins
 | Q18: | Anyone know which is the plugin that does XYZ?
 | Q19: | Plugin xyz used to work with Admin Mod 2.50.26 but doesn't with 2.50.60 - why?
 | Q20: | I've downloaded a plugin, but all I've got is this sma file - what do I do with it?
 | Q21: | I get errors when compiling.
 | Q22: | Is there a plugin to kick people with kick pings?
 | Q23: | Where can I learn how to write plugins?
Other
 | Q24: | How do I make Pod/Real/Someother Bot work with Admin Mod?
 | Q25: | How can I make my server less laggy?
 | Q26: | How do I uninstall Admin Mod?

Q1: I've installed Admin Mod, but it is not working.

Firstly, do you have the latest version of Admin Mod. If it is not 2.50.60, use the link on the left to upgrade.

Next have you read the Configuration section of the Manual? If so and it still doesn't work, here is a diagnosis process:

  1. If you get the error message (popup dialog on Windows, in the log on Linux):

    [ADMIN] ERROR: **********************************
You must define either "admin_plugin_file" or
"script_file" in your adminmod.cfg file before you
can use Admin Mod.

    Do the following:

    • Ignore the bit about script_file, that's legacy stuff.

    • Check that you have the line to exec adminmod.cfg in your server.cfg and/or listenserver.cfg. Also check the path on this line is a correct relative path - i.e. it doesn't begin with a slash. The normal line is: exec addons/adminmod/config/adminmod.cfg

    • Check that you have the admin_plugin_file line in your adminmod.cfg and that it isn't commented out - i.e. doesn't begin with //. Again this line should be a relative path and should not being with a slash. It must point to a plugin file that does exist and contains at least one uncommented plugin name. The normal line is: admin_plugin_file addons/adminmod/config/plugin.ini

    • Note that if you get this message, Admin Mod is being loaded and you do not have a problem with metamod. It is also not caused by anything in your users.ini.

  2. If you are having problems, try and get it working with a dedicated server - its easier to diagnose problems. Once you've done that and understand it a little better you will then probably be able to install it on a listen server without problems. Also ensure "log on" is in your autoexec.cfg and "admin_debug 1" is in your addons/adminmod/config/adminmod.cfg. You can remove these once you have got it working if you like.

  3. Type "meta list" in the server console. One of 3 things will happen:

    1. It will list loaded metamod plugins including Admin Mod.

    2. It will list loaded metamod plugins, not including Admin Mod.

    3. Absolutely nothing happens.

    If c) happens, check metamod is installed. See the metamod manual for help. If b) happens check Admin Mod is listed in your addons\metamod\plugins.ini file (NOTE: This file could be called metamod.ini and be in your mod folder if you have upgraded manually), and that the admin_MM dll/so file and amx_admin dll/so are both in your game mod's addons/adminmod/dlls folder. If a) happens, carry on...

  4. Type "admin_command admin_version" in your server console. It will either:

    1. Show the admin mod version and a list of loaded plugins.

    2. Crashes the server and says in the log / a message box "[ADMIN] You must define admin_plugin_file or script_file in your adminmod.cfg file before you can use Admin Mod".

    3. Do nothing.

    If b) happens, either admin_plugin_file is missing from your adminmod.cfg, or far more likely, you are do not have "exec addons/adminmod/config/adminmod.cfg" in your server.cfg or listenserver.cfg, or one of these two files is missing (Windows users, check its isn't really called server.cfg.txt) If c) happens, post to the win32/linux help forums and attach your log file, explaining you were following this guide and it went wrong at this step.

At this stage we now know Admin Mod is installed into half-life correctly - any further problems are with your configuring your user as an admin (See Q2).

Q2: Admin Mod is working but I can only access public commands / I get the messages "Password Received" or "That name is reserved on this server" when connecting.

Firstly decide which of the following configurations applies to you:

  • INTERNET: You are setting up a server using SteamIDs or WONIDs on the Internet for public or private play. (dedicated only)

  • STATIC LAN: You are setting up a server on a LAN where no WONIDs are available, but each user has a fixed IP address. (dedicated or listen server)

  • DYNAMIC LAN: You are setting up a server on a LAN where no WONIDs are available and user's IP addresses change over time. (dedicated or listen server)

  1. If you already have one admin working correctly and you are having problems adding more, skip this step.

    Perform the following steps to check that Admin Mod is installed properly:

    • Open the file addons/adminmod/config/users.ini in a text editor (e.g. notepad)

    • Remove all lines that do not begin with the characters //

    • Save the file

    • Start your server

    • Connect to it

    • In your console type: admin_version

    This should show the Admin Mod version number followed by a list of plugins. If it doesn't then you don't have Admin Mod installed correctly - see Q1 above.

  2. We are now going to add an admin building up the security level as we go and testing at each stage. Open the file addons/adminmod/config/users.ini and add a line as follows:

    INTERNET users add the following (replacing WONID with the admin's WONID or SteamID):

    STEAMID::49151

    STATIC LAN users add (replacing IP with the admin's IP address):

    IP::49151

    DYNAMIC LAN users add (replace NAME with the admin's player name):

    NAME::49151

    Save the file then start your server and connect to it. You should now have admin rights - type admin_help to check if all the commands are listed. If you do not:

    • Ignore any messages about "[ADMIN]Password received" - that isn't relevant yet.

    • Check your log file. When Admin Mod loaded there should be a line that says something like "Reading users.ini, found 1

      • lines". If this doesn't exist or doesn't say found at least 1 lines then Admin Mod can't find your users.ini file, or can't find any records in it. Check the users_file setting in your adminmod.cfg is correct.

    • If this line does exist in your log, double check you are using the correct WONID/SteamID/IP address/Name

    • Bear in mind that no client settings such as setinfo lines can affect anything in this configuration except to cause a rogue "[ADMIN]Password received" message

    • If you are still stuck post in the forums for help stating you are stuck on Question 2, Step 2 of the FAQ.

  3. At this stage, you have admin access and (as far as we know) INTERNET and STATIC LAN users are now secure assuming no-one else has access to their machine. However, security can be increased by adding a password. DYNAMIC LAN users must add a password as anyone can connect using the admin's name and get admin rights at the moment:

    • Reopen the users.ini file

    • Add a password between the two colons in the line contain the WONID/SteamID/IP/Name

    • Save the file and restart your server

    • Connect to the server

    At this point you should be able to connect, but will not have any admin rights. To authorise yourself type in the console:

    admin_login YOUR PASSWORD

    You should now get the message "[ADMIN] Password accepted for user...." and have access to the administrator commands. If you do not:

    • If you see "[ADMIN] Password received" when you run the admin_login command instead of "[ADMIN] Password accepted for user" this means that Admin Mod can't find the password you are providing in users.ini for your WONID/SteamID/IP/Name.

    • As you just connected and got admin rights ok without using a password (because you are following each step as we go aren't you?) you know that the WONID/SteamID/IP/Name is correct, so it must be the password that is wrong. Double check it or try using a simpler password.

    • If you are still stuck post in the forums for help stating you are stuck on Question 2, Step 3 of the FAQ.

    If this is working ok, and you want to continue using this method of authentication you can save time by binding the admin_login command to a key - e.g. To bind it to the F11 key type:

    bind F11 "admin_login YOUR PASSWORD

    You should also be aware that due to a bug in Admin Mod on some servers rights are intermittently lost when a map change occurs. If this happens to you, press F11 to re-auth on the new map.

  4. The story so far: You have admin rights on your server and you have a password set. If you don't want to keep pressing F11:

    • In your adminmod.cfg file there is a setting called password_field. It should say "_pw-home". If it doesn't that's ok as long as the value does start with an "_" character. If it doesn't change it. If it doesn't say "_pw-home" use whatever it does say instead of "_pw-home" below.

    • Create a text file on your client machine in the game mod folder (e.g. cstrike). This file is traditionally called "adminpass.cfg" but can have any name you like. However, do not use any existing config file such as "config.cfg" or "autoexec.cfg".

    • In this file add a line (including the quotes):

      setinfo "_pw-home" "YOUR PASSWORD"

    • Save this file

    • Make a copy of the short cut you use to start the game client on your desktop or start menu.

    • Edit the properties of the copy of shortcut and add to end of the command line (substituting your cfg filename if you didn't call it adminpass.cfg):

      +exec adminpass.cfg

    • You can also save time by adding a connect statement to the end of you command line to automatically connect to your server (supplying the dns name or IP address of your server as an argument:

      +connect myserver.mydomain.com

    • Your command line should now look something (but not exactly) like this:

      C:\Half-Life\hl.exe -console -game cstrike
      +exec adminpass.cfg +connect myserver.mydomain.com

    Now start your server and you should see the "[ADMIN] Password accepted for user..." message during the connection messages and have admin access. However, you may still encounter the bug where you loose rights on a map change; if this happens you will need to use the admin_login command as described above to get them back (or reconnect).

    If you are still stuck post in the forums for help stating you are stuck on Question 2, Step 4 of the FAQ.

  5. Finally the last step is protecting your name so other players cannot use it. The method depends on which group you are in:

    INTERNET users and STATIC LAN users:

    • Open users.ini in your text editor.

    • Add another line below the existing line for the admin in question (substituting the player name):

      NAME:WONID:-16384

    • Do not put a password on this line between the colons - put the WONID or SteamID (or for STATIC LAN users the IP address), and note the "-" sign before the access level.

    • Save the file.

    DYNAMIC LAN users:

    • Open users.ini in your text editor

    • Change the access level from 49151 to 65535

    • You must now use the "adminpass.cfg" method of connecting described above or you will get the dreaded "[ADMIN]That name is reserved on this server" message.

    If necessary INTERNET and STATIC LAN users can protect multiple names for each WONID/SteamID/IP by adding multiple lines to users.ini. DYNAMIC LAN users can protect multiple names by setting each name up as an admin.

    If you are still stuck post in the forums for help stating you are stuck on Question 2, Step 5 of the FAQ.

Q3: I get an error "Info string length exceeded" when connecting

Half-life has a limited amount of space for the client to send all "setinfo" lines to the server. "setinfo" lines hold things like your name, player model, and your Admin Mod password. Other plugins such as statsme also store settings in there. The limit is on the overall length of all of your setinfo lines put together, not the number of lines or the length of any individual line. If you get this error you will have to remove some unnecessary strings, or simply use a shorter player name.

To view what info strings you have set, type "setinfo" on its own in the client console. To unset a string, type "setinfo <settingname>" "". Alternatively remove the setinfo lines from your config.cfg file.

The following are standard info strings and will be set when you join a server, so there is no point in removing them : cl_dlmax, cl_lc, cl_lw, cl_updatedate, bottomcolor, topcolor. Another will be "_pw-home", or whatever else you set your Admin Mod password to. Anything else is a candidate for removal.

Q4: I've installed Admin Mod, and HLDS crashes as soon as I start it, before I get to type any server console commands or a player joins.

Check your log file. If you don't have one, put "log on" in your autoexec.cfg. Logs are created in the "logs" folder of your game mod - e.g. cstrike\logs.

If the last few lines of the log are:

[ADMIN] Fully initializing data.
L 08/02/2002 - 00:43:38: Started map ,,,,
L 08/02/2002 - 00:43:38: Log file closed

the problem is that Admin Mod is not loading any amx plugins - in this situation it brings down the server. Possible causes are:

  1. You have no plugin.ini.
  2. Your setting for admin_plugin_file in addons/adminmod/config/adminmod.cfg is not "addons/adminmod/config/plugin.ini" or is missing.
  3. All the lines in your plugin.ini are commented out with ';' characters.
  4. Your amx files are not in the location specified in plugin.ini (normally the scripts folder).
  5. Check you haven't called it plugins.ini or plugin.ini.txt (easy to do on windows if you have "hide extensions for know file types" on in "folder settings" of explorer.

Another common cause of this is that the version of metamod you are using is not compatible with your game mod. Visit www.metamod.org and read the release notes for information about compatibilitiy. Often, the version of Metamod mod available there is newer than that shipped with Admin Mod.

The first step in diagnosing this sort of problem is to determine if it is Metamod that is causing your server to die, or a Metamod plugin (Admin Mod or other). Comment out every line in addons/metamod/plugins.ini (metamod.ini on old-style installs) by putting a ; in front, and then run the server.

  • If it works, uncomment them one at a time - when it crashes the one you just re-enabled is your culprit.
  • On finding the culprit, try commenting out all the other lines in metamod.ini to see it will crash your server on its own, or it is a combination of two or more plugins.
  • If it is a combination, try changing the order in which the relevant plugins are loaded. In particular, statsme likes to go last.
  • If your server still crashes with all of metamod.ini commented out, but works when you don't have metamod enabled in your liblist.gam, then you have a compatibilty problem between your game mod and metamod. Seek help from the Metamod forum.
  • If your server crashes without metamod enabled in your liblist.gam, then there is something wrong with your liblist.gam or your server installation, or you may be using a corrupt / incompatible map.

Q5: What are the differences between the 2.50.26 and 2.50.60 file layout?

Virtually all files from versions 2.50.50 and later live inside <mod folder>\addons\adminmod:

  • All of Admin Mod's ini files now live in addons\adminmod\config.

  • All Admin Mod specific settings that were in server.cfg or listenserver.cfg are now in addons\adminmod\config\adminmod.cfg.

  • There is now a line to exec addons\adminmod\config\adminmod.cfg in server.cfg and/ or listenserver.cfg.

  • Admin Mod's DLLs now live in addons\adminmod\dlls.

  • Compiled amx scripts now live in addons\adminmod\scripts.

  • Map specific configuration files remain in the same place - the mod folder.

Version 1.13 of metamod also introduces some changes:

  • Metamod's DLL file now lives in addons\metamod\dlls

  • Metamod's configuration file, previously called metamod.ini is now called addons\metamod\plugins.ini

IMPORTANT: Metamod's new configuration file is called "addons\metamod\plugins.ini". Admin Mod uses a configuration file "addons\adminmod\config\plugin.ini". Make sure you don't confuse them with each other.

Due to these changes to layout, many settings in configuration files that set files names have to be updated. e.g. addons\adminmod\config\adminmod.cfg sets users_file to "addons\adminmod\config\users.ini" whereas it used to simply set it to "users.ini". Beware of outdated instructions in plugin manuals / forum posts etc. Also the lines in plugin.ini that used to say e.g. "dlls\plugin_base.amx" now must specify the path to the script folder - e.g. "addons\adminmod\scripts\plugin_base.amx".

Also you will have to use some intelligence when you are told to put things in server.cfg / listenserver.cfg. If it is an Admin Mod setting, it now belongs in addons\adminmod\config\adminmod.cfg. If it is a standard half-life setting, such as "mp_timelimit", it still belongs in server.cfg / listenserver.cfg.

Q6: All of my players are being kicked on a map change.

This is not Admin Mod, it is hlds and the speed of your machine. To improve it you can try the following, but please don't post to the Admin Mod forums bitching about it, or if you really must, put it in the non-adminmod forum:

  • Custom.hpk may have become too big - this file is where custom logos are stored, and has to be loaded on map change. If it's big, delete it.

  • On windows, the hlds window is not selected. This is a bigger problem on Windows 9x Os than NT/2000/XP. You can reduce the impact of this in the performance properties of "my computer". It moves around a bit in the different versions of windows, but its normally in "performance" and "advanced", You need to turn off boosting the performance of the foreground application and instead choose to optimise for server/ background processing.

  • You don't have enough ram - map changing works faster with more ram. Kill other unnecessary memory intensive processes or simply buy some more.

  • You're computer is simply too slow to process the map change fast enough.

Q7: All of my players with admin access or reserved slots are being kicked on a map change or loose their admin rights.

This (unfortunately) is Admin Mod. You can try the following:

  • Setup your admins as shown in Step 3 of Question 2 above. This means they will only loose admin rights on map change instead of being kicked. All they have to do is use the admin_login command to re-authenticate.

  • !2SX! has written a plugin that fixes it for some people. The latest version can be downloaded from !2SX!'s Site, or you can read discussion on it in this forums thread.

  • You can also try setting admin_reconnect_timeout in addons/adminmod/config/adminmod.cfg to more than mp_timelimit * 60. Doing this will probably generate a warning from Admin Mod, but it is just that - a warning, not an error.

Q8: What is the highest access level / How do access levels work?

Access levels are numbers which should be thought about in binary rather than decimal. e.g. 13 = 1011. A '1' in the binary number turns it on, and a '0' turns it off. The access levels are named after the position of the digits so if you set access to 13, you are giving levels 1,2 and 8, but not 4. Now here is the important part: Some levels give access to Admin Mod commands, but some control per-user options. You do not want to just set every level to 1 without thinking about it - doing so may prevent you from connecting to your server..

However, you'll be glad to hear that you don't need calculate them yourself. Visit the Access Level Calculator page in the manual, read about each level and tick the box to the left of those you require. Then press the calculate button at the bottom of the page and read the access level number.

Things to consider when setting your level are:

  • You may not want immunity for your admins (level 4096). Although it means they can't be slapped etc., it also stops many other "fun" commands working on them.

  • You should not set reserved name access (level 16384) if you are putting a WONID, SteamID or IP address in users.ini.

  • Custom plugins can put their commands at any access level, including those numerically higher than those Admin Mod itself users.

  • For some reason, people keep setting their access to 65536. This is not a sensible access value and will only give you access to 4 commands!

  • -16384 is a special access level to link a name to a WONID, SteamID or IP address. You should not try and apply the normal rules or combine it with any other access level.

Q9: I have/ want to setup a reserved slot for myself, but when my server is full, I cannot join.

See the section in the manual for the "reserve_type" cvar setting. The most common configuration is to set reserve_slots to 1 and reserve_type to 1.

Note that with any of the reserved slots configurations, if the server is actually full (e.g. because enough players with reserved slot access are already connected) you will not be able to join no matter how high your admin access level. Also note that if the server looks full (i.e. there no public slots free, only reserved slots free) an admin with reserved slot access can only connect via the client console since the in-game browser mistakenly thinks that the server is really full. To connect via the client console type "connect <servername or ipaddress>". You can also create a special shortcut on your desktop with "+connect <servername or ipadddress>" in the command line options.

People often ask if the reserve slots mechanism can be changed so that someone (e.g. lowest scoring/pinging player) can be kicked from a full server to make room for an admin trying to join. The answer is no - don't you think it would already work that way if it were possible?

Q10: How do I stop every player from being able to use "public" commands like admin_vote_kick etc.

Set default_access to 0 in your addons/adminmod/config/adminmod.cfg file. If you want to change access to individual commands, you will have to recompile the plugin that implements them: search the sma files for calls to "plugin_registercmd" and edit the access level of those commands you want at different levels. Then recompile the plugins (See Q20)

Q11: How do I remove the warning message about the administrator being able to execute commands when a client connects?

Set "allow_exec_client" to 0 in your adminmod.cfg file. It is not possible to remove this message without editing Admin Mod itself. Many people have asked how to remove this - none have come up with a good reason why it should be removed.

Q12: When I type admin_map <map name> it says "bad map name".

There two solutions to this one:

  1. Ensure maps_file is set to 0 in your addons/adminmod/config/adminmod.cfg
  2. Ensure maps_file is set to "maps.ini" in your addons/adminmod/config/adminmod.cfg. Then put all the maps you want to cycle to in mapcycle.txt and all the maps you want available for use with admin_map / admin_vote_map in maps.ini (which you will probably need to create).

Q13: Everything works except admin_t, admin_ct and admin_restartround.

Remove the ; or # in front of plugin_cs.amx in your plugin.ini file.

Q14: How can I protect my clan tag?

You need to use something called regular expressions, or "dredge". This is a special way of matching strings, with certain tags specifying ways of matching patterns. Go here for a guide to using regular expressions.

To enable regex you have to add the following to your adminmod.cfg:

use_regex 1

Protecting your clan is easy. What you need to do is to protect each user that needs a special access level, and then you protect the general tag. So, for example, to protect the [CLA] tag you would enter this in your users.ini where WONID1,WONID2,WONID3, etc. are the IDs of your clan members.

STEAMID1::20480
STEAMID2::20480
STEAMID3::20480
\[CLA\]:passwordnooneknows:16384

Notice the "\" characters. These characters are "escaping" the "[" and "]" characters as they have special meaning in a regular expression. Escaping them tells regex to treat them as ordinary characters.

NOTE: In this example your clan members are being given minimal access (1). You may want to add more levels such as a reserved slot - see the Access Level Calculator in the manual for more details.

Q15: I stuffed up my passwords and now I am locked out of my server!

Just fix up your config files, put them on your server and wait for a map change. All config files are reloaded on a map change (or via the admin_reload command).

Q16: Why do all scripts that run commands on client's fail on my server?

You need to change allow_client_exec to 1 in your addons/adminmod/config/adminmod.cfg file.

NOTE: This will cause a warning to appear to all players when they connect to your server that you are able to run commands on their client.

Q17: Have a script that accesses files and it doesn't work

You need to set file_access_read to 1 in your adminmod.cfg file to enable file reads, and file_access_write to 1 to enable writes.

Q18: Anyone know which is the plugin that does XYZ?

Next time you see something you like and do not recognise on someone else's server and no-one on the server can tell you what it is, go to your client console and type admin_version. This will show you the list of Admin Mod plugins installed.

  • If admin_version does nothing, then Admin Mod is probably not installed on the server (a few admins do disable admin_version for public players), so the plugin you are looking for is some other kind of half-life plugin, see below.
  • Use PageUp in the client console to review the connection greeting message or to scroll up through the admin version information. It probably contains the owner's email and they will know.
  • You may also get some clues from typing admin_help to see what commands are available. Sometimes the public commands contain a clue to the plugin name.

The metamod plugins most frequently confused with Admin Mod plugins are:

clanmod - Provides many server management commands similar in purpose to Admin Mod.

statsme - Displays statistics on your performance when you die, and your teams performance at the start of each round.

amxmod - An alternative to Admin Mod with its own set of plugins.

Otherwise, click on the Plugins link on the left and press Ctrl-F (in Internet Explorer) to search within the page.

Q19: Plugin xyz used to work with an older version of Admin Mod but doesn't anymore - why?

OK, firstly, recompile the plugin from the SMA file using the latest version of Admin Mod. If it doesn't compile, see Q20. If it does compile, and your recompiled version fails to work properly, the following changes to Admin Mod may be affecting it.

If you see one of the following in the log:

"[ADMIN] (exec) You cannot use exec() starting with 'admin_command'"
"[ADMIN] (exec) You cannot use exec() containing with 'admin_command'"

Then the plugin is trying to use the exec() function to run another plugin's command. You need to replace the call to exec() with a call to plugin_exec(). You are also no longer allowed to use ; characters in exec() to run multiple commands.

If you see one of the following in the log:

"[ADMIN] (exec) What, changing file_access_? Playing with yourself again? STOP THAT!"
"[ADMIN] (exec) Trying to be sneaky by manipulating amv_register_cmds? STOP THAT!"
"[ADMIN] (exec) Illegal use of exec('allow_client_exec') detected. Command ignored."

Then the plugin is trying to adjust the Admin Mod security cvars in the adminmod.cfg file. However, this is can usually be ignored - you can make the plugin work by setting the cvars the way the plugin wants them (turned on probably). NOTE: This might not make the message go away.

Another change that affects some plugins are access rights are propagated through timer calls and through calls to plugin_exec. So if a user calls a function, the function starts a timer and the user only has ACCESS_MAP then the code that runs when the timer completes will also only have ACCESS_MAP rights. In the previous version it had unlimited access.

Also any code that runs in plugin_init, a timer started from plugin_init or as a vote response runs with the same access level as the server console.

If you see the following in the log:

[ADMIN] ERROR: A plugin is attempting to kill a timer index 1 that it does not own.
[ADMIN] ERROR: Calling [various things can appear here] returned error 10

Then as the error says, one plugin is trying to kill another plugins timer, due to a logic error in the plugin. Versions of Admin Mod prior to 2.50.52 allowed this to happen. Versions 2.50.52 and later prevent this and raise the above error crashing the plugin with the faulty logic, rather than allowing it to corrupt other plugins. Contact the plugin author for a new version. If you are the plugin author, set any variable holding a timer index to 0 after you kill a timer.

Q20: I've downloaded a plugin, but all I've got is this sma file - what do I do with it?

Firstly if you are on linux you need to make sure your "sma" file contains linux style line-feed only characters at the end of each line, not windows style carriage return line-feeds. There are at least 7 ways to do this:

  1. unzip the plugin's zip file on linux providing the -a option to the unzip program.
  2. ftp the sma file (not the zip) to linux using ASCII mode in your ftp application.
  3. Run Wraith's Converters on a windows machine to convert the sma files to linux format.
  4. Download Ravenous Bugblatter Beast's versions of compile and compile_all which can compile unconverted sma files.
  5. Load it into textpad on windows and choose UNIX as the file format in the save as dialog.
  6. Run it through the dos2unix program on linux.
  7. If all else fails, load it into a text editor, find all occurrences of // and delete everything on those lines from the // onwards. Then you can compile the windows version on linux.
If necessary remember to convert any include (.inc) files as well as the sma file.

Next you need to compile the sma file into an amx file. To do this you will need to use the folder where you unzipped Admin Mod. NOTE: The script compiler is not installed when you run the Admin Mod installer - you will need to download Admin Mod again if you no longer have the folder where you unzipped it.

In this folder you will find a directory called "scripting\myscripts". Copy the sma file into this folder (after you have converted it if you are on linux). If the plugin comes with any "inc" files you will have to copy these into either "scripting\include" or "scripting\myscripts" - if one location gives an error message try the other or see the readme with the plugin.

Now run the compile_all.bat file (Windows) or compile_all.sh file (Linux) in the "scripting\myscripts" folder. NOTE: On Windows it is best to open a command prompt window then run the compile_all.bat file from the command line rather than double clicking on it in explorer. Then if any errors occur you get time to read the error messages.

If any errors do occur, see Q21 below for help

The compiled amx file is produced in the "scripting\mybinaries" folder. Copy this to the addons\adminmod\dlls folder inside your game mod folder (e.g. C:\games\half-life\cstrike\addons\adminmod.dlls). Check that it isn't a 0Kb file - this means an error occurred.

Now open the file addons\adminmod\config\plugin.ini and add your new plugin. Its usually best to put them at the end of the file, but check the readme file for the plugin for more specific information. However, normally regardless of what the readme says should you not put a plugin above plugin_antiflood.amx in the plugin.ini file (unless of course it is another antiflood plugin.

If you have a Linux server that you cannot execute programs on (e.g. a rented server), you can compile the plugin on any Windows machine that you have unzipped the windows version of Admin Mod on (you do not need to install it) and then use the AMX Converter (Windows version or Linux version) to convert the compiled Windows AMX file to a Linux AMX file. However, it is recommended that your compile the plugin on the native operating system where possible. NOTE: The AMX Converter is not the same thing as Wraith's converters; as its name suggests, the AMX converter converts compiled AMX files, whereas Wraith's converters convert uncompiled SMA files.

Q21: I get errors when compiling.

Here are some common compilation errors that occur on plugins which worked for the author, but are failing when you try and compile them:

"Invalid Line Continuation"
Read the bit in Q20 about converting your sma file to UNIX format before compiling.
"Expecting ; but found --identifier"
"Expected token ; but found <whatever is here>"
The line mentioned, or the one above is probably missing a ; at the end - add a semi-colon and recompile. You used to be able to get away with leaving them out in some places, but newer builds of the small compiler are (correctly) more picky.
"function heading differs from prototype"
Usually means the plugin was written for an older (or newer) set of Admin Mod include files than the version you have. This often happens with calls to changelevel or playerinfo, or the plugin_connect callback. Check the plugins page for a newer version, then contact the author if they provide an email address, else ask in the scripting forum.
"undefined symbol "MAX_AUTHID_LENGTH"
You are compiling a plugin designed for version 2.50.37 or later using the include files from an earlier release of Admin Mod.
"warning: <whatever>"
If it is a "warning" rather than an error, IGNORE IT, especially if it is "loose indentation".
There is more information about debugging scripting errors in Ravenous Bugblatter Beast's Guide to Admin Mod Scripting

Q22: Is there a plugin to kick people with kick pings?

No there isn't and Admin Mod plugin's API specifically doesn't make it possible to write one. Don't post on the forums asking for one unless your heating has failed and you need some flames to warm you up.

Q23: Where can I learn how to write plugins?

There are 3 primary resources:

  1. Your can read the Beginners Guide to writing plugins.
  2. You see the reference information on this site.
  3. Look at the source files for existing plugins to see how they work.

Q24: How do I make Pod/Real/Someother Bot work with Admin Mod?

If your bot is metamod compatible, all you need to do is add a line to your addons/metamod/plugins.ini (formerly metamod.ini) pointing to the bot dll. E.g.

win32 addons/mybot/dlls/mybot.dll

If the bot doesn't use Metamod, on Windows:

  1. Install Admin Mod and then install your bot (unless your bot is already installed of course). Configure and test Admin Mod before installing the bot

  2. Open the file liblist.gam in notepad and look for the line that begins "gamedll". This should be set to "addons\metamod\dlls\metamod.dll". If it isn't change it

  3. Edit the properties of the shortcut on the desktop or start menu that you use to start your server. Add to the end of the line:

    +localinfo mm_gamedll PATHTOYOURBOTDLL.dll

    Note that the path to your DLL is relative to the game mod folder and must use / characters and not \ to separate folders - e.g. +localinfo dlls/podbot.dll

On Linux:

  1. Install Admin Mod and then install your bot (unless your bot is already installed of course). Configure and test Admin Mod before installing the bot

  2. Open the file liblist.gam in your favourite text editor (such as vi) and look for the line that begins "gamedll_linux". This should be set to "addons/metamod/dlls/metamod_i386.so". If it isn't change it.

  3. Edit the script or alias you use to run hlds_run (or edit hlds_run itself if you have already edited it and hardcoded your server arguments inside). Add to the end of the hlds_l line:
    +localinfo mm_gamedll PATHTOYOURBOTDLL_i386.so
    Note that the path to your DLL is relative to the game mod folder - e.g. +localinfo dlls/realbot_i386.so

Bear in mind that even once you have everything working, you won't be able to do everything to bots that you can do to human players. In particular anything that involves executing a client command won't work on a bot, as they have no client. You should also ensure you have set admin_bot_protection to 1 in your adminmod.cfg file.

Q25: How can I make my server less laggy?

Buy a faster computer and a faster Internet connection? OK, if your server is slow, the first thing you need to determine is *why* - blindly installing every pingbooster you can find will probably make things worse, not better. Also remember a higher frames per second doesn't necessarily mean it will play faster.

The server can be slow for 3 main reasons.

  1. There is a CPU/Memory bottleneck on the PC.
  2. There is a network bottleneck on the Internet Connection.
  3. Its badly configured or in need of a ping booster / plugin.

The best way to test how to speed things up is to have a friend out on the Internet. Firstly, you should run a dedicated server and have your friend join and wait for a reasonable sized game to get going. Do not join the game yourself unless you have another computer. While the game is being played use Task Manager/Perfmon (NT/2000/XP), System Resource Meter (9x) or top (Linux) to monitor CPU usage and page faults.

If page faults are extremely high and the disk is whirring, you probably need more memory. If the CPU load is maxed out your game is using all available processing power. In some cases where this happens, it may help to lower the frame rate, not raise it. Hullu's HLBooster can be configured to lower the frame rate instead of boosting it. If the CPU load is quite low, use a pingbooster to increase the frame rate - your machine can cope with more processing.

If you normally run a listen server, ask your friend how the dedicated server compared - if performance was OK on the dedicated but normally isn't on the listen server then your computer is struggling with running the server code and the game GUI at the same time.

Another good test if you have the hardware is to run a LAN game. If your LAN game is fast but your Internet games are slow it is your Internet connection that is the problem, not your computer. A ping booster will make it worse not better (although it will make the LAN game better).

There are three well known ping boosters to consider:

  1. The Linux versions of half-life 1.1.0.9 and newer have a built in ping booster - simply add -pingboost X to your shortcut to start the server, where X is from 1 to 3. NOTE: 1,2 and 3 are simply different methods of boosting, not the amount of boost you want to apply - e.g. 2 may work best on your server.
  2. UDPSoft have a linux only HLDS ping booster. This removes a delay built into the hlds server between processing frames, thus allowing the server to reach its maximum frame rate more often. However, I'm not sure if this is still necessary with the new versions of hlds.
  3. Hullu's HLBooster. This is a metamod plugin that adjust some cvars so that the game runs more frames per second. "Ping booster" isn't really an accurate name as it doesn't decrease the time taken for one packet of data to travel from the server to client, it just means the clients receive more updates more quickly

All of these boosters increase the number of server frames processed per second. A "frame" is where the server processes the updates it has received from clients recalculates positions of entities and recognises any events that have occurred - e.g. a bullet hitting a target. Doubling the number of frames doesn't double the CPU load, as fewer things will have changed within the frame. However, each frame processed can cause server to client network traffic.

Therefore running these ping boosters will increase the network load of your server. It will run with lower pings when a few players are connected but it will "choke" at a lower number of players than it would have without being boosted. You can monitor choke and packet loss by typing "net_graph 3" in your client console.

Choking is where you get intermittent but extremely serious lag (order of 1-10 seconds). This is normally caused by the server's network connection being flooded with too much data. The server uses the UDP/IP protocol rather than TCP/IP. This means that when there is too much data, instead of queuing it so it can be delivered later, it just throws the excess away. If too much for a particular client is thrown away it freezes until it gets enough packets to work out what's going on in the game. A second cause of choking is if you are using the PC for something else, or have a periodic background process running with Windows Task Scheduler or cron on Linux. The fix for these situations should be obvious though....

If you are suffering from choking problems, I suggest you try Ravenous Bugblatter Beast's rate management plugin which attempts prevent the server from sending more data than your network connection can handle and/or use HLBooster to lower sys_ticrate - don't try and increase the frame rate.

Now if you have anything more to say about this subject, post it in the non-admin forum where it belongs.

Q26: How do I uninstall Admin Mod?

To uninstall Admin Mod, comment out or remove the line contain admin_mm.dll or admin_mm_i386.so from your addons/metamod/plugins.ini file and comment out or remove the line in your server.cfg/listenserver.cfg file that contains "exec addons/adminmod/config/adminmod.cfg". If you are permanently removing it you can delete the folder addons/adminmod.

If you also want to remove metamod, edit the file "liblist.gam" and change the line that begins "gamedll" (or gamedll_linux if you are on linux) back to the normal dll name for your game mod (e.g. dlls/mp.dll for Counter-strike on windows. You can remove the addons/metamod folder if you are permanently removing it.

CREDITS: This FAQ was compiled by Ravenous Bugblatter Beast from various sources including the Admin Mod Manual, postings on the Admin Mod Forums where these questions were frequently asked, and discussions in #Adminmod on IRC. In particular, large parts were adapted from guide's by M00, Dragon and Dork.


Where to Go for Help

Admin Mod is far from simple - we know that. While we have done our best to simplify things as much as we can, by it's very nature it will require some real work and understanding to install, configure and administer.

That said, you may need some help getting things running just right. Before you go running for assistance, please make sure you read this documentation. If you ask a question that can be answered here, you will likely be told to come right back here - not because we don't like you, but because it's already been typed out once here, and to do it all over again would be time consuming and tedious.

So, you've read the docs and still have problems? Help is available on the Admin Mod web site, by clicking on the "Forums" link. Please take the time to include this information when you request assistance, so that we can best help you:

  1. Operating System (e.g. Windows98, SE, Win2K, Linux Mandrake 7.1, etc.)

  2. Admin Mod Version

  3. Server software version and type of server (listen, dedicated, etc.)

  4. What game MOD you are running (cstrike, TFC, etc.)

  5. Method of installation (script or manually)

  6. Whether you are using plugin scripts (new in v2.50) or the old-style single script

  7. What other mods/bots you have running

  8. A detailed explanation of what you have tried so far, listed in clean paragraph format, one paragraph for each thing you have tried and what the result was

  9. Any log/console output that illustrates what happens when you encounter the problem (attach a .txt file)

  10. When applicable/requested, a copy of your server.cfg, users.ini, adminmod.cfg, etc. files, ATTACHED to your post in TXT format or ZIP'ed. In other words, look for the "Attach File" box below the window where you type your message, and use the "Browse..." button to attach the file, which must be renamed so it has a .txt extension (e.g. server.cfg.txt will work), or it must be ain a ZIP format.

PLEASE do NOT copy and paste your server.cfg or any other long text files into a message - an attachment is a much better option, because it preserves the content of the file exactly, and it keeps the forum a lot cleaner when it comes time to read the thread you are in.

If we can gather this core info on all problems, especially the ones that seem to affect multiple users, we can help you faster, as well as better catch problem patterns and causes. That, in turn, will help us to better provide you, the user, with better help documentation and a better mod down the road.

Help can also be found on the Admin Mod IRC channel on the GameSurge Join #adminmod and if there isn't a lengthy discussion in progress just ask your question. Obey the channel rules and be aware that if you ask questions that are covered in the manual you will be told to read it.


Spawning Items Reference

Spawning HL Entities

This is a quick and dirty tutorial on spawning things. Why is a spawning tutorial in the Admin Mod documentation, you ask? Well, we get a lot of questions about how to use the spawning commands, and the almighty second god of Admin Mod, Jaguar, wrote this tutorial back when he first gave Admin Mod spawning capabilities. It is still completely valid today, and barely edited. Praise Jaguar! (We're not worthy!)

Jag speaks:

So, this tutorial's broken down into two parts:

  • Adding stuff onto a map ahead of time

  • Adding stuff onto a map at run time

Adding stuff onto a map ahead of time

First, you need a map. I play TFC, so I'm going to use 2fort as an example. How many people haven't dreamed of plopping down a Xen tree or 3 on the bridge of 2fort? Well, ok...more of you than I expected, but that's what we're going to do anyways. =P

For you CS people, you can just follow along (it's pretty easy), or one of you can write me up an example for CS, which I can include.

Anyways, you need 2fort.bsp. This is found in all server installs, so you should have it if you have a server, in hlserver\tfc\maps. Before doing anything else, BACK UP THE MAP! Copy it to 2fort.bak or something.

Now, you've got two options: you can edit the .bsp file by hand, or you can export the entities and edit those.

Option 1: Editing by hand requires you to have a decent text editor; one that doesn't barf at characters above ASCII 127. What you need to do is look for the entity information. 2fort.bsp is roughly 2.5 megs; in it, the entity information begins at offset 255800h. You should see this:

{

"wad" "\tffree\tfc\tfc.wad;\tffree\valve\halflife.wad;\tffree\valve\liquids.wad;"

"mapversion" "340"

"mapversion" "220"

"sounds" "1"

"message" "2 Forts Classic"

"skyname" "dusk"

"MaxRange" "4096"

"classname" "worldspawn"

"classname" "worldspawn"

}

All of the entities follow in the same format: enclosed in braces ( {} ), with key/value pairs describing the data.

Option 2: Exporting the entity list requires Zoner's Half-Life Editing Tools (ZHLET), which you can find here:

http://www.valve-erc.com/resources/?page=zhlt

Once you've downloaded the tools (and compiled them, if need be), run the ripent.exe tool:

ripent -export (map)

ripent -export d:\hlserver\tfc\maps\2fort.bsp

This will create a file in the same directory as the .bsp, but with the extension .ent (eg, in the example, it would create d:\hlserver\tfc\maps\2fort.ent). This .ent file is the entity list from the .bsp file, and can be edited (IMHO) much easier, allows for easier searching, etc.

Moving on...

What do these key/value pairs do? Some of them are obvious. Some of them are not. Some of them _seem_ obvious, but are actually not (who would guess that 'maxammo_shells' key on a 'tf_detect' entity actually controls the class limits for team 1? I wouldn't...)

The most comprehensive entity list I've found so far is on Wavelength:

http://www.planethalflife.com/wavelength/levels/entities/index.html

(It covers TFC entities...but not CS ones. Sorry.) Probably the easiest way to start is to find a map that already has what you want in it, and take a look at its entities, copying as you go. But for this little example, I'll just give you the entity for a xen_tree:

{

"renderamt" "255"

"rendercolor" "0 10 200"

"origin" "0 0 0"

"angles" "0 0 0"

"classname" "xen_tree"

}

Oh, but there's a problem. What are the coordinates of where we want to put it? You've got three ways to get them:

  • Using a program to decompile the .bsp into a .map file (such as winbspc for Win32 machines), open the map in Worldcraft and locate the coordinates that way.

  • Load the map up into a dedicated server on your machine. Walk around until you find the spot, and then use the 'status' cmd to get your coordinates.

  • If you have Admin Mod, and are using the plugin scripts, load the map up into a server and then user the 'admin_userorigin (player)' cmd to get your coordinates.

Using one of these methods, get the coordinates of where you want to place the xen_tree. I'm going to go ahead and just use ones I've already gotten: X:0, Y:0, Z:-480.

So, update the entity info with your new coordinates (origin) data:

{

"renderamt" "255"

"rendercolor" "0 10 200"

"origin" "0 0 -460"

"angles" "0 0 0"

"classname" "xen_tree"

}

Put that at the end of the entity list (making sure to be very careful if you're editing the .bsp by hand). If you're using ripent, then you have to import the .ent file back in ripent -import (map)

ripent -import d:\hlserver\tfc\maps\2fort.bsp

Once this is done, load the map up into a server. A cute li'l xen tree should be awaiting you on the bridge.

The tree can be removed easily...just remove the entity information from the bsp or the ent (being sure to import when done if editing an ent). Similarly, other trees can be added at other spots, or other entities entirely could be added (more spawn points in CS, ammo packs for TFC in the hldm maps, etc).

Adding stuff onto a map at run time

Adding stuff on the fly requires one of two things:

  • sv_cheats 1 enabled.

  • Admin Mod, latest version

However, before you can add anything onto a map, (and this is the important bit) it has to already have been precached. Things can only be precached when the map loads. In general, this means that the only things you can add onto a map at run-time are things that already exist on the map.

It boils down to this: If you want to add a xen tree somewhere at run time, a xen tree must already exist on the map. It doesn't matter where (it doesn't have to be 'in the map')...but it's got to exist.

So, getting back to 2fort, remove the original xen_tree (if necessary), and add this in:

{

"renderamt" "255"

"rendercolor" "0 10 200"

"origin" "5000 5000 5000"

"angles" "0 0 0"

"classname" "xen_tree"

}

Note the origin; 5000 5000 5000 is well outside the map. No one will ever see, touch, or interact with this xen tree in any way. It's only purpose in life is so that we can spawn other xen trees. Without it, we can't spawn any xen trees at all.

With this down, we can now spawn an army of xen trees, anywhere we want.

Using sv_cheats, the cmd is 'give xen_tree'. It'll spawn one wherever you are.

Using Admin Mod, the cmd would be 'admin_spawn xen_tree (X) (Y) (Z) (XAngle) (YAngle) (ZAngle)'. The angles can default to 0, but having a ZAngle of 180 will give you an upside down Xen tree, which is kind of amusing. =)


Linux Passwords

Linux Encrypted Passwords

LINUX USERS ONLY:

Password encryption

For security reasons, administrators are encouraged to encrypt their passwords.

This is done by setting the cvar encrypt_password to 1 in the server configuration files (listen/ server.cfg ) To encrypt a password, go to the Adminmod/tools directory, and type:

./make_pass password

This will output a cut'n'paste-able encrypted version of the password you entered. Now, copy'n'paste the ENCRYPTED version of your password into the users.ini file in the password area (between the two colons ":"). The PLAIN TEXT (un-encrypted) version is to be placed in the second password area of the setinfo line. Remember that throughout this process, all the passwords, encrypted or not, are case sensitive.


Unzipping Admin Mod the Right Way

When you download the Admin Mod ZIP file, you need to be sure to unzip it and use the folder information in the ZIP file – This means that when you unzip the file, it will create a folder called Admin and several subfolders inside the Admin folder, as shown in the figure below.

You unzip the Admin Mod distribution to the SAME FOLDER that contains HLDS.EXE or HL.EXE. This directory is also the directory in which your game mods are installed, so you will see a subdirectory for each of your mods here (in the case of a Linux server, we are talking about the same directory as the hlds_l .so runtime). Typically this means that you unzip it into the C:\SIERRA\Half-Life\ , C:\Sierra\Counter-strike directory or similar. DO NOT unzip the file into your game mod directory! If you do, you will have problems.

If you don't see these folders/directories after unzipping the file, you have done something wrong, so STOP NOW and save yourself the headache. You most likely did not use the folder names included in the ZIP file.

Next: Running the Windows Installation Script