id Software's Usenet Group Posts Archive!

quake/articles/1996/art-618



Path: mantis!not-for-mail


From: dtebben@alumnae.caltech.edu (Dirk Tebben)


Newsgroups: rec.games.computer.quake.announce


Subject: AntiCamper v1.0 Released


Date: 14 Oct 1996 16:36:32 +0100


Organization: Caltech Alumni Association


Lines: 222


Sender: tony@mantis.co.uk


Approved: quake@mantis.co.uk


Message-ID: <53rg54$bnr@gap.cco.caltech.edu>




AntiCamper v1.0, a camper-killing mod that REALLY WORKS, has been


uploaded to ftp.cdrom.com and ftp.stomped.com. I also posted it to


alt.binaries.games.quake. Check out the included text file below.




AntiCamper v1.0


by Harlequin


(dtebben@alumni.caltech.edu)


Should work in any OS



How It Works


------------


All items which are tagged as camper-sensitive, which by default


include the rocket launcher, grenade launcher, quad damage, red armor,


and lightning gun, look around themselves about every 8 seconds. They


have two detection ranges: a long range that includes only the item's


line-of-sight, and a shorter range that can detect players even without


LOS. If a player is detected for two consecutive think times, they are


issued a warning of the form "**CAMPER WARNING FROM (item name)", their


screen flashes and a sound is played. If they are still within detection


range for a third think time, they are identified as a camper. All their


armor and defensive powerups are removed, they are paralyzed, and their


health is set to 1. A message is then sent to all players in the game,


telling them who and where the camper is. The first player to frag the


camper gets 3 frags instead of the normal 1, hopefully precipitating a


free-for-all as everyone heads for the helpless camper. Campers also


lose 2 frags each time they are busted.



AntiCamper works only in deathmatch mode 1 (the standard DM mode where


weapons respawn). Item respawn noises for camper-sensitive items have


been disabled, simply because they help to alert campers that the item


they're guarding is available again. Items detect campers even if the


item is not currently respawned (it's still there, you just can't see


or touch it). Item respawn times for camper-sensitive things are


somewhat erratic, +/- 4 seconds or so, while this mod is running. This


is an unavoidable consequence of giving items think times -- I see it


as a feature rather than a bug, because it makes camping that much


harder.



When a client connects to a server that is running AntiCamper, they


are informed of its presence via a centerprinted message.




How To Install AntiCamper


-------------------------


To install AntiCamper, you must have QCCDOS, the DOS-based QuakeC


compiler; try looking at the following places if you don't have QCC:


ftp://ftp.cdrom.com/pub/idgames/idstuff/source


ftp://ftp.cdrom.com/pub/idgames2/quakec


ftp://ftp.cdrom.com/pub/idgames2/utils



Make a new subdir named "anticamp" off of your Quake directory and copy


all the files from V101QC (a subdirectory of QCC) into it. Now unzip


anticamp.zip into the new anticamp subdir, answering "yes to all" if it


asks you whether or not to overwrite files. Enter the subdir and run


QCCDOS. A file will be created called "progs.dat", which is what Quake


looks for. To use the mod, run Quake with "-game anticamp".



To recompile AntiCamper later on, just run QCCDOS again (after making


any desired changes to the code -- see Optional Settings).




Optional Settings


-----------------


You don't have to change any of this stuff if you just want to use


the defaults. But for those who (like me) are never satisfied until


they have tweaked something to perfection, read on.



NOTE: All of these involve recompiling AntiCamper to generate a new


progs.dat. For instructions on how to do this, see "How To Install".


ALSO, some settings require the user to "comment out" lines of code.


This is done by putting two forward slashes // at the start of the


line you wish to remove, using a text editor. DON'T delete any code,


in case you want to restore the original setting later.



*Item respawn sounds for camper-sensitive items can be enabled. I hate


these personally, but I know some people like them. Just comment out


line 12 in items.qc.



*Camper/sniper warning sounds can be turned off. I'm not totally sure


these are a good idea; they can give away a player's position in a


deathmatch. On the other hand, they make sure that the player notices


the warning. If you don't want to use them, you need to comment out


lines 190 and 236 in anticamp.qc. The camper warning uses a barking-dog


sound, and the sniper warning is the Ogre starting his chainsaw.



*All weapons, armor, and powerups can be tagged as camper-sensitive by


modifying lines 44-57 in items.qc.



*Item detection radii can be assigned to maps on an individual basis.


For instance, if there's one map where players are getting "false


positives" (i.e. busted even though they weren't camping), you could


decrease all items' detection zones for that level. Instructions on


how to do this are in lines 66-74 and 91-97 in anticamp.qc.



*Item think times can also be set differently for each level. Info on


how this is accomplished can be found in lines 116-118 of anticamp.qc.


Altering think times is the most powerful way to increase/decrease


camper sensitivity on a level.



*The connection message may be disabled by commenting out line 1018


in client.qc.



Please send me feedback about what settings work well in deathmatch!


If I get enough suggestions, I will change the defaults in the next


version of AntiCamper.




AntiSniper


----------


Also included in this mod is AntiSniper, a piece of code that lets you


eliminate sniping on home-brewed maps. AntiSniper searches the map


for a special entity called a sniper detector, and if it finds any,


it causes them to act like camper-sensitive items. They search the


area around themselves, and if the same player is loitering for too


long they issue a sniper warning, then kill them as per AntiCamper.


AntiSniper is totally optional; if it doesn't find any sniper-detection


points on the map, it shuts itself down. Note: try not to let sniper


detectors overlap detection radii, or they tend to cancel each other


out within the zone of overlap.



To take advantage of AntiSniper, you must create or modify a map so


that it has sniper detectors. Sniper detectors are entities with


classname 'info_null' and targetname 'sniper_detector'. They can be


customized by setting various fields: 'speed' determines the distance


they can see players from if they have line-of-sight, 'count' is their


sighting distance without LOS, 'dmg' is their average think time (this


varies to +/- 0.5 seconds), and 'message' is the string printed in


warnings and busts. Set these fields in your map editor; if it


doesn't support them, you'll have to text-edit the .map file manually.



Sample .map entry for a sniper-detection point:


{


"classname" "info_null"


"targetname" "sniper_detector"


"message" "YOSEMITE"


"speed" "600"


"count" "150"


"dmg" "6"


"origin" "176 80 -168"


}



This would make a sniper detector located at coordinates '176 80 -168'


with LOS range 600 and no-LOS range 150, which checks for snipers every


5.5-6.5 seconds. If it busted somebody it would bprint "x IS CAMPING AT


YOSEMITE", and it issues warnings in the form "**SNIPER WARNING FROM


YOSEMITE". You should set the message string to make it as unambiguous


as possible, e.g. "THE TOP PLATFORM".



You don't need to set all of these fields if you wish to use the


default values. The defaults are:


warning string: (**SNIPER WARNING FROM) "SNIPER DETECTOR"


LOS detection range: 800


no-LOS range: 250


average think time: 8


But you do have to set the classname, targetname, and origin fields.



Why did I use the info_null entity instead of just making my own?


Well, I tried that, but if you run the resulting map without AntiCamper,


Quake gives you all sorts of ugly error messages because it doesn't


have a spawn function for sniper detectors. I figured info_null was


pretty safe. AFAIK it has no effect on lighting or gameplay. However,


if you want to use them, AntiSniper will detect and use map entities


with classname "sniper_detector" (although the targetname must also be


set to "sniper_detector"). Just be aware that if you use these instead


of info_null, running the map without AntiCamper will generate a lot of


garbage upon worldspawn.




Integrating AntiCamper Into an Existing Mod Package


---------------------------------------------------


I designed AntiCamper to be as modular as possible. All you have to do


in order to bundle it into your own servermod code is the following:



1) Include anticamp.qc in your progs.src. Put it right above items.qc.


2) Look through the file changes.txt, where I documented all my mods.


3) Cut and paste my code from defs.qc, items.qc, client.qc, and misc.qc


into the same places in your own files. Any place that I made


additions to id's code I put the comment //#Harlequin# and a brief


description of the addition. I didn't remove any of the original


code (but I did alter some of it, so check carefully).



I encourage other coders to use my work, and I will be happy to address


any questions/comments/problems/feedback you might have. Email me at:


dtebben@alumni.caltech.edu.




Known Bugs


----------


None.




Copyright and Distribution Information


--------------------------------------


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.



For a copy of the GNU General Public License, write to the Free Software


Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.




Credits


-------


id Software, for setting the trend of user-configurable games, elevating


shareware to its rightful place, and consistently being the best at what


they do.



Jonathan Jessup (jjessup@visuallink.com), for early ideas and playtesting.


--


[ "Don't be misled! Look directly! What is this?" --Bassui ]


[ "I'm not a cat. I'm a little psycho kitten." --Mioawara Shiro ]


[ Here Lies One Whose Name Was Writ in Water --John Keats' Epitaph ]


[ Dirk Tebben Disclaimer: I have no one else's opinion to use. ]