-cvars:
-______________
-
- sv_eventlog master switch (default: 0)
- sv_eventlog_files print frags, scores and captures for separate files each match (default: 0)
- sv_eventlog_console print frags, scores and captures to serverconsole during the match (default: 1)
- sv_logscores_bots choose whether bot are included in stats or not (default: 0)
-
- sv_eventlog_files_counter number of matches logged until now
- sv_eventlog_files_nameprefix file name prefix to be used (default: nexuiz)
- sv_eventlog_files_namesuffix file name extension to be used (default: .log)
- sv_eventlog_files_timestamps prefix log lines in the files with :time events (default: 1)
-
-log format:
-______________
-
- :logversion:3
- :gamestart:<gametype>_<mapname>:<matchid>
- :gameinfo:mutators:LIST:mutator1:mutator2:...
-
- (note that mutators are listed by their cvar name with g_ removed,
- unless such a cvar is 1 by default - then the mutator is listed with
- a no_ prefix if the cvar is 0)
-
- :gameinfo:end
- :join:<ID>:<slot>:<ip>:<nickname>
- :join:<ID>:<slot>:bot:<nickname>
- :name:<ID>:<nickname>
- :part:<ID>
- :team:<ID>:<team>:<jointype>
- :kill:frag:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>
- :kill:tk:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>
- :kill:suicide:<ID>:<ID>:type=<death type>:items=<itemstring>
- :kill:accident:<ID>:<ID>:type=<death type>:items=<itemstring>
- :ctf:steal:<flagcolor>:<ID of attacker>
- :ctf:dropped:<flagcolor>:<ID of dropper>
- :ctf:pickup:<flagcolor>:<ID of attacker>
- :ctf:capture:<flagcolor>:<ID of attacker>
- :ctf:return:<flagcolor>:<ID of defender>
- :ctf:returned:<flagcolor>
- :dom:taken:<previouscolor>:<ID of player>
- :keyhunt:capture:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:carrierfrag:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:collect:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:destroyed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:destroyed_holdingkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:dropkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:losekey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:push:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:pushed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :scores:<gametype>_<mapname>:<map runtime>
- :labels:player:<head1><flags>,<head2><flags>,...
- :player:see-labels:<score1>,<score2>,...:<playtime>:<team>:<ID>:<nickname>
- :player:see-labels:<score1>,<score2>,...:<playtime>:spectator:<ID>:<nickname>
- :labels:teamscores:<head1><flags>,<head2><flags>,...
- :teamscores:see-labels:<score1>,<score2>,...:<team>
- :end
- :restart
- :gameover
- :vote:suggested:<mapname>:<playerid>
- :vote:keeptwo:<mapname>:<mapvotes>:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:...:didn't vote:<notvoters>
- :vote:finished:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:<mapname>:<mapvotes>:...:didn't vote:<notvoters>
- :vote:suggestion_accepted:<mapname>
- :vote:vcall:<ID of player>:<vote command display string>
- :vote:vyes:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>
- :vote:vno:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>
- :vote:vtimeout:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>
- :vote:vstop:<ID of stopper>
- :vote:vlogin:<ID of player>
- :vote:vdo:<ID of player>:<do command display string>
- :time:<YYYY-MM-DD HH:MM:SS>
- :recordset:<ID of player>:<time in seconds>
-
- Note that only the :join and :player lines ever contain player names. The
- :time event only appears in the log files if sv_eventlog_files_timestamps
- is 1; there is no way to log these time stamps to the console (for console
- timestamps, set timestamps to 1).
-
-team colors:
- 1 = No Team (Domination)
- 5 = Red Team
- 14 = Blue Team
- 13 = Yellow Team
- 10 = Pink Team
-
-join types:
- 1 = connect
- 2 = auto
- 3 = manual
- 4 = spectating
- 6 = adminmove
-
-label flags:
- !! = primary sorting key
- <!! = primary sorting key, lower is better
- ! = secondary sorting key
- <! = secondary sorting key, lower is better
- < = lower is better
-
-itemstring:
- <weaponid><flags>
- or
- <weaponid><flags>|<runes>
-
- where flags can contain:
- F = player carries the flag
- S = player has strength
- I = player has the shield
- T = player is typing (console, menu or chat)
-
- and weapon IDs are:
- 1 = Laser
- 2 = Shotgun
- 3 = Uzi
- 4 = Mortar
- 5 = Electro
- 6 = Crylink
- 7 = Nex
- 8 = Hagar
- 9 = Rocket Launcher
- 10 = Port-O-Launch
- 11 = MinstaNex
- 12 = Grappling Hook
- 13 = Heavy Laser Assault Cannon
- 14 = T.A.G. Seeker
-
- runes/curses are stored as a bit mask with the following values:
- 1 = Strength
- 2 = Defense
- 4 = Regeneration
- 8 = Speed
- 16 = Vampire
- 8192 = Weakness
- 16384 = Vulnerability
- 32768 = Venom
- 65536 = Slow
- 131072 = Empathy
-
-death type:
- either a weapon ID ORed with weapon death flags, or one of:
- 10000 = fallen to death
- 10001 = telefragged
- 10002 = drowned
- 10003 = killed by a trap / fallen into the void
- 10004 = lava
- 10005 = slime
- 10006 = console kill
- 10007 = (MinstaGib) out of ammo
- 10008 = swamp
- 10009 = team change
- 10010 = auto team change
- 10011 = camping protection
- 10012 = player became too fast (should never happen)
- 10013 = health rot
- 10014 = mirror damage
- 10015 = g_touchexplode
- 10100 = turret
- 10150 = spiderbot miniguns
- 10151 = spiderbot rocket
- 10152 = spiderbot, cushed by
- 10300 = custom deathmessage
-
- weapon death flags are:
- 256 = secondary fire
- 512 = splash damage
- 1024 = bounced projectile
- 2048 = head shot (MinstaNex only)
- 4096 = unused flag
-
-There will be a log analyzer parsing this file format soon. Note that weapon
-IDs are below 10000.
+cvars:\r
+______________\r
+\r
+ sv_eventlog master switch (default: 0)\r
+ sv_eventlog_files print frags, scores and captures for separate files each match (default: 0)\r
+ sv_eventlog_console print frags, scores and captures to serverconsole during the match (default: 1)\r
+ sv_logscores_bots choose whether bot are included in stats or not (default: 0)\r
+ \r
+ sv_eventlog_files_counter number of matches logged until now\r
+ sv_eventlog_files_nameprefix file name prefix to be used (default: nexuiz)\r
+ sv_eventlog_files_namesuffix file name extension to be used (default: .log)\r
+ sv_eventlog_files_timestamps prefix log lines in the files with :time events (default: 1)\r
+\r
+log format:\r
+______________\r
+\r
+ :logversion:3\r
+ :gamestart:<gametype>_<mapname>:<matchid>\r
+ :gameinfo:mutators:LIST:mutator1:mutator2:...\r
+\r
+ (note that mutators are listed by their cvar name with g_ removed,\r
+ unless such a cvar is 1 by default - then the mutator is listed with\r
+ a no_ prefix if the cvar is 0)\r
+\r
+ :gameinfo:end\r
+ :join:<ID>:<slot>:<ip>:<nickname>\r
+ :join:<ID>:<slot>:bot:<nickname>\r
+ :name:<ID>:<nickname>\r
+ :part:<ID>\r
+ :team:<ID>:<team>:<jointype>\r
+ :kill:frag:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>\r
+ :kill:tk:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>\r
+ :kill:suicide:<ID>:<ID>:type=<death type>:items=<itemstring>\r
+ :kill:accident:<ID>:<ID>:type=<death type>:items=<itemstring>\r
+ :ctf:steal:<flagcolor>:<ID of attacker>\r
+ :ctf:dropped:<flagcolor>:<ID of dropper>\r
+ :ctf:pickup:<flagcolor>:<ID of attacker>\r
+ :ctf:capture:<flagcolor>:<ID of attacker>\r
+ :ctf:return:<flagcolor>:<ID of defender>\r
+ :ctf:returned:<flagcolor>\r
+ :dom:taken:<previouscolor>:<ID of player>\r
+ :keyhunt:capture:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:carrierfrag:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:collect:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:destroyed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:destroyed_holdingkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:dropkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:losekey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:push:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:pushed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :scores:<gametype>_<mapname>:<map runtime>\r
+ :labels:player:<head1><flags>,<head2><flags>,...\r
+ :player:see-labels:<score1>,<score2>,...:<playtime>:<team>:<ID>:<nickname>\r
+ :player:see-labels:<score1>,<score2>,...:<playtime>:spectator:<ID>:<nickname>\r
+ :labels:teamscores:<head1><flags>,<head2><flags>,...\r
+ :teamscores:see-labels:<score1>,<score2>,...:<team>\r
+ :end\r
+ :restart\r
+ :gameover\r
+ :vote:suggested:<mapname>:<playerid>\r
+ :vote:keeptwo:<mapname>:<mapvotes>:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:...:didn't vote:<notvoters>\r
+ :vote:finished:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:<mapname>:<mapvotes>:...:didn't vote:<notvoters>\r
+ :vote:suggestion_accepted:<mapname>\r
+ :vote:vcall:<ID of player>:<vote command display string>\r
+ :vote:vyes:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>\r
+ :vote:vno:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>\r
+ :vote:vtimeout:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>\r
+ :vote:vstop:<ID of stopper>\r
+ :vote:vlogin:<ID of player>\r
+ :vote:vdo:<ID of player>:<do command display string>\r
+ :time:<YYYY-MM-DD HH:MM:SS>\r
+ :recordset:<ID of player>:<time in seconds>\r
+\r
+ Note that only the :join and :player lines ever contain player names. The\r
+ :time event only appears in the log files if sv_eventlog_files_timestamps\r
+ is 1; there is no way to log these time stamps to the console (for console\r
+ timestamps, set timestamps to 1).\r
+\r
+team colors:\r
+ 1 = No Team (Domination)\r
+ 5 = Red Team\r
+ 14 = Blue Team\r
+ 13 = Yellow Team\r
+ 10 = Pink Team\r
+\r
+join types:\r
+ 1 = connect\r
+ 2 = auto\r
+ 3 = manual\r
+ 4 = spectating\r
+ 6 = adminmove\r
+\r
+label flags:\r
+ !! = primary sorting key\r
+ <!! = primary sorting key, lower is better\r
+ ! = secondary sorting key\r
+ <! = secondary sorting key, lower is better\r
+ < = lower is better\r
+\r
+itemstring:\r
+ <weaponid><flags>\r
+ or\r
+ <weaponid><flags>|<runes>\r
+\r
+ where flags can contain:\r
+ F = player carries the flag\r
+ S = player has strength\r
+ I = player has the shield\r
+ T = player is typing (console, menu or chat)\r
+ \r
+ and weapon IDs are:\r
+ 1 = Laser\r
+ 2 = Shotgun\r
+ 3 = Uzi\r
+ 4 = Mortar\r
+ 5 = Electro\r
+ 6 = Crylink\r
+ 7 = Nex\r
+ 8 = Hagar\r
+ 9 = Rocket Launcher\r
+ 10 = Port-O-Launch\r
+ 11 = MinstaNex\r
+ 12 = Grappling Hook\r
+ 13 = Heavy Laser Assault Cannon\r
+ 14 = T.A.G. Seeker\r
+\r
+ runes/curses are stored as a bit mask with the following values:\r
+ 1 = Strength\r
+ 2 = Defense\r
+ 4 = Regeneration\r
+ 8 = Speed\r
+ 16 = Vampire\r
+ 8192 = Weakness\r
+ 16384 = Vulnerability\r
+ 32768 = Venom\r
+ 65536 = Slow\r
+ 131072 = Empathy\r
+\r
+death type:\r
+ either a weapon ID ORed with weapon death flags, or one of:\r
+ 10000 = fallen to death\r
+ 10001 = telefragged\r
+ 10002 = drowned\r
+ 10003 = killed by a trap / fallen into the void\r
+ 10004 = lava\r
+ 10005 = slime\r
+ 10006 = console kill\r
+ 10007 = (MinstaGib) out of ammo\r
+ 10008 = swamp\r
+ 10009 = team change\r
+ 10010 = auto team change\r
+ 10011 = camping protection\r
+ 10012 = player became too fast (should never happen)\r
+ 10013 = health rot\r
+ 10014 = mirror damage\r
+ 10015 = g_touchexplode\r
+ 10100 = turret\r
+ 10150 = spiderbot miniguns\r
+ 10151 = spiderbot rocket\r
+ 10152 = spiderbot, cushed by\r
+ 10300 = custom deathmessage\r
+\r
+ weapon death flags are:\r
+ 256 = secondary fire\r
+ 512 = splash damage\r
+ 1024 = bounced projectile\r
+ 2048 = head shot (MinstaNex only)\r
+ 4096 = unused flag\r
+\r
+There will be a log analyzer parsing this file format soon. Note that weapon\r
+IDs are below 10000.\r
-==============
-=Mapping Help=
-==============
-
-While I can't help you make a map, I can help you get it listed in the menu and
-working in the maplist. :p The central object is the .mapinfo file, but
-there's much more available.
-
-Table of Contents
------------------
-I Map Lists & Scripts
- (get your map listed and working)
- i. mapinfo
- ii. mapname.cfg
-
-II Map Image
-
-III Domination
-
-IV CTF
-
-V Rune Match
-
-VI Race/CTS
-
-VII Nexball
-
-Appendix A - Advanced mapinfo
-
-Appendix B - Helpful extras
- i. Team Colors
- ii. Text Colors
-
-Appendix C - Advanced Darkplaces shaders
-
-========================
-=I. Map Lists & Scripts=
-========================
-
-There now is just a single script/cfg file available to you, containing all map
-specific settings:
-
-mapname.mapinfo
-
-The mapinfo is actually required - however, the game is so nice that it
-automatically generates a draft of it for you.
-
-------------------
--The mapinfo file-
-------------------
-
-*cue even more scary music*
-
-The mapinfo file is basically what gets your map listed in the menu, and sets
-up the options needed to change to it. If no mapinfo file exists, the menu
-will automatically generate a rough draft for you on game startup. It will get
-stored into data/data/mapname.mapinfo.
-
-As an example, let's say I make a map called "wazat1.bsp". As long as I'm
-fantasizing, I might as well say this map is so well done I'm actually willing
-to release it for friends, neighbors, fellow forum visitors and other people
-who like me to judge me by. Let's also assume that I want domination,
-deathmatch/team deathmatch and runematch to all be playable on my map.
-
-This is very easy. First, I start the game and exit it again so the game writes
-data/data/wazat1.mapinfo for me. The file may look like:
-
- title Wazat's Great Map
- description Bleh.
- author Unknown
- _diameter 1966.839355
- _spawnpoints 5
- has weapons
- cdtrack 5
- gametype dm // defaults: timelimit=20 pointlimit=30 leadlimit=0
- gametype dom // defaults: timelimit=20 pointlimit=200 teams=2 leadlimit=0
- gametype rune // defaults: timelimit=20 pointlimit=200 leadlimit=0
- gametype lms // defaults: timelimit=20 lives=9 leadlimit=0
- gametype arena // defaults: timelimit=20 pointlimit=10 leadlimit=0
-
-As I see, the menu autodetected that my map may be suitable for deathmatch,
-domination, runematch, last man standing and arena. But I want the map to be
-played in domination, deathmatch, team deathmatch, runematch only, and I also
-want different timelimits/fraglimits, so I will change the "gametype" lines to:
-
- gametype dom pointlimit=100 timelimit=15
- gametype rune pointlimit=1000 timelimit=25
- gametype dm pointlimit=40 timelimit=15
- gametype tdm pointlimit=50 timelimit=0 teams=2
-
-Also, while I am at it, I should fix the placeholders in the map description lines:
-
- title Wibble
- description A large multi level arena map
- author Wazat
-
-Although not entirely necessary, I will now move the .mapinfo file from
-data/data/maps/wazat1.mapinfo to data/maps/wazat1.mapinfo, so it is at the same
-place as my map. Next time I start the game, my map will be shown supporting
-the right game modes and with the right description in the menu.
-
-Also, note the "has weapons" line. If this line is not there (which happens if
-the map contains no weapon entities other than the Nex), the map will run in
-MinstaGib only and not be shown in the menu normally. So if you look for your
-map and don't find it, add "has weapons" to the mapinfo file, and make sure you
-have weapon entities placed.
-
-There's much more power in a mapinfo file. See Appendix A for more details.
-
-Gametype | Syntax | Notes
-----------------+----------------------------------------------------------------------------------------------------------+-------------------------------------------------------
-Deathmatch | gametype dm [timelimit=...] [pointlimit=...] [leadlimit=...] |
-Team Deathmatch | gametype tdm [timelimit=...] [pointlimit=...] [teams=...] [leadlimit=...] | 2, 3, or 4 teams
-Domination | gametype dom [timelimit=...] [pointlimit=...] [teams=...] [leadlimit=...] | 2, 3, or 4 teams, only if map has no dom_team ents
-CTF | gametype ctf [timelimit=...] [pointlimit=...] [caplimit=...] [leadlimit=...] | pointlimit if g_ctf_win_mode is 2, otherwise caplimit
-Runematch | gametype rune [timelimit=...] [pointlimit=...] [leadlimit=...] |
-LMS | gametype lms [timelimit=...] [lives=...] [leadlimit=...] |
-Arena | gametype arena [timelimit=...] [pointlinit=...] [leadlimit=...] |
-Key Hunt | gametype kh [timelimit=...] [pointlimit=...] [teams=...] [leadlimit=...] | 2, 3, or 4 teams
-Assault | gametype as [timelimit=...] | never uses points
-Onslaught | gametype ons [timelimit=...] | never uses points
-Race | gametype rc [timelimit=...] [qualifying_timelimit=...] [laplimit=...] [teamlaplimit=...] [leadlimit=...] | g_race_teams: teamlaplimit is used instead of laplimit
-CTS | gametype cts [timelimit=...] [skill=...] | never uses points
-CA | gametype ca [timelimit=...] [pointlimit=...] [leadlimit=...] |
-Nexball | gametype dm [timelimit=...] [pointlimit=...] [leadlimit=...] |
-
-
-===============
-=II. Map Image=
-===============
-
-So, you've got your map listed in the menu and it plays properly, but the menu
-isn't showing your picture! Or the picture is scaled badly! What manner of man
-would create such an accursed abomination?!
-
-Well... That sounds like something I'd do. :D
-
-And it is really easy: just make a screenshot of the map in action (preferably
-with crosshair and HUD switched off), and place it next to the map as
-mapname.jpg. For best rendering and file size, make the image in 4:3 aspect
-ratio, but scale it to the resolution 256x256 or possibly 512x512. It will look
-skewed in your image editing app, but the menu will show it right, and your
-graphics card LOVES images of such dimension.
-
-
-=================
-=III. Domination=
-=================
-
-In order to get Domination working well in your map, you need to place dom_team
-and dom_controlpoint entites. You *must* have at least 3 dom_team entities - 2
-minimum teams and one blank one (empty netname and no team). You can have up to
-4 teams (5 dom_team entities), and remember: if you set 3 teams, the third team
-must be the yellow one, according to the team order.
-
-Dom Team
---------
-classname dom_team
-netname name of team (Red Team). Set to "" or don't define for the required
- blank team.
-cnt color of the team. See the "Helpful Extras" section for info.
-model When this team captures control points, the points turn to this
- model. If this is the neutral team, points start out as this model.
-noise Sound to be played on the control point when it's captured. Only
- players nearby will hear it.
-noise1 Sound to be played to all players when the control point is
- captured. Also good for an annoncer voice ("Red Team has captured a
- control point")
-
-Control Points
---------------
-classname dom_controlpoint
-message message to be displayed to all players when this point is captured,
- preceded by the team's name. This defaults to " has captured a control point".
- You can specify different names for each point, for example " has captured the
- Lava Room".
-origin where in the map this point is
-wait How often this point gives its controlling team frags.
-frags How many frags this point gives each wait cycle.
-
-Here is an example entry in a .ent file that includes colored text and 3 teams:
-
-{
-"classname" "dom_team"
-"netname" ""
-"model" "models/domination/dom_unclaimed.md3"
-}
-{
-"classname" "dom_team"
-"netname" "^4Blue Team"
-"cnt" "13"
-"noise" ""
-"noise1" "domination/claim.wav"
-"model" "models/domination/dom_blue.md3"
-}
-{
-"classname" "dom_team"
-"netname" "^1Red Team"
-"cnt" "4"
-"noise" ""
-"noise1" "domination/claim.wav"
-"model" "models/domination/dom_red.md3"
-}
-{
-"netname" "^3Yellow Team"
-"cnt" "12"
-"noise" ""
-"noise1" "domination/claim.wav"
-"model" "models/domination/dom_yellow.md3"
-}
-{
-"netname" "^6Pink Team"
-"cnt" "9"
-"noise" ""
-"noise1" "domination/claim.wav"
-"model" "models/domination/dom_pink.md3"
-}
-{
-"classname" "dom_controlpoint"
-"message" " ^3has captured the ^1Hallways"
-"origin" "-206.0 -488.8 -150.0"
-"frags" "3"
-"wait" "5"
-"scale" "1.3"
-}
-{
-"classname" "dom_controlpoint"
-"message" " ^3has captured the ^1Lavaroom"
-"origin" "1457.1 19.9 -110.0"
-"frags" "1"
-"wait" "5"
-}
-{
-"classname" "dom_controlpoint"
-"message" " ^3controls the ^1Nex & Strength"
-"origin" "-259.8 299.3 5"
-"frags" "1"
-"wait" "5"
-}
-{
-"classname" "dom_controlpoint"
-"message" " ^3has captured the ^1Upper Platform"
-"origin" "539.7 1206.0 182.0"
-"frags" "1"
-"wait" "5"
-}
-{
-"classname" "dom_controlpoint"
-"message" " ^3has captured the ^1Teleport Room"
-"origin" "-1000.0 636.2 -16.0"
-"frags" "1"
-"wait" "5"
-}
-
-
-As you can see in the example, there are 5 dom_team ents: one blank, Red, Blue,
-Yellow and Pink. Each control point has a different message (giving it a
-special name), and the one in the hallways gives 3 frags every 5 seconds
-instead of just one, making it more valuable.
-
-If your map contains the required entities for Domination, the menu will
-automatically detect it for supporting Domination. To force the map to get
-re-detected after you add such entities, delete the data/data/mapname.mapinfo
-file - or simply edit it to add the "gametype dom" line.
-
-
-=========
-=IV. CTF=
-=========
-
-Capture the flag needs at least 1 CTF flag per team, and can also make use of
-team spawnpoints.
-
-CTF Flags
----------
-classname item_flag_team1 or item_flag_team2
-angle direction the flag will point
-model model of the flag (default: models/ctf/flag_red.md3 or
- models/ctf/flag_blue.md3)
-noise sound played when flag is stolen (default: "ctf/take.wav")
-noise1 sound played when flag is returned by a teammate (default:
- "ctf/return.wav")
-noise2 sound played when flag is captured (default: "ctf/capture.wav")
-noise3 sound played when flag returns itself (default: "ctf/respawn.wav")
-
-Team Spawnpoints
-----------------
-classname info_player_team1 or info_player_team2
-*note: These function just like info_player_deathmatch, but for one team only.
-If you don't make team spawnpoints, info_player_deathmatch is used instead.
-
-If your map contains the required entities for CTF, the menu will automatically
-detect it for supporting CTF. To force the map to get re-detected after you add
-such entities, delete the data/data/mapname.mapinfo file - or simply edit it to
-add the "gametype ctf" line.
-
-==============
-=V. Runematch=
-==============
-
-Runematch needs only one type of entity to work: rune spawn points. You will
-need at least one for each rune (5 minimum at the time of this writing), though
-you should probably have more than that in the map. Just give the points a
-classname and origin.
-
-Rune Spawnpoints
-----------------
-classname runematch_spawn_point
-
-If your map contains the required entities for Runematch, the menu will automatically
-detect it for supporting Runematch. To force the map to get re-detected after you add
-such entities, delete the data/data/mapname.mapinfo file - or simply edit it to
-add the "gametype rune" line.
-
-==============
-=VI. Race/CTS=
-==============
-
-Making a race map is not hard: you need some special spawnpoints, and some checkpoints.
-
-Spawnpoints
------------
-classname info_player_race
-target targetname of the checkpoint
-race_place for finish line checkpoints, the place of the point, or -1 to make it qualifying/CTS-only, or unset to let all the other players spawn
-
-Checkpoints
------------
-classname trigger_race_checkpoint
-targetname some name to target the checkpoint with
-cnt number of the checkpoint (or 0 for finish line)
-
-Note that checkpoints are brush entities, and they should be somewhat thick and
-cover the full volume the player could use to get past them.
-
-Example of entity placement:
-
- ###
- ---------------------###---
- / 9999 7 5 3 1>### \
- / 9999 8 6 4 2 >### \
- | ------------------### |
-%%%%%%%% ###| |
-%%%%%%%% $$$| |
- | ^ ^ ------------------$$$ |
- \ $$$ < /
- \ $$$ < /
- ----------------------$$$---
- $$$
-
-###: classname = trigger_race_checkpoint, cnt = 0, targetname = finish
-$$$: classname = trigger_race_checkpoint, cnt = 1, targetname = cp1
-%%%: classname = trigger_race_checkpoint, cnt = 2, targetname = cp2
->: classname = info_player_race, target = finish, angle = 0
-1: classname = info_player_race, target = finish, angle = 0, race_place = 1
-2: classname = info_player_race, target = finish, angle = 0, race_place = 2
-....
-8: classname = info_player_race, target = finish, angle = 0, race_place = 8
-9: classname = info_player_race, target = finish, angle = 0, race_place = 9
-<: classname = info_player_race, target = cp1, angle = 180
-^: classname = info_player_race, target = cp2, angle = 90
-
-If your map contains the required entities for Race, the menu will automatically
-detect it for supporting Race. To force the map to get re-detected after you add
-such entities, delete the data/data/mapname.mapinfo file - or simply edit it to
-add the "gametype rc" line.
-
-CTS maps do not use checkpoints with race_place set, so you can leave them out
-for CTS maps.
-
-The skill parameter in the mapinfo entry for CTS shall be in the range from 0 (easy) to 10 (impossible).
-
-=============
-=VI. Nexball=
-=============
-
-There are three required entities: nexball_redgoal, nexball_bluegoal, and one of nexball_basketball
-or nexball_football. There are also optional nexball_yellowgoal and nexball_pinkgoal entities (don't
-add a pink goal when there is no yellow goal on the map, it will crash)
-
-Goals are made just like any other regular triggers. You can use multiple brushes for one trigger,
-but avoid this if possible.
-
-There are also two other goal-like entities, nexball_fault and nexball_bound, the first taking a point
-from the team that hits the trigger with the ball, the second simply returning it. You can spawn the
-ball inside a goal-like trigger, this can be useful for basketball maps with separate teams and a
-common ball spawn.
-The different keys for the entities are documented in entities.def.
-
-The ball is affected by trigger_impulse, but not by trigger_push or teleporters.
-
-You should better avoid patches on the field, as collisions can sometimes get buggy on these.
-
-
-===============================
-=Appendix A - Advanced mapinfo=
-===============================
-
-You now know how to make a basic, bare-bones mapinfo to set up a couple options
-and load your map. However, there's much more you can do! Consider these
-senarios:
-
-1. The laser has too high of a force for laser jumps and ruins CTF
-2. I don't want players to start out with the shotgun, but with the machinegun
- instead
-3. The map takes so much server CPU performance that the anti-wallhack can't be
- made active
-
-Each of these situations can be resolved with ease with a little work in the
-mapinfo file.
-
-To do this, I can add the following lines to my mapinfo file:
-
- settemp_for_type ctf g_balance_laser_primary_force 200
- settemp_for_type all g_start_weapon_shotgun 0
- settemp_for_type all g_start_weapon_uzi 1
- settemp_for_type all sv_cullentities_trace 0
-
-These "settemp" settings are automatically removed when the map is left and
-another is loaded. As you can see, it is possible to make per-mode temporary
-settings, and global ones.
-
-Similar settings are also possible for the client:
-
- clientsettemp_for_type all r_shadow_glossexponent 96
-
-Another possibility is to specify fog settings in the mapinfo, for convenience
-in case you set sv_foginterval by it too (to force the fog on the clients):
-
- fog 0.2 0.25 0.3 0.3 1 1500
- settemp_for_type all sv_foginterval 5
-
-
-=============================
-=Appendix B - Helpful Extras=
-=============================
-
-----------------
--i. Team Colors-
-----------------
-When you need to set an entity's color or team, use these values:
-
-Red
----
-Team: 5
-Color: 4
-
-Blue
-----
-Team: 14
-Color: 13
-
-Yellow
-------
-Team: 13
-Color: 12
-
-Pink
------
-Team: 10
-Color: 9
-
-
-----------------
--i. Text Colors-
-----------------
-Occasionally you may want to print text in color, such as team names. Here are your options:
-
-1 Red
-2 Green
-3 Yellow
-4 Blue
-5 Cyan
-6 Magenta
-7 White
-8 Grey (transparent)
-9 Grey (solid)
-0 Black
-
-==========================================
-=Appendix C - Advanced Darkplaces shaders=
-==========================================
-
-Shader parameters for DP's own features:
-- dp_reflect <distort> <r> <g> <b> <a>
- Makes surfaces of this shader reflective with r_water. The reflection is
- alpha blended on the texture with the given alpha, and modulated by the given
- color. distort is used in conjunction with the normalmap to simulate a
- nonplanar water surface.
-- dp_refract <distort> <r> <g> <b>
- Makes surfaces of this shader refractive with r_water. The refraction
- replaces the transparency of the texture. distort is used in conjunction with
- the normalmap to simulate a nonplanar water surface.
-- dp_water <reflectmin> <reflectmax> <refractdistort> <reflectdistort> <refractr> <refractg> <refractb> <reflectr> <reflectg> <reflectb> <alpha>
- This combines the effects of dp_reflect and dp_refract to simulate a water
- surface. However, the refraction and the reflection are mixed using a Fresnel
- equation that makes the amount of reflection slide from reflectmin when
- looking parallel to the water to reflectmax when looking directly into the
- water. The result of this reflection/refraction mix is then layered BELOW the
- texture of the shader, so basically, it "fills up" the alpha values of the
- water. The alpha value is a multiplicator for the alpha value on the texture
- - set this to a small value like 0.1 to emphasize the reflection and make
- the water transparent; but if r_water is 0, alpha isn't used, so the water can
- be very visible then too.
-
+==============\r
+=Mapping Help=\r
+==============\r
+\r
+While I can't help you make a map, I can help you get it listed in the menu and\r
+working in the maplist. :p The central object is the .mapinfo file, but\r
+there's much more available.\r
+\r
+Table of Contents\r
+-----------------\r
+I Map Lists & Scripts\r
+ (get your map listed and working)\r
+ i. mapinfo\r
+ ii. mapname.cfg\r
+\r
+II Map Image\r
+\r
+III Domination\r
+\r
+IV CTF\r
+\r
+V Rune Match\r
+\r
+VI Race/CTS\r
+\r
+VII Nexball\r
+\r
+Appendix A - Advanced mapinfo\r
+\r
+Appendix B - Helpful extras\r
+ i. Team Colors\r
+ ii. Text Colors\r
+\r
+Appendix C - Advanced Darkplaces shaders\r
+\r
+========================\r
+=I. Map Lists & Scripts=\r
+========================\r
+\r
+There now is just a single script/cfg file available to you, containing all map\r
+specific settings:\r
+\r
+mapname.mapinfo\r
+\r
+The mapinfo is actually required - however, the game is so nice that it\r
+automatically generates a draft of it for you.\r
+\r
+------------------\r
+-The mapinfo file-\r
+------------------\r
+\r
+*cue even more scary music*\r
+\r
+The mapinfo file is basically what gets your map listed in the menu, and sets\r
+up the options needed to change to it. If no mapinfo file exists, the menu\r
+will automatically generate a rough draft for you on game startup. It will get\r
+stored into data/data/mapname.mapinfo.\r
+\r
+As an example, let's say I make a map called "wazat1.bsp". As long as I'm\r
+fantasizing, I might as well say this map is so well done I'm actually willing\r
+to release it for friends, neighbors, fellow forum visitors and other people\r
+who like me to judge me by. Let's also assume that I want domination,\r
+deathmatch/team deathmatch and runematch to all be playable on my map.\r
+\r
+This is very easy. First, I start the game and exit it again so the game writes\r
+data/data/wazat1.mapinfo for me. The file may look like:\r
+\r
+ title Wazat's Great Map\r
+ description Bleh.\r
+ author Unknown\r
+ _diameter 1966.839355\r
+ _spawnpoints 5\r
+ has weapons\r
+ cdtrack 5\r
+ gametype dm // defaults: timelimit=20 pointlimit=30 leadlimit=0\r
+ gametype dom // defaults: timelimit=20 pointlimit=200 teams=2 leadlimit=0\r
+ gametype rune // defaults: timelimit=20 pointlimit=200 leadlimit=0\r
+ gametype lms // defaults: timelimit=20 lives=9 leadlimit=0\r
+ gametype arena // defaults: timelimit=20 pointlimit=10 leadlimit=0\r
+\r
+As I see, the menu autodetected that my map may be suitable for deathmatch,\r
+domination, runematch, last man standing and arena. But I want the map to be\r
+played in domination, deathmatch, team deathmatch, runematch only, and I also\r
+want different timelimits/fraglimits, so I will change the "gametype" lines to:\r
+\r
+ gametype dom pointlimit=100 timelimit=15\r
+ gametype rune pointlimit=1000 timelimit=25\r
+ gametype dm pointlimit=40 timelimit=15\r
+ gametype tdm pointlimit=50 timelimit=0 teams=2\r
+\r
+Also, while I am at it, I should fix the placeholders in the map description lines:\r
+\r
+ title Wibble\r
+ description A large multi level arena map\r
+ author Wazat\r
+\r
+Although not entirely necessary, I will now move the .mapinfo file from\r
+data/data/maps/wazat1.mapinfo to data/maps/wazat1.mapinfo, so it is at the same\r
+place as my map. Next time I start the game, my map will be shown supporting\r
+the right game modes and with the right description in the menu.\r
+\r
+Also, note the "has weapons" line. If this line is not there (which happens if\r
+the map contains no weapon entities other than the Nex), the map will run in\r
+MinstaGib only and not be shown in the menu normally. So if you look for your\r
+map and don't find it, add "has weapons" to the mapinfo file, and make sure you\r
+have weapon entities placed.\r
+\r
+There's much more power in a mapinfo file. See Appendix A for more details.\r
+\r
+Gametype | Syntax | Notes\r
+----------------+----------------------------------------------------------------------------------------------------------+-------------------------------------------------------\r
+Deathmatch | gametype dm [timelimit=...] [pointlimit=...] [leadlimit=...] |\r
+Team Deathmatch | gametype tdm [timelimit=...] [pointlimit=...] [teams=...] [leadlimit=...] | 2, 3, or 4 teams\r
+Domination | gametype dom [timelimit=...] [pointlimit=...] [teams=...] [leadlimit=...] | 2, 3, or 4 teams, only if map has no dom_team ents\r
+CTF | gametype ctf [timelimit=...] [pointlimit=...] [caplimit=...] [leadlimit=...] | pointlimit if g_ctf_win_mode is 2, otherwise caplimit\r
+Runematch | gametype rune [timelimit=...] [pointlimit=...] [leadlimit=...] |\r
+LMS | gametype lms [timelimit=...] [lives=...] [leadlimit=...] |\r
+Arena | gametype arena [timelimit=...] [pointlinit=...] [leadlimit=...] |\r
+Key Hunt | gametype kh [timelimit=...] [pointlimit=...] [teams=...] [leadlimit=...] | 2, 3, or 4 teams\r
+Assault | gametype as [timelimit=...] | never uses points\r
+Onslaught | gametype ons [timelimit=...] | never uses points\r
+Race | gametype rc [timelimit=...] [qualifying_timelimit=...] [laplimit=...] [teamlaplimit=...] [leadlimit=...] | g_race_teams: teamlaplimit is used instead of laplimit\r
+CTS | gametype cts [timelimit=...] [skill=...] | never uses points\r
+CA | gametype ca [timelimit=...] [pointlimit=...] [leadlimit=...] |\r
+Nexball | gametype dm [timelimit=...] [pointlimit=...] [leadlimit=...] |\r
+\r
+\r
+===============\r
+=II. Map Image=\r
+===============\r
+\r
+So, you've got your map listed in the menu and it plays properly, but the menu\r
+isn't showing your picture! Or the picture is scaled badly! What manner of man\r
+would create such an accursed abomination?!\r
+\r
+Well... That sounds like something I'd do. :D\r
+\r
+And it is really easy: just make a screenshot of the map in action (preferably\r
+with crosshair and HUD switched off), and place it next to the map as\r
+mapname.jpg. For best rendering and file size, make the image in 4:3 aspect\r
+ratio, but scale it to the resolution 256x256 or possibly 512x512. It will look\r
+skewed in your image editing app, but the menu will show it right, and your\r
+graphics card LOVES images of such dimension.\r
+\r
+\r
+=================\r
+=III. Domination=\r
+=================\r
+\r
+In order to get Domination working well in your map, you need to place dom_team\r
+and dom_controlpoint entites. You *must* have at least 3 dom_team entities - 2\r
+minimum teams and one blank one (empty netname and no team). You can have up to\r
+4 teams (5 dom_team entities), and remember: if you set 3 teams, the third team\r
+must be the yellow one, according to the team order.\r
+\r
+Dom Team\r
+--------\r
+classname dom_team\r
+netname name of team (Red Team). Set to "" or don't define for the required\r
+ blank team.\r
+cnt color of the team. See the "Helpful Extras" section for info.\r
+model When this team captures control points, the points turn to this\r
+ model. If this is the neutral team, points start out as this model.\r
+noise Sound to be played on the control point when it's captured. Only\r
+ players nearby will hear it.\r
+noise1 Sound to be played to all players when the control point is\r
+ captured. Also good for an annoncer voice ("Red Team has captured a\r
+ control point")\r
+\r
+Control Points\r
+--------------\r
+classname dom_controlpoint\r
+message message to be displayed to all players when this point is captured,\r
+ preceded by the team's name. This defaults to " has captured a control point".\r
+ You can specify different names for each point, for example " has captured the\r
+ Lava Room".\r
+origin where in the map this point is\r
+wait How often this point gives its controlling team frags.\r
+frags How many frags this point gives each wait cycle.\r
+\r
+Here is an example entry in a .ent file that includes colored text and 3 teams:\r
+\r
+{\r
+"classname" "dom_team"\r
+"netname" ""\r
+"model" "models/domination/dom_unclaimed.md3"\r
+}\r
+{\r
+"classname" "dom_team"\r
+"netname" "^4Blue Team"\r
+"cnt" "13"\r
+"noise" ""\r
+"noise1" "domination/claim.wav"\r
+"model" "models/domination/dom_blue.md3"\r
+}\r
+{\r
+"classname" "dom_team"\r
+"netname" "^1Red Team"\r
+"cnt" "4"\r
+"noise" ""\r
+"noise1" "domination/claim.wav"\r
+"model" "models/domination/dom_red.md3"\r
+}\r
+{\r
+"netname" "^3Yellow Team"\r
+"cnt" "12"\r
+"noise" ""\r
+"noise1" "domination/claim.wav"\r
+"model" "models/domination/dom_yellow.md3"\r
+}\r
+{\r
+"netname" "^6Pink Team"\r
+"cnt" "9"\r
+"noise" ""\r
+"noise1" "domination/claim.wav"\r
+"model" "models/domination/dom_pink.md3"\r
+}\r
+{\r
+"classname" "dom_controlpoint"\r
+"message" " ^3has captured the ^1Hallways"\r
+"origin" "-206.0 -488.8 -150.0"\r
+"frags" "3"\r
+"wait" "5"\r
+"scale" "1.3"\r
+}\r
+{\r
+"classname" "dom_controlpoint"\r
+"message" " ^3has captured the ^1Lavaroom"\r
+"origin" "1457.1 19.9 -110.0"\r
+"frags" "1"\r
+"wait" "5"\r
+}\r
+{\r
+"classname" "dom_controlpoint"\r
+"message" " ^3controls the ^1Nex & Strength"\r
+"origin" "-259.8 299.3 5"\r
+"frags" "1"\r
+"wait" "5"\r
+}\r
+{\r
+"classname" "dom_controlpoint"\r
+"message" " ^3has captured the ^1Upper Platform"\r
+"origin" "539.7 1206.0 182.0"\r
+"frags" "1"\r
+"wait" "5"\r
+}\r
+{\r
+"classname" "dom_controlpoint"\r
+"message" " ^3has captured the ^1Teleport Room"\r
+"origin" "-1000.0 636.2 -16.0"\r
+"frags" "1"\r
+"wait" "5"\r
+}\r
+\r
+\r
+As you can see in the example, there are 5 dom_team ents: one blank, Red, Blue,\r
+Yellow and Pink. Each control point has a different message (giving it a\r
+special name), and the one in the hallways gives 3 frags every 5 seconds\r
+instead of just one, making it more valuable.\r
+\r
+If your map contains the required entities for Domination, the menu will\r
+automatically detect it for supporting Domination. To force the map to get\r
+re-detected after you add such entities, delete the data/data/mapname.mapinfo\r
+file - or simply edit it to add the "gametype dom" line.\r
+\r
+\r
+=========\r
+=IV. CTF=\r
+=========\r
+\r
+Capture the flag needs at least 1 CTF flag per team, and can also make use of\r
+team spawnpoints.\r
+\r
+CTF Flags\r
+---------\r
+classname item_flag_team1 or item_flag_team2\r
+angle direction the flag will point\r
+model model of the flag (default: models/ctf/flag_red.md3 or\r
+ models/ctf/flag_blue.md3)\r
+noise sound played when flag is stolen (default: "ctf/take.wav")\r
+noise1 sound played when flag is returned by a teammate (default:\r
+ "ctf/return.wav")\r
+noise2 sound played when flag is captured (default: "ctf/capture.wav")\r
+noise3 sound played when flag returns itself (default: "ctf/respawn.wav")\r
+\r
+Team Spawnpoints\r
+----------------\r
+classname info_player_team1 or info_player_team2\r
+*note: These function just like info_player_deathmatch, but for one team only.\r
+If you don't make team spawnpoints, info_player_deathmatch is used instead.\r
+\r
+If your map contains the required entities for CTF, the menu will automatically\r
+detect it for supporting CTF. To force the map to get re-detected after you add\r
+such entities, delete the data/data/mapname.mapinfo file - or simply edit it to\r
+add the "gametype ctf" line.\r
+\r
+==============\r
+=V. Runematch=\r
+==============\r
+\r
+Runematch needs only one type of entity to work: rune spawn points. You will\r
+need at least one for each rune (5 minimum at the time of this writing), though\r
+you should probably have more than that in the map. Just give the points a\r
+classname and origin.\r
+\r
+Rune Spawnpoints\r
+----------------\r
+classname runematch_spawn_point\r
+\r
+If your map contains the required entities for Runematch, the menu will automatically\r
+detect it for supporting Runematch. To force the map to get re-detected after you add\r
+such entities, delete the data/data/mapname.mapinfo file - or simply edit it to\r
+add the "gametype rune" line.\r
+\r
+==============\r
+=VI. Race/CTS=\r
+==============\r
+\r
+Making a race map is not hard: you need some special spawnpoints, and some checkpoints.\r
+\r
+Spawnpoints\r
+-----------\r
+classname info_player_race\r
+target targetname of the checkpoint\r
+race_place for finish line checkpoints, the place of the point, or -1 to make it qualifying/CTS-only, or unset to let all the other players spawn\r
+\r
+Checkpoints\r
+-----------\r
+classname trigger_race_checkpoint\r
+targetname some name to target the checkpoint with\r
+cnt number of the checkpoint (or 0 for finish line)\r
+\r
+Note that checkpoints are brush entities, and they should be somewhat thick and\r
+cover the full volume the player could use to get past them.\r
+\r
+Example of entity placement:\r
+\r
+ ###\r
+ ---------------------###---\r
+ / 9999 7 5 3 1>### \\r
+ / 9999 8 6 4 2 >### \\r
+ | ------------------### |\r
+%%%%%%%% ###| |\r
+%%%%%%%% $$$| |\r
+ | ^ ^ ------------------$$$ |\r
+ \ $$$ < /\r
+ \ $$$ < /\r
+ ----------------------$$$---\r
+ $$$\r
+\r
+###: classname = trigger_race_checkpoint, cnt = 0, targetname = finish\r
+$$$: classname = trigger_race_checkpoint, cnt = 1, targetname = cp1\r
+%%%: classname = trigger_race_checkpoint, cnt = 2, targetname = cp2\r
+>: classname = info_player_race, target = finish, angle = 0\r
+1: classname = info_player_race, target = finish, angle = 0, race_place = 1\r
+2: classname = info_player_race, target = finish, angle = 0, race_place = 2\r
+....\r
+8: classname = info_player_race, target = finish, angle = 0, race_place = 8\r
+9: classname = info_player_race, target = finish, angle = 0, race_place = 9\r
+<: classname = info_player_race, target = cp1, angle = 180\r
+^: classname = info_player_race, target = cp2, angle = 90\r
+\r
+If your map contains the required entities for Race, the menu will automatically\r
+detect it for supporting Race. To force the map to get re-detected after you add\r
+such entities, delete the data/data/mapname.mapinfo file - or simply edit it to\r
+add the "gametype rc" line.\r
+\r
+CTS maps do not use checkpoints with race_place set, so you can leave them out\r
+for CTS maps.\r
+\r
+The skill parameter in the mapinfo entry for CTS shall be in the range from 0 (easy) to 10 (impossible).\r
+\r
+=============\r
+=VI. Nexball=\r
+=============\r
+\r
+There are three required entities: nexball_redgoal, nexball_bluegoal, and one of nexball_basketball\r
+or nexball_football. There are also optional nexball_yellowgoal and nexball_pinkgoal entities (don't\r
+add a pink goal when there is no yellow goal on the map, it will crash)\r
+\r
+Goals are made just like any other regular triggers. You can use multiple brushes for one trigger,\r
+but avoid this if possible.\r
+\r
+There are also two other goal-like entities, nexball_fault and nexball_bound, the first taking a point\r
+from the team that hits the trigger with the ball, the second simply returning it. You can spawn the\r
+ball inside a goal-like trigger, this can be useful for basketball maps with separate teams and a\r
+common ball spawn.\r
+The different keys for the entities are documented in entities.def.\r
+\r
+The ball is affected by trigger_impulse, but not by trigger_push or teleporters.\r
+\r
+You should better avoid patches on the field, as collisions can sometimes get buggy on these.\r
+\r
+\r
+===============================\r
+=Appendix A - Advanced mapinfo=\r
+===============================\r
+\r
+You now know how to make a basic, bare-bones mapinfo to set up a couple options\r
+and load your map. However, there's much more you can do! Consider these\r
+senarios:\r
+\r
+1. The laser has too high of a force for laser jumps and ruins CTF\r
+2. I don't want players to start out with the shotgun, but with the machinegun\r
+ instead\r
+3. The map takes so much server CPU performance that the anti-wallhack can't be\r
+ made active\r
+\r
+Each of these situations can be resolved with ease with a little work in the\r
+mapinfo file.\r
+\r
+To do this, I can add the following lines to my mapinfo file:\r
+\r
+ settemp_for_type ctf g_balance_laser_primary_force 200\r
+ settemp_for_type all g_start_weapon_shotgun 0\r
+ settemp_for_type all g_start_weapon_uzi 1\r
+ settemp_for_type all sv_cullentities_trace 0\r
+\r
+These "settemp" settings are automatically removed when the map is left and\r
+another is loaded. As you can see, it is possible to make per-mode temporary\r
+settings, and global ones.\r
+\r
+Similar settings are also possible for the client:\r
+\r
+ clientsettemp_for_type all r_shadow_glossexponent 96\r
+\r
+Another possibility is to specify fog settings in the mapinfo, for convenience\r
+in case you set sv_foginterval by it too (to force the fog on the clients):\r
+\r
+ fog 0.2 0.25 0.3 0.3 1 1500\r
+ settemp_for_type all sv_foginterval 5\r
+\r
+\r
+=============================\r
+=Appendix B - Helpful Extras=\r
+=============================\r
+\r
+----------------\r
+-i. Team Colors-\r
+----------------\r
+When you need to set an entity's color or team, use these values:\r
+\r
+Red\r
+---\r
+Team: 5\r
+Color: 4\r
+\r
+Blue\r
+----\r
+Team: 14\r
+Color: 13\r
+\r
+Yellow\r
+------\r
+Team: 13\r
+Color: 12\r
+\r
+Pink\r
+-----\r
+Team: 10\r
+Color: 9\r
+\r
+\r
+----------------\r
+-i. Text Colors-\r
+----------------\r
+Occasionally you may want to print text in color, such as team names. Here are your options:\r
+\r
+1 Red\r
+2 Green\r
+3 Yellow\r
+4 Blue\r
+5 Cyan\r
+6 Magenta\r
+7 White\r
+8 Grey (transparent)\r
+9 Grey (solid)\r
+0 Black\r
+\r
+==========================================\r
+=Appendix C - Advanced Darkplaces shaders=\r
+==========================================\r
+\r
+Shader parameters for DP's own features:\r
+- dp_reflect <distort> <r> <g> <b> <a>\r
+ Makes surfaces of this shader reflective with r_water. The reflection is\r
+ alpha blended on the texture with the given alpha, and modulated by the given\r
+ color. distort is used in conjunction with the normalmap to simulate a\r
+ nonplanar water surface.\r
+- dp_refract <distort> <r> <g> <b>\r
+ Makes surfaces of this shader refractive with r_water. The refraction\r
+ replaces the transparency of the texture. distort is used in conjunction with\r
+ the normalmap to simulate a nonplanar water surface.\r
+- dp_water <reflectmin> <reflectmax> <refractdistort> <reflectdistort> <refractr> <refractg> <refractb> <reflectr> <reflectg> <reflectb> <alpha>\r
+ This combines the effects of dp_reflect and dp_refract to simulate a water\r
+ surface. However, the refraction and the reflection are mixed using a Fresnel\r
+ equation that makes the amount of reflection slide from reflectmin when\r
+ looking parallel to the water to reflectmax when looking directly into the\r
+ water. The result of this reflection/refraction mix is then layered BELOW the\r
+ texture of the shader, so basically, it "fills up" the alpha values of the\r
+ water. The alpha value is a multiplicator for the alpha value on the texture\r
+ - set this to a small value like 0.1 to emphasize the reflection and make\r
+ the water transparent; but if r_water is 0, alpha isn't used, so the water can\r
+ be very visible then too.\r
+\r