1. Use at your own risk. I can't attest to the safety of using admin mod, the scripting extension, or this script. As far as I know there could be a bug in there that erases your hard disk and fries your motherboard. If you don't have enough technical knowledge to assess the risk yourself, don't use it. 2. To use it, you must install the admin mod available at www.adminmod.org and know how to add custom scripts to the admin mod. This is explained in the scripting section of the same site and is pretty straight forward. If you can install and use admin mod, you can compile and install custom scripts for it. I have been using it against admin_mod version 2.09. There are two files: admin_jag_gijoe.txt and jag_2101_gijoev2.txt (Note the usual convention for these files is to use a .sma extension. However that is only a convention and really doesn't matter. You can rename them to .sma if desired ) Use the first if and only if you are you have installed the standard admin_mod 2.09 or 2.10 stuff. (may work with earlier versions) Use the second one if and only if you have properly installed the new inc file and related dlls from jaguar's 2101 beta version. If you don't know what that means you should'nt be messing with jag's beta stuff (IMHO). Stick with what comes with admin mod and the first file. As the file name indicates this was based on jaguar's 2101 version. Obviously if you use a different version, who knows. Note also that the first version has ENABLE_JAGUAR_STUFF 0 and the second version has ENABLE_JAGUAR_DLL 0 which means things that need the jaguar custom dll won't be useable ( like admin_slap ). You can set these to 1, but only if you are sure you have the appropriate dll in the appropriate place. Note also that the 2101 based version does not seem to be calling client_start under Linux. The weapons restriction code does not rely on this so it works fine, but other parts of jag's script may have problems and the map_name.cfg file will not get executely automatically. So if you take advantage of that feature, that won't work. On at least my installation and configuration this problem occurred with the unmodified jag 2101 sciprt as well as the one I added by code to. All my testing has been with the production hl1104 server on both NT and Linux and I have run it with both the dll on and off under NT and only off under Linux. 3. I started with one of the versions of Jaguar's scripts. ( a frequent scripting contributor at admin mod ) I attempted to mark all the additions I made with comments including the word Weapon so one can move the code into a different version of Jaguar's script if desired. The code does rely on various helper functions and constants in Jaguar's scripts. 4. The script adds the following comands to anybody with ExecClient privileges ( you can change that to a different privilege level, I just chose that one arbritrarily. It does not use any execclient commands ): - adim_restrictallweapons This will not allow any weapons to be purchased ( players still get default pistol ). It will allow all equipment and ammo to be purchased. - admin_allowallweapons Removes all restrictions that exist ( both weapon and equipment ). - admin_restrictweapon = Number of menu weapon is in. = Number of weapon to be restricted. Example: admin_restrictweapon 1 2 would disallow anyone to purchase the number 2 pistol. If a user attempts to purchase a restricted item it will not let them and they will get a message in the center of the screen saying that weapon is not currently allowed. Note: This works on the equipment menu as well. For example 8 1 would restrict the first piece of equipment in the equipment menu ( I think that's kevlar ). - admin_allowweapon Same as restrict, except makes weapon available. Default is all weapons and equiprment available at the start. - admin_resrictequipment Restricts all items in the equipment menu. - admin_allowequipment Makes all equipment available in the equipment menu. - admin_enableweaponscheck Turns on the general feature ( default is on ) - admin_disableweaponscheck Turns off general weapons checking Settings do not persist across maps ( see item 9 below if you want to work around this ). 5. Some things to be potentially added by me or someone else in the future: - Be able to get the settings from a file and/or be able to set via command or vars in config file. - Be able to restrict ammo. Right now ammo purchases are always allowed. If one restricted all weapons and ammo, then players who survived would be reduced to knives. - The message displayed when a user attempts to buy a restricted weapon does not quite fully display the word weapon. 6. Why did I do this? - I have seen numerous requests in forums and it seemed doable and I enjoy learning new languages and systems. - Certain maps are more fun, in my opinion, without certain weapons ( Jeepathon2k without snipers, Sniper Fortress without fully automatic weapons, etc. ) 7. If you use it, I would suggest using admin_csay each round to let people know weapon restrictions are being used. Even with that, be prepared for massive whining. 8. Is this an example of your best coding effort? - No, there are obvious shortcomings I would not put out in a professional effort ( Avoiding the 0 based array index is a bit of lazy programming, error checking on input parameters is weak at best, some data conversion is needlessly called over and over again, the weapons checking section should be pulled into a separate function for modularity, etc. )....There...My over developed ego will now let me release this. 9. In order to set up the restrictions without having to enter the game and issue the admin commands, here is the poor man's way: Before compiling, find the code that initializes the BuyMenu variable, it looks like this: new BuyMenu[NUMBER_OF_BUY_TYPES][MAX_NUMBER_OF_GUNS]={{1,...},{1,...},{1,...},{1,...},{1,...},{1,...},{1,...},{1,...},{1,...},{1,...}}; Each of the {1,...} represents a weapon menu. These things start counting at zero, so the first one really represents nothing since 0 is exit in the menus. The second one represents menu 1 (the pistols), the third one menu 2 (the shotguns), etc. Lets suppose you want to allow all the pistols (menu 1) and all the equipment (menu 8). Then you would change all the 1's to 0 except the second one and the ninth one. I.E.: new BuyMenu[NUMBER_OF_BUY_TYPES][MAX_NUMBER_OF_GUNS]={{0,...},{1,...},{0,...},{0,...},{0,...},{0,...},{0,...},{0,...},{1,...},{0,...}}; Now suppose you want to allow only some of one menu and not some others. Well....the {0,...} is short hand for make them all 0's. That way the programmer doesn't need to type 10 0's (10 being the value of MAX_NUMBER_OF_GUNS). If you want to mix and match within a menu here is how you would do it. Suppose you want to allow just the desert eagle (the 3rd pistol). Can you figure it out? Remember to start counting at zero. Got it, check your answer: new BuyMenu[NUMBER_OF_BUY_TYPES][MAX_NUMBER_OF_GUNS]={{0,...},{0,0,0,1,0,0,0,0,0,0},{0,...},{0,...},{0,...},{0,...},{0,...},{0,...},{1,...},{0,...}}; Note I expanded out that set to have 10 values and the fourth one is 1 since we wanted number 3 made available and we start counting at zero. ( By the way that is the problem with the whole when did the new milenium start thing.) Once you have the above,done compile, move the new amx into the cstrike dlls folder and make sure script file line in you server.cfg (for internet games, I think it is a different file for LAN games ) is pointing to that named amx file in that directory and your set. You do not need to bring your server down to have the change take affect, you just need to issue a changelevel command. That will cause the new amx file to be read ( provided you have your server.cfg set up right and remembered to press save ). If you wanted, you could create a few different sma's and corresponding amx's with names indicating the set up...like admin_no_snipers.amx or admin_pistols_only.amx. Then whenever you wanted to change, change the server.cfg to point to what you want, save, and then issue a changelevel command. Hope everyone has fun... - Joe.