SMARTCTF 4C
SmartCTF is a mutator to promote teamplay in CTF games. It has a special scoring system, as well as an advanced scoreboard showing various teamplay orientated statistics. And many, many more features.
This page contains documentation about the tweaking I did to the SmartCTF mod.
This mod was originally made by {PiN}Kev around January 2004, and linked to http://pin.progameplayer.com/SmartCTF but that site doesn't seem to work anymore.
Tweaked by {DnF2}SiNiSTeR in January - March 2005. Besides listing my changes, on this site you can also find an user / admin manual.Site: http://www.dnfclan.com/~sin/SmartCTF
CONTENTS
CHANGELOG
SmartCTF 4C{DnF2}SiNiSTeRMarch 2005 |
|
SmartCTF 4B{DnF2}SiNiSTeRMarch 2005 |
|
SmartCTF 4A{DnF2}SiNiSTeRNovember 2004 |
|
SmartCTF V4.0{PiN}KevJanuary 2004 |
|
SmartCTF V3.0{PiN}Kev |
|
SmartCTF V2.0{PiN}Kev |
|
INSTALLING
SmartCTF is a client- and serverside mod. This means it has to be installed on the server. It should also be added to the ServerPackages so clients will download it automatically to be able to see stats and the likes.
The steps for Server Administrators are as follows:
Remove all earlier versions of SmartCTF to avoid conflicts!
Extract the .ini, .int, and .u files in the UT\System directory.
You can extract the readme file to UT\Help if you want.
Now open UnrealTournament.ini (in your UT\System folder) and look for [Engine.GameEngine].
Add the following to the list of 'ServerPackages=':
ServerPackages=SmartCTF_4C
Also, if you don't want to select the SmartCTF mutator each time but have it be added to CTF games by default,
you have to add another line to the end of the list of 'ServerActors=':
ServerActors=SmartCTF_4C.SmartCTFServerActor
There's a reason this has to be added at the end. The mutator will take the current scoreboard to show by default, but meanwhile replace it with the SmartCTF scoreboard. If say the ScoreBoard utility MODOSUtilV25 gets loaded after SmartCTF, the MODOS scoreboard won't get detected, or the SmartCTF scoreboard won't show. Note that UTPure also changes the scoreboard in Tournament games, for the clickboard. So place it after UTPure too.
Also, SmartCTF Server Info won't work if you insert the package in the list before UTPure!
For the same reasons, if you don't use the ServerActor but add the mutator manually, try sticking it at the end of the mutator list.
An usual mistake is to edit the UT .ini file while the server is still running. You won't be able to make changes to the file that way.
Ready to go!
OPTIONS IN THE .INI FILE
Just open up the SmartCTF_4C.ini in the UT\System folder. If you can't find it, run a game with SmartCTF one time to generate it with the default options.
Name | Default Value | Description |
CapBonus AssistBonus CoverBonus SealBonus FlagKillBonus GrabBonus |
8 7 2 2 0 0 |
Here you can enter the SmartCTF bonuses. Remember this gets added to default UT scorings. You can only enter integer numbers, and can use something like -1 to decrease in score, for example setting FlagKillBonus to -1 will give 4 points instead of standard 5 on a flagkill. See Scoring. |
BaseReturnBonus MidReturnBonus EnemyBaseReturnBonus CloseSaveReturnBonus |
0.500000 2.000000 4.000000 8.000000 |
If you return the flag in a specific playerzone or really close to the flag. These can be decimal numbers hence the 0.5 pts for base returns. You don't see decimals on the scoreboard. See Scoring. |
SpawnKillPenalty | 1 | If Spawnkill Detection is enabled, this is the amount of points you lose for each spawnkil you do. |
MinimalCapBonus | 5 | Only applicable with the new cap/assist scoring system, this specifies the minimal amount of points a flagcapture is worth. See Scoring. |
bEnabled | True | You can totally disable the loading of SmartCTF by setting this to False. |
bFixFlagBug | True | If True, the flag will be dropped if the FC disconnects or lags out, instead of being sent home which is the default UT functionality. Hopefully this will prevent some 'lagoutcaps' in clanwars. |
bEnhancedMultiKill | False | Enable enhanced multikills. Inserts 2 extra phases, in color changing messages and unlimited MonsterKills. |
EnhancedMultiKillBroadcast | 3 | Ignored if bEnhancedMultiKill = False. Since the MonsterAnnouncer mod is incompatible with Enhanced Multkill, SmartCTF
has a built-in function for it. It will display a message in the console if a player gets a Multi Kill, Triple Kill etc. The value decides from which multkill-level onwards a message should be displayed (as in 2 = Double Kill, 3 = Triple Kill, etc). 0 = no message will be displayed. If you want this functionality but don't want Enhanced MultiKill, use TNSe's MonsterAnnouncer instead. |
bShowFCLocation | True | Players will see the location (playerzone) of their own Flagcarrier in the bottom right corner of the screen. |
bSmartCTFServerInfo | True | Enhanced Server Info under F2. Just check it out! |
bNewCapAssistScoring | True | Utilizes the new scoring system for captures and assists. See Scoring. |
bSpawnKillDetection | True | Detects spawnkills and displays a message similar to the "Head Shot!" message. See FAQ. |
SpawnKillTimeNW SpawnKillTimeArena | 3.500000 1.000000 |
The maximal time after a victim respawns, that the kill can be defined as a spawnkill. For arena (instagib) and NW games. See FAQ. |
bShowSpawnKillerGlobalMsg | True | Will display a global message about the spawnkiller, when someone makes 3 consecutive spawnkils in a row without dieing. |
bAfterGodLikeMsg | False | Enable the additional killingspree message after Godlike, "Too Easy For..", and another one. No sound. |
bStatsDrawFaces | True | Whether to draw the avatars on the Statboard. |
bDrawLogo | True | If True, a player will see a logo on joining the server. Otherwise a console message is displayed. |
CoverMsgType CoverSpreeMsgType SealMsgType SavedMsgType | 0 1 1 3 |
0..3, how to display certain SmartCTF messages. 0 = off, 1 = console message self, 2 = console all players, 3 = HUD message for all. CoverMsg: ... covered the flagcarrier! CoverSpreesMsg: ... is on a multi cover / cover spree ! SealMsg: ... is sealing off the base! Saved Msg: Saved By ...! |
bShowLongRangeMsg | False | Display "Über / Long Range Kill!" similar to the "Head Shot!" message, on non-sniper/insta/trans/deemer kills over huge distances. |
bShowSealRewardConsoleMsg bShowCoverRewardConsoleMsg bShowAssistConsoleMsg |
True | These are the 'reward on cap' and 'assist' messages displayed in the console, you can disable them also. |
bPlaySavedSound bPlayCaptureSound bPlayAssistSound bPlayLeadSound bPlay30SecSound |
True False True True True |
Additional Announcer sounds, "Capture" at a flagcap, "Assist" when you get an assist bonus and "Nice Catch!" if you do a Flagsave. Also "You Got The Lead!" or "You Lost The Lead!" when you make a capture or the opponent makes a capture, when appropiate. And the missing "30 seconds remaining..." sound (sounds a bit odd tho :s) |
bEnableOvertimeControl bOvertime bRememberOvertimeSetting |
False True False |
Please refer to the FAQ for information about Overtime Control. |
Now, understandably we want different settings for a public server and a clanserver. The default
options are somewhere inbetween.
Here is a sample configuration suited for a public funserver. SmartCTF messages are fully enabled
and so are most 'funstuff' features:
[SmartCTF_4C.SmartCTF] bEnabled=True CapBonus=8 AssistBonus=7 FlagKillBonus=0 CoverBonus=2 SealBonus=2 GrabBonus=0 BaseReturnBonus=0.500000 MidReturnBonus=2.000000 EnemyBaseReturnBonus=4.000000 CloseSaveReturnBonus=8.000000 SpawnKillPenalty=1 MinimalCapBonus=5 bFixFlagBug=True bEnhancedMultiKill=True EnhancedMultiKillBroadcast=5 bShowFCLocation=True bSmartCTFServerInfo=True bNewCapAssistScoring=True bSpawnkillDetection=True SpawnKillTimeArena=1.000000 SpawnKillTimeNW=3.500000 bAfterGodLikeMsg=True bStatsDrawFaces=True bDrawLogo=True CoverMsgType=3 CoverSpreeMsgType=3 SealMsgType=3 SavedMsgType=3 bShowLongRangeMsg=True bShowSpawnKillerGlobalMsg=True bShowAssistConsoleMsg=True bShowSealRewardConsoleMsg=True bShowCoverRewardConsoleMsg=True bPlayCaptureSound=False bPlayAssistSound=True bPlaySavedSound=True bPlayLeadSound=True bPlay30SecSound=True bEnableOvertimeControl=False bOverTime=True bRememberOvertimeSetting=False
We don't want too much distraction here, so no big screen messages like "X covered the flagcarrier"
and "X is sealing off the base". Furthermore 'funstuff' like Enhanced Multikill is disabled. Some console
messages remain, but you can tune this down even further if you want.
[SmartCTF_4C.SmartCTF] bEnabled=True CapBonus=8 AssistBonus=7 FlagKillBonus=0 CoverBonus=2 SealBonus=2 GrabBonus=0 BaseReturnBonus=0.500000 MidReturnBonus=2.000000 EnemyBaseReturnBonus=4.000000 CloseSaveReturnBonus=8.000000 SpawnKillPenalty=0 MinimalCapBonus=5 bFixFlagBug=True bEnhancedMultiKill=False EnhancedMultiKillBroadcast=3 bShowFCLocation=True bSmartCTFServerInfo=True bNewCapAssistScoring=False bSpawnkillDetection=False SpawnKillTimeArena=1.000000 SpawnKillTimeNW=3.500000 bAfterGodLikeMsg=False bStatsDrawFaces=True bDrawLogo=True CoverMsgType=0 CoverSpreeMsgType=0 SealMsgType=0 SavedMsgType=3 bShowLongRangeMsg=False bShowSpawnKillerGlobalMsg=False bShowAssistConsoleMsg=True bShowSealRewardConsoleMsg=True bShowCoverRewardConsoleMsg=True bPlayCaptureSound=False bPlayAssistSound=True bPlaySavedSound=True bPlayLeadSound=True bPlay30SecSound=True bEnableOvertimeControl=False bOverTime=True bRememberOvertimeSetting=False
If you want the default UT scoring, and not the SmartCTF enhanced point system, just
set all bonuses to 0 and bNewCapAssistScoring to False.
CapBonus=0 AssistBonus=0 FlagKillBonus=0 CoverBonus=0 SealBonus=0 GrabBonus=0 BaseReturnBonus=0.000000 MidReturnBonus=0.000000 EnemyBaseReturnBonus=0.000000 CloseSaveReturnBonus=0.000000 SpawnKillPenalty=0 MinimalCapBonus=0 bNewCapAssistScoring=False
Any client logged in as admin can easily change these settings by typing commands like this in the console:
admin set SmartCTF CapBonus 5
admin set SmartCTF bShowFCLocation False
Use a command like admin get SmartCTF bFixFlagBug to request the current value.
Note that some properties might require a restart of the game to take effect!
POINTSYSTEM AND RULES
SmartCTF changes the points you receive. They can now be changed by the server admin, if you want to check a certain server's settings just type 'mutate smartctf rules' in the console. Here is the default setting.
Action | UT Score | SmartCTF Bonus | Total |
Capture** | 7 | 8 | 15 |
Assist** | - | 7 | 7 |
Flagkills | 5 | 0 | 5 |
Covers | 1* | 2 | 3 |
Seals | 1* | 2 | 3 |
Grabs | 0 | 0 | 0 |
Flagreturns in own base | - | 0.5 | 0.5 |
Flagreturns in mid | - | 2 | 2 |
Flagreturns in enemy base | - | 4 | 4 |
Flagreturns really close | - | 8 | 8 |
Spawnkill | 1* | -1 | 0 |
An Assist is if you carried the flag, but dropped it and a teammember took over and capped.
A Cover is defined as a kill while defending your flagcarrier. This has to do with distance as well as enemies seeing the flagcarrier.
A Seal is defined by:
1) Your FC is on your team's side of map.
2) Your flag is not taken.
3) You kill some one on your side of the map.
If the FC that you covered and/or sealed off the base for, caps, then you once again get bonuses for each such kill you made (so coverkills x 2 pts, sealkills x 2 pts).
Seals and Flagreturns require maps with proper zone names, that is player locations that contain "Red", "Blue" and "Mid" in their text.
A Flagsave is a Flagreturn really close to the enemy flag which has not been taken. This is accompanied by a "Saved By" message.
A Spawnkill is defined in the FAQ.
With the setting bNewCapAssistScoring enabled, the points for Assist and Captures will be divided based on the time each player carried the flag!
It uses the total amount of points normally awarded for a capture (by default 15, see table). So you can configure
CapBonus to change this. If you capped a flag doing a solorun, then you get all the points because you
carried it 100% of the time. If someone carries a flag for 15 seconds, drops it, you pick it up, carry it for 5 seconds
then cap, then you get 25% of the points and the assister 75% of 15 points.
If you drop a flag and later pick it up again, then the new time will be added to the old.
There's also a setting to give a flagcapper a minimal bonus. For example if someone pickups a dropped flag 1 meter for the flag and caps, he would get very little points, even if it was a nice rescue. With MinimalCapBonus you can adjust this and set a lower bound. By default this is 5, so a capture would give you at least 5 points. More if applicable.
With bShowAssistConsoleMsg on True, you will see a console message telling you how much seconds you carried it.
This was not fully my idea, because I've played on a server once with this functionality enabled. I don't know how the mod was called, how it exactly worked or who made it, and couldn't find anything on the Internet. So I just went and made my own implementation of it. But credit to whoever's original idea it was.
COMMANDS AND KEYBINDS
The following commands can be typed by clients in the console:
mutate smartctf
General info.
mutate smartctf stats
Toggle between the default scoreboard and the SmartCTF scoreboard. Basically this
sets what you will see under F1. In the top right corner of the screen you can see for a moment which is selected.
When the game starts, you always begin with the default. When it ends, you will always toggle to the SmartCTF scoreboard.
mutate ctfinfo
Gives an overview of all SmartCTF related settings on that server
(Like UTPure's "CheatInfo" command).
mutate smartctf rules
Shows all bonuses settings for the server.
mutate smartctf forceend
An admin can force the game to end, even if it is a tie.
SmartCTF ScoreBoard will also show up.
mutate smartctf clearstats
Admins can also choose to clear the SmartCTF stats.
mutate overtime <on|off>
Only matters when bEnableOvertimeControl is True. By simply typing "mutate
overtime" you can check if Sudden Death Overtime is currently enabled (by default it is). "mutate overtime off" (admins
only) will make sure that if the map ends in a tie when the timelimit is reached, the game ends anyway.
Don't use for decider maps! See the FAQ for detailed information.
A good tip is to bind the toggle command to F3. This key only gets used for Assault so
for CTF its free. Bind F3 as follows in your User.ini:
F3=ShowObjectives | mutate smartctf showstats
Now it will display the objectives during an Assault game and toggle the SmartCTF statboard during a CTF game (also compatible with older versions of SmartCTF).
Note: you can now also bind the command using the UT settings window, under Controls.
FAQ
When is a kill defined as a cover kill?
Here is the technical information. When:
- the victim is within 512 uu (10 meter) of your flagcarrier, or
- you are within 512 uu (10 meter) of your flagcarrier, or
- the victim is within 1536 (30 meter) of your flagcarrier and can see him, or
- the victim is within 1024 (20 meter) of your flagcarrier and you can see your flagcarrier, or
- the victim is within 768 (15 meter) of your flagcarrier and can see him if he turned.
When is a kill defined as a seal?
a) The opponent's team doesn't have the flag, but your team has.
b) You kill an enemy on your side of the map.
c) Your flagcarrier is also on your side of the map.
"Your side of the map" means you are in a level zone with your color in its name
(Like "Red Base" or "Blue Corridor").
How does SmartCTF check where I return a flag?
It checks the names of the level zone you are in when you did the kill
(like "Red Base", "Blue Corridor" or "Upper Mid").
Let's say your team is Red, then it checks for, and rewards as:
"red" = Return in your base.
"blue" = Return in enemy base.
Neither = Return in the middle.
900 uu (17 meter) from opponent flag = Close save.
What is Overtime Control?
This setting allows you to control whether Sudden Death Overtime should kick in,
when the time limit is reached and the cap scores are currently tied. If you don't
want to worry about this, simply leave bEnableOvertimeControl to False.
If it's set to True, you can set bOvertime to control it. You may want to use this
for official maps to make sure your opponent won't have a deciding cap 0.5 seconds
out of time (this is hard to tell). Instead, make sure the game ends even when
its tied. bOvertime = False does just that. For deciders don't forget to set
bOvertime back to True.
Because this is a tricky setting considering deciders (which require overtime),
you won't want to mess this up. By default bRememberOvertimeSetting = False, making
sure at each mapchange, bOvertime will be set back to True (= safe). Setting it
to True will ensure the bOvertime setting gets remembered through mapchanges.
Use "mutate overtime" to see the current setting. Also, when the tournament
game starts, you will see a big text for a few seconds, indicating whether it
is on or off. See Commands section.
How do I see stats mid-game?
See Commands section.
OMG I'm a spawnkiller! How does SmartCTF define this?
You get a spawnkill whenever you kill someone who has spawned less than 5 seconds ago,
AND hasen't picked up any weapons or meaningfull pickups yet. Thus, is defenseless.
The rule for Arena games such as Instagib, Rocket Launcher Arena and Sniper Arena is
different. Then, a spawnkill is any kill within 1 second after your victim spawned.
If you get 3 spawnkills in a row without dieing yourself, the server can be configured to
broadcast a message saying you are a LAMER!
From version 4C, the mentioned timelimits can be configured with
SpawnKillTimeNW and SpawnKillTimeArena.
What do the abbreviations on the statboard mean?
Personal stats; HS: Number of HeadShots made, SB: number of ShieldBelt pickups,
AM: number of Damage Amplifier pickups, TM: time in minutes in the game, EFF: efficieny
aka the frag/death ratio, P/PI: ping, L/PL: packetloss %.
Team stats; PING: average team ping, PL: average team packetloss, TM: time in minutes
the game is running, SB: % of ShieldBelts picked up in relation to the other team,
AM: % of Damage Amps picked up in relation to the other team.
Footer; TR: TickRate of the server.
CONTACT
Contact {DnF2}SiNiSTeR on #DutchNet @ QuakeNet IRC
Or via the e-mail on this page.