Psycho Mod

Here we have the latest version of the psycho mod, view the read me for the details!


Do not refresh or leave this page!

File Description

Here we have the latest version of the psycho mod, view the read me for the details!

Read More

Download '' (189KB)

This document is intended to introduce the Psycho Mod and its various features.  It will be broken into four parts, namely:  Overview, Features Not Seen in Other SOF2 Mods, Credit for Ideas taken from other mods, and finally, Detailed Overview of all mod functionality.  Where I have praise for another mod, I will mention the mod by name.  Where I have criticism, the name will not be mentioned.  It is very easy to pick apart someone else’s work.  I will give credit where I have used or modified the ideas of others, I ask the same be done in regards to my work.

	This mod was written for several reasons:
#1) I wanted to understand how a mod works (in particular SOF2 and how the qvms communicate with the underlying game engine)
#2) I liked some of the things that I saw in the Sneaky Mod, and I liked some of the things that I saw in the OSP Mod, and I figured that since I was mucking about with the code anyway, I might as well create something fun and useful for SOF2 server administrators and players
#3) I was layed off a few months ago (Systems Level Software Engineer by Trade) and this was a way to keep me coding (or at least add a little fun coding in to the mix).

There were a number of objectives that I wanted to meet in designing and building this mod:
#1)  That it be server-side only
#2)  That it have features that both admins and the GP (general public) would want and find useful
#3)  That it be reliable.  By reliable, I mean that I wanted it to be suitable for administering clan matches, ladder matches etc.  There are mods out there for example, that offer a ‘Game Pause’ functionality.  When I was trying to incorporate this feature into my own mod, I realized that when some mods ‘pause’ the game, they lose track of the total time elapsed.  As an example, let’s say you pause a ctf game 10 minutes and 12 seconds into the game.  Further, let’s assume you pause the game for 1 minute and 30 seconds.  When the game is fully ‘unpaused’, you should be at 10 minutes and 12 seconds, correct?  However, this is not the case with some mods out there, you end up *resetting* the game timer when you pause, which is not what is wanted (meaning your gametimer would now be at 1 minute and 30 seconds after resuming gameplay).  I have tested, retested and tested again, the game pausing functionality in this mod with various gametypes (ctf, inf, dem, dm, elim) and the gametime is accurate to within 1 second, perhaps 2.  Additionally, some mods have a team locking functionality.  I’ve noticed that if you lock the team (say blue) with two players, people still can join sometimes and therefore increase the number.  As an administrator, I found that to be irritating.  When I lock a team, I want no one to be able to join it.  I believe I have reached that objective in the Psycho Mod.
#4)  That if offer features to admins that day-to-day administrators will find practical and *useful*.  Sure, I could have given you 297 commands and let you become gods, or give yourself or other players health, speed, ammo, etc.  But I don’t feel that a mod that offers ‘everything’ is very useful (or trustworthy for competiton for that matter).  Plus, it is generally ridden with bugs.  My purpose with this mod is not to negate the usefulness of /rcon, nor is it to negate the use of mapcycle files.  As an example, there is a mod that someone introduced me to just last week after they heard about the Psycho mod.  I tried it out and it was a nightmare of inefficiency and bugs.  I hope that the Psycho mod is not this.
#5)  This is really a corollary to #3, but I’ll give it it’s own number.  Admins should be able to be invisible if they want.  *But* when it’s time for a serious match, a visiting clan should be assured that there is no deception at hand.  If admins are operating in stealth mode, the /listadmins command only works for admins.  Period.  *Any* admin action is done anonymously, whether it be via the standard admin voting mechanism, the various punishments, muting, etc.  All are displayed to clients as “An Admin did this or that.”  However, when an admin executes /adm stealthmode, this means that /listadmins now works for all clients and shows the connected admins suspended/unsuspended status.  This is especially important for clan matches, so all parties concerned can be assured of a fair game.  Also, when the admins come out of stealth mode a general message is sent to all connected clients with a sound cue notifying them of such.  (Even the various tokens will only display ‘An Admin’ if a person is killed via one of the admin punishment commands.  J )
#6)  I wanted admins to be able to be held accountable for their actions.  Although it is rare, occasionally a member will be granted admin privileges and then abuse them.  As a consequence of this, every admin action is recorded into the log file.  Each admin action results in a line that details the admin, the action and the client affected (if applicable).
#7)  I wanted it to be configurable.  I can’t think of everything that someone out there might want, but I left it as what I saw need of and what I thought others might want control over.

Features Not Seen in Other SOF2 Mods:

#1)  When wanting to talk to admins exclusively or wanting to talk as an admin, I have always found it a bit irritating at the need to drop down the console and type in the whole command line stuff for it to work.  Every mod I’ve seen does it like this.  It seems that in order to have messagemode capabilities (i.e. press a key on the keyboard and the ‘say:’ prompt appears) that a client-side solution was required.  On the ‘last’ day of coding, a potential server-side only solution occurred to me.  I gave it a try and it worked.  So, in order to utilize the /adm chat, /adm say, and /clanchat functionality, you have two choices:  you can drop down the console and proceed as normal, *or* you can merely press your messagmode key (usually T) and type ‘aac’, ‘aas’, or ‘cc’ then whatever message you want, and it will be interpreted correctly.  An example would be to press the messagemode key (usually T), which would present you with the ‘say:’ prompt, at which you could type if you are an admin:  aac this message is only for admins.  All admins would receive the message: this message is only for admins.  It doesn’t get any easier than this.  J  No more need to drop down the console for adm chat and say functionality!
#2)  If g_pwByPassForAdmins is set to 1, admins do not have to supply a password on a passworded server.  This was motivated by my testing my mod on a publicly visible server.  Every time I connected, I had to supply a password.  It dawned on me around the 270th time, that an individual trusted with admin rights would very rarely ever want to be kept off the server.  Why make an admin hunt down people via group messaging boards, or instant messenging to retrieve a password that shouldn’t be necessary in the first place?
#3)  The concept of a clan member list.  This is a separate list and file from the admins list.  This was motivated by members of my clan occasionally being voted off of our own servers merely because they are extremely good players and have a very good ratio.  Therefore, members that are in the clan member list can not be kicked from their own server, except by an admin.
#4)  This is related to #2.  With a clan member list comes the functionality of having ‘ClanChat’.  Using the command /clanchat (or ‘cc’ when utilizing messagemode), a clan member can send a message that will only be seen by fellow clan members and admins.  This way, clan members can communicate privately (private in the sense that the GP won’t be privy).  The feedback on this so far has been very positive.
#5)  Other mods have the /adm strike functionality for punishing a player before perhaps eventually kicking/banning them.  I have included this functionality, but I have added three more:  /adm tearup, /adm invade and /adm boot.  The first one very graphically dismembers a player and plays one kind of siren.  The second teleports the admin to the player’s location and then rips the client to shreds while playing another siren.  It emulates the admin ‘wearing’ the other client’s skin briefly before tearing out of it.The third places an imaginary boot through the misbehaving client’s face (again graphically) and plays yet another siren.
#6)  Unique punishments for campers and spawnkillers.  I like the Sneaky Mod’s attention to spawnkillers.  Unfortunately, what I noticed on our own servers is that people placed in the penalty box usually just disconnected then came back.  I thought about adding in a spawn kill engine, but by and large, I feel that admins make the best decision on when and how to punish someone, and if an admin is not connected, players will usually vote to kick a spawnkiller.  With that in mind, I created the /adm punishSK command.  In creating this command, I wanted the punishment to be appropriate to the crime.  If a spawn killing player likes killing in spawn so much, why not place him in his enemie’s spawn and *plant* him there with no weapons.  It has to be seen to be believed, but this command transports the offending player (wherever he may be) into the enemy spawn, strips him of *all* weapons (not even a knife), leaves him holding a smoke grenade that he cannot utilize, and plants his legs in the ground so he is immobile and completely helpless.  I figure the players getting spawnkilled can take it from there. J  As regards campers, again, I took the approach, if they like the spot so much, why not *plant* them there?  So, /adm plant takes the camping cheap-shot player and immobilizes him.  Leaves him with ammo, but he will stay there until killed or he kills himself.  I have found this to be very effective.  With all of these, the offending player is notified via a screen message as to the reason, and all clients are alerted of the punishment via a standard message.
#7)  Sound chatting is customizable.  The idea for sound chats came to me from the Sneaky Mod.  I wanted it so that players could choose their own colors for the text that displays with a certain sound.  As an example, in a bind you could have @171 which would display in the standard messaging color, or you could have in your bind @^S171 for a flourescent green color.  You can make the chat sound text any color you wish.  Additionally, I didn’t add ending punctuation, so if you added a name after a sound token, it wouldn’t look awkward.  i.e. @84 #	D! would give ‘Nice shot <playerName>!’ not ‘Nice Shot! <playerName>!’.  And of course that text could be any color of your choosing.  The sounds generated by the sound tokens can be either global or local on a dynamic basis.  I have them set to local by default, but if an admin comes on that wants them global, he utilizes /adm globalChat (which acts as a toggle, use the same syntax to turn off again).  Also, the chat sounds are controlled by the same mechanism that controls team chat flooding.  But, if an admin doesn’t want players to have any limits, he can do so by /adm chatflood, which again is a toggle.  And of course, the chat sounds can be eliminated entirely via the g_soundTokensAllowed Cvar.  Only one sound token can be utilized per bind, which means that a player can’t come up with an annoying bind that creates horribly garbled and loud sound.  Furthermore, ghosts and spectators are not allowed to utilize the sound tokens J, which can become quite annoying.  Plus, there’s 175 available sounds with indexes ranging from 0 – 174.
#8)  Death/Kill/Damage/Headshot tokens.  First off, I’ve noticed in all the mods that I’ve played on or investigated, that some of the tokens don’t work until the player has respawned.   All of my chat tokens work in a manner that you don’t have to wait to respawn to use them.  #T is the last player you killed, #t is the last player you damaged, #D is the last player that killed you, #d is the last player that damaged you, #H is the last player you got a headshot on, #h is the last player that shot you in the head.  Theoretically, these can all refer to different players.  I usually am only interested in who actually *killed* me for congratulations, or who I actually *killed* for playful taunting.  Most mods out there just have damaged variants, and I’ve never seen one that offers a headshot token.  Unless there’s a *great* demand, I’m not going to put armor / health / weapon tokens in because I find them to be totally useless.  Serious players in serious matches communicate via voice, not via health/weapon binds.
#9)  Headshot sounds are psuedo-random from a list of a possible 5.  Additionally the headshot text displayed is more descriptive and informative.  Certain headshots with alt or unconventional weapons generate their own totally unique sounds.  Experiment and see.  The headshot sound can also be made global or local via the /adm globalHS command toggle.
#10)  If a connecting client is in the admin list or clan list, the MOTD displayed indicates their status right under the Mod Info line.  If the connecting client is not in either list, the line under the Mod Info line is blank.
#11)  Every admin action is logged to the log file, with the admins name, the action and the client affected (if applicable).  This is independent of whether admins are operating in stealth mode or not.
#12) A /listadmins command available to clients.  If admins are operating in stealthmode, the client (unless an admin) receives a message informing them of such, but no listing.  If stealthmode is off, then the client sees a list of admins and their status (whether they have suspended their privileges or not).
#13) Admins can transport players, but not themselves.  Most admin actions can be done to the admin themselves, but this one could easily misused, so I made it that admins can’t transport themselves.  If their powers are suspended, they can’t transport anyone.
#14) Only clan members may be voted in as referees.  I added the /callvote makeref and and /callvote removeref votes so that in the absence of an admin, a clan member can take on certain powers.  I limited this to clan members because occasionally I have seen it where a clan ‘invades’ a server, votes themselves as referees and then wreaks havoc on the server and/or players (this all occurring without an admin present).  This way, that possibility is eliminated from the equation.
#15) Admin stealthmode.  When stealthmode is activated, admins are *completely* anonymous, and any and all actions list only that ‘An admin’ did such and such an action.  The stealthmode can be toggled on/off via the /adm stealthmode command.  Even if a client is killed via an admin action, the admin that did it will not appear to the client (i.e. the ‘Killed by’ message will not show the admin’s name).  Other mods claim anonymous activity, yet list the admin’s name for kill actions as well as others.  Additionally, if the player killed tries to utilize the #D or #d token to list the name of the player that killed them or damaged them last, only ‘An Admin’ will be displayed.  True anonymity is here at last (if you want it).
#16) Via the /adm allowvote command, an admin can turn off *all* voting in the event they are getting tired of canceling votes continually.
#17) Other mods have the ability to hit a client with various appliances.  I have added similar functionality, but made it so that the horizontal direction vectors are not the same everytime.
#18) Some admins like friendly fire on (I do, because it makes me a more skilled player) and some like it off.  By utilizing the /adm friend command, an admin can toggle friendly fire on/off.
#19) Occasionally, in our clan we like to ‘haze’ new members.  Unfortunately, without rcon, and without properly working team lock functionality, it has been very frustrating (impossible, in fact) to get it so that one player (the initiate) is on a locked team by themselves, and other clan members, say 5 or 6 are on the other team.  Between the properly working team lock functionality and the /adm teambalance command, the g_forceTeamBalance Cvar can be negated.
#20) If a vote is called to kick either admins or clan members, the vote is immediately canceled, and the client that called the vote has 20 health points deducted.
#21) #z is a chat token that contains the name of the player who most recently signed on.  I came up with this because it’s nice to greet people by name, and I have combined #z with some of the sound tokens for various kinds of greetings.
#22) With the use of the g_adminsImmune Cvar, admins can be made completely invulnerable to any harmful actions by other admins.
#23) Ghosts and spectators are immune to most of the admin actions (i.e. what’s the point in dismembering a ghost, or striking a spectator, etc. ?)
#24) For the admin actions that kill a player, there is *no* respawn invulnerability for the player which means the admin can execute the action as soon as the player respawns.
#25) When the mapcycle is disabled via the /adm togglecycle command, the mapcycle is *truly* disabled.  Admins can select, or players can vote for different maps with no problems, but votes or admin actions to go to the next map are rerouted to restart the current map.  Additionally, the effect of the /adm togglecycle command stays throughout all map changes, restarts and gametype changes.  Some mods claim to disable the mapcycle, but allow clients to cycle to the next map via a vote, or if the map and/or gametype change, the mapcycle is back in effect.  True mapcycle disabling is here.
#26) Admins can utlize the Punkbuster ban, kick and screenshot features via the /adm pbpermban <clientID> <reason>, /adm pbkick <clientID> <duration> <reason>, and /adm pbscreenie <clientID> commands.  *All of these work using the SOF2 Ids without having to know the Punkbuster slot numbers*.

Credit for Ideas (from other mods):

This is a listing of features that I saw in other mods and incorporated into my own mod.  I neither had, nor do I have access to any source code, so the implementation of all functionality is mine.

Feature				First Seen
Message of the Day		OSP
Game pause			OSP
Team Lock/Unlock		OSP
Chat Tokens			OSP
Cancel Vote			OSP
Admin Concept		OSP
Admin Chat			OSP
Admin Say			OSP
Admin Strip			OSP
Admin Strike			OSP
Admin Suspend		OSP
Referee Concept		OSP
Coloured Names		OSP
Last Alive Msg		OSP (0.1d)
Sound Tokens			Sneaky
Server Settings		Sneaky
Spawnkill Penalties		Sneaky
Mapcycle Disabling		Sneaky
Stats Screen			Sneaky (0.1d)
Utilizing PB in Mod		RTW Mod

Detailed Overview of Mod Functions and Syntax:

all commands must start with the forward slash character / 
<> indicates that the argument contained within can be one or several values)

General User Commands and Features:
?		-this displays all available user commands
motd		-this brings up the message of the day for the client
sounds1	-lists sounds 0 - 43
sounds2	-lists sounds 44 - 87
sounds3	-lists sounds 88 – 131
sounds4	-lists sounds 132 – 174
settings	-this lists relevant gameplay and server information
listadmins	-if admins aren’t in stealthmode, lists admins and their status
credits		-gives mod credit and also lists my email address for bug reports

-the following two enhance existing voting functionality-
callvote makeref <clientId>		-vote to make a clan member a referee
callvote removeref <clientId>		-vote to remove a clan member as referee

#T	Name of last player you killed
#t	Name of last player you hurt
#D	Name of last player that killed you
#d	Name of last player that hurt you
#H	Name of last player you shot in the head
#h	Name of last player that shot you in the head
#u	Own player’s name
#z	Name of most recently connected client

@T,t	Generate a random sound
@n	Generate a sound where n is any number between 0 and 174 inclusive

All sound tokens can be further modified to change the color of the output text.  Valid examples are:


If a player is a clan member (i.e. in the clan member list), he can utilize the /clanchat command to speak exclusively to other clan members and admins.  The /clanchat capability is *great* for exclusive binds, but if the player just wants to chat with other clan members and admins on the fly, it is much easier to use the built in messaging functionality via messagemode (usually the T key) and type cc and then whatever the message is.  No more need to drop down the console!  This functionality (i.e. cc) does *not* work with binds.  If you want to bind something for clan chat use /clanchat in your binds.

Referee Commands:
ref cancel	-cancel the current vote in progress
ref pause	-pause the current game
ref lock	-lock both red and blue teams
ref lock <t>	-lock either red or blue team (t can be either ‘red’ or ‘blue’)
ref unlock	-unlock both red and blue teams
ref unlock <t>	-unlock either red or blue team (t can be either ‘red’ or ‘blue’)
ref helpone	-display information about the various referee commands

Furthermore, if a clan member is a referee, that status stays with them as long as they aren’t voted out and they stay connected to the server.  When utilizing the existing Callvote HUD interface, referee ‘votes’ are not really votes at all, but are interpreted as commands.  A wide variety of ‘votes’ are interpreted as commands (same goes for admins, but they can call any vote regardless of whether the vote is disabled or not).  Specifically, a referee cannot make another clan member a referee (i.e. it will proceed via the normal voting process).

Admin Commands:
- *** means admin name will *not* be shown if stealthmode is active -
-local vs. global means that only clients in the vicinity will hear the sound vs. everyone connected hearing the sound-

adm cancel		-cancel the current vote in progress
adm chat		-chat exclusively with other admins
adm say		-talk as an admin to all clients ***
adm mute <Id>	-mute the client matching Id ***
adm strip <Id>		-remove all weapons from the client matching Id ***
adm smack <Id>	-randomly knock about the client matching Id ***
adm teleport <Id>	-teleport the client matching the Id to an undisclosed location ***
adm plant <Id>	-plant a camping client matching Id where he stands ***
adm punishSk <Id>	-strip client matching Id and plant him in his enemy’s spawn ***
adm tearup <Id>	-kill the client matching Id via total dismemberment ***
adm strike <Id>	-kill the client matching Id with lightning *** 
adm invade <Id>	-kill the client matching Id by wearing their skin briefly ***
adm boot <Id>		-kill the client matching Id via a boot through the face ***
adm stealthmode	-toggles stealthmode for all admins
adm suspend		-toggles the calling admin’s advantage giving priviliges
adm pause		-toggles game pausing and resumption
adm friend		-toggles friendly fire on/off
adm chatflood		-toggles sound token flooding control on/off
adm globalHS		-toggles whether headshot sounds are local or global
adm globalChat	-toggles whether the sound tokens are sounded locally or globally
adm lock		-lock both red and blue teams
adm lock <t>		-lock either red or blue team (t can be either ‘red’ or ‘blue’)
adm unlock		-unlock both red and blue teams
adm unlock <t>	-unlock either red or blue team (t can be either ‘red’ or ‘blue’)
adm teamBalance	-toggles the g_forceteambalance Cvar
adm allowVote	-turns on or off all voting privileges
adm freezeCycle	-mapcycling on or off (same map will repeat)
adm helpOne		-help page number one 
adm helpTwo		-help page number two 
adm helpThree	-help page number three

adm forceTeam <Id> <t>	-forces the client matching Id to another team (t can be ‘red’, ‘r’, ‘blue’, ‘b’, ‘spectator’, or ‘s’)

adm pbpermban <Id> <reason> -permanently bans the client matching Id from the server by GUID.  The reason, if more than one word (i.e. if it contains spaces) *must* be in quotes, as in:
/adm pbpermban 0 “you cheat and no one likes you!”

adm pbkick <Id> <duration> <reason> -kicks the client matching Id for duration minutes.  The reason, if more than one word (i.e. if it contains spaces) *must* be in quotes, as in:
/adm pbkick 0 5 “nobody here likes you” would kick client 0 for 5 minutes.

adm pbscreenie <Id> -this takes a Punkbuster screenshot of the client matching Id and stores it in the Punkbuster screenshot folder for review by senior admins at a later time.  If an admin is suspicious of a player, he can utilize this functionality without needing rcon privileges.

adm pbCommandHelp -lists online help for the Punkbuster related commands

Admin particulars:
- %% indicates loss of the privilege when an admin suspends their powers -

Can’t be voted or kicked off of the server
Do not aquire Team Kill percentage points %%
Follow *any* player on either team and free float, irregardless of server settings %%
All votes called by an admin are interpreted as commands
Admin votes can be called within the first minute of a map change
Admin votes can be called during an intermission
An admin’s suspend status stays throughout all level and gametype changes

If a player is an admin, he can utilize the /adm chat command to speak exclusively to other clan members and admins, and the /adm say command to speak as an admin to all players.  The /adm chat and /adm say capabilities are *great* for binds, but if the player just wants to chat with other admins or talk as an admin to all players on the fly, it is much easier to use the built in messaging functionality via messagemode (usually the T key) and type aac or aas and then whatever the message is.  No more need to drop down the console!  This functionality (i.e. aac and aas) does *not* work with binds.  If you want to bind something for adm chat or adm say use /adm chat and /adm say in your binds.

New Rcon commands:
addadmin <Id>		- adds client matching Id to the admin’s file
removeadmin <Id>		- removes client matching Id from the admin’s file
addclanmember <Id>		- adds client matching Id to the clan member’s file
removeclanmember <Id>	-removes client matching Id from the clan member’s file

Various Cvars:
g_soundTokensAllowed	-allow/disallow user generated sounds (@t, @n)
g_headShotSound		-turn on/off the head shot sounds
g_headShotText		-show or hide the head shot text displayed
g_globalHSSound		-global or local headshots generated sounds
g_globalChatSound		-global, local or personal user generated sounds (@t, @n)
g_chatFloodControl		-limited/unlimited user generated sounds (@t, @n)
g_messageOfTheDay		-message of the day text (see example following)
g_modifiedDamage		-does the server run modified damage?
g_pwByPassForAdmins	-allow admins to bypass password entry on server
g_adminsEnabled		-all admin functionality on/off
g_refsEnabled			-allow/disallow referees on the server
g_clanListEnabled		-clan members recognized or not
g_allowColoredNames	-coloured names for team games on/off
g_adminsImmune		-are admins immune to another admin's action?
g_adminStealthMode		-whether admins are visible/invisible

Summing Up:
The tokens are made for bind use.  Not for people using messagemode and typing in various tokens.  This means that I don’t have too look at every single byte of every single buffer coming through as chat/say/talk commands.  I did this because I know most people use binds anyway.

What follows are just a few examples of what I am talking about.  I wanted it to allow for individual player’s creativity as much as possible.

For people that killed me-
bind f7 “say @^27 #D.”
bind f7 “say @^@8 #D.”
bind f7 “say @^%74 #D!”

For people I killed-
bind f7 “@109 #T?”
bind f7 “#u is @127 #T!”
bind f7 “@65 #T.”
bind f7 “@95 #T!”

Saying hello to someone who just signed on-
bind f7 “@21 #z!”
bind f7 “@29 #z.”
bind f7 “@123 #z?”

An example message of the day:
(The maximum length of the MOTD is 256 characters.  This includes any space utilized for colorizing the text.  Therefore, ^$Welcome ^&To ^#Our ^PServer uses up 29 characters.  The sequence \n is interpreted as a new line of output.)

set g_messageOfTheDay “Welcome to^4Our^7Server\nThis is the second line.\nThis is the third line\nThis is the fourth line\nThis is the fifth line”

**********NEW FEATURES IN VERSION 0.1D**********
#1) a stats screen at the end of a level.  This screen is custom tailored to each gametype, so if you're playing ctf you'll have different stats listed than if you were playing inf, elim, dem, etc.  For all gametypes it displays Headshot stats (Deadeye = player with most headshots, Magnet = player who got shot in the head the most times), most Kills per Minute of Play stats, and Suicide stats / Team kill stats (whether suicides are counted or teamkills are counted depends on the friendly fire and team kill penalties on the server).  For CTF it displays Flag stats (Saves = player that killed an enemy carrying his teams flag the most, Hog = player that captured the most flags for his team), for INF it displays Briefcase stats (Killer = player that had the most kills of the player carrying the briefcase, Escapist = player who escaped with the briefcase the most times), for DEM it displays Bomb stats (Killer = player that had the most kills of the player carrying the bomb, Expert = player who successfully planted and detonated the bomb the most times and/or who defused the bomb successfully the most times).  The stats screen is controlled by the g_displayEndStats Cvar.

#1a) *Plus*, you can control how long a player must be in the game to qualify for the stats screen via the g_qualifyTime Cvar.  Setting this value to 10 (the default) means that a player must have been in the game 10 minutes to be shown in the stats screen.

#2) In games with a timelimit, if the score is tied and the timelimit has been reached, there is a sudden death overtime message displayed and a global sound cue.

#3)  A whole new referee subsystem has been created that allows you to fine tune the *exact* capabilities you want your referees to have.

#4) The option (via the g_autoRefClanMember Cvar) to automatically make clan members referees when they sign on.  This way you can totally disable voting on your server, but your clan members can have the powers you designate.

#5)  this one is only of interest if you are running a damage mod (or want to  ).  Via a new Cvar (g_useWeaponModNum) you can change which dmg mod you are using *on the fly*.  Normally, you need to have a weapon mod in a .pk3 file in your base or mp folder.  In order to change it, you need to bring the server down, make whatever changes you want, save the file back into the .pk3 and then restart the server.  Also, this means that clients who have downloads enabled will try to download the file, and if you have downloads disabled (which you should if you don't want your mod downloaded) they won't be able to connect.  With this change, setting g_useWeaponModNum = 0 (the default) means using the dmg that comes with the game.  Setting g_useWeaponModNum = 1 means using the sof2_1.wpn file that contains your weapon mod, setting g_useWeaponModNum = 2 means using the sof2_2.wpn file, etc. on up to 3.  If you decide *not* to use this feature, there is *NOTHING* you need to do.  If you decide to use this feature, create your weapon mod files (sof2_X.wpn X=1,2, or 3), place them in your base directory (no need to pk3 them!  clients will *not* download these files even if you have downloads enabled), and then set g_useWeaponModNum according to the weapon mod number you want to use.  So, if you're playing in a game and you decide you want to switch mods you only have to set g_useWeaponModNum to the number you want and restart the map or cycle to the next map.  *THAT is IT!*

#6) LAST PLAYER ALIVE msgs.  Msgs?  Yes, depending on how many people are alive on the opposing team, you will receive a different message (each one telling you how many are left on the other team).  And an alarm sound cue to alert you of being the last alive.

#7)THIS FEATURE ROCKS.  Some people don't like hearing the voice spam over and over and over again (myself included).  That is why, in the original version, I added controls such as only 1 sound token per bind, voice flood capability, *plus* the ability to designate whether the voices were globalized or localized.  I have taken it to the ultimate step:  via the new /adm changechat command you now have *3* choices:
(1) /adm changechat l  <-- (that's a lower case 'L')  This will make it so that only the client making the sound and those around them will hear it (like talking to someone in a room). 'l' is for local
(2) /adm changechat g  This will make it so that every player on the map will hear the sound.  'g' is for global
(3) /adm changechat p  THIS is the new capability.  This changes it so that *only* the player making the sound will hear it.  No more being annoyed by multiple voices at once and voice spam.  

#8) Now admins can completely disable chat sounds and text via the /adm allowchat command.  If you're on a server and people are abusing the chat token capability, this command will make all chat tokens and sounds inoperative until it is toggled back on.

#9) For /adm chat the admin receiving the message now gets a sound cue indicating an admin generated msg.

#10)  Stats for headshots (DEADEYE), for times shot in the head (MAGNET), for flag captures, for flag saves, for briefcase escapes, briefcase carrier kills, bomb plants and detonation, bomb defusings, bomb carrier kills, kills per minute of play, suicides and team kills are ALL now written to the log file.

#11) To account for who is on the server and when, I have added a new admin command, accessed via /adm listclan, which will list all currently connected admins and clan members.  That way, if a clan member is connected via an unrecognizable name, you can still recognize them as clan members.

**********NEW CVARS/SETTINGS IN VERSION 0.1D**********
// general Cvars
seta g_useWeaponModNum 0 // (0 means use default dmg (no mod) 1 means use sof2_1.wpn file, 2 means use sof2_2.wpn file, 3 means use sof2_3.wpn file)
seta g_displayEndStats 1
seta g_qualifyTime 10 // (player must have played this number of minutes to qualify for stats screen (10 is default))
seta g_suddenDeathMsg 1

//*** referee specific settings ***
seta g_autoRefClanMember 0 // (1 means clan members automatically are refs)

// (1 = allow the action, 0 = disallow the action (0 is default))
seta ref_allow_cancelVote 1 // (cancel vote in progress)
seta ref_allow_gamePause 1
seta ref_allow_lockTeams 0 // (lock unlock individual or both teams)

seta ref_allow_vote_maprestart 1
seta ref_allow_vote_mapcycle 1
seta ref_allow_vote_map 0
seta ref_allow_vote_rmgmap 0
seta ref_allow_vote_gametype 0
seta ref_allow_vote_kick 1 // kick by client name
seta ref_allow_vote_clientKick 1 // kick by client ID
seta ref_allow_vote_dowarmup 0
seta ref_allow_vote_friendlyfire 0
seta ref_allow_vote_timelimit 0
seta ref_allow_vote_extendTime 0
seta ref_allow_vote_scorelimit 0

seta ref_allow_vote_makeref 0
seta ref_allow_vote_removeref 0

//*** mod specific voting *** (whether clients can call the mod specific votes or not)
set novote_makeref "0"
set novote_removeref "1"

**********BUG FIXES IN VERSION 0.1D**********
a)  The bug that did not allow clan members to be added to an empty file has been fixed.
b)  Chat Sound #162 was not working, and has been fixed

Please let me know of any problems or errors you encounter in the use of this mod.  If I have left out an ‘essential’, please let me know as well.  I can be reached at

I’d like to thank all the members of TeamLtk that stopped by while I was testing and helped me to debug and test various scenarios.  During the 5 week development period, it was a nice break to put the mod through it’s paces and get some frags in as well.

Thank you,

Team Ltk is Unstoppable!

Read More

Comments on this File

There are no comments yet. Be the first!


50 XP

Registered 2nd September 2003

3 Files Uploaded

Share This File
Embed File