Date: 06 8, 2001 3:37:23 PM

[Team Fortress Classic game mod]

# 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.

3. If this line does exist in your log, double check you are using the correct WONID/SteamID/IP address/Name

4. 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

5. If you are still stuck post in the forums for help stating you are stuck on Question 2, Step 2 of the FAQ.

6. 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.

7. 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.

8. 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.