Uruchomiłem komd'a 1.0 na serwerze z etpro- działa wszystko oprócz komendy:
!spec999 (kiedyś miałem tego kmoda i działała ta komenda, teraz po ponownym stawianiu serwera ta komenda niedziała)
Nawet jeśli po użyciu !spec999 powinno na czacie gry pojawić sie że nie przeniosło nikogo na specta a mi sie nawet ten komunikat nie pojawia
Nic w kmod.lua nie zmianiałem tak samo jak w commands.cfg
Oto skrypty z kmoda w code bo zalacznik mi nie zadziałał
commands.cfg
KOD
# <PARAMETER> = text followed by the command. (Can be used to enter multiple values.
# For example: pb_sv_kick <PARAMETER> can be used to enter slot number, length of kick, and reason.)
# <CLIENT_ID> = the client id of the calling player.
# <PLAYER_LAST_VICTIM_(ID|NAME|CNAME|WEAPON)> = last player, you killed
# <PLAYER_LAST_KILLER_(ID|NAME|CNAME|WEAPON)> = last player, that killed you
# <PLAYER_CLASS> = class of calling player
# <PLAYER_TEAM> = side / team of calling player
# <PLAYER> = Name of the calling player (without color codes)
# <COLOR_PLAYER> = Name of the calling player (with color codes)
# <GUID> = Guid of the calling player (without color codes)
# <ADMINLEVEL> = Adminlevel of the calling player
# <PNAME2ID> = Get client ID using partial name or client ID directly
# <PBPNAME2ID> = Same as <PNAME_ID> accept it gets their punkbuster slot number.
#Level - command = rcon command
#command Examples:
#0 - ref = ref referee <CLIENT_ID>
#2 - vkick = clientkick <PLAYER_LAST_KILLER_ID>
#A bad example would be
#0 - kick player = clientkick <PARAMETER>
#This is a bad example because you cannot have spaces in your command. But you can have underscores.
# Rcon Shortcuts (Work with all mods / etmain)
2 - start = start_match
2 - swap = swap_teams
2 - reset = reset_match
2 - ref = ref referee <CLIENT_ID>
2 - unref = ref unReferee <CLIENT_ID>
2 - shuffle = shuffle_teams
2 - map_restart = map_restart
2 - pbkick = pb_sv_kick <PARAMETER>
3 - cancelvote = cancelvote
3 - passvote = passvote
3 - cp = cp <PARAMETER>
3 - qsay = qsay <PARAMETER>
3 - devmap = devmap <PARAMETER>
3 - exec = exec <PARAMETER>
# Referee Commands (only ETPRO)
2 - putallies = ref putallies <PNAME2ID>
2 - putspec = ref remove <PNAME2ID>
2 - putaxis = ref putaxis <PNAME2ID>
3 - pause = ref pause
3 - unpause = ref unpause
2 - allready = ref allready
2 - lock = ref lock
2 - unlock = ref unlock
2 - speclock = ref speclock
2 - specunlock = ref specunlock
2 - nextmap = ref nextmap
2 - mutespecs = ref mutespecs
2 - unmutespecs = ref unmutespecs
3 - map = ref map <PARAMETER>
3 - campaign = ref campaign <PARAMETER>
3 - gametype = ref gametype <PARAMETER>
3 - config = ref config <PARAMETER>
3 - pub = ref pub
3 - comp = ref comp
1 - cointoss = ref cointoss
# Shuffle without restart
2 - shuffle_norestart = ref shuffleteamsxp_norestart
2 - shuffleteamsxp_norestart = ref shuffleteamsxp_norestart
# campaign functions
3 - campaign = campaign <PARAMETER>
# To kick a player without temporary ban. Change the message, if you like.
2 - fkick = pb_sv_kick <PBPNAME2ID> 0 Come back in, if you want
# Shortcut to make the called a shoutcaster / remove his statua
3 - ms = makeShoutcaster <CLIENT_ID>
0 - rs = removeShoutcaster <CLIENT_ID>
# Moves the calling person into the specific team
2 - putmeaxis = ref putaxis <CLIENT_ID>
2 - putmeallies = ref putallies <CLIENT_ID>
2 - putmespec = ref remove <CLIENT_ID>
#FUN
#0 - moo = qsay ^1MOO!!!!!!!!!!!!!!; qsay ^2MOO 2!!!!!!!!!!!!!!!!
0 - drunk = qsay ^3DONT TELL ME ^1WHEN I'VE HAD ENOUGH!
0 - stup = qsay ^2It's better to lose than to win
0 - croyt = qsay ^2HOW DO YOU NOT DIE!!!!
0 - aim = qsay ^2*Get some glasses for pete's sake*
0 - beer = qsay A nice sexy waitress brings ^7<COLOR_PLAYER>^7 a nice cup of beer!
0 - pizza = qsay Someone calls Mario, and he brings ^7<COLOR_PLAYER>^7 a hot pepperoni pizza!
0 - coke = qsay ^3Ah... A delicious glass of cold Coca Cola[tm] (*thinks ^7<COLOR_PLAYER>^3 while he drinks*)
0 - pfstinkt = qsay ^3Uh, that smell of the panzer is pretty strong today ... ^3(^7<COLOR_PLAYER>^3's opinion)
0 - bye = qsay ^7<COLOR_PLAYER>^3 waves his hand to say ^1GOOD BYE^3. We surely meet later!
0 - backrage = qsay ^3Wow, <PLAYER_LAST_KILLER_CNAME> ^3has backrage skills with his uber ^1<PLAYER_LAST_KILLER_WEAPON>
0 - porn = qsay ^3Press F7 to download!
0 - aimbot = qsay ^3!execute aimbot.cfg
0 - dean = qsay ^1Warning, med pile sited!
0 - pack = qsay ^3Run and heal! Come back when you're ready to get pwnd!
0 - tk = qsay Wait! Don't shoot! My teammates will kill me for you!
#Password
3 - password = g_password <PARAMETER>
#for spamming
0 - owned = qsay ^1Ha^3ha^5ha^3, i owned ^7<PLAYER_LAST_VICTIM_CNAME>^3 with my ^7<PLAYER_LAST_VICTIM_WEAPON>^7!!!
0 - pants = qsay ^1No^3no^5noooo^7, i was killed by ^3<PLAYER_LAST_KILLER_CNAME>^7 with a ^3<PLAYER_LAST_KILLER_WEAPON>^7!!!
0 - whoami = qsay I am <COLOR_PLAYER>^7. I play ^3<PLAYER_CLASS>^7 on the ^3<PLAYER_TEAM>^7 side.
0 - victimized = qsay <PLAYER_LAST_VICTIM_CNAME>^1, You've just been victimized by <COLOR_PLAYER>^1's <PLAYER_LAST_VICTIM_WEAPON>!!!
#other
2 - vkick = clientkick <PLAYER_LAST_KILLER_ID>
2 - vmute = ref mute <PLAYER_LAST_KILLER_ID>
# For example: pb_sv_kick <PARAMETER> can be used to enter slot number, length of kick, and reason.)
# <CLIENT_ID> = the client id of the calling player.
# <PLAYER_LAST_VICTIM_(ID|NAME|CNAME|WEAPON)> = last player, you killed
# <PLAYER_LAST_KILLER_(ID|NAME|CNAME|WEAPON)> = last player, that killed you
# <PLAYER_CLASS> = class of calling player
# <PLAYER_TEAM> = side / team of calling player
# <PLAYER> = Name of the calling player (without color codes)
# <COLOR_PLAYER> = Name of the calling player (with color codes)
# <GUID> = Guid of the calling player (without color codes)
# <ADMINLEVEL> = Adminlevel of the calling player
# <PNAME2ID> = Get client ID using partial name or client ID directly
# <PBPNAME2ID> = Same as <PNAME_ID> accept it gets their punkbuster slot number.
#Level - command = rcon command
#command Examples:
#0 - ref = ref referee <CLIENT_ID>
#2 - vkick = clientkick <PLAYER_LAST_KILLER_ID>
#A bad example would be
#0 - kick player = clientkick <PARAMETER>
#This is a bad example because you cannot have spaces in your command. But you can have underscores.
# Rcon Shortcuts (Work with all mods / etmain)
2 - start = start_match
2 - swap = swap_teams
2 - reset = reset_match
2 - ref = ref referee <CLIENT_ID>
2 - unref = ref unReferee <CLIENT_ID>
2 - shuffle = shuffle_teams
2 - map_restart = map_restart
2 - pbkick = pb_sv_kick <PARAMETER>
3 - cancelvote = cancelvote
3 - passvote = passvote
3 - cp = cp <PARAMETER>
3 - qsay = qsay <PARAMETER>
3 - devmap = devmap <PARAMETER>
3 - exec = exec <PARAMETER>
# Referee Commands (only ETPRO)
2 - putallies = ref putallies <PNAME2ID>
2 - putspec = ref remove <PNAME2ID>
2 - putaxis = ref putaxis <PNAME2ID>
3 - pause = ref pause
3 - unpause = ref unpause
2 - allready = ref allready
2 - lock = ref lock
2 - unlock = ref unlock
2 - speclock = ref speclock
2 - specunlock = ref specunlock
2 - nextmap = ref nextmap
2 - mutespecs = ref mutespecs
2 - unmutespecs = ref unmutespecs
3 - map = ref map <PARAMETER>
3 - campaign = ref campaign <PARAMETER>
3 - gametype = ref gametype <PARAMETER>
3 - config = ref config <PARAMETER>
3 - pub = ref pub
3 - comp = ref comp
1 - cointoss = ref cointoss
# Shuffle without restart
2 - shuffle_norestart = ref shuffleteamsxp_norestart
2 - shuffleteamsxp_norestart = ref shuffleteamsxp_norestart
# campaign functions
3 - campaign = campaign <PARAMETER>
# To kick a player without temporary ban. Change the message, if you like.
2 - fkick = pb_sv_kick <PBPNAME2ID> 0 Come back in, if you want
# Shortcut to make the called a shoutcaster / remove his statua
3 - ms = makeShoutcaster <CLIENT_ID>
0 - rs = removeShoutcaster <CLIENT_ID>
# Moves the calling person into the specific team
2 - putmeaxis = ref putaxis <CLIENT_ID>
2 - putmeallies = ref putallies <CLIENT_ID>
2 - putmespec = ref remove <CLIENT_ID>
#FUN
#0 - moo = qsay ^1MOO!!!!!!!!!!!!!!; qsay ^2MOO 2!!!!!!!!!!!!!!!!
0 - drunk = qsay ^3DONT TELL ME ^1WHEN I'VE HAD ENOUGH!
0 - stup = qsay ^2It's better to lose than to win
0 - croyt = qsay ^2HOW DO YOU NOT DIE!!!!
0 - aim = qsay ^2*Get some glasses for pete's sake*
0 - beer = qsay A nice sexy waitress brings ^7<COLOR_PLAYER>^7 a nice cup of beer!
0 - pizza = qsay Someone calls Mario, and he brings ^7<COLOR_PLAYER>^7 a hot pepperoni pizza!
0 - coke = qsay ^3Ah... A delicious glass of cold Coca Cola[tm] (*thinks ^7<COLOR_PLAYER>^3 while he drinks*)
0 - pfstinkt = qsay ^3Uh, that smell of the panzer is pretty strong today ... ^3(^7<COLOR_PLAYER>^3's opinion)
0 - bye = qsay ^7<COLOR_PLAYER>^3 waves his hand to say ^1GOOD BYE^3. We surely meet later!
0 - backrage = qsay ^3Wow, <PLAYER_LAST_KILLER_CNAME> ^3has backrage skills with his uber ^1<PLAYER_LAST_KILLER_WEAPON>
0 - porn = qsay ^3Press F7 to download!
0 - aimbot = qsay ^3!execute aimbot.cfg
0 - dean = qsay ^1Warning, med pile sited!
0 - pack = qsay ^3Run and heal! Come back when you're ready to get pwnd!
0 - tk = qsay Wait! Don't shoot! My teammates will kill me for you!
#Password
3 - password = g_password <PARAMETER>
#for spamming
0 - owned = qsay ^1Ha^3ha^5ha^3, i owned ^7<PLAYER_LAST_VICTIM_CNAME>^3 with my ^7<PLAYER_LAST_VICTIM_WEAPON>^7!!!
0 - pants = qsay ^1No^3no^5noooo^7, i was killed by ^3<PLAYER_LAST_KILLER_CNAME>^7 with a ^3<PLAYER_LAST_KILLER_WEAPON>^7!!!
0 - whoami = qsay I am <COLOR_PLAYER>^7. I play ^3<PLAYER_CLASS>^7 on the ^3<PLAYER_TEAM>^7 side.
0 - victimized = qsay <PLAYER_LAST_VICTIM_CNAME>^1, You've just been victimized by <COLOR_PLAYER>^1's <PLAYER_LAST_VICTIM_WEAPON>!!!
#other
2 - vkick = clientkick <PLAYER_LAST_KILLER_ID>
2 - vmute = ref mute <PLAYER_LAST_KILLER_ID>
kmod.cfg
KOD
//Kmod version 1.1 beta
//By Clutch152
//This file is required for use!!! Otherwise all values will default blank and nothing will work!
////////////////////////////////////////////////////////////////////////////////////////////////
//k_sprees - This cvar enables or disables killingsprees
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_sprees "1"
//spree Misc
set k_spree1_amount "5"
set k_spree2_amount "10"
set k_spree3_amount "15"
set k_spree4_amount "20"
set k_spree5_amount "25"
set k_spree6_amount "30"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_ks_location "3"
//Custom Deathspree messages
//Aliases:
// #killer# - killer's name
// #kills# - number of kills
set k_ks_message1 "^7#killer# ^1is on a killingspree! ^2(^1#kills#^2)"
set k_ks_message2 "^7#killer# ^1is on a rampage! ^2(^1#kills#^2)"
set k_ks_message3 "^7#killer# ^1is dominating! ^2(^1#kills#^2)"
set k_ks_message4 "^7#killer# ^1is unstopable! ^2(^1#kills#^2)"
set k_ks_message5 "^7#killer# ^1is godlike! ^2(^1#kills#^2)"
set k_ks_message6 "^7#killer# ^1is wicked sick! ^2(^1#kills#^2)"
//---------------------------------------
//Spree ending messages
//Aliases:
// #killer# - killer's name
// #kills# - number of kills
// #victim# - victim's name
//Death by player
set k_end_message1 "^7#killer# ^1ended ^7#victim#^1's Killingspree! ^2(^7#kills#^2)"
//Death by selfkill
set k_end_message2 "^7#killer# ^1ended ^1his own Killingspree by killing himself! ^2(^7#kills#^2)"
//Death by world
set k_end_message3 "^7The world ^1ended ^7#victim#^1's Killingspree! ^2(^7#kills#^2)"
//Teamkill
set k_end_message4 "^7#killer# ^1ended ^1his own Killingspree! ^2(^7#kills#^2)"
//---------------------------------------
//k_spreesounds - This cvar enables or disables killingspree sounds
//Valid values are 1 or 0
//Default value = 1
set k_spreesounds "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_deathsprees - This cvar enables or disables deathsprees
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_deathsprees "1"
//Deathspree Misc
set k_deathspree1_amount "10"
set k_deathspree2_amount "15"
set k_deathspree3_amount "20"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_ds_location "3"
//Custom Deathspree messages
//Aliases:
// #victim# - victim's name
// #deaths# - number of deaths
set k_ds_message1 "^7#victim# ^7seems to be having a bad day! (^1#deaths#^7)"
set k_ds_message2 "^7#victim# ^7is on the way to getting ^3victim^7 of the day! (^1#deaths#^7)"
set k_ds_message3 "^7#victim# ^7is getting his ass kicked! (^1#deaths#^7)"
//k_deathspreesounds - This cvar enables or disables deathspree sounds
//Valid values are 1 or 0
//Default value = 1
set k_deathspreesounds "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_multikills - This cvar enables or disables multikills
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_multikills "1"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_mk_location "1"
//Multikill Misc
//k_multikill_time - Time in seconds between multikills
set k_multikill_time "6.5"
//Custom Multikill messages
//Aliases:
// #killer# - killer's name
set k_mk_message1 "^7!!!^1DOUBLEKILL!^7 > #killer#^7 < ^1DOUBLEKILL^7!!!"
set k_mk_message2 "^7!!!^1MULTIKILL!^7 > #killer#^7 < ^1MULTIKILL^7!!!"
set k_mk_message3 "^7!!!^1MEGAKILL!^7 > #killer#^7 < ^1MEGAKILL^7!!!"
set k_mk_message4 "^7!!!^1ULTRAKILL!^7 > #killer#^7 < ^1ULTRAKILL^7!!!"
set k_mk_message5 "^7!!!^1MONSTERKILL!^7 > #killer#^7 < ^1MONSTERKILL^7!!!"
set k_mk_message6 "^7!!!^1LUDICOUSKILL!^7 > #killer#^7 < ^1LUDICROUSKILL^7!!!"
set k_mk_message7 "^7!!!^1HOLYSHIT!^7 > #killer#^7 < ^1HOLYSHIT^7!!!"
//k_multikillsounds - This cvar enables or disables multikill sounds
//Valid values are 1 or 0
//Default value = 1
set k_multikillsounds "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_flakmonkey - This cvar enables or disables flakmonkey
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_flakmonkey "1"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_fm_location "1"
//Custom Flak Monkey message
//Alias:
// #killer# - killer's name
set k_fm_message "^7#killer# ^1got a flakmonkey!"
//k_flakmonkeysound - This cvar enables or disables flakmonkey sound
//Valid values are 1 or 0
//Default value = 1
set k_flakmonkeysound "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_firstblood - This cvar enables or disables firstblood
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_firstblood "1"
//firstblood Misc
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_fb_location "2"
//Custom Firstblood message
//Alias:
// #killer# - killer's name
set k_fb_message "^7#killer# ^1drew ^1first ^1BLOOD ^1!^7"
//k_firstbloodsound - This cvar enables or disables the firstblood sound
//Valid values are 1 or 0
//Default value = 1
set k_firstbloodsound "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_lastblood - Displays a global message in chat
//displaying who got the last kill of the match.
//Valid values are 1 or 0
//Default value = 1
set k_lastblood "1"
//Lastblood Misc
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_lb_location "1"
//Custom Lastblood message
//Alias:
// #killer# - killer's name
set k_lb_message "^2Last kill of the match goes to ^7#killer#^7"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_killerhpdisplay - When you are killed this feature will
//display a message telling you your killer's remaining HP.
//Valid values are 1 or 0
//Default value = 1
set k_killerhpdisplay "1"
//k_spreerecord - Saves the longest spree record to a file
//and displays message at end of each round that displays
//the current spree record
//Valid values are 1 or 0
//Default value = 1
set k_spreerecord "1"
//k_advancedpms - Slightly enhanced private messaging.
//Can use partial name (3+ characters required) or slot #
//Seperate sound for private messages. (etpro 3.2.6 required)
//Can now send Pm's to all admins at or above level 2
//Valid values are 1 or 0
//Default value = 1
set k_advancedpms "1"
//k_disablevotes - Disables votes after a specified length of time
//Valid values are 1 or 0
//Default value = 1
set k_disablevotes "1"
//k_dvmode - Mode at witch the specified disable time will
//be selected
// 1 = Number of minutes before game ends
// 2 = Percent of game time passed before votes are disabled
// 3 = Number of minutes after game has started
//Valid values are 1 - 3
//Default value = 2
set k_dvmode "2"
//k_dvtime - See k_dvmode above
//Default value = 90
set k_dvtime "90"
//k_advancedadrenaline - Sound is played near a player using
//Adrenaline and the user also has a counter displaying time
//left of the adrenaline effect.
//Valid values are 1 or 0
//Default value = 1
set k_advancedadrenaline "1"
//k_adrensound - Enables or Disables the sound from the
//Advanced adrenaline feature.
//Valid values are 1 or 0
//Default value = 1
set k_adrensound "1"
//k_antiunmute - Cannot call votes to unmute a muted player
//Valid values are 1 or 0
//Default value = 1
set k_antiunmute "1"
//k_advplayers - Disables timenudge and maxpackets from
//the players list and adds a new command (/admins) to
//display all current admins
//New command only availible to admin levels 2 and 3
//Valid values are 1 or 0
//Default value = 1
set k_advplayers "1"
//k_logchat - Logs most* chat messages into "chat_log.log"
//*Currently excludes private messages
//Valid values are 1 or 0
//Default value = 1
set k_logchat "1"
//k_crazygravityinterval - The interval between
//crazygravity gravity changes (in seconds)
//Default value = 30
set k_crazygravityinterval "30"
//k_teamkillrestriction - kickes excessive teamkillers
//Everyone start with a tk index of 0 and will increase
//or decrease by a certain number of points depending
//on the type of weapon used.
//Airstrike or Artillery = -0.65
//grenade, panzer, mg42, riflenade, or mortar = -0.75
//Mines = -0
//All other weapons = -1
//Non teamkills or Revives = +1
//Offenders will be warned prior to being kicked via
//private message
//Valid values are 1 or 0
//Default value = 1
set k_teamkillrestriction "1"
//k_tklimit_high - Upper most limit for teamkill restriction
//Default value = 3 (recomended)
set k_tklimit_high "3"
//k_tklimit_low - Lower most limit for teamkill restriction
//Default value = -3 (recomended)
set k_tklimit_low "-3"
//k_tk_protect - admin levels at or above specified
//value will be immune to the teamkill restriction
//Default value = 3
set k_tk_protect "3"
//k_slashkilllimit - Enabled/Disables /kill limit
//Valid values are 1 or 0
//Default value = 1
set k_slashkilllimit "1"
//k_slashkills - Maximum slash kills allowed per player per map
//Default value = 3
set k_slashkills "3"
//k_color - Changes the color of killer's HP and spree record
//Valid values are any color code character
//Default value = 2
set k_color "2"
//k_endroundshuffle - Auto shuffles teams by xp at the end of each round.
//Valid values are 1 or 0
//Default value = 0
set k_endroundshuffle "1"
//k_noisereduction - Plays killingspree, flakmonkey, firstblood,
//deathspree, and multikill sounds to the killer/victim only
//Requires Etpro 3.2.6 or higher!!!!!!!!!!!!!!!!!!!!
//Valid values are 1 or 0
//Default value = 0
set k_noisereduction "0"
//k_advancedspawn - Gives a freshly spawned player
//infinite spawnshield until they move or shoot.
//SERVER CVAR REQUIRED: g_inactivity must be above 0
//or this feature will not work!
//Valid values are 1 or 0
//Default value = 0
set k_advancedspawn "1"
//Below are the file locations for all the sounds used
set flakmonkeysound "sound/misc/flakmonkey.wav"
set firstbloodsound "sound/misc/firstblood.wav"
set doublekillsound "sound/misc/doublekill.wav"
set multikillsound "sound/misc/multikill.wav"
set megakillsound "sound/misc/megakill.wav"
set ultrakillsound "sound/misc/ultrakill.wav"
set monsterkillsound "sound/misc/monsterkill.wav"
set ludicrouskillsound "sound/misc/ludicrouskill.wav"
set holyshitsound "sound/misc/holyshit.wav"
set deathspreesound1 "sound/misc/humiliation.wav"
set deathspreesound2 "sound/misc/humiliation.wav"
set deathspreesound3 "sound/misc/humiliation.wav"
set killingspreesound "sound/misc/killingspree.wav"
set rampagesound "sound/misc/rampage.wav"
set dominatingsound "sound/misc/dominating.wav"
set unstopablesound "sound/misc/unstoppable.wav"
set godlikesound "sound/misc/godlike.wav"
set wickedsicksound "sound/misc/wickedsick.wav"
//By Clutch152
//This file is required for use!!! Otherwise all values will default blank and nothing will work!
////////////////////////////////////////////////////////////////////////////////////////////////
//k_sprees - This cvar enables or disables killingsprees
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_sprees "1"
//spree Misc
set k_spree1_amount "5"
set k_spree2_amount "10"
set k_spree3_amount "15"
set k_spree4_amount "20"
set k_spree5_amount "25"
set k_spree6_amount "30"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_ks_location "3"
//Custom Deathspree messages
//Aliases:
// #killer# - killer's name
// #kills# - number of kills
set k_ks_message1 "^7#killer# ^1is on a killingspree! ^2(^1#kills#^2)"
set k_ks_message2 "^7#killer# ^1is on a rampage! ^2(^1#kills#^2)"
set k_ks_message3 "^7#killer# ^1is dominating! ^2(^1#kills#^2)"
set k_ks_message4 "^7#killer# ^1is unstopable! ^2(^1#kills#^2)"
set k_ks_message5 "^7#killer# ^1is godlike! ^2(^1#kills#^2)"
set k_ks_message6 "^7#killer# ^1is wicked sick! ^2(^1#kills#^2)"
//---------------------------------------
//Spree ending messages
//Aliases:
// #killer# - killer's name
// #kills# - number of kills
// #victim# - victim's name
//Death by player
set k_end_message1 "^7#killer# ^1ended ^7#victim#^1's Killingspree! ^2(^7#kills#^2)"
//Death by selfkill
set k_end_message2 "^7#killer# ^1ended ^1his own Killingspree by killing himself! ^2(^7#kills#^2)"
//Death by world
set k_end_message3 "^7The world ^1ended ^7#victim#^1's Killingspree! ^2(^7#kills#^2)"
//Teamkill
set k_end_message4 "^7#killer# ^1ended ^1his own Killingspree! ^2(^7#kills#^2)"
//---------------------------------------
//k_spreesounds - This cvar enables or disables killingspree sounds
//Valid values are 1 or 0
//Default value = 1
set k_spreesounds "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_deathsprees - This cvar enables or disables deathsprees
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_deathsprees "1"
//Deathspree Misc
set k_deathspree1_amount "10"
set k_deathspree2_amount "15"
set k_deathspree3_amount "20"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_ds_location "3"
//Custom Deathspree messages
//Aliases:
// #victim# - victim's name
// #deaths# - number of deaths
set k_ds_message1 "^7#victim# ^7seems to be having a bad day! (^1#deaths#^7)"
set k_ds_message2 "^7#victim# ^7is on the way to getting ^3victim^7 of the day! (^1#deaths#^7)"
set k_ds_message3 "^7#victim# ^7is getting his ass kicked! (^1#deaths#^7)"
//k_deathspreesounds - This cvar enables or disables deathspree sounds
//Valid values are 1 or 0
//Default value = 1
set k_deathspreesounds "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_multikills - This cvar enables or disables multikills
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_multikills "1"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_mk_location "1"
//Multikill Misc
//k_multikill_time - Time in seconds between multikills
set k_multikill_time "6.5"
//Custom Multikill messages
//Aliases:
// #killer# - killer's name
set k_mk_message1 "^7!!!^1DOUBLEKILL!^7 > #killer#^7 < ^1DOUBLEKILL^7!!!"
set k_mk_message2 "^7!!!^1MULTIKILL!^7 > #killer#^7 < ^1MULTIKILL^7!!!"
set k_mk_message3 "^7!!!^1MEGAKILL!^7 > #killer#^7 < ^1MEGAKILL^7!!!"
set k_mk_message4 "^7!!!^1ULTRAKILL!^7 > #killer#^7 < ^1ULTRAKILL^7!!!"
set k_mk_message5 "^7!!!^1MONSTERKILL!^7 > #killer#^7 < ^1MONSTERKILL^7!!!"
set k_mk_message6 "^7!!!^1LUDICOUSKILL!^7 > #killer#^7 < ^1LUDICROUSKILL^7!!!"
set k_mk_message7 "^7!!!^1HOLYSHIT!^7 > #killer#^7 < ^1HOLYSHIT^7!!!"
//k_multikillsounds - This cvar enables or disables multikill sounds
//Valid values are 1 or 0
//Default value = 1
set k_multikillsounds "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_flakmonkey - This cvar enables or disables flakmonkey
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_flakmonkey "1"
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_fm_location "1"
//Custom Flak Monkey message
//Alias:
// #killer# - killer's name
set k_fm_message "^7#killer# ^1got a flakmonkey!"
//k_flakmonkeysound - This cvar enables or disables flakmonkey sound
//Valid values are 1 or 0
//Default value = 1
set k_flakmonkeysound "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_firstblood - This cvar enables or disables firstblood
//Includes sounds when disabled.
//Valid values are 1 or 0
//Default value = 1
set k_firstblood "1"
//firstblood Misc
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_fb_location "2"
//Custom Firstblood message
//Alias:
// #killer# - killer's name
set k_fb_message "^7#killer# ^1drew ^1first ^1BLOOD ^1!^7"
//k_firstbloodsound - This cvar enables or disables the firstblood sound
//Valid values are 1 or 0
//Default value = 1
set k_firstbloodsound "1"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_lastblood - Displays a global message in chat
//displaying who got the last kill of the match.
//Valid values are 1 or 0
//Default value = 1
set k_lastblood "1"
//Lastblood Misc
//1 = chat area
//2 = center screen area
//3 = top of screen
set k_lb_location "1"
//Custom Lastblood message
//Alias:
// #killer# - killer's name
set k_lb_message "^2Last kill of the match goes to ^7#killer#^7"
////////////////////////////////////////////////////////////////////////////////////////////////
//k_killerhpdisplay - When you are killed this feature will
//display a message telling you your killer's remaining HP.
//Valid values are 1 or 0
//Default value = 1
set k_killerhpdisplay "1"
//k_spreerecord - Saves the longest spree record to a file
//and displays message at end of each round that displays
//the current spree record
//Valid values are 1 or 0
//Default value = 1
set k_spreerecord "1"
//k_advancedpms - Slightly enhanced private messaging.
//Can use partial name (3+ characters required) or slot #
//Seperate sound for private messages. (etpro 3.2.6 required)
//Can now send Pm's to all admins at or above level 2
//Valid values are 1 or 0
//Default value = 1
set k_advancedpms "1"
//k_disablevotes - Disables votes after a specified length of time
//Valid values are 1 or 0
//Default value = 1
set k_disablevotes "1"
//k_dvmode - Mode at witch the specified disable time will
//be selected
// 1 = Number of minutes before game ends
// 2 = Percent of game time passed before votes are disabled
// 3 = Number of minutes after game has started
//Valid values are 1 - 3
//Default value = 2
set k_dvmode "2"
//k_dvtime - See k_dvmode above
//Default value = 90
set k_dvtime "90"
//k_advancedadrenaline - Sound is played near a player using
//Adrenaline and the user also has a counter displaying time
//left of the adrenaline effect.
//Valid values are 1 or 0
//Default value = 1
set k_advancedadrenaline "1"
//k_adrensound - Enables or Disables the sound from the
//Advanced adrenaline feature.
//Valid values are 1 or 0
//Default value = 1
set k_adrensound "1"
//k_antiunmute - Cannot call votes to unmute a muted player
//Valid values are 1 or 0
//Default value = 1
set k_antiunmute "1"
//k_advplayers - Disables timenudge and maxpackets from
//the players list and adds a new command (/admins) to
//display all current admins
//New command only availible to admin levels 2 and 3
//Valid values are 1 or 0
//Default value = 1
set k_advplayers "1"
//k_logchat - Logs most* chat messages into "chat_log.log"
//*Currently excludes private messages
//Valid values are 1 or 0
//Default value = 1
set k_logchat "1"
//k_crazygravityinterval - The interval between
//crazygravity gravity changes (in seconds)
//Default value = 30
set k_crazygravityinterval "30"
//k_teamkillrestriction - kickes excessive teamkillers
//Everyone start with a tk index of 0 and will increase
//or decrease by a certain number of points depending
//on the type of weapon used.
//Airstrike or Artillery = -0.65
//grenade, panzer, mg42, riflenade, or mortar = -0.75
//Mines = -0
//All other weapons = -1
//Non teamkills or Revives = +1
//Offenders will be warned prior to being kicked via
//private message
//Valid values are 1 or 0
//Default value = 1
set k_teamkillrestriction "1"
//k_tklimit_high - Upper most limit for teamkill restriction
//Default value = 3 (recomended)
set k_tklimit_high "3"
//k_tklimit_low - Lower most limit for teamkill restriction
//Default value = -3 (recomended)
set k_tklimit_low "-3"
//k_tk_protect - admin levels at or above specified
//value will be immune to the teamkill restriction
//Default value = 3
set k_tk_protect "3"
//k_slashkilllimit - Enabled/Disables /kill limit
//Valid values are 1 or 0
//Default value = 1
set k_slashkilllimit "1"
//k_slashkills - Maximum slash kills allowed per player per map
//Default value = 3
set k_slashkills "3"
//k_color - Changes the color of killer's HP and spree record
//Valid values are any color code character
//Default value = 2
set k_color "2"
//k_endroundshuffle - Auto shuffles teams by xp at the end of each round.
//Valid values are 1 or 0
//Default value = 0
set k_endroundshuffle "1"
//k_noisereduction - Plays killingspree, flakmonkey, firstblood,
//deathspree, and multikill sounds to the killer/victim only
//Requires Etpro 3.2.6 or higher!!!!!!!!!!!!!!!!!!!!
//Valid values are 1 or 0
//Default value = 0
set k_noisereduction "0"
//k_advancedspawn - Gives a freshly spawned player
//infinite spawnshield until they move or shoot.
//SERVER CVAR REQUIRED: g_inactivity must be above 0
//or this feature will not work!
//Valid values are 1 or 0
//Default value = 0
set k_advancedspawn "1"
//Below are the file locations for all the sounds used
set flakmonkeysound "sound/misc/flakmonkey.wav"
set firstbloodsound "sound/misc/firstblood.wav"
set doublekillsound "sound/misc/doublekill.wav"
set multikillsound "sound/misc/multikill.wav"
set megakillsound "sound/misc/megakill.wav"
set ultrakillsound "sound/misc/ultrakill.wav"
set monsterkillsound "sound/misc/monsterkill.wav"
set ludicrouskillsound "sound/misc/ludicrouskill.wav"
set holyshitsound "sound/misc/holyshit.wav"
set deathspreesound1 "sound/misc/humiliation.wav"
set deathspreesound2 "sound/misc/humiliation.wav"
set deathspreesound3 "sound/misc/humiliation.wav"
set killingspreesound "sound/misc/killingspree.wav"
set rampagesound "sound/misc/rampage.wav"
set dominatingsound "sound/misc/dominating.wav"
set unstopablesound "sound/misc/unstoppable.wav"
set godlikesound "sound/misc/godlike.wav"
set wickedsicksound "sound/misc/wickedsick.wav"
i kmod.lua
KOD
KMODversion = "Beta 1.0"
KMODversion2 = "1.0"
k_commandprefix = "!" -- change this to your desired prefix
--[[
This lua was created to replace most features of etadmin mod
and is much faster in response time and includes some features
that etadmin mod does not have and vice versa.
FEATURES:
*** Killingsprees plus all the other killingspree type stuff (Sounds Included)
*** Doublekills, Multikills, Ultrakills, Monsterkills, and Ludicrouskills (Sounds Included)
*** Flakmonkey's - When you get 3 kills with either panzer or a riflenade.
Flakmonkey is reset if you get any other type of kill/teamkill/or if you die (Sound included)
*** Firstblood (Sound Included)
*** Lastblood
*** Spreerecord (not including records for individual maps)
*** Enhanced Private Messaging - The sender can use partial name of repipiant
or can now use the repipiants slot number. When using ETPro 3.2.6 or higher,
a new sound will be played letting you know that you have a private message.
Players can now private message all 2+ level admins currently on the server using
/ma or /pma then your message.
*** Vote disable was taken directly from ETAdmin mod and is slightly enhanced such that
it will detect changes to the timelimit. (see config for details)
*** Antiunmute - When a player is muted he may not be unmuted via vote
*** Advanced Adrenaline - Players using adrenaline now have a timer in their cp area
displaying the amount of adrenaline time they have left.
A sound will also be played in their general location letting everyone else
know that they are using adrenaline (disableable) (sound included)
*** Killer's HP - Killer's HP is displayed to their victims. When you kill somone
and are killed in return within a certain amount of time no message will be displayed.
When a killer is using adrenaline the victim will see a message displaying so.
*** Advanced players - Time nudge and max packets are removed from players list
and admins may see which admins (level 2+) are on the server using /admins
*** Chat log - All chats are logged along with player renames/connects/disconnects/and map restarts
*** Crazygravity - The exact same crazy gravity you've come to know and love
*** Team kill restriction - Taken from Etadmin mod and uses punkbuster to kick (see config)
*** /kill limit - After the max amount of slash kills is reached they are no longer
able to /kill.
*** Endround shuffle - At the end of each round teams are shuffled automatically
I recomend using this on servers with alot of people.
*** Noise reduction - ETPRO 3.2.6 OR HIGHER IS REQUIRED!!! Plays all killingsprees
multikills/deathsprees/and firstblood to the killer or victim depending on which one
*** Color codes can be changed for lastblood and killer HP display in config
*** Spawn kill protection - A newly spawned player will keep his spawn shield
Until he either moves or fires his weapon. (see config)
*** Paths to sounds can be changed to fit server admins needs.
CREDITS:
Special to
Noobology
Armymen
Rikku
Monkey Spawn
Brunout
Dominator
James
Pantsless Victims
For helping with testing
SOURCES:
Some code and ideas dirived from G073nks which can be found here
http://wolfwiki.anime.net/index.php/User:Gotenks
Code to get slot number from name was from the slap command I found on the ETPro forum here
http://bani.anime.net/banimod/forums/viewtopic.php?t=6579&highlight=slap
Infty's NoKill lua code was used and edited for the slashkill limit which can be found here
http://wolfwiki.anime.net/index.php/User:Infty
Ideas dirived from ETAdmin_mod found here
http://et.d1p.de/etadmin_mod/wiki/index.php/Main_Page
If you see your code in here let me know and I'll add you to the credits for future releases
The rest of the code is mine :D
--]]
killingspree = {}
flakmonkey = {}
deathspree = {}
multikill = {}
playerwhokilled = {}
killedwithweapk = {}
killedwithweapv = {}
playerlastkilled = {}
muted = {}
antiloopadr1 = {}
antiloopadr2 = {}
adrenaline = {}
adrnum = {}
adrnum2 = {}
adrtime = {}
adrtime2 = {}
adrendummy = {}
clientrespawn = {}
invincStart = {}
invincDummy = {}
switchteam = {}
timecounter = 1
kill1 = {}
kill2 = {}
kill3 = {}
kill4 = {}
kill5 = {}
kill6 = {}
kill7 = {}
kill8 = {}
killr = {}
selfkills = {}
teamkillr = {}
khp = {}
PlayerName = {}
Bname = {}
EV_GLOBAL_CLIENT_SOUND = 54
et.CS_PLAYERS = 689
team = { "AXIS" , "ALLIES" , "SPECTATOR" }
class = { [0]="SOLDIER" , "MEDIC" , "ENGINEER" , "FIELD OPS" , "COVERT OPS" }
AdminLV0 = {}
AdminLV1 = {}
AdminLV2 = {}
AdminLV3 = {}
chkGUID = {}
AdminName = {}
originalclass = {}
originalweap = {}
et.MAX_WEAPONS = 50
GAMEPAUSED = 0
pweapons = {
nil, --// 1
false, --WP_LUGER, // 2
false, --WP_MP40, // 3
false, --WP_GRENADE_LAUNCHER, // 4
true, --WP_PANZERFAUST, // 5
false, --WP_FLAMETHROWER, // 6
false, --WP_COLT, // 7 // equivalent american weapon to german luger
false, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
false, --WP_GRENADE_PINEAPPLE, // 9
false, --WP_STEN, // 10 // silenced sten sub-machinegun
false, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
false, --WP_AMMO, // 12 // JPW NERVE likewise
false, --WP_ARTY, // 13
false, --WP_SILENCER, // 14 // used to be sp5
false, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
false, --WP_MEDKIT, // 19
false, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
false, --WP_KAR98, // 23 // WolfXP weapons
false, --WP_CARBINE, // 24
false, --WP_GARAND, // 25
false, --WP_LANDMINE, // 26
false, --WP_SATCHEL, // 27
false, --WP_SATCHEL_DET, // 28
nil, --// 29
false, --WP_SMOKE_BOMB, // 30
false, --WP_MOBILE_MG42, // 31
false, --WP_K43, // 32
false, --WP_FG42, // 33
nil, --// 34
false, --WP_MORTAR, // 35
nil, --// 36
false, --WP_AKIMBO_COLT, // 37
false, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
false, --WP_SILENCED_COLT, // 41
false, --WP_GARAND_SCOPE, // 42
false, --WP_K43_SCOPE, // 43
false, --WP_FG42SCOPE, // 44
false, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
false, --WP_AKIMBO_SILENCEDCOLT,// 47
false --WP_AKIMBO_SILENCEDLUGER,// 48
}
fweapons = {
nil, --// 1
true, --WP_LUGER, // 2
true, --WP_MP40, // 3
true, --WP_GRENADE_LAUNCHER, // 4
true, --WP_PANZERFAUST, // 5
true, --WP_FLAMETHROWER, // 6
true, --WP_COLT, // 7 // equivalent american weapon to german luger
true, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
true, --WP_GRENADE_PINEAPPLE, // 9
true, --WP_STEN, // 10 // silenced sten sub-machinegun
true, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
true, --WP_AMMO, // 12 // JPW NERVE likewise
true, --WP_ARTY, // 13
true, --WP_SILENCER, // 14 // used to be sp5
true, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
true, --WP_MEDKIT, // 19
true, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
true, --WP_KAR98, // 23 // WolfXP weapons
true, --WP_CARBINE, // 24
true, --WP_GARAND, // 25
true, --WP_LANDMINE, // 26
true, --WP_SATCHEL, // 27
true, --WP_SATCHEL_DET, // 28
nil, --// 29
true, --WP_SMOKE_BOMB, // 30
true, --WP_MOBILE_MG42, // 31
true, --WP_K43, // 32
true, --WP_FG42, // 33
nil, --// 34
true, --WP_MORTAR, // 35
nil, --// 36
true, --WP_AKIMBO_COLT, // 37
true, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
true, --WP_SILENCED_COLT, // 41
true, --WP_GARAND_SCOPE, // 42
true, --WP_K43_SCOPE, // 43
true, --WP_FG42SCOPE, // 44
true, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
true, --WP_AKIMBO_SILENCEDCOLT,// 47
true --WP_AKIMBO_SILENCEDLUGER,// 48
}
aweapons = {
nil, --// 1
true, --WP_LUGER, // 2
true, --WP_MP40, // 3
true, --WP_GRENADE_LAUNCHER, // 4
true, --WP_PANZERFAUST, // 5
true, --WP_FLAMETHROWER, // 6
true, --WP_COLT, // 7 // equivalent american weapon to german luger
true, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
true, --WP_GRENADE_PINEAPPLE, // 9
true, --WP_STEN, // 10 // silenced sten sub-machinegun
true, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
true, --WP_AMMO, // 12 // JPW NERVE likewise
true, --WP_ARTY, // 13
true, --WP_SILENCER, // 14 // used to be sp5
true, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
true, --WP_MEDKIT, // 19
true, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
true, --WP_KAR98, // 23 // WolfXP weapons
true, --WP_CARBINE, // 24
true, --WP_GARAND, // 25
true, --WP_LANDMINE, // 26
true, --WP_SATCHEL, // 27
true, --WP_SATCHEL_DET, // 28
nil, --// 29
true, --WP_SMOKE_BOMB, // 30
true, --WP_MOBILE_MG42, // 31
true, --WP_K43, // 32
true, --WP_FG42, // 33
nil, --// 34
true, --WP_MORTAR, // 35
nil, --// 36
true, --WP_AKIMBO_COLT, // 37
true, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
true, --WP_SILENCED_COLT, // 41
true, --WP_GARAND_SCOPE, // 42
true, --WP_K43_SCOPE, // 43
true, --WP_FG42SCOPE, // 44
true, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
true, --WP_AKIMBO_SILENCEDCOLT,// 47
true --WP_AKIMBO_SILENCEDLUGER,// 48
}
gweapons = {
nil, --// 1
false, --WP_LUGER, // 2
false, --WP_MP40, // 3
true, --WP_GRENADE_LAUNCHER, // 4
false, --WP_PANZERFAUST, // 5
false, --WP_FLAMETHROWER, // 6
false, --WP_COLT, // 7 // equivalent american weapon to german luger
false, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
true, --WP_GRENADE_PINEAPPLE, // 9
false, --WP_STEN, // 10 // silenced sten sub-machinegun
false, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
false, --WP_AMMO, // 12 // JPW NERVE likewise
false, --WP_ARTY, // 13
false, --WP_SILENCER, // 14 // used to be sp5
false, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
false, --WP_MEDKIT, // 19
false, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
false, --WP_KAR98, // 23 // WolfXP weapons
false, --WP_CARBINE, // 24
false, --WP_GARAND, // 25
false, --WP_LANDMINE, // 26
false, --WP_SATCHEL, // 27
false, --WP_SATCHEL_DET, // 28
nil, --// 29
false, --WP_SMOKE_BOMB, // 30
false, --WP_MOBILE_MG42, // 31
false, --WP_K43, // 32
false, --WP_FG42, // 33
nil, --// 34
false, --WP_MORTAR, // 35
nil, --// 36
false, --WP_AKIMBO_COLT, // 37
false, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
false, --WP_SILENCED_COLT, // 41
false, --WP_GARAND_SCOPE, // 42
false, --WP_K43_SCOPE, // 43
false, --WP_FG42SCOPE, // 44
false, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
false, --WP_AKIMBO_SILENCEDCOLT,// 47
false --WP_AKIMBO_SILENCEDLUGER,// 48
}
sweapons = {
nil, --// 1
false, --WP_LUGER, // 2
false, --WP_MP40, // 3
false, --WP_GRENADE_LAUNCHER, // 4
false, --WP_PANZERFAUST, // 5
false, --WP_FLAMETHROWER, // 6
false, --WP_COLT, // 7 // equivalent american weapon to german luger
false, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
false, --WP_GRENADE_PINEAPPLE, // 9
false, --WP_STEN, // 10 // silenced sten sub-machinegun
false, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
false, --WP_AMMO, // 12 // JPW NERVE likewise
false, --WP_ARTY, // 13
false, --WP_SILENCER, // 14 // used to be sp5
false, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
false, --WP_MEDKIT, // 19
false, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
false, --WP_KAR98, // 23 // WolfXP weapons
false, --WP_CARBINE, // 24
true, --WP_GARAND, // 25
false, --WP_LANDMINE, // 26
false, --WP_SATCHEL, // 27
nil, --WP_SATCHEL_DET, // 28
nil, --// 29
false, --WP_SMOKE_BOMB, // 30
false, --WP_MOBILE_MG42, // 31
true, --WP_K43, // 32
true, --WP_FG42, // 33
nil, --// 34
false, --WP_MORTAR, // 35
nil, --// 36
false, --WP_AKIMBO_COLT, // 37
false, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
false, --WP_SILENCED_COLT, // 41
true, --WP_GARAND_SCOPE, // 42
true, --WP_K43_SCOPE, // 43
true, --WP_FG42SCOPE, // 44
false, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
false, --WP_AKIMBO_SILENCEDCOLT,// 47
false --WP_AKIMBO_SILENCEDLUGER,// 48
}
lvl0c = 5
lvl0 = {
k_commandprefix.."admintest",
k_commandprefix.."time",
k_commandprefix.."date",
k_commandprefix.."spree_record",
k_commandprefix.."tk_index",
}
lvl1c = 1
lvl1 = {
k_commandprefix.."spec999",
}
lvl2c = 1
lvl2 = {
k_commandprefix.."finger",
}
lvl3c = 13
lvl3 = {
k_commandprefix.."ban",
k_commandprefix.."readconfig",
k_commandprefix.."spree_restart",
k_commandprefix.."getip",
k_commandprefix.."crazygravity",
k_commandprefix.."getguid",
k_commandprefix.."setlevel",
k_commandprefix.."gib",
k_commandprefix.."slap",
k_commandprefix.."panzerwar",
k_commandprefix.."frenzy",
k_commandprefix.."grenadewar",
k_commandprefix.."sniperwar",
}
firstblood = 0
lastblood = ""
oldspree = ""
oldspree2 = ""
intmrecord = ""
panzers = ""
medics = ""
cvops = ""
fops = ""
engie = ""
flamers = ""
mortars = ""
mg42s = ""
soldcharge = ""
speed = ""
redlimbo = ""
bluelimbo = ""
floodprotect = 0
commandSaid = false
kick = false
fullcom = ""
finger = false
removereferee = false
makereferee = false
removeshoutcaster = false
makeshoutcaster = false
putspec = false
putallies = false
putaxis = false
unmute = false
mute = false
warn = false
ban = false
crazygravity = false
crazytime = 0
--[[
--Defaults
killingspreesound="sound/misc/killingspree.wav"
rampagesound="sound/misc/rampage.wav"
dominatingsound="sound/misc/dominating.wav"
unstopablesound="sound/misc/unstoppable.wav"
godlikesound="sound/misc/godlike.wav"
wickedsicksound="sound/misc/wickedsick.wav"
flakmonkeysound="sound/misc/flakmonkey.wav"
firstbloodsound="sound/misc/firstblood.wav"
deathspreesound1="sound/misc/humiliation.wav"
deathspreesound2="sound/misc/you_suck.wav"
deathspreesound3="sound/misc/ae821.wav"
doublekillsound="sound/misc/doublekill.wav"
multikillsound="sound/misc/multikill.wav"
ultrakillsound="sound/misc/ultrakill.wav"
monsterkillsound="sound/misc/monsterkill.wav"
ludicrouskillsound="sound/misc/ludicrouskill.wav"
k_spreesounds = 1
k_sprees = 1 -- includes sounds
k_multikillsounds = 1
k_multikills = 1 --includes sounds
k_flakmonkeysound = 1
k_flakmonkey = 1 --includes sounds
k_firstbloodsound = 1
k_firstblood = 1 --includes sound
k_lastblood = 1
k_killerhpdisplay = 1
k_spreerecord = 1
k_advplayers = 1
k_crazygravityinterval = 30
k_slashkilllimit = 1
k_slashkills = 3
k_teamkillrestriction = 1
k_tklimit_high = 3
k_tklimit_low = -3
k_color = "^2"
k_advancedpms = 1
k_playdead = 0
k_logchat = 1
k_disablevotes = 1
k_dvmode = 2
k_dvpercent = 90
k_adrensound = 1
k_advancedadrenaline = 1
k_noisereduction = 0
k_endroundshuffle = 0
k_deathsprees = 1
k_deathspreesounds = 1
k_antiunmute = 1
k_advancedspawn = 0
--]]
pmsound = "sound/misc/NewBeep.wav"
antiloop = 0
antiloop2 = 0
antiloop3 = 0
antiloop4 = 0
antiloopes = 0
antilooppw = 0
confirm = 0
spreerecordkills = 0
crazydv = 1
CGactive = 0
panzdv = 0
sldv = 0
frenzdv = 0
grendv = 0
snipdv = 0
antiloopm = 0
pausedv = 0
pausedv2 = 0
pausetime = 0
timedv = 0
timedvs = 0
refreshrate = 0
timedelay_antiloop = 0
egamemodes = 0
onetime = 0
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
antiloopadr1[i] = 0
antiloopadr2[i] = 0
adrenaline[i] = 0
adrnum[i] = 0
adrnum2[i] = 0
adrtime[i] = 0
adrtime2[i] = 0
end
function et_RunFrame( levelTime )
mtime=tonumber(levelTime) -- still cannot remember why i made this but its used in alot of stuff so i'll leave it
if timedvs == 0 then
local ktime = (((mtime - initTime)/1000))
timecounter = ktime
timedvs = 1
end
timelimit=tonumber(et.trap_Cvar_Get("timelimit"))
Gamestate=tonumber(et.trap_Cvar_Get("gamestate"))
if GAMEPAUSED == 1 then
if pausedv == 0 then
pausetime = mtime
pausedv = 1
end
if ((mtime - pausetime)/1000) >= 180 then -- Server is paused for 3 minutes (180 seconds)
GAMEPAUSED = 0
end
elseif GAMEPAUSED == 0 and pausedv == 1 then
if pausedv2 == 0 then
pausetime = mtime
pausedv2 = 1
end
if ((mtime - pausetime)/1000) >= 10 then -- when unpaused before 3 minutes is up it counts down from 10 seconds
pausedv = 0
pausedv2 = 0
timedv1 = nil
timedv2 = nil
end
else
if timedv == 0 then
timedv1 = mtime
timedv = 1
timecounter=timecounter+((timedv1 - timedv2)/1000)
s,e,thous = string.find(timecounter, "%d*%.%d%d(%d*)")
-- s,e = string.find(thous, "9")
if thous == 9999999 then
timecounter=timecounter+0.000000001
end
else
timedv2 = mtime
timedv = 0
timecounter=timecounter+((timedv2 - timedv1)/1000)
s,e,thous = string.find(timecounter, "%d*%.%d%d(%d*)")
-- s,e = string.find(thous, "9")
if thous == 9999999 then
timecounter=timecounter+0.000000001
end
end
-- timecounter=timecounter+0.05
end
killingspreesound = tostring(et.trap_Cvar_Get("killingspreesound"))
k_color = tostring(et.trap_Cvar_Get("k_color"))
rampagesound = tostring(et.trap_Cvar_Get("rampagesound"))
dominatingsound = tostring(et.trap_Cvar_Get("dominatingsound"))
unstopablesound = tostring(et.trap_Cvar_Get("unstopablesound"))
godlikesound = tostring(et.trap_Cvar_Get("godlikesound"))
wickedsicksound = tostring(et.trap_Cvar_Get("wickedsicksound"))
flakmonkeysound = tostring(et.trap_Cvar_Get("flakmonkeysound"))
firstbloodsound = tostring(et.trap_Cvar_Get("firstbloodsound"))
deathspreesound1 = tostring(et.trap_Cvar_Get("deathspreesound1"))
deathspreesound2 = tostring(et.trap_Cvar_Get("deathspreesound2"))
deathspreesound3 = tostring(et.trap_Cvar_Get("deathspreesound3"))
doublekillsound = tostring(et.trap_Cvar_Get("doublekillsound"))
multikillsound = tostring(et.trap_Cvar_Get("multikillsound"))
megakillsound = tostring(et.trap_Cvar_Get("megakillsound"))
ultrakillsound = tostring(et.trap_Cvar_Get("ultrakillsound"))
monsterkillsound = tostring(et.trap_Cvar_Get("monsterkillsound"))
ludicrouskillsound = tostring(et.trap_Cvar_Get("ludicrouskillsound"))
holyshitsound = tostring(et.trap_Cvar_Get("holyshitsound"))
k_ds_message1 = tostring(et.trap_Cvar_Get("k_ds_message1"))
k_ds_message2 = tostring(et.trap_Cvar_Get("k_ds_message2"))
k_ds_message3 = tostring(et.trap_Cvar_Get("k_ds_message3"))
k_ks_message1 = tostring(et.trap_Cvar_Get("k_ks_message1"))
k_ks_message2 = tostring(et.trap_Cvar_Get("k_ks_message2"))
k_ks_message3 = tostring(et.trap_Cvar_Get("k_ks_message3"))
k_ks_message4 = tostring(et.trap_Cvar_Get("k_ks_message4"))
k_ks_message5 = tostring(et.trap_Cvar_Get("k_ks_message5"))
k_ks_message6 = tostring(et.trap_Cvar_Get("k_ks_message6"))
k_mk_message1 = tostring(et.trap_Cvar_Get("k_mk_message1"))
k_mk_message2 = tostring(et.trap_Cvar_Get("k_mk_message2"))
k_mk_message3 = tostring(et.trap_Cvar_Get("k_mk_message3"))
k_mk_message4 = tostring(et.trap_Cvar_Get("k_mk_message4"))
k_mk_message5 = tostring(et.trap_Cvar_Get("k_mk_message5"))
k_mk_message6 = tostring(et.trap_Cvar_Get("k_mk_message6"))
k_mk_message7 = tostring(et.trap_Cvar_Get("k_mk_message7"))
k_fm_message = tostring(et.trap_Cvar_Get("k_fm_message"))
k_end_message1 = tostring(et.trap_Cvar_Get("k_end_message1"))
k_end_message2 = tostring(et.trap_Cvar_Get("k_end_message2"))
k_end_message3 = tostring(et.trap_Cvar_Get("k_end_message3"))
k_end_message4 = tostring(et.trap_Cvar_Get("k_end_message4"))
k_fb_message = tostring(et.trap_Cvar_Get("k_fb_message"))
k_lb_message = tostring(et.trap_Cvar_Get("k_lb_message"))
k_spreesounds = tonumber(et.trap_Cvar_Get("k_spreesounds"))
k_sprees = tonumber(et.trap_Cvar_Get("k_sprees"))
k_multikillsounds = tonumber(et.trap_Cvar_Get("k_multikillsounds"))
k_multikills = tonumber(et.trap_Cvar_Get("k_multikills"))
k_flakmonkeysound = tonumber(et.trap_Cvar_Get("k_flakmonkeysound"))
k_flakmonkey = tonumber(et.trap_Cvar_Get("k_flakmonkey"))
k_firstbloodsound = tonumber(et.trap_Cvar_Get("k_firstbloodsound"))
k_firstblood = tonumber(et.trap_Cvar_Get("k_firstblood"))
k_lastblood = tonumber(et.trap_Cvar_Get("k_lastblood"))
k_killerhpdisplay = tonumber(et.trap_Cvar_Get("k_killerhpdisplay"))
k_deathsprees = tonumber(et.trap_Cvar_Get("k_deathsprees"))
k_deathspreesounds = tonumber(et.trap_Cvar_Get("k_deathspreesounds"))
k_spreerecord = tonumber(et.trap_Cvar_Get("k_spreerecord"))
k_advplayers = tonumber(et.trap_Cvar_Get("k_advplayers"))
k_crazygravityinterval = tonumber(et.trap_Cvar_Get("k_crazygravityinterval"))
k_teamkillrestriction = tonumber(et.trap_Cvar_Get("k_teamkillrestriction"))
k_tklimit_high = tonumber(et.trap_Cvar_Get("k_tklimit_high"))
k_tklimit_low = tonumber(et.trap_Cvar_Get("k_tklimit_low"))
k_tk_protect = tonumber(et.trap_Cvar_Get("k_tk_protect"))
k_slashkilllimit = tonumber(et.trap_Cvar_Get("k_slashkilllimit"))
k_slashkills = tonumber(et.trap_Cvar_Get("k_slashkills"))
k_endroundshuffle = tonumber(et.trap_Cvar_Get("k_endroundshuffle"))
k_noisereduction = tonumber(et.trap_Cvar_Get("k_noisereduction"))
k_advancedpms = tonumber(et.trap_Cvar_Get("k_advancedpms"))
k_logchat = tonumber(et.trap_Cvar_Get("k_logchat"))
k_disablevotes = tonumber(et.trap_Cvar_Get("k_disablevotes"))
k_dvmode = tonumber(et.trap_Cvar_Get("k_dvmode"))
k_dvtime = tonumber(et.trap_Cvar_Get("k_dvtime"))
k_adrensound = tonumber(et.trap_Cvar_Get("k_adrensound"))
k_advancedadrenaline = tonumber(et.trap_Cvar_Get("k_advancedadrenaline"))
k_antiunmute = tonumber(et.trap_Cvar_Get("k_antiunmute"))
k_advancedspawn = tonumber(et.trap_Cvar_Get("k_advancedspawn"))
k_deathspree1_amount = tonumber(et.trap_Cvar_Get("k_deathspree1_amount"))
k_deathspree2_amount = tonumber(et.trap_Cvar_Get("k_deathspree2_amount"))
k_deathspree3_amount = tonumber(et.trap_Cvar_Get("k_deathspree3_amount"))
k_spree1_amount = tonumber(et.trap_Cvar_Get("k_spree1_amount"))
k_spree2_amount = tonumber(et.trap_Cvar_Get("k_spree2_amount"))
k_spree3_amount = tonumber(et.trap_Cvar_Get("k_spree3_amount"))
k_spree4_amount = tonumber(et.trap_Cvar_Get("k_spree4_amount"))
k_spree5_amount = tonumber(et.trap_Cvar_Get("k_spree5_amount"))
k_spree6_amount = tonumber(et.trap_Cvar_Get("k_spree6_amount"))
k_multikill_time = tonumber(et.trap_Cvar_Get("k_multikill_time"))
k_ds_location = tonumber(et.trap_Cvar_Get("k_ds_location"))
k_ks_location = tonumber(et.trap_Cvar_Get("k_ks_location"))
k_mk_location = tonumber(et.trap_Cvar_Get("k_mk_location"))
k_fm_location = tonumber(et.trap_Cvar_Get("k_fm_location"))
k_fb_location = tonumber(et.trap_Cvar_Get("k_fb_location"))
k_lb_location = tonumber(et.trap_Cvar_Get("k_lb_location"))
if k_ds_location == 2 then
ds_location = "cp"
elseif k_ds_location == 3 then
ds_location = "bp"
else
ds_location = "qsay"
end
if k_ks_location == 2 then
ks_location = "cp"
elseif k_ks_location == 3 then
ks_location = "bp"
else
ks_location = "qsay"
end
if k_mk_location == 2 then
mk_location = "cp"
elseif k_mk_location == 3 then
mk_location = "bp"
else
mk_location = "qsay"
end
if k_fm_location == 2 then
fm_location = "cp"
elseif k_fm_location == 3 then
fm_location = "bp"
else
fm_location = "qsay"
end
if k_fb_location == 2 then
fb_location = "cp"
elseif k_fb_location == 3 then
fb_location = "bp"
else
fb_location = "qsay"
end
if k_lb_location == 2 then
lb_location = "cp"
elseif k_lb_location == 3 then
lb_location = "bp"
else
lb_location = "qsay"
end
if onetime == 0 then
readconfig()
onetime = 1
end
if k_advancedspawn == 1 and tonumber(et.trap_Cvar_Get("g_inactivity")) > 0 then -- g_inactivity is required or this will not work
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if switchteam[i] == 1 then et.gentity_set(i,"ps.powerups", 1, 0) end
switchteam[i] = 0
end
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if clientrespawn[i] == 1 then
if (switchteam[i] == 0 and et.gentity_get(i,"ps.powerups", 1) > 0) then
if invincDummy[i] == 0 then
invincStart[i] = tonumber(et.gentity_get(i,"client.inactivityTime"))
invincDummy[i] = 1
end
local inactivity = tonumber(et.gentity_get(i,"client.inactivityTime"))
if inactivity == invincStart[i] then
local timer = mtime + 3000
et.gentity_set(i,"ps.powerups", 1, timer)
else
clientrespawn[i] = 0
invincDummy[i] = 0
end
else
clientrespawn[i] = 0
invincDummy[i] = 0
end
end
end
end
if panzdv == 1 or frenzdv == 1 or grendv == 1 or snipdv == 1 then
if timedelay_antiloop == 0 then
refreshrate = mtime
timedelay_antiloop = 1
end
if ((mtime-refreshrate)/1000) >= 0.25 then -- reset ammo and stuff every 0.25 of a second rather than 0.05 of a second (which caused lag)
egamemodes = 1
timedelay_antiloop = 0
else
egamemodes = 0
end
else
egamemodes = 0
end
if panzdv == 1 then
if egamemodes == 1 then
for q=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
et.gentity_set(q,"sess.latchPlayerWeapon",5)
for i=1,(et.MAX_WEAPONS-1),1 do
if not pweapons[i] then
et.gentity_set(q,"ps.ammoclip",i,0)
et.gentity_set(q,"ps.ammo",i,0)
else
et.gentity_set(q,"ps.ammoclip",i,999)
et.gentity_set(q,"ps.ammo",i,999)
end
end
end
end
elseif frenzdv == 1 then
if egamemodes == 1 then
for w=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
for i=1,(et.MAX_WEAPONS-1),1 do
if not fweapons[i] then
et.gentity_set(w,"ps.ammoclip",i,0)
et.gentity_set(w,"ps.ammo",i,0)
else
et.gentity_set(w,"ps.ammoclip",i,999)
et.gentity_set(w,"ps.ammo",i,999)
end
end
end
end
elseif grendv == 1 then
if egamemodes == 1 then
for e=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
for i=1,(et.MAX_WEAPONS-1),1 do
if not gweapons[i] then
et.gentity_set(e,"ps.ammoclip",i,0)
et.gentity_set(e,"ps.ammo",i,0)
else
et.gentity_set(e,"ps.ammoclip",i,999)
et.gentity_set(e,"ps.ammo",i,999)
end
end
end
end
elseif snipdv == 1 then
if egamemodes == 1 then
for r=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if tonumber(et.gentity_get(r,"sess.latchPlayerType")) ~= 4 then
et.gentity_set(r,"sess.latchPlayerType",4)
end
if tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 32 or tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 25 or tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 42 or tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 43 then
if tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 33 then
if tonumber(et.gentity_get(r,"sess.sessionTeam")) == 1 then
et.gentity_set(r,"sess.latchPlayerWeapon", 32)
elseif tonumber(et.gentity_get(r,"sess.sessionTeam")) == 2 then
et.gentity_set(r,"sess.latchPlayerWeapon", 25)
end
end
end
for i=1,(et.MAX_WEAPONS-1),1 do
if not sweapons[i] then
et.gentity_set(r,"ps.ammoclip",i,0)
et.gentity_set(r,"ps.ammo",i,0)
else
et.gentity_set(r,"ps.ammoclip",i,999)
et.gentity_set(r,"ps.ammo",i,999)
end
end
end
end
else
panzers = tonumber(et.trap_Cvar_Get("team_maxpanzers"))
medics = tonumber(et.trap_Cvar_Get("team_maxmedics"))
cvops = tonumber(et.trap_Cvar_Get("team_maxcovertops"))
fops = tonumber(et.trap_Cvar_Get("team_maxfieldops"))
engie = tonumber(et.trap_Cvar_Get("team_maxengineers"))
flamers = tonumber(et.trap_Cvar_Get("team_maxflamers"))
mortars = tonumber(et.trap_Cvar_Get("team_maxmortars"))
mg42s = tonumber(et.trap_Cvar_Get("team_maxmg42s"))
soldcharge = tonumber(et.trap_Cvar_Get("g_soldierchargetime"))
speed = tonumber(et.trap_Cvar_Get("g_speed"))
end
if crazygravity then
CGactive = 1
crazygravity_gravity = math.random(10, 1200)
if crazydv == 1 then
crazytime = mtime + (k_crazygravityinterval*1000)
crazydv = 0
end
if (crazytime-mtime)/1000 == 0 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Crazygravity: ^7The gravity has been changed to ^1" .. crazygravity_gravity .. "^7!\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_gravity " .. crazygravity_gravity .. "\n" )
crazydv = 1
elseif (crazytime-mtime)/1000 == 5 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Crazygravity: ^7The gravity will be changed in ^15^7 seconds!\n" )
end
end
local ftime = ((mtime-initTime)/1000)
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
PlayerName[i] = et.gentity_get(i,"pers.netname")
if not PlayerName[i] then
PlayerName[i] = ""
end
if et.gentity_get(i,"pers.connected") ~= 2 then
PlayerName[i] = ""
end
end
if Gamestate == 3 then
if k_lastblood == 1 then
if antiloop == 0 then
if lastblood then
local str = string.gsub(k_lb_message, "#killer#", lastblood)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..lb_location.." "..str.."\n" )
end
if k_spreerecord == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^" .. k_color .. "" .. tostring(intmrecord) .. "\n" )
end
antiloop = 1
end
end
if k_endroundshuffle == 1 then
if antiloopes == 0 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref shuffleteamsxp_norestart\n" )
antiloopes = 1
end
end
if panzdv == 1 or snipdv == 1 then
if antilooppw == 0 then
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") == 1 or et.gentity_get(p,"sess.sessionTeam") == 2 then
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
antilooppw = 1
end
end
end
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "b_privatemessages 0\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "b_privatemessages 2\n" )
end
if k_sprees == 0 then
if antiloop2 == 0 then
killingspreereset()
end
antiloop2 = 1
elseif k_sprees == 1 then
antiloop2 = 0
end
if k_deathsprees == 0 then
if antiloop3 == 0 then
dspreereset()
end
antiloop3 = 1
elseif k_deathsprees == 1 then
antiloop3 = 0
end
if k_flakmonkey == 0 then
if antiloop4 == 0 then
flakreset()
end
antiloop4 = 1
elseif k_flakmonkey == 1 then
antiloop4 = 0
end
if floodprotect == 1 then
fpPtime = (mtime-fpProt)/1000
if fpPtime >= 2 then
floodprotect = 0
end
end
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(i,"pers.connected") == 2 then
if PlayerName[i] ~= Bname[i] then
log_chat( Bname[i], "NAME_CHANGE", PlayerName[i] )
Bname[i] = PlayerName[i]
end
end
end
if k_advancedadrenaline == 1 then
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local adrentlimit = 10
local adrensound = "sound/misc/regen.wav"
if pausedv == 1 then
adrendummy[i] = 1
end
if adrendummy[i] == 1 and tonumber(et.gentity_get(i,"ps.powerups", 12)) == 0 then
adrendummy[i] = 0
end
if adrendummy[i] == 0 then
if tonumber(et.gentity_get(i,"ps.powerups", 12)) > 0 then
adrnum[i] = tonumber(et.gentity_get(i,"ps.powerups", 12))
soundindex = et.G_SoundIndex(adrensound)
local name = et.gentity_get(i,"pers.netname")
if antiloopadr1[i] == 0 then
adrtime[i] = mtime
if k_adrensound == 1 then
et.G_Sound( i, soundindex)
end
antiloopadr1[i] = 1
end
if antiloopadr2[i] == 0 then
adrtime2[i] = mtime
adrnum2[i] = tonumber(et.gentity_get(i,"ps.powerups", 12))
antiloopadr2[i] = 1
end
adrenaline[i] = 1
local tottime = math.floor((((mtime - adrtime[i])/1000)+0.05))
local tottime2 = math.floor((((mtime - adrtime2[i])/1000)+0.05))
if tottime >= 1 then
antiloopadr1[i] = 0
end
if adrnum[i] ~= adrnum2[i] then
adrnum2[i] = tonumber(et.gentity_get(i,"ps.powerups", 12))
if k_adrensound == 1 then
et.G_Sound( i, soundindex)
end
adrtime[i] = mtime
adrtime2[i] = mtime
end
local atime = (adrentlimit - tottime2)
et.trap_SendServerCommand(i, string.format("cp \"^3Adrenaline ^1".. atime .."\n\""))
else
adrenaline[i] = 0
antiloopadr1[i] = 0
antiloopadr2[i] = 0
adrnum[i] = 0
adrnum2[i] = 0
end
end
end
end
--[[
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
-- if muted[i] > 0 then
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3"..mtime.."\n" )
-- end
-- if muted[i] > mtime then
-- if antiloopm == 0 then
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3CurseFilter: ^7Countdown initated\n" )
-- antiloopm = 1
-- end
-- end
if muted[i] ~= 0 then
if mtime > muted[i] then
local cs = et.trap_GetConfigstring(et.CS_PLAYERS + i)
local mute = et.Info_ValueForKey(cs, "mu")
if mute == 1 then
local name = et.gentity_get(i,"pers.netname")
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref unmute "..i.."\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3CurseFilter: ^7"..name.." has been unmuted. Please watch your language!\n" )
end
muted[i] = 0
end
end
end
--]]
if k_disablevotes == 1 then
local timelimit = tonumber(et.trap_Cvar_Get("timelimit"))
if k_dvmode == 1 then
local cancel_time = ( timelimit - k_dvtime )
if timecounter >= (cancel_time * 60) then
if votedis == 0 then
votedis = 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings are now DISABLED\n")
end
else
if votedis == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings have been reenabled due to timelimit change\n")
end
votedis = 0
end
elseif k_dvmode == 3 then
if timecounter >= (k_dvtime * 60) then
if votedis == 0 then
votedis = 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings are now DISABLED\n")
end
else
if votedis == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings have been reenabled due to timelimit change\n")
end
votedis = 0
end
else
local cancel_percent = ( timelimit * ( k_dvtime / 100 ) )
if timecounter >= (cancel_percent * 60) then
if votedis == 0 then
votedis = 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings are now DISABLED\n")
end
else
if votedis == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings have been reenabled due to timelimit change\n")
end
votedis = 0
end
end
end
end
function et_Print( text )
local t = ParseString(text)
if t[1] == "saneClientCommand:" and t[3] == "callvote" then
local caller = tonumber(t[2])
local vote = t[4]
local target = tonumber(t[5])
if vote == "kick" or vote == "mute" then
if AdminUserLevel(caller) < AdminUserLevel(target) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "cancelvote; qsay Admins cannot be vote kicked or vote muted!\n")
end
end
end
if t[1] == "Medic_Revive:" then
local reviver = tonumber(t[2])
teamkillr[reviver] = teamkillr[reviver] + 1
if teamkillr[reviver] > k_tklimit_high then
teamkillr[reviver] = k_tklimit_high
end
end
end
function ParseString(inputString)
local i = 1
local t = {}
for w in string.gfind(inputString, "([^%s]+)%s*") do
t[i]=w
i=i+1
end
return t
end
function et_ShutdownGame ( restart )
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; g_speed " .. speed .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
elseif frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
if panzdv == 1 then
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") == 1 or et.gentity_get(p,"sess.sessionTeam") == 2 then
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
end
if k_logchat == 1 then
log_chat( "DV", "START", "DV" )
end
end
function panzerwar_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; g_speed " .. speed .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function frenzy_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function grenadewar_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function sniperwar_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function et_ClientSpawn(clientNum,revived)
if panzdv == 1 then
local doublehealth = tonumber(et.gentity_get(clientNum,"health"))*2
if et.gentity_get(clientNum,"sess.sessionTeam") >= 1 and et.gentity_get(clientNum,"sess.sessionTeam") < 3 then
et.gentity_set(clientNum,"health", doublehealth)
end
end
if revived == 0 then
if et.gentity_get(clientNum,"sess.sessionTeam") >= 1 and et.gentity_get(clientNum,"sess.sessionTeam") < 3 then
clientrespawn[clientNum] = 1
end
end
end
function killingspreereset()
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local name = et.gentity_get(i,"pers.netname")
if killingspree[i] >= 5 then
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." ^7" ..name.. "^1's Killing spree was ended! Sprees Disabled!\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^1Killingspree's disabled. All sprees reset.\n" )
end
killingspree[i] = 0
end
end
function dspreereset()
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
deathspree[i] = 0
end
end
function flakreset()
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
flakmonkey[i] = 0
end
end
function floodprotector()
floodprotect = 1
fpProt = tonumber(mtime)
end
function et_InitGame( levelTime, randomSeed, restart )
initTime = levelTime
loadAdmins()
loadspreerecord()
loadcommands()
local currentver = et.trap_Cvar_Get("mod_version")
et.RegisterModname( "KMOD version " .. KMODversion .. " " .. et.FindSelf() )
et.trap_SendConsoleCommand(et.EXEC_APPEND, "forcecvar mod_version \"" .. currentver .. " - KMOD" .. KMODversion2 .. "\"" .. "\n" )
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
killingspree[i] = 0
flakmonkey[i] = 0
deathspree[i] = 0
multikill[i] = 0
muted[i] = 0
antiloopadr1[i] = 0
antiloopadr2[i] = 0
adrenaline[i] = 0
adrnum[i] = 0
adrnum2[i] = 0
adrtime[i] = 0
adrtime2[i] = 0
adrendummy[i] = 0
clientrespawn[i] = 0
invincDummy[i] = 0
switchteam[i] = 0
playerwhokilled[i] = 1022
killedwithweapk[i] = ""
killedwithweapv[i] = ""
playerlastkilled[i] = 1022
selfkills[i] = 0
teamkillr[i] = 0
khp[i] = 0
AdminName[i] = ""
originalclass[i] = ""
originalweap[i] = ""
killr[i] = 0
end
et.G_Print( "KMOD version " .. KMODversion .. " has been initialized...\n" )
end
function et_ClientDisconnect( clientNum)
killingspree[clientNum] = 0
flakmonkey[clientNum] = 0
deathspree[clientNum] = 0
multikill[clientNum] = 0
muted[clientNum] = 0
antiloopadr1[clientNum] = 0
antiloopadr2[clientNum] = 0
adrenaline[clientNum] = 0
adrnum[clientNum] = 0
adrnum2[clientNum] = 0
adrtime[clientNum] = 0
adrtime2[clientNum] = 0
adrendummy[clientNum] = 0
clientrespawn[clientNum] = 0
invincDummy[clientNum] = 0
switchteam[clientNum] = 0
playerwhokilled[clientNum] = 1022
killedwithweapk[clientNum] = ""
killedwithweapv[clientNum] = ""
playerlastkilled[clientNum] = 1022
selfkills[clientNum] = 0
teamkillr[clientNum] = 0
khp[clientNum] = 0
AdminName[clientNum] = ""
originalclass[clientNum] = ""
originalweap[clientNum] = ""
killr[clientNum] = 0
kill1[clientNum] = ""
kill2[clientNum] = ""
kill3[clientNum] = ""
kill4[clientNum] = ""
kill5[clientNum] = ""
kill6[clientNum] = ""
PlayerName[clientNum] = ""
if k_logchat == 1 then
log_chat(clientNum, "DISCONNECT", "DV2")
end
end
function spreerecord(PlayerID, kills2)
local fdadm,len = et.trap_FS_FOpenFile( "spree_record.dat", et.FS_WRITE )
local Name = et.Q_CleanStr(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "name" ))
local date = os.date("%x %I:%M:%S%p")
local kills = tonumber(kills2)
SPREE = kills .. "@" .. date .. "@" .. Name
et.trap_FS_Write( SPREE, string.len(SPREE) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^1New spree record: ^7" ..Name.. " ^7with^3 " ..kills.. "^7 kills ^7" ..tostring(oldspree).. "\n" )
loadspreerecord()
end
function spreerecord_reset()
local fdadm,len = et.trap_FS_FOpenFile( "spree_record.dat", et.FS_WRITE )
SPREE = ""
et.trap_FS_Write( SPREE, string.len(SPREE) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Spree record: ^7Spree record has been reset!\n" )
loadspreerecord()
end
function loadspreerecord()
local fd,len = et.trap_FS_FOpenFile( "spree_record.dat", et.FS_READ )
local kills = 0
local date = ""
local name = ""
if len <= 0 then
et.G_Print("WARNING: No spree record found! \n")
oldspree = "^3[Old: ^7N/A^3]"
oldspree2 = "^3Spree Record: ^7There is no current spree record"
spreerecordkills = 0
else
local filestr = et.trap_FS_Read( fd, len )
s,e,kills,date,name = string.find(filestr, "(%d+)%@(%d+%/%d+%/%d+%s%d+%:%d+%:%d+%a+)%@([^%\n]*)")
spreerecordkills = tonumber(kills)
oldspree = "^3[Old: ^7" ..name.. "^3 " .. kills .. "^7 @ " ..date.. "^3]"
oldspree2 = "^3Spree Record: ^7" ..name.. "^7 with ^3" .. kills .. "^7 kills at " ..date
intmrecord = "Current spree record: ^7" ..name.. "^7 with ^3" .. kills .. "^7 kills at " ..date
end
et.trap_FS_FCloseFile( fd )
end
function et_ConsoleCommand()
if string.lower(et.trap_Argv(0)) == k_commandprefix.."setlevel" then
if (et.trap_Argc() < 2) then
et.G_Print("Setlevel is used to set admin status to a player.\n")
et.G_Print("useage: !setlevel \[name/PID\] \[level 0-3\]\n")
return 1
end
commandSaid = false
sldv = 1
setlevel(et.trap_Argv(1), 0)
sldv = 0
setlevel(et.trap_Argv(1), et.trap_Argv(2))
return 1
elseif string.lower(et.trap_Argv(0)) == k_commandprefix.."showadmins" then
showAdmins()
return 1
elseif string.lower(et.trap_Argv(0)) == k_commandprefix.."gib" then
if (et.trap_Argc() < 2) then
et.G_Print("Gib is used to instantly kill a player\n")
et.G_Print("useage: gib \[name/PID\]\n")
return 1
end
Gib(et.trap_Argv(1))
return 1
elseif string.lower(et.trap_Argv(0)) == k_commandprefix.."slap" then
if (et.trap_Argc() < 2) then
et.G_Print("Slap is used to slap a player\n")
et.G_Print("useage: slap \[name/PID\]\n")
return 1
end
burn(et.trap_Argv(1)) -- the command was originally !burn
return 1
elseif string.lower(et.trap_Argv(0)) == "k_commandprefix" then
et.G_Print("Unknown command in line k_commandprefix\n")
return 1
elseif string.lower(et.trap_Argv(0)) == "m2" then -- used when advancedpms is enabled
if k_advancedpms == 1 then
if (et.trap_Argc() < 2) then
et.G_Print("Useage: /m \[pname/ID\] \[message\]\n")
return 1
else
private_message(1022, et.trap_Argv(1), et.ConcatArgs(2))
end
if k_logchat == 1 then
log_chat( 1022, "PMESSAGE", et.ConcatArgs(2), et.trap_Argv(1) )
end
end
return 1
elseif string.lower(et.trap_Argv(0)) == "m" or string.lower(et.trap_Argv(0)) == "pm" or string.lower(et.trap_Argv(0)) == "msg" then
if k_advancedpms == 0 then
if k_logchat == 1 then
log_chat( 1022, "PMESSAGE", et.ConcatArgs(2), et.trap_Argv(1) )
end
end
return 1
elseif string.lower(et.trap_Argv(0)) == "ma" or string.lower(et.trap_Argv(0)) == "pma" then
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if AdminUserLevel(i) >= 2 then
et.trap_SendServerCommand(i, ("b 8 \"^dPm to admins from ^1SERVER^d --> ^3" .. et.ConcatArgs(1) .. "^7"))
et.G_ClientSound(i, pmsound)
end
end
if k_logchat == 1 then
log_chat( 1022, "PMADMINS", et.ConcatArgs(1))
end
et.G_Print("Private message sent to admins\n")
return 1
elseif string.lower(et.trap_Argv(0)) == "ref" and string.lower(et.trap_Argv(1)) == "pause" and pausedv == 0 then
GAMEPAUSED = 1
dummypause = mtime
return 0
elseif string.lower(et.trap_Argv(0)) == "ref" and string.lower(et.trap_Argv(1)) == "unpause" and pausedv == 1 then
GAMEPAUSED = 0
return 0
else
return 0
end
end
function setlevel(client, level2)
local clientnum = tonumber(client)
local level = tonumber(level2)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^Setlevel: ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getsetlvlidfname(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if level < 0 or level > 3 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Admin level does not exist! \[0-3\]\n" )
commandSaid = false
else
et.G_Print("Admin level does not exist! \[0-3\]\n")
end
return
end
setAdmin(clientnum, level)
end
function getsetlvlidfname(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7There are currently ^1" .. matchcount .. "^7 client\[s\] that match \"" ..name.. "\"\n" )
commandSaid = false
else
et.G_Print("There are currently ^1" .. matchcount .. "^7 client\[s\] that match \"" ..name.. "\"\n")
end
return nil
else
return slot
end
end
function setAdmin(PlayerID, levelv)
local level = tonumber(levelv)
local fdadm,len = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_APPEND )
local Name = et.Q_CleanStr(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "name" ))
local GUID = string.upper(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
local dv = 0
local dvi = 0
if len == -1 then
confirm = 1
else
for i=0, 64, 1 do
if chkGUID[i] == GUID then
et.trap_FS_FCloseFile( fdadm )
dv = 1
if dv == 1 then
adminchange(PlayerID, level)
end
break
end
dvi = i
end
if dvi == 64 then
confirm = 1
end
end
if confirm == 1 then
if level == 0 then
if sldv == 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7" .. Name .. "^7 is now a regular ^7user!\n" )
commandSaid = false
else
et.G_Print( Name .. "^7 is now a regular ^7user!\n" )
confirm = 0
end
end
loadAdmins()
return
elseif level == 1 then
AdminLV0[GUID] = true
AdminLV1[GUID] = true
ADMIN = level .. " - " .. GUID .. " - " .. Name .. "\n"
confirm = 0
elseif level == 2 then
AdminLV0[GUID] = true
AdminLV1[GUID] = true
AdminLV2[GUID] = true
ADMIN = level .. " - " .. GUID .. " - " .. Name .. "\n"
confirm = 0
elseif level == 3 then
AdminLV0[GUID] = true
AdminLV1[GUID] = true
AdminLV2[GUID] = true
AdminLV3[GUID] = true
ADMIN = level .. " - " .. GUID .. " - " .. Name .. "\n"
confirm = 0
end
et.trap_FS_Write( ADMIN, string.len(ADMIN) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7" .. Name .. "^7 is now a level ^1" .. level .. " ^7user!\n" )
commandSaid = false
else
et.G_Print( Name .. "^7 is now a level ^1" .. level .. " ^7user!\n" )
end
loadAdmins()
return 1
else
et.trap_FS_FCloseFile( fdadm )
return 1
end
end
function addAdmin(GUID)
s,e,level,GUID = string.find(GUID, "(%d)%s%-%s(%x+)")
level=tonumber(level)
if level == 1 then
AdminLV1[GUID] = true
elseif level == 2 then
AdminLV1[GUID] = true
AdminLV2[GUID] = true
elseif level == 3 then
AdminLV1[GUID] = true
AdminLV2[GUID] = true
AdminLV3[GUID] = true
end
end
function adminStatus(PlayerID)
local IP = et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "ip" )
local GUID = string.upper(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
if finger then
local name = et.gentity_get(PlayerID,"pers.netname")
if ( AdminLV3[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is an admin \[lvl 3\]\n" )
elseif ( AdminLV2[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is an admin \[lvl 2\]\n" )
elseif ( AdminLV1[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is an admin \[lvl 1\]\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is a guest \[lvl 0\]\n" )
end
finger = false
commandSaid = false
else
if ( AdminLV3[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are an admin \[lvl 3\]\n" )
elseif ( AdminLV2[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are an admin \[lvl 2\]\n" )
elseif ( AdminLV1[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are an admin \[lvl 1\]\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are a guest \[lvl 0\]\n" )
end
end
end
function adminchange(PlayerID, level)
local fdin,lenin = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_READ )
local fdout,lenout = et.trap_FS_FOpenFile( "shrubbottmp.cfg", et.FS_WRITE )
local GUID2 = string.upper(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
local i = 0
local IPRemove = ""
local fname = ""
local dv = 1
if lenin == -1 then
et.G_Print("There is no Power User IP to remove \n")
else
local filestr = et.trap_FS_Read( fdin, lenin )
for lvl,guid,name in string.gfind(filestr, "(%d)%s%-%s(%x+)%s%-%s*([^%\n]*)") do
if (guid==GUID2) then
guid = string.upper(guid)
fname = name
AdminLV0[GUID2] = false
AdminLV1[GUID2] = false
AdminLV2[GUID2] = false
AdminLV3[GUID2] = false
else
guid = lvl .. " - " .. guid .. " - " .. name .. "\n"
et.trap_FS_Write( guid, string.len(guid) ,fdout )
end
i=i+1
end
end
confirm = 1
et.trap_FS_FCloseFile( fdin )
et.trap_FS_FCloseFile( fdout )
et.trap_FS_Rename( "shrubbottmp.cfg", "shrubbot.cfg" )
if dv == 1 then
loadAdmins()
end
end
function AdminUserLevel(PlayerID)
local guid = ""
if(PlayerID~=-1) then
guid = et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" )
else
guid=-1
end
if ( AdminLV3[guid] ) then
return 3
elseif ( AdminLV2[guid] ) then
return 2
elseif ( AdminLV1[guid] ) then
return 1
end
return 0
end
function showAdmins()
local fd,len = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_READ )
if len <= 0 then
et.G_Print("WARNING: No Admins's Defined! \n")
else
local filestr = et.trap_FS_Read( fd, len )
for level,guid,Name in string.gfind(filestr, "(%d)%s%-%s(%x+)%s%-%s*([^%\n]*)") do
-- upcase for exact matches
GUID = string.upper(guid)
et.G_Print( "Name = " ..Name.. "\nLevel = " ..level.. "\n\n")
end
end
et.trap_FS_FCloseFile( fd )
end
function loadAdmins()
local i = 0
local i2 = 0
local dv = 1
local dv2 = 1
local fd,len = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_READ )
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
chkGUID[i] = 0
AdminName[i] = ""
end
if len <= 0 then
et.G_Print("WARNING: No Admins's Defined! \n")
else
local filestr = et.trap_FS_Read( fd, len )
local i = 0
for guid in string.gfind(filestr, "%d%s%-%s(%x+)%s%-%s*") do
-- upcase for exact matches
chkGUID[i] = string.upper(guid)
if dv == 1 then
i=i+1
end
end
for guid2 in string.gfind(filestr, "(%d%s%-%s%x+)%s%-%s*") do
-- upcase for exact matches
guid2 = string.upper(guid2)
addAdmin(guid2)
end
for guid3,Name in string.gfind(filestr, "%d%s%-%s(%x+)%s%-%s*([^%\n]*)") do
AdminName[guid3] = Name
end
end
et.trap_FS_FCloseFile( fd )
end
function burn(client)
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getPlayernameToIdburn(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
et.gentity_set(clientnum,"health",(et.gentity_get(clientnum,"health")-5))
local slapsound = "sound/player/hurt_barbwire.wav"
soundindex = et.G_SoundIndex(slapsound)
et.G_Sound( clientnum, soundindex)
et.trap_SendServerCommand(-1, ("b 16 \"^7" .. et.gentity_get(clientnum,"pers.netname") .. " ^7was Slapped^7"))
end
function getPlayernameToIdburn(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function Gib(client)
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getPlayernameToId(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
et.G_Damage(clientnum, clientnum, 1022, 400, 24, 0)
et.trap_SendServerCommand(-1, ("b 16 \"^7" .. et.gentity_get(clientnum,"pers.netname") .. " ^7was Gibbed^7"))
end
function getPlayernameToId(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function spec999()
local matches = 0
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local team = tonumber(et.gentity_get(i,"sess.sessionTeam"))
local ping = tonumber(et.gentity_get(i,"ps.ping"))
if team ~= 3 and team ~= 0 then
if ping >= 999 then
matches = matches + 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref remove " .. i .. "\n" )
end
end
end
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Spec999: ^7Moving ^1" ..matches.. " ^7players to spectator\n" )
end
function et_ClientBegin( clientNum )
local name=et.Info_ValueForKey( et.trap_GetUserinfo( clientNum ), "name" )
ModInfo(clientNum)
loadAdmins()
AdminUserLevel(clientNum)
teamkillr[clientNum] = 0
selfkills[clientNum] = 0
muted[clientNum] = 0
Bname[clientNum] = name
if k_logchat == 1 then
log_chat(clientNum, "CONN", "DV")
end
end
function ModInfo(PlayerID)
et.trap_SendServerCommand( PlayerID,"cpm \"This server is running the new KMOD version " .. KMODversion .. "\n\"")
et.trap_SendServerCommand( PlayerID,"cpm \"Created by Clutch152.\n\"")
end
function advPlayers(PlayerID)
et.trap_SendServerCommand(PlayerID, string.format("print \"^3 ID ^1: ^3Player Rate Snaps\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1--------------------------------------------\n"))
local team = { "^1X" , "^4L" , " " }
local playercount = 0
local spa = 24
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local teamnumber = tonumber(et.gentity_get(i,"sess.sessionTeam"))
local cname = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "name" )
local rate = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "rate" )
local snaps = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "snaps" )
local name = string.lower(et.Q_CleanStr( cname ))
local namel = tonumber(string.len(name))-1
local namespa = spa - namel
local space = string.rep( " ", namespa)
local ref = tonumber(et.gentity_get(PlayerID,"sess.referee"))
if ref == 0 then
ref = ""
else
ref = "^3REF"
end
if et.gentity_get(i,"pers.connected") ~= 2 then
else
et.trap_SendServerCommand(PlayerID, string.format('print "%s^7%2s ^1:^7 %s%s %5s %5s %s\n"',team[teamnumber], i, name, space, rate, snaps, ref))
playercount = playercount + 1
end
end
et.trap_SendServerCommand(PlayerID, string.format("print \"\n^3 " ..playercount.. " ^7total players\n"))
end
function admins(PlayerID)
et.trap_SendServerCommand(PlayerID, string.format("print \"^3 ID ^1:^3 Player ^1: ^3 Level ^1 : ^3 AdminName\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1----------------------------------------------------------------\n"))
local team = { "^1X" , "^4L" , " " }
local playercount = 0
local spa = 23
local adname = ""
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
guis = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "cl_guid" )
GUID = string.upper( guis )
local teamnumber = tonumber(et.gentity_get(i,"sess.sessionTeam"))
local cname = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "name" )
local nudge = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "cl_timenudge" )
local pitch = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "m_pitch" )
local name = string.lower(et.Q_CleanStr( cname ))
local namel = tonumber(string.len(name))-1
local namespa = spa - namel
local space = string.rep( " ", namespa)
local fps = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "com_maxfps" )
local sens = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "sensitivity" )
local fov = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "cg_fov" )
local pmove = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "pmove_fixed" )
local level = AdminUserLevel(i)
adname = AdminName[GUID]
if AdminUserLevel(i) == nil or AdminUserLevel(i) == " " or AdminUserLevel(i) < 1 then
else
if et.gentity_get(i,"pers.connected") ~= 2 then
else
et.trap_SendServerCommand(PlayerID, string.format('print "%s^7%2s ^1:^7 %s%s ^1: %5s ^1:^7 ^7%s\n"',team[teamnumber], i, name, space, level, adname))
playercount = playercount + 1
--string.format('print "%2d : %6s : %s\n"',i, team, et.gentity_get(i,'pers.netname')))
end
end
end
et.trap_SendServerCommand(PlayerID, string.format("print \"\n^3 " ..playercount.. " ^7total admins\n"))
return 1
end
function private_message(PlayerID,client,message)
local clientnum = ""
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"There is no client associated with this slot number\n"))
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
else
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"Please enter a slot number between 0 and 63\n"))
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"Player name requires more than 2 characters\n"))
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = name2IDPM(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"Try name again or use slot number\n"))
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
local name = et.gentity_get(PlayerID,"pers.netname")
local rname = et.gentity_get(clientnum,"pers.netname")
if PlayerID == 1022 then
name = "^1SERVER"
end
if commandSaid then
et.trap_SendServerCommand(PlayerID, ("b 8 \"^dPrivate message sent to "..rname.."^d --> ^3" .. message .. "^7"))
et.G_ClientSound(PlayerID, pmsound)
commandSaid = false
else
et.G_Print("Private message sent to "..rname.."^d --> ^3" .. message .. "^7\n")
end
et.trap_SendServerCommand(clientnum, ("b 8 \"^dPrivate message from "..name.."^d --> ^3" .. message .. "^7"))
et.G_ClientSound(clientnum, pmsound)
end
function name2IDPM(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
--[[
function curse_filter( PlayerID )
local k_cursemode = 1
local name = et.gentity_get(PlayerID,"pers.netname")
if k_cursemode == 1 then
muted[PlayerID] = mtime + 30000 --5 minutes in milliseconds
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref mute "..PlayerID.."\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3CurseFilter: ^7"..name.." ^7has been auto muted for ^15^7 minutes!\n" )
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3"..muted[PlayerID].."\n" )
end
end
--]]
function log_chat( PlayerID, mode, text, PMID )
local text = et.Q_CleanStr(text)
local fdadm,len = et.trap_FS_FOpenFile( "chat_log.log", et.FS_APPEND )
local time = os.date("%x %I:%M:%S%p")
if mode == et.SAY_ALL then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. ": " .. text.. "\n"
elseif mode == et.SAY_TEAM then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.." (TEAM): " ..text.. "\n"
elseif mode == et.SAY_BUDDY then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (BUDDY): " ..text.. "\n"
elseif mode == et.SAY_TEAMNL then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (TEAM): " ..text.. "\n"
elseif mode == "VSAY_TEAM" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (VSAY_TEAM): " ..text.. "\n"
elseif mode == "VSAY_BUDDY" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (VSAY_BUDDY): " ..text.. "\n"
elseif mode == "VSAY_ALL" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (VSAY): " ..text.. "\n"
elseif mode == "PMESSAGE" then
local from = "SERVER"
if PlayerID ~= 1022 then
from = et.gentity_get(PlayerID,"pers.netname")
end
local rec1 = part2id(PMID)
if rec1 then
local repipiant = et.gentity_get(rec1,"pers.netname")
LOG = "("..time..") "..from.." to "..repipiant.." (PRIVATE): " ..text.. "\n"
end
elseif mode == "PMADMINS" then
local from = "SERVER"
if PlayerID ~= 1022 then
from = et.gentity_get(PlayerID,"pers.netname")
end
local repipiant = "ADMINS"
LOG = "("..time..") "..from.." to "..repipiant.." (PRIVATE): " ..text.. "\n"
elseif mode == "CONN" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "*** " ..name.. " HAS ENTERED THE GAME ***\n"
elseif mode == "NAME_CHANGE" then
LOG = "*** " ..PlayerID.. " HAS RENAMED TO "..text.." ***\n"
elseif mode == "DISCONNECT" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "*** " ..name.. " HAS DISCONNECTED ***\n"
elseif mode == "START" then
LOG = "\n ***SERVER RESTART OR MAP CHANGE***\n\n"
end
et.trap_FS_Write( LOG, string.len(LOG) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
end
function et_ClientCommand( clientNum, command )
local name2 = et.gentity_get(clientNum,"pers.netname")
local name2 = et.Q_CleanStr( name2 )
local arg0 = string.lower(et.trap_Argv(0))
local arg1 = string.lower(et.trap_Argv(1))
local muted = et.gentity_get(clientNum, "sess.muted")
if muted == 0 then
if arg0 == "say" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_ALL, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_ALL, et.ConcatArgs(1))
elseif arg0 == "say_team" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_TEAM, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_TEAM, et.ConcatArgs(1))
elseif arg0 == "say_buddy" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_BUDDY, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_BUDDY, et.ConcatArgs(1))
elseif arg0 == "say_teamnl" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_TEAMNL, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_TEAMNL, et.ConcatArgs(1))
elseif arg0 == "sc" then
if AdminUserLevel(clientNum) == 3 then
local name = et.gentity_get(clientNum,"pers.netname")
if k_advancedpms == 1 then
say_parms = "m2 ".. clientNum
else
say_parms = "m "..name
end
et_ClientSay( clientNum, SC, et.ConcatArgs(1))
return 1
end
elseif arg0 == "vsay" then
if k_logchat == 1 then
log_chat( clientNum, "VSAY_ALL", et.ConcatArgs(1))
end
elseif arg0 == "vsay_team" then
if k_logchat == 1 then
log_chat( clientNum, "VSAY_TEAM", et.ConcatArgs(1))
end
elseif arg0 == "vsay_buddy" then
if k_logchat == 1 then
log_chat( clientNum, "VSAY_BUDDY", et.ConcatArgs(1))
end
end
end
if arg0 == "m" or arg0 == "pm" then
if k_logchat == 1 then
log_chat( clientNum, "PMESSAGE", et.ConcatArgs(2), et.trap_Argv(1) )
end
elseif arg0 == "ma" or arg0 == "pma" or arg0 == "msg" then
if k_logchat == 1 then
log_chat( clientNum, "PMADMINS", et.ConcatArgs(1))
end
end
if k_advplayers == 1 then
if string.lower(command) == "players" then
advPlayers(clientNum)
return 1
end
if AdminUserLevel(clientNum) >= 2 then
if string.lower(command) == "admins" then
admins(clientNum)
return 1
end
end
end
local ref = tonumber(et.gentity_get(clientNum,"sess.referee"))
if tonumber(et.gentity_get(clientNum,"sess.sessionTeam")) == 3 then
if et.trap_Argv(0) == "team" and et.trap_Argv(1) then
switchteam[clientNum] = 1
end
end
if votedis == 1 then
local vote = et.trap_Argv(1)
if AdminUserLevel(clientNum) < 3 then
if et.trap_Argv(0) == "callvote" then
if vote == "shuffleteamsxp" or vote == "shuffleteamsxp_norestart" or vote == "nextmap" or vote == "swapteams" or vote == "matchreset" or vote == "maprestart" or vote == "map" then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "cancelvote; qsay Voting has been disabled!\n")
end
end
end
end
local vote = et.trap_Argv(1)
if k_antiunmute == 1 then
if vote == "unmute" then
local client = et.trap_Argv(2)
local clientnumber = part2id(client)
local targetmuted = et.gentity_get(clientnumber, "sess.muted")
if targetmuted == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "cancelvote; qsay Cannot vote to unmute a muted person!\n")
end
end
end
if arg0 == "ref" and arg1 == "pause" and pausedv == 0 then
GAMEPAUSED = 1
dummypause = mtime
elseif arg0 == "ref" and arg1 == "unpause" and pausedv == 1 then
if ((mtime - dummypause)/1000) >= 5 then
GAMEPAUSED = 0
end
end
if k_advancedpms == 1 then
if string.lower(command) == "m" or string.lower(command) == "msg" or string.lower(command) == "pm" then
if et.trap_Argv(1) == nil or et.trap_Argv(1) == "" or et.trap_Argv(1) == " " then
et.trap_SendServerCommand(clientNum, string.format("print \"Useage: /m \[pname/ID\] \[message\]\n"))
else
commandSaid = true
private_message(clientNum, et.trap_Argv(1), et.ConcatArgs(2))
return 1
end
end
end
if string.lower(command) == "ma" or string.lower(command) == "pma" then
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if AdminUserLevel(i) >= 2 then
local name = et.gentity_get(clientNum,"pers.netname")
et.trap_SendServerCommand(i, ("b 8 \"^dPm to admins from "..name.."^d --> ^3" .. et.ConcatArgs(1) .. "^7"))
if k_advancedpms == 1 then
et.G_ClientSound(i, pmsound)
end
end
end
if AdminUserLevel(clientNum) < 2 then
et.trap_SendServerCommand(clientNum, ("b 8 \"^dPm to admins has been sent^d --> ^3" .. et.ConcatArgs(1) .. "^7"))
if k_advancedpms == 1 then
et.G_ClientSound(clientNum, pmsound)
end
end
return 1
end
if k_slashkilllimit == 1 then
local name = et.gentity_get(clientNum,"pers.netname")
local teamnumber = tonumber(et.gentity_get(clientNum,"sess.sessionTeam"))
if string.lower(command) == "kill" then
if teamnumber ~= 3 then
if et.gentity_get(clientNum,"health") > 0 then
if selfkills[clientNum] < k_slashkills then
selfkills[clientNum] = selfkills[clientNum] + 1
if selfkills[clientNum] == k_slashkills then
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. name .. " ^7You have reached your /kill limit! You can no longer /kill for the rest of this map.\n" )
et.G_ClientSound(clientNum, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. name .. " ^7You have reached your /kill limit! You can no longer /kill for the rest of this map.\n" )
end
elseif selfkills[clientNum] == (k_slashkills - 1) then
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. name .. " ^7You have ^11^7 /kill left for this map.\n" )
et.G_ClientSound(clientNum, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. name .. " ^7You have ^11^7 /kill left for this map.\n" )
end
end
else
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. name .. " ^7You may no longer /kill for the rest of this map!\n" )
et.G_ClientSound(clientNum, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. name .. " ^7You may no longer /kill for the rest of this map!\n" )
end
return 1
end
end
end
end
end
return 0
end
function et_ClientSay(clientNum,mode,text)
local command1=""
local commands = 0
local first = ""
local second = ""
local third = ""
local returnVal = 0
s,e,first,second,third = string.find(text,"%s*([%p]?[.%S]*)%s+([.%S]*)%s+(.*)")
if(mode==et.SAY_ALL) then
command1="say"
elseif (mode==et.SAY_TEAM or mode==et.SAY_TEAMNL) then
command1="say_team"
elseif (mode==et.SAY_BUDDY) then
command1="say_buddy"
elseif (mode==SC) then
command1="SC"
end
if(third~=nil) then
commands=4
else
s,e,first,second = string.find(text,"%s*([^%s+]+)%s+(.+)%s*")
third=""
if(second~=nil) then
commands = 3
else
second=""
first = et.ConcatArgs(1)
commands = 2
end
end
return ClientUserCommand(clientNum, command1, first, second, third, commands)
end
function comds(client, cvar1, caller)
local clientnum = tonumber(client)
if clientnum then
local wname = ""
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getsetlvlidfpname(client)
wname = clientnum
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if kick then
local client2 = clientnum+1
if AdminUserLevel(caller) > AdminUserLevel(clientnum) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "pb_sv_kick " .. client2 .. " " .. cvar1 .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ":^7 Cannot kick a higher admin\n" )
end
kick = false
commandSaid = false
elseif ban then
local client2 = clientnum+1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "pb_sv_ban " .. client2 .. " " .. cvar1 .. "\n" )
ban = false
commandSaid = false
elseif warn then
local name = et.gentity_get(clientnum,"pers.netname")
wname = string.lower(et.Q_CleanStr( name ))
local cvar1 = tostring( cvar1 )
if AdminUserLevel(caller) > AdminUserLevel(clientnum) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref warn \"" .. wname .. "\" \"" .. cvar1 .. "\"\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ":^7 Cannot warn a higher admin\n" )
end
warn = false
commandSaid = false
elseif mute then
local name = et.gentity_get(clientnum,"pers.netname")
if AdminUserLevel(caller) > AdminUserLevel(clientnum) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref mute " .. clientnum .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Mute: ^7" ..name.. " ^7has been muted\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ":^7 Cannot mute a higher admin\n" )
end
mute = false
commandSaid = false
elseif unmute then
local name = et.gentity_get(clientnum,"pers.netname")
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref unmute " .. clientnum .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Unmute: ^7" ..name.. " ^7has been unmuted\n" )
unmute = false
commandSaid = false
elseif putaxis then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref putaxis " .. clientnum .. "\n" )
putaxis = false
commandSaid = false
elseif putallies then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref putallies " .. clientnum .. "\n" )
putallies = false
commandSaid = false
elseif putspec then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref remove " .. clientnum .. "\n" )
putspec = false
commandSaid = false
elseif makeshoutcaster then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref makeshoutcaster " .. clientnum .. "\n" )
makeshoutcaster = false
commandSaid = false
elseif removeshoutcaster then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref removeshoutcaster " .. clientnum .. "\n" )
removeshoutcaster = false
commandSaid = false
elseif makereferee then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref referee " .. clientnum .. "\n" )
makereferee = false
commandSaid = false
elseif removereferee then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref unreferee " .. clientnum .. "\n" )
removereferee = false
commandSaid = false
elseif finger then
adminStatus(clientnum)
elseif getip then
local IP = et.Info_ValueForKey( et.trap_GetUserinfo( clientnum ), "ip" )
local cvar1 = tonumber(cvar1)
local name = et.gentity_get(clientnum,"pers.netname")
et.trap_SendServerCommand(cvar1, string.format("b 8 \"^3Getip: " .. name .. "^7's IP is " .. IP .. ""))
getip = false
commandSaid = false
elseif getguid then
local GUID = et.Info_ValueForKey( et.trap_GetUserinfo( clientnum ), "cl_guid" )
local cvar1 = tonumber(cvar1)
local name = et.gentity_get(clientnum,"pers.netname")
et.trap_SendServerCommand(cvar1, string.format("b 8 \"^3Getguid: " .. name .. "^7's GUID is " .. GUID .. ""))
getguid = false
commandSaid = false
end
end
--[[
function getsetlvlidfpname(name)
local i
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
for i=0,63,1 do
playeri = et.gentity_get(i,"pers.netname")
if playeri then
playerp = string.lower(et.Q_CleanStr( playeri ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
if matchcount == 1 then
slot = i
else
slot = nil
end
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
--]]
function getsetlvlidfpname(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function part2id(client)
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
return nil
end
return clientnum
end
else
local client = string.lower(et.Q_CleanStr( client ))
if client then
s,e=string.find(client, client)
if e <= 2 then
return nil
else
clientnum = nameforID(client)
end
end
if not clientnum then
return nil
end
end
return clientnum
end
--[[
function nameforID(name)
local i
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
for i=0,63,1 do
playeri = et.gentity_get(i,"pers.netname")
if playeri then
playerp = string.lower(et.Q_CleanStr( playeri ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
if matchcount == 1 then
slot = i
else
slot = nil
end
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
--]]
function nameforID(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function loadcommands()
local fd,len = et.trap_FS_FOpenFile( "commands.cfg", et.FS_READ )
if len > 0 then
local filestr = et.trap_FS_Read( fd, len )
local counter0 = 0
local counter1 = 0
local counter2 = 0
local counter3 = 0
for level,comm in string.gfind(filestr, "[^%#](%d)%s*%-%s*(%w+)%s*%=%s*[^%\n]*") do
d0 = 5
d1 = 1
d2 = 6
d3 = 23
local comm2 = k_commandprefix..comm
if tonumber(level) == 0 then
counter0 = counter0 + 1
lvl0c = d0 + counter0
lvl0[lvl0c] = comm2
elseif tonumber(level) == 1 then
counter1 = counter1 + 1
lvl1c = d1 + counter1
lvl1[lvl1c] = comm2
elseif tonumber(level) == 2 then
counter2 = counter2 + 1
lvl2c = d2 + counter2
lvl2[lvl2c] = comm2
elseif tonumber(level) == 3 then
counter3 = counter3 + 1
lvl3c = d3 + counter3
lvl3[lvl3c] = comm2
end
end
end
et.trap_FS_FCloseFile( fd )
end
function readconfig()
loadAdmins()
loadspreerecord()
lvl0c = 5
lvl0 = {
k_commandprefix.."admintest",
k_commandprefix.."time",
k_commandprefix.."date",
k_commandprefix.."spree_record",
k_commandprefix.."tk_index",
}
lvl1c = 1
lvl1 = {
k_commandprefix.."spec999",
}
lvl2c = 6
lvl2 = {
k_commandprefix.."finger",
k_commandprefix.."kick",
k_commandprefix.."warn",
k_commandprefix.."mute",
k_commandprefix.."unmute",
k_commandprefix.."timelimit",
}
lvl3c = 23
lvl3 = {
k_commandprefix.."ban",
k_commandprefix.."readconfig",
k_commandprefix.."makeshoutcaster",
k_commandprefix.."makereferee",
k_commandprefix.."removeshoutcaster",
k_commandprefix.."removereferee",
k_commandprefix.."gravity",
k_commandprefix.."speed",
k_commandprefix.."knifeonly",
k_commandprefix.."knockback",
k_commandprefix.."cheats",
k_commandprefix.."laser",
k_commandprefix.."spree_restart",
k_commandprefix.."getip",
k_commandprefix.."crazygravity",
k_commandprefix.."getguid",
k_commandprefix.."setlevel",
k_commandprefix.."gib",
k_commandprefix.."slap",
k_commandprefix.."panzerwar",
k_commandprefix.."frenzy",
k_commandprefix.."grenadewar",
k_commandprefix.."sniperwar",
}
loadcommands()
end
function ClientUserCommand(PlayerID, Command, BangCommand, Cvar1, Cvar2, Cvarct)
local fd,len = et.trap_FS_FOpenFile( "commands.cfg", et.FS_READ )
if len > 0 then
local filestr = et.trap_FS_Read( fd, len )
for level,comm,str in string.gfind(filestr, "[^%#](%d)%s*%-%s*([%w%_]*)%s*%=%s*([^%\n]*)") do
local strnumber = {}
local strnumber = ParseString(str)
local comm2 = k_commandprefix..comm
local t = tonumber(et.gentity_get(PlayerID,"sess.sessionTeam"))
local c = tonumber(et.gentity_get(PlayerID,"sess.latchPlayerType"))
local player_last_victim_name = ""
local player_last_killer_name = ""
local player_last_victim_cname = ""
local player_last_killer_cname = ""
if playerlastkilled[PlayerID] == 1022 then
player_last_victim_name = "NO ONE"
player_last_victim_cname = "NO ONE"
else
player_last_victim_name = et.Q_CleanStr(et.gentity_get(playerlastkilled[PlayerID],"pers.netname"))
player_last_victim_cname = et.gentity_get(playerlastkilled[PlayerID],"pers.netname")
end
if playerwhokilled[PlayerID] == 1022 then
player_last_killer_name = "NO ONE"
player_last_killer_cname = "NO ONE"
else
player_last_killer_name = et.Q_CleanStr(et.gentity_get(playerwhokilled[PlayerID],"pers.netname"))
player_last_killer_cname = et.gentity_get(playerwhokilled[PlayerID],"pers.netname")
end
local pnameID = part2id(Cvar1)
if not pnameID then
pnameID = 1021
end
local PBpnameID = pnameID + 1
local str = string.gsub(str, "<CLIENT_ID>", PlayerID)
local str = string.gsub(str, "<GUID>", et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
local str = string.gsub(str, "<COLOR_PLAYER>", et.gentity_get(PlayerID,"pers.netname"))
local str = string.gsub(str, "<ADMINLEVEL>", AdminUserLevel(PlayerID))
local str = string.gsub(str, "<PLAYER>", et.Q_CleanStr(et.gentity_get(PlayerID,"pers.netname")))
local str = string.gsub(str, "<PLAYER_CLASS>", class[c])
local str = string.gsub(str, "<PLAYER_TEAM>", team[t])
local str = string.gsub(str, "<PARAMETER>", Cvar1..Cvar2)
local str = string.gsub(str, "<PLAYER_LAST_KILLER_ID>", playerwhokilled[PlayerID])
local str = string.gsub(str, "<PLAYER_LAST_KILLER_NAME>", player_last_killer_name)
local str = string.gsub(str, "<PLAYER_LAST_KILLER_CNAME>", player_last_killer_cname)
local str = string.gsub(str, "<PLAYER_LAST_KILLER_WEAPON>", killedwithweapv[PlayerID])
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_ID>", playerlastkilled[PlayerID])
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_NAME>", player_last_victim_name)
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_CNAME>", player_last_victim_cname)
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_WEAPON>", killedwithweapk[PlayerID])
local str = string.gsub(str, "<PNAME2ID>", pnameID)
local str = string.gsub(str, "<PBPNAME2ID>", PBpnameID)
local teamnumber = tonumber(et.gentity_get(PlayerID,"sess.sessionTeam"))
local classnumber = tonumber(et.gentity_get(PlayerID,"sess.latchPlayerType"))
if (string.lower(BangCommand) == comm2 ) then
if tonumber(level) <= AdminUserLevel(PlayerID) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "".. str .. "\n" )
if strnumber[1] == "forcecvar" then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3etpro svcmd: ^7forcing client cvar ["..strnumber[2].."] to [".. Cvar1 .."]\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3"..comm..":^7 Insufficient Admin status\n" )
end
end
end
end
et.trap_FS_FCloseFile( fd )
if (string.lower(BangCommand) == k_commandprefix.."admintest") then
adminStatus(PlayerID)
elseif (string.lower(BangCommand) == k_commandprefix.."time" ) then
local time = os.date("%I:%M:%S%p")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." The server time is " ..time.. "\n" )
elseif (string.lower(BangCommand) == k_commandprefix.."date" ) then
local date = os.date("%x %I:%M:%S%p")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." The server date is " ..date.. "\n" )
elseif (string.lower(BangCommand) == k_commandprefix.."spree_record" ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ".. tostring(oldspree2) .."\n" )
elseif (string.lower(BangCommand) == k_commandprefix.."tk_index" ) then
local status = ""
local name = et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "name" )
if teamkillr[PlayerID] < -1 then
status = "^1NOT OK"
else
status = "^2OK"
end
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Tk_index: ^7" .. name .. "^7 has a tk index of ^3" ..teamkillr[PlayerID] .. "^7 \[" .. status .. "^7\] \n" )
elseif (string.lower(BangCommand) == k_commandprefix.."listcmds" ) then
lstcomds( PlayerID )
end
--Admin commands
--level 3
if (string.lower(BangCommand) == k_commandprefix.."gib" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib:^7 \[partname/id#\]\n" )
else
commandSaid = true
Gib(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."slap" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap:^7 \[partname/id#\]\n" )
else
commandSaid = true
burn(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."setlevel" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel:^7 \[partname/id#\] \[level\]\n" )
else
commandSaid = true
sldv = 1
setlevel(Cvar1, 0)
sldv = 0
setlevel(Cvar1, Cvar2)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."readconfig" ) then
if AdminUserLevel(PlayerID) == 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "exec kmod.cfg; qsay ^3ReadConfig:^7 Config reloaded\n" )
readconfig()
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3ReadConfig:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."spree_restart" ) then
if AdminUserLevel(PlayerID) == 3 then
spreerecord_reset()
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Spree reset:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."ban" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Ban:^7 \[partname/id#\] \[reason\]\n" )
else
commandSaid = true
ban = true
fullcom = "Ban"
comds(Cvar1, Cvar2)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Ban:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."getip" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getip:^7 \[partname/id#\]\n" )
else
commandSaid = true
getip = true
fullcom = "Getip"
comds(Cvar1, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getip:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."getguid" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getguid:^7 \[partname/id#\]\n" )
else
commandSaid = true
getguid = true
fullcom = "Getguid"
comds(Cvar1, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getguid:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!makeshoutcaster" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makeshoutcaster:^7 \[partname/id#\]\n" )
else
commandSaid = true
makeshoutcaster = true
fullcom = "Makeshoutcaster"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makeshoutcaster:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!removeshoutcaster" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removeshoutcaster:^7 \[partname/id#\]\n" )
else
commandSaid = true
removeshoutcaster = true
fullcom = "Removeshoutcaster"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removeshoutcaster:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!makereferee" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makereferee:^7 \[partname/id#\]\n" )
else
commandSaid = true
makereferee = true
fullcom = "Makereferee"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makereferee:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!removereferee" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removereferee:^7 \[partname/id#\]\n" )
else
commandSaid = true
removereferee = true
fullcom = "Removereferee"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removereferee:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!gravity" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 Changes the gravity \[default = 800\]\n" )
else
local grav = tonumber(Cvar1)
if grav then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_gravity " .. grav .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 Gravity has been changed to " .. grav .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 Please enter in only numbers\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!knifeonly" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7 Disable or enable g_knifeonly \[0-1\]\n" )
else
local knife = tonumber(Cvar1)
if knife >= 0 and knife <= 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_knifeonly " .. knife .. "\n" )
if knife == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7Knifeonly has been Enabled\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7Knifeonly has been Disabled\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!speed" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 Changes game speed \[default = 320\]\n" )
else
local speed2 = tonumber(Cvar1)
if speed then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_speed " .. speed2 .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 Game speed has been changed to " .. speed2 .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 Please enter in only numbers\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!knockback" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 Changes knockback \[default = 1000\]\n" )
else
local knock = tonumber(Cvar1)
if knock then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_knockback " .. knock .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 Knockback has been changed to " .. knock .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 Please enter in only numbers\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!cheats" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7 Disable or enable cheats \[0-1\]\n" )
else
local cheat = tonumber(Cvar1)
if cheat >= 0 and cheat <= 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "forcecvar sv_cheats " .. cheat .. "\n" )
if cheat == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7Cheats have been Enabled\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7Cheats have been Disabled\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!laser" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7 Disable or enable g_debugbullets \[0-1\]\n" )
else
local laser = tonumber(Cvar1)
if laser >= 0 and laser <= 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "forcecvar g_debugbullets " .. laser .. "\n" )
if laser == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7Laser has been Enabled\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7Laser has been Disabled\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."crazygravity" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Disable or enable crazygravity \[0-1\]\n" )
else
local crazy = tonumber(Cvar1)
if crazy >= 0 and crazy <= 1 then
if crazy == 1 then
if CGactive == 0 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity has been Enabled\n" )
crazygravity = true
crazydv = 1
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity is already active\n" )
end
else
if CGactive == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity has been Disabled. Resetting gravity\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_gravity 800\n" )
crazygravity = false
crazydv = 0
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."panzerwar" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Disable or enable panzerwar \[0-1\]\n" )
else
local panz = tonumber(Cvar1)
local dspeed = (speed*2)
if panz >= 0 and panz <= 1 then
if panz == 1 then
if panzdv == 0 then
if frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Frenzy mode must be disabled first\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Grenadewar must be disabled first\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Sniperwar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics 0; team_maxcovertops 0; team_maxfieldops 0; team_maxengineers 0; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers -1; g_speed " .. dspeed .. "; forcecvar g_soldierchargetime 0\n" )
panzdv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
originalclass[p] = tonumber(et.gentity_get(p,"sess.latchPlayerType"))
originalweap[p] = tonumber(et.gentity_get(p,"sess.latchPlayerWeapon"))
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
et.gentity_set(p,"sess.latchPlayerType",0)
et.gentity_set(p,"sess.latchPlayerWeapon",5)
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar is already active\n" )
end
else
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar has been Disabled.\n" )
panzerwar_reset()
panzdv = 0
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") == 1 or et.gentity_get(p,"sess.sessionTeam") == 2 then
if et.gentity_get(p,"health") >= 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."frenzy" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Disable or enable frenzy \[0-1\]\n" )
else
local frenz = tonumber(Cvar1)
if frenz >= 0 and frenz <= 1 then
if frenz == 1 then
if frenzdv == 0 then
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Panzerwar must be disabled first\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Grenadewar must be disabled first\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Sniperwar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics -1; team_maxcovertops -1; team_maxfieldops -1; team_maxengineers -1; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers 0\n" )
frenzdv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy is already active\n" )
end
else
if frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy has been Disabled.\n" )
frenzdv = 0
frenzy_reset()
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."grenadewar" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Disable or enable Grenadewar \[0-1\]\n" )
else
local gren = tonumber(Cvar1)
if gren >= 0 and gren <= 1 then
if gren == 1 then
if grendv == 0 then
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Panzerwar must be disabled first\n" )
elseif frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Frenzy must be disabled first\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Sniperwar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics -1; team_maxcovertops -1; team_maxfieldops -1; team_maxengineers -1; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers 0\n" )
grendv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar is already active\n" )
end
else
if grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar has been Disabled.\n" )
grendv = 0
grenadewar_reset()
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."sniperwar" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Disable or enable Sniperwar \[0-1\]\n" )
else
local snip = tonumber(Cvar1)
if snip >= 0 and snip <= 1 then
if snip == 1 then
if snipdv == 0 then
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Panzerwar must be disabled first\n" )
elseif frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Frenzy must be disabled first\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Grenadewar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics -1; team_maxcovertops -1; team_maxfieldops -1; team_maxengineers -1; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers 0\n" )
snipdv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
originalclass[p] = tonumber(et.gentity_get(p,"sess.latchPlayerType"))
originalweap[p] = tonumber(et.gentity_get(p,"sess.latchPlayerWeapon"))
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar is already active\n" )
end
else
if snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar has been Disabled.\n" )
snipdv = 0
sniperwar_reset()
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 command unavailible due to lack of required admin status!\n" )
end
end
--level 2
if (string.lower(BangCommand) == "!kick" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Kick:^7 \[partname/id#\] \[time\] \[reason\]\n" )
else
commandSaid = true
kick = true
fullcom = "Kick"
comds(Cvar1, Cvar2, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Kick:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!warn" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Warn:^7 \[partname/id#\] \[reason\]\n" )
else
commandSaid = true
warn = true
fullcom = "Warn"
comds(Cvar1, Cvar2, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Warn:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!mute" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Mute:^7 \[partname/id#\]\n" )
else
commandSaid = true
mute = true
fullcom = "Mute"
comds(Cvar1, "dv", PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Mute:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!timelimit" ) then
if AdminUserLevel(PlayerID) >= 2 then
local timel = tonumber(Cvar1)
if timel then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "timelimit " .. timel .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Timelimit:^7 Timelimit has been changed to " .. timel .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Timelimit:^7 Please enter in only numbers\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Unlock:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!unmute" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Unmute:^7 \[partname/id#\]\n" )
else
commandSaid = true
unmute = true
fullcom = "Unmute"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Unmute:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."finger" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger:^7 \[partname/id#\]\n" )
else
commandSaid = true
finger = true
fullcom = "Finger"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Map_restart:^7 command unavailible due to lack of required admin status!\n" )
end
end
end
function lstcomds( PlayerID )
if AdminUserLevel(PlayerID) >= 0 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 0 Commands\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for q=1, tonumber(lvl0c), 3 do
local b = q
local m = q + 1
local e = q + 2
if lvl0[b] == nil then
lvl0[b] = " "
end
if lvl0[m] == nil then
lvl0[m] = " "
end
if lvl0[e] == nil then
lvl0[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl0[b], lvl0[m], lvl0[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
if AdminUserLevel(PlayerID) >= 1 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 1 Commands \[PROTECTED USER\]\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for w=1, tonumber(lvl1c), 3 do
local b = w
local m = w + 1
local e = w + 2
if lvl1[b] == nil then
lvl1[b] = " "
end
if lvl1[m] == nil then
lvl1[m] = " "
end
if lvl1[e] == nil then
lvl1[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl1[b], lvl1[m], lvl1[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
if AdminUserLevel(PlayerID) >= 2 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 2 Commands\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for r=1, tonumber(lvl2c), 3 do
local b = r
local m = r + 1
local e = r + 2
if lvl2[b] == nil then
lvl2[b] = " "
end
if lvl2[m] == nil then
lvl2[m] = " "
end
if lvl2[e] == nil then
lvl2[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl2[b], lvl2[m], lvl2[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
if AdminUserLevel(PlayerID) == 3 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 3 Commands \[SILENT COMMANDS WITH /sc \(command\)\]\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for t=1, tonumber(lvl3c), 3 do
local b = t
local m = t + 1
local e = t + 2
if lvl3[b] == nil then
lvl3[b] = " "
end
if lvl3[m] == nil then
lvl3[m] = " "
end
if lvl3[e] == nil then
lvl3[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl3[b], lvl3[m], lvl3[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
end
function et_Obituary( victim, killer, meansOfDeath )
local killername= ""
local killedname=et.Info_ValueForKey( et.trap_GetUserinfo( victim ), "name" )
local victimteam = tonumber(et.gentity_get(victim, "sess.sessionTeam"))
local killerteam = tonumber(et.gentity_get(killer, "sess.sessionTeam"))
weapon = ""
if victimteam ~= killerteam and killer ~= 1022 and killer ~= victim then
killername=et.Info_ValueForKey( et.trap_GetUserinfo( killer ), "name" )
lastblood = killername
khp[killer] = (mtime + 5000)
if khp[victim] == nil then
khp[victim] = 0
end
end
if victimteam ~= killerteam and killer ~= 1022 and killer ~= victim then
if killer ~= victim then
if firstblood == 0 then
firstblood = 1
if k_firstblood == 1 then
local str = string.gsub(k_fb_message, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..fb_location.." "..str.."\n" )
if k_firstbloodsound == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, firstbloodsound)
else
et.G_globalSound(firstbloodsound)
end
end
end
end
end
local killerhp = et.gentity_get(killer, "health")
if k_killerhpdisplay == 1 then
if khp[victim] < mtime then
if (killerhp>=75) then
-- et.trap_SendServerCommand(victim, ("b 8 \"^" .. k_color .. "You got owned!"))
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. "'s hp (^o" ..killerhp .. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
elseif (killerhp>=50 and killerhp<=74) then
-- et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "You're not a total newb."))
et.trap_SendServerCommand(victim, string.format("b 8 \"^7" ..killername .. "^" .. k_color .. "'s hp (^o" ..killerhp.. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
elseif (killerhp>=25 and killerhp<=49) then
-- et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "Try Harder!"))
et.trap_SendServerCommand(victim, string.format("b 8 \"^7" ..killername.. "^" .. k_color .. "'s hp (^o" ..killerhp.. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
elseif (killerhp>0 and killerhp<=24) then
-- et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "Almost!"))
et.trap_SendServerCommand(victim, string.format("b 8 \"^7" ..killername.. "^" .. k_color .. "'s hp (^o" ..killerhp.. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
end
end
if (killerhp<=0) then
if meansOfDeath == 4 or meansOfDeath == 18 or meansOfDeath == 18 or meansOfDeath == 26 or meansOfDeath == 27 or meansOfDeath == 30 or meansOfDeath == 44 or meansOfDeath == 43 then
et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "You were owned by ^7" .. killername .. "^" .. k_color .. "'s explosive inheritance"))
end
end
end
end
kills(victim, killer, meansOfDeath, weapon)
deaths(victim, killer, meansOfDeath, weapon)
if meansOfDeath == 64 or meansOfDeath == 63 then
switchteam[victim] = 1
else
switchteam[victim] = 0
end
--Weapons used!
if (meansOfDeath==0) then
weapon="UNKNOWN"
elseif (meansOfDeath==1) then
weapon="MACHINEGUN"
elseif (meansOfDeath==2) then
weapon="BROWNING"
elseif (meansOfDeath==3) then
weapon="MG42"
elseif (meansOfDeath==4) then
weapon="GRENADE"
elseif (meansOfDeath==5) then
weapon="ROCKET"
elseif (meansOfDeath==6) then
weapon="KNIFE"
elseif (meansOfDeath==7) then
weapon="LUGER"
elseif (meansOfDeath==8) then
weapon="COLT"
elseif (meansOfDeath==9) then
weapon="MP40"
elseif (meansOfDeath==10) then
weapon="THOMPSON"
elseif (meansOfDeath==11) then
weapon="STEN"
elseif (meansOfDeath==12) then
weapon="GARAND"
elseif (meansOfDeath==13) then
weapon="SNOOPERSCOPE"
elseif (meansOfDeath==14) then
weapon="SILENCER"
elseif (meansOfDeath==15) then
weapon="FG42"
elseif (meansOfDeath==16) then
weapon="FG42SCOPE"
elseif (meansOfDeath==17) then
weapon="PANZERFAUST"
elseif (meansOfDeath==18) then
weapon="GRENADE_LAUNCHER"
elseif (meansOfDeath==19) then
weapon="FLAMETHROWER"
elseif (meansOfDeath==20) then
weapon="GRENADE_PINEAPPLE"
elseif (meansOfDeath==21) then
weapon="CROSS"
elseif (meansOfDeath==22) then
weapon="MAPMORTAR"
elseif (meansOfDeath==23) then
weapon="MAPMORTAR_SPLASH"
elseif (meansOfDeath==24) then
weapon="KICKED"
elseif (meansOfDeath==25) then
weapon="GRABBER"
elseif (meansOfDeath==26) then
weapon="DYNAMITE"
elseif (meansOfDeath==27) then
weapon="AIRSTRIKE"
elseif (meansOfDeath==28) then
weapon="SYRINGE"
elseif (meansOfDeath==29) then
weapon="AMMO"
elseif (meansOfDeath==30) then
weapon="ARTY"
elseif (meansOfDeath==31) then
weapon="WATER"
elseif (meansOfDeath==32) then
weapon="SLIME"
elseif (meansOfDeath==33) then
weapon="LAVA"
elseif (meansOfDeath==34) then
weapon="CRUSH"
elseif (meansOfDeath==35) then
weapon="TELEFRAG"
elseif (meansOfDeath==36) then
weapon="FALLING"
elseif (meansOfDeath==37) then
weapon = "SUICIDE"
elseif (meansOfDeath==38) then
weapon="TARGET_LASER"
elseif (meansOfDeath==39) then
weapon="TRIGGER_HURT"
elseif (meansOfDeath==40) then
weapon="EXPLOSIVE"
elseif (meansOfDeath==41) then
weapon="CARBINE"
elseif (meansOfDeath==42) then
weapon="KAR98"
elseif (meansOfDeath==43) then
weapon="GPG40"
elseif (meansOfDeath==44) then
weapon="M7"
elseif (meansOfDeath==45) then
weapon="LANDMINE"
elseif (meansOfDeath==46) then
weapon="SATCHEL"
elseif (meansOfDeath==47) then
weapon="TRIPMINE"
elseif (meansOfDeath==48) then
weapon="SMOKEBOMB"
elseif (meansOfDeath==49) then
weapon="MOBILE_MG42"
elseif (meansOfDeath==50) then
weapon="SILENCED_COLT"
elseif (meansOfDeath==51) then
weapon="GARAND_SCOPE"
elseif (meansOfDeath==52) then
weapon="CRUSH_CONSTRUCTION"
elseif (meansOfDeath==53) then
weapon="CRUSH_CONSTRUCTIONDEATH"
elseif (meansOfDeath==54) then
weapon="CRUSH_CONSTRUCTIONDEATH_NOATTACKER"
elseif (meansOfDeath==55) then
weapon="K43"
elseif (meansOfDeath==56) then
weapon="K43_SCOPE"
elseif (meansOfDeath==57) then
weapon="MORTAR"
elseif (meansOfDeath==58) then
weapon="AKIMBO_COLT"
elseif (meansOfDeath==59) then
weapon="AKIMBO_LUGER"
elseif (meansOfDeath==60) then
weapon="AKIMBO_SILENCEDCOLT"
elseif (meansOfDeath==61) then
weapon="AKIMBO_SILENCEDLUGER"
elseif (meansOfDeath==62) then
weapon="SMOKEGRENADE"
elseif (meansOfDeath==63) then
weapon="SWAP_SPACES"
elseif (meansOfDeath==64) then
weapon="SWITCH_TEAM"
end
end
function kills(victim, killer, meansOfDeath, weapon)
if (meansOfDeath==0) then
weapon="UNKNOWN"
elseif (meansOfDeath==1) then
weapon="MACHINEGUN"
elseif (meansOfDeath==2) then
weapon="BROWNING"
elseif (meansOfDeath==3) then
weapon="MG42"
elseif (meansOfDeath==4) then
weapon="GRENADE"
elseif (meansOfDeath==5) then
weapon="ROCKET"
elseif (meansOfDeath==6) then
weapon="KNIFE"
elseif (meansOfDeath==7) then
weapon="LUGER"
elseif (meansOfDeath==8) then
weapon="COLT"
elseif (meansOfDeath==9) then
weapon="MP40"
elseif (meansOfDeath==10) then
weapon="THOMPSON"
elseif (meansOfDeath==11) then
weapon="STEN"
elseif (meansOfDeath==12) then
weapon="GARAND"
elseif (meansOfDeath==13) then
weapon="SNOOPERSCOPE"
elseif (meansOfDeath==14) then
weapon="SILENCER"
elseif (meansOfDeath==15) then
weapon="FG42"
elseif (meansOfDeath==16) then
weapon="FG42SCOPE"
elseif (meansOfDeath==17) then
weapon="PANZERFAUST"
elseif (meansOfDeath==18) then
weapon="GRENADE_LAUNCHER"
elseif (meansOfDeath==19) then
weapon="FLAMETHROWER"
elseif (meansOfDeath==20) then
weapon="GRENADE_PINEAPPLE"
elseif (meansOfDeath==21) then
weapon="CROSS"
elseif (meansOfDeath==22) then
weapon="MAPMORTAR"
elseif (meansOfDeath==23) then
weapon="MAPMORTAR_SPLASH"
elseif (meansOfDeath==24) then
weapon="KICKED"
elseif (meansOfDeath==25) then
weapon="GRABBER"
elseif (meansOfDeath==26) then
weapon="DYNAMITE"
elseif (meansOfDeath==27) then
weapon="AIRSTRIKE"
elseif (meansOfDeath==28) then
weapon="SYRINGE"
elseif (meansOfDeath==29) then
weapon="AMMO"
elseif (meansOfDeath==30) then
weapon="ARTY"
elseif (meansOfDeath==31) then
weapon="WATER"
elseif (meansOfDeath==32) then
weapon="SLIME"
elseif (meansOfDeath==33) then
weapon="LAVA"
elseif (meansOfDeath==34) then
weapon="CRUSH"
elseif (meansOfDeath==35) then
weapon="TELEFRAG"
elseif (meansOfDeath==36) then
weapon="FALLING"
elseif (meansOfDeath==37) then
weapon = "SUICIDE"
elseif (meansOfDeath==38) then
weapon="TARGET_LASER"
elseif (meansOfDeath==39) then
weapon="TRIGGER_HURT"
elseif (meansOfDeath==40) then
weapon="EXPLOSIVE"
elseif (meansOfDeath==41) then
weapon="CARBINE"
elseif (meansOfDeath==42) then
weapon="KAR98"
elseif (meansOfDeath==43) then
weapon="GPG40"
elseif (meansOfDeath==44) then
weapon="M7"
elseif (meansOfDeath==45) then
weapon="LANDMINE"
elseif (meansOfDeath==46) then
weapon="SATCHEL"
elseif (meansOfDeath==47) then
weapon="TRIPMINE"
elseif (meansOfDeath==48) then
weapon="SMOKEBOMB"
elseif (meansOfDeath==49) then
weapon="MOBILE_MG42"
elseif (meansOfDeath==50) then
weapon="SILENCED_COLT"
elseif (meansOfDeath==51) then
weapon="GARAND_SCOPE"
elseif (meansOfDeath==52) then
weapon="CRUSH_CONSTRUCTION"
elseif (meansOfDeath==53) then
weapon="CRUSH_CONSTRUCTIONDEATH"
elseif (meansOfDeath==54) then
weapon="CRUSH_CONSTRUCTIONDEATH_NOATTACKER"
elseif (meansOfDeath==55) then
weapon="K43"
elseif (meansOfDeath==56) then
weapon="K43_SCOPE"
elseif (meansOfDeath==57) then
weapon="MORTAR"
elseif (meansOfDeath==58) then
weapon="AKIMBO_COLT"
elseif (meansOfDeath==59) then
weapon="AKIMBO_LUGER"
elseif (meansOfDeath==60) then
weapon="AKIMBO_SILENCEDCOLT"
elseif (meansOfDeath==61) then
weapon="AKIMBO_SILENCEDLUGER"
elseif (meansOfDeath==62) then
weapon="SMOKEGRENADE"
elseif (meansOfDeath==63) then
weapon="SWAP_SPACES"
elseif (meansOfDeath==64) then
weapon="SWITCH_TEAM"
end
local kil = tonumber(killer)
local killername = ""
victimname=et.Info_ValueForKey( et.trap_GetUserinfo( victim ), "name" )
playerlastkilled[killer] = victim
killedwithweapk[killer] = tostring(weapon)
local victimteam = tonumber(et.gentity_get(victim, "sess.sessionTeam"))
local killerteam = tonumber(et.gentity_get(killer, "sess.sessionTeam"))
if killer == 1022 then
killername="The World"
if k_sprees == 1 then
if (killingspree[victim]>=5) then
local str = string.gsub(k_end_message3, "#victim#", victimname)
local str = string.gsub(str, "#kills#", killingspree[victim])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[victim]=0
else
killingspree[victim]=0
end
end
if k_spreerecord == 1 then
if killr[victim] > spreerecordkills then
spreerecord(victim, killr[victim])
killr[victim] = 0
else
killr[victim] = 0
end
end
-- multikill[victim]=0
flakmonkey[victim]=0
else
killername=et.Info_ValueForKey( et.trap_GetUserinfo( killer ), "name" )
end
if (killer~=victim) then
if k_sprees == 1 then
deathspree[killer]=0
end
else
end
if Gamestate == 0 then
if k_teamkillrestriction == 1 then
if victimteam == killerteam and killer ~= victim and killer ~= 1022 then
if AdminUserLevel(killer) < k_tk_protect then
local warning = (k_tklimit_low + 1)
local pbkiller = killer + 1
if meansOfDeath == 17 or meansOfDeath == 43 or meansOfDeath == 44 or meansOfDeath == 4 or meansOfDeath == 18 or meansOfDeath == 57 or meansOfDeath == 30 or meansOfDeath == 27 or meansOfDeath == 49 or meansOfDeath == 3 then
teamkillr[killer] = teamkillr[killer] - 0.75
elseif meansOfDeath == 30 or meansOfDeath == 27 then
teamkillr[killer] = teamkillr[killer] - 0.65
elseif meansOfDeath == 45 then -- Mines do nothing!
else
teamkillr[killer] = teamkillr[killer] - 1
end
if warning > teamkillr[killer] and k_tklimit_low < teamkillr[killer] then
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. killername .. " ^1You are making to many teamkills please be more careful or you will be kicked!\n" )
et.G_ClientSound(killer, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. killername .. " ^1You are making to many teamkills please be more careful or you will be kicked!\n" )
end
elseif teamkillr[killer] <= k_tklimit_low then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "pb_sv_kick " .. pbkiller .. " 10 Too many teamkills\n" )
end
end
else
if killer ~= victim then
if killer ~= 1022 then
teamkillr[killer] = teamkillr[killer] + 1
if teamkillr[killer] > k_tklimit_high then
teamkillr[killer] = k_tklimit_high
end
end
end
end
end
end
if k_multikills == 1 then
if killer ~= victim and victimteam ~= killerteam and killer ~= 1022 then
local dvtime = (k_multikill_time * 1000)
multikill[killer]=multikill[killer]+1
if (multikill[killer]==1) then
kill1[killer]=mtime
elseif (multikill[killer]==2) then
kill2[killer]=mtime
local mktime=((kill2[killer]-kill1[killer])/1000)
if ((kill2[killer]-kill1[killer])<=dvtime) then
local str = string.gsub(k_mk_message1, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, doublekillsound)
else
et.G_globalSound(doublekillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==3) then
kill3[killer]=tonumber(mtime)
local mktime=((kill3[killer]-kill2[killer])/1000)
if ((kill3[killer]-kill2[killer])<=dvtime) then
local str = string.gsub(k_mk_message2, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, multikillsound)
else
et.G_globalSound(multikillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==4) then
kill4[killer]=tonumber(mtime)
local mktime=((kill4[killer]-kill3[killer])/1000)
if ((kill4[killer]-kill3[killer])<=dvtime) then
local str = string.gsub(k_mk_message3, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, megakillsound)
else
et.G_globalSound(megakillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==5) then
kill5[killer]=tonumber(mtime)
local mktime=((kill5[killer]-kill4[killer])/1000)
if ((kill5[killer]-kill4[killer])<=dvtime) then
local str = string.gsub(k_mk_message4, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, ultrakillsound)
else
et.G_globalSound(ultrakillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==6) then
kill6[killer]=tonumber(mtime)
local mktime=((kill6[killer]-kill5[killer])/1000)
if ((kill6[killer]-kill5[killer])<=dvtime) then
local str = string.gsub(k_mk_message5, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, monsterkillsound)
else
et.G_globalSound(monsterkillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==7) then
kill7[killer]=tonumber(mtime)
local mktime=((kill7[killer]-kill6[killer])/1000)
if ((kill6[killer]-kill5[killer])<=dvtime) then
local str = string.gsub(k_mk_message6, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, ludicrouskillsound)
else
et.G_globalSound(ludicrouskillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==8) then
kill8[killer]=tonumber(mtime)
local mktime=((kill8[killer]-kill7[killer])/1000)
if ((kill6[killer]-kill5[killer])<=dvtime) then
local str = string.gsub(k_mk_message7, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, holyshitsound)
else
et.G_globalSound(holyshitsound)
end
end
multikill[killer]=0
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
end
else
multikill[killer]=0
end
end
if killer ~= victim and victimteam ~= killerteam and killer ~= 1022 then
if k_spreerecord == 1 then
killr[killer] = killr[killer] + 1
end
if k_sprees == 1 then
killingspree[killer]=killingspree[killer]+1
if (killingspree[killer]==k_spree1_amount) then
local str = string.gsub(k_ks_message1, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1KILLINGSPREE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, killingspreesound)
else
et.G_globalSound(killingspreesound)
end
end
elseif (killingspree[killer]==k_spree2_amount) then
local str = string.gsub(k_ks_message2, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1RAMPAGE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, rampagesound)
else
et.G_globalSound(rampagesound)
end
end
elseif (killingspree[killer]==k_spree3_amount) then
local str = string.gsub(k_ks_message3, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1DOMINATION!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, dominatingsound)
else
et.G_globalSound(dominatingsound)
end
end
elseif (killingspree[killer]==k_spree4_amount) then
local str = string.gsub(k_ks_message4, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1UNSTOPABLE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, unstopablesound)
else
et.G_globalSound(unstopablesound)
end
end
elseif (killingspree[killer]==k_spree5_amount) then
local str = string.gsub(k_ks_message5, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1GODLIKE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, godlikesound)
else
et.G_globalSound(godlikesound)
end
end
elseif (killingspree[killer]==k_spree6_amount) then
local str = string.gsub(k_ks_message6, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1WICKED SICK!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, wickedsicksound)
else
et.G_globalSound(wickedsicksound)
end
end
end
end
else
if (killingspree[killer]>=5) then
if killer == victim then
local str = string.gsub(k_end_message2, "#victim#", victimname)
local str = string.gsub(str, "#kills#", killingspree[victim])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[killer]=0
else
local str = string.gsub(k_end_message4, "#victim#", victimname)
local str = string.gsub(str, "#kills#", killingspree[killer])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[killer]=0
end
else
killingspree[killer]=0
end
if k_spreerecord == 1 then
if killr[victim] > spreerecordkills then
spreerecord(victim, killr[victim])
killr[victim] = 0
else
killr[victim] = 0
end
end
end
if k_flakmonkey == 1 then
if (meansOfDeath==17 or meansOfDeath==43 or meansOfDeath==44) then
if killer ~= victim and victimteam ~= killerteam then
flakmonkey[killer]=flakmonkey[killer]+1
if (flakmonkey[killer]==3) then
local str = string.gsub(k_fm_message, "#killer#", killername)
-- et.trap_SendServerCommand( killer,"cp \"^1FLAKMONKEY!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..fm_location.." "..str.."\n" )
if k_flakmonkeysound == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, flakmonkeysound)
else
et.G_globalSound(flakmonkeysound)
end
end
flakmonkey[killer]=0
end
else
flakmonkey[killer]=0
end
else
flakmonkey[killer]=0
end
end
end
function deaths(victim, killer, meansOfDeath, weapon)
if (meansOfDeath==0) then
weapon="UNKNOWN"
elseif (meansOfDeath==1) then
weapon="MACHINEGUN"
elseif (meansOfDeath==2) then
weapon="BROWNING"
elseif (meansOfDeath==3) then
weapon="MG42"
elseif (meansOfDeath==4) then
weapon="GRENADE"
elseif (meansOfDeath==5) then
weapon="ROCKET"
elseif (meansOfDeath==6) then
weapon="KNIFE"
elseif (meansOfDeath==7) then
weapon="LUGER"
elseif (meansOfDeath==8) then
weapon="COLT"
elseif (meansOfDeath==9) then
weapon="MP40"
elseif (meansOfDeath==10) then
weapon="THOMPSON"
elseif (meansOfDeath==11) then
weapon="STEN"
elseif (meansOfDeath==12) then
weapon="GARAND"
elseif (meansOfDeath==13) then
weapon="SNOOPERSCOPE"
elseif (meansOfDeath==14) then
weapon="SILENCER"
elseif (meansOfDeath==15) then
weapon="FG42"
elseif (meansOfDeath==16) then
weapon="FG42SCOPE"
elseif (meansOfDeath==17) then
weapon="PANZERFAUST"
elseif (meansOfDeath==18) then
weapon="GRENADE_LAUNCHER"
elseif (meansOfDeath==19) then
weapon="FLAMETHROWER"
elseif (meansOfDeath==20) then
weapon="GRENADE_PINEAPPLE"
elseif (meansOfDeath==21) then
weapon="CROSS"
elseif (meansOfDeath==22) then
weapon="MAPMORTAR"
elseif (meansOfDeath==23) then
weapon="MAPMORTAR_SPLASH"
elseif (meansOfDeath==24) then
weapon="KICKED"
elseif (meansOfDeath==25) then
weapon="GRABBER"
elseif (meansOfDeath==26) then
weapon="DYNAMITE"
elseif (meansOfDeath==27) then
weapon="AIRSTRIKE"
elseif (meansOfDeath==28) then
weapon="SYRINGE"
elseif (meansOfDeath==29) then
weapon="AMMO"
elseif (meansOfDeath==30) then
weapon="ARTY"
elseif (meansOfDeath==31) then
weapon="WATER"
elseif (meansOfDeath==32) then
weapon="SLIME"
elseif (meansOfDeath==33) then
weapon="LAVA"
elseif (meansOfDeath==34) then
weapon="CRUSH"
elseif (meansOfDeath==35) then
weapon="TELEFRAG"
elseif (meansOfDeath==36) then
weapon="FALLING"
elseif (meansOfDeath==37) then
weapon = "SUICIDE"
elseif (meansOfDeath==38) then
weapon="TARGET_LASER"
elseif (meansOfDeath==39) then
weapon="TRIGGER_HURT"
elseif (meansOfDeath==40) then
weapon="EXPLOSIVE"
elseif (meansOfDeath==41) then
weapon="CARBINE"
elseif (meansOfDeath==42) then
weapon="KAR98"
elseif (meansOfDeath==43) then
weapon="GPG40"
elseif (meansOfDeath==44) then
weapon="M7"
elseif (meansOfDeath==45) then
weapon="LANDMINE"
elseif (meansOfDeath==46) then
weapon="SATCHEL"
elseif (meansOfDeath==47) then
weapon="TRIPMINE"
elseif (meansOfDeath==48) then
weapon="SMOKEBOMB"
elseif (meansOfDeath==49) then
weapon="MOBILE_MG42"
elseif (meansOfDeath==50) then
weapon="SILENCED_COLT"
elseif (meansOfDeath==51) then
weapon="GARAND_SCOPE"
elseif (meansOfDeath==52) then
weapon="CRUSH_CONSTRUCTION"
elseif (meansOfDeath==53) then
weapon="CRUSH_CONSTRUCTIONDEATH"
elseif (meansOfDeath==54) then
weapon="CRUSH_CONSTRUCTIONDEATH_NOATTACKER"
elseif (meansOfDeath==55) then
weapon="K43"
elseif (meansOfDeath==56) then
weapon="K43_SCOPE"
elseif (meansOfDeath==57) then
weapon="MORTAR"
elseif (meansOfDeath==58) then
weapon="AKIMBO_COLT"
elseif (meansOfDeath==59) then
weapon="AKIMBO_LUGER"
elseif (meansOfDeath==60) then
weapon="AKIMBO_SILENCEDCOLT"
elseif (meansOfDeath==61) then
weapon="AKIMBO_SILENCEDLUGER"
elseif (meansOfDeath==62) then
weapon="SMOKEGRENADE"
elseif (meansOfDeath==63) then
weapon="SWAP_SPACES"
elseif (meansOfDeath==64) then
weapon="SWITCH_TEAM"
end
local kil = tonumber(killer)
local killername = ""
if killer == 1022 then
killername="The World"
else
killername=et.Info_ValueForKey( et.trap_GetUserinfo( killer ), "name" )
end
playerwhokilled[victim] = killer
killedwithweapv[victim] = tostring(weapon)
local victimteam = tonumber(et.gentity_get(victim, "sess.sessionTeam"))
local killerteam = tonumber(et.gentity_get(killer, "sess.sessionTeam"))
local killedname=et.Info_ValueForKey( et.trap_GetUserinfo( victim ), "name" )
if k_spreerecord == 1 then
if killr[victim] > spreerecordkills then
spreerecord(victim, killr[victim])
killr[victim] = 0
else
killr[victim] = 0
end
end
if k_deathsprees == 1 then
deathspree[victim]=deathspree[victim]+1
end
if k_sprees == 1 then
if (killingspree[victim]>=5) then
local str = string.gsub(k_end_message1, "#victim#", killedname)
local str = string.gsub(str, "#kills#", killingspree[victim])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[victim]=0
else
killingspree[victim]=0
end
end
flakmonkey[victim]=0
-- multikill[victim]=0
if k_deathsprees == 1 then
if (deathspree[victim]==k_deathspree1_amount) then
local str = string.gsub(k_ds_message1, "#victim#", killedname)
local str = string.gsub(str, "#deaths#", deathspree[victim])
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ds_location.." "..str.."\n" )
if k_deathspreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(victim, deathspreesound1)
else
et.G_globalSound(deathspreesound1)
end
end
elseif (deathspree[victim]==k_deathspree2_amount) then
local str = string.gsub(k_ds_message2, "#victim#", killedname)
local str = string.gsub(str, "#deaths#", deathspree[victim])
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ds_location.." "..str.."\n" )
if k_deathspreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(victim, deathspreesound2)
else
et.G_globalSound(deathspreesound2)
end
end
elseif (deathspree[victim]==k_deathspree3_amount) then
local str = string.gsub(k_ds_message3, "#victim#", killedname)
local str = string.gsub(str, "#deaths#", deathspree[victim])
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ds_location.." "..str.."\n" )
if k_deathspreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(victim, deathspreesound3)
else
et.G_globalSound(deathspreesound3)
end
end
end
end
end
function et.G_ClientSound(clientnum, soundfile)
local tempentity = et.G_TempEntity(et.gentity_get(clientnum, "r.currentOrigin"), EV_GLOBAL_CLIENT_SOUND)
et.gentity_set(tempentity, "s.teamNum", clientnum)
et.gentity_set(tempentity, "s.eventParm", et.G_SoundIndex(soundfile))
end
KMODversion2 = "1.0"
k_commandprefix = "!" -- change this to your desired prefix
--[[
This lua was created to replace most features of etadmin mod
and is much faster in response time and includes some features
that etadmin mod does not have and vice versa.
FEATURES:
*** Killingsprees plus all the other killingspree type stuff (Sounds Included)
*** Doublekills, Multikills, Ultrakills, Monsterkills, and Ludicrouskills (Sounds Included)
*** Flakmonkey's - When you get 3 kills with either panzer or a riflenade.
Flakmonkey is reset if you get any other type of kill/teamkill/or if you die (Sound included)
*** Firstblood (Sound Included)
*** Lastblood
*** Spreerecord (not including records for individual maps)
*** Enhanced Private Messaging - The sender can use partial name of repipiant
or can now use the repipiants slot number. When using ETPro 3.2.6 or higher,
a new sound will be played letting you know that you have a private message.
Players can now private message all 2+ level admins currently on the server using
/ma or /pma then your message.
*** Vote disable was taken directly from ETAdmin mod and is slightly enhanced such that
it will detect changes to the timelimit. (see config for details)
*** Antiunmute - When a player is muted he may not be unmuted via vote
*** Advanced Adrenaline - Players using adrenaline now have a timer in their cp area
displaying the amount of adrenaline time they have left.
A sound will also be played in their general location letting everyone else
know that they are using adrenaline (disableable) (sound included)
*** Killer's HP - Killer's HP is displayed to their victims. When you kill somone
and are killed in return within a certain amount of time no message will be displayed.
When a killer is using adrenaline the victim will see a message displaying so.
*** Advanced players - Time nudge and max packets are removed from players list
and admins may see which admins (level 2+) are on the server using /admins
*** Chat log - All chats are logged along with player renames/connects/disconnects/and map restarts
*** Crazygravity - The exact same crazy gravity you've come to know and love
*** Team kill restriction - Taken from Etadmin mod and uses punkbuster to kick (see config)
*** /kill limit - After the max amount of slash kills is reached they are no longer
able to /kill.
*** Endround shuffle - At the end of each round teams are shuffled automatically
I recomend using this on servers with alot of people.
*** Noise reduction - ETPRO 3.2.6 OR HIGHER IS REQUIRED!!! Plays all killingsprees
multikills/deathsprees/and firstblood to the killer or victim depending on which one
*** Color codes can be changed for lastblood and killer HP display in config
*** Spawn kill protection - A newly spawned player will keep his spawn shield
Until he either moves or fires his weapon. (see config)
*** Paths to sounds can be changed to fit server admins needs.
CREDITS:
Special to
Noobology
Armymen
Rikku
Monkey Spawn
Brunout
Dominator
James
Pantsless Victims
For helping with testing
SOURCES:
Some code and ideas dirived from G073nks which can be found here
http://wolfwiki.anime.net/index.php/User:Gotenks
Code to get slot number from name was from the slap command I found on the ETPro forum here
http://bani.anime.net/banimod/forums/viewtopic.php?t=6579&highlight=slap
Infty's NoKill lua code was used and edited for the slashkill limit which can be found here
http://wolfwiki.anime.net/index.php/User:Infty
Ideas dirived from ETAdmin_mod found here
http://et.d1p.de/etadmin_mod/wiki/index.php/Main_Page
If you see your code in here let me know and I'll add you to the credits for future releases
The rest of the code is mine :D
--]]
killingspree = {}
flakmonkey = {}
deathspree = {}
multikill = {}
playerwhokilled = {}
killedwithweapk = {}
killedwithweapv = {}
playerlastkilled = {}
muted = {}
antiloopadr1 = {}
antiloopadr2 = {}
adrenaline = {}
adrnum = {}
adrnum2 = {}
adrtime = {}
adrtime2 = {}
adrendummy = {}
clientrespawn = {}
invincStart = {}
invincDummy = {}
switchteam = {}
timecounter = 1
kill1 = {}
kill2 = {}
kill3 = {}
kill4 = {}
kill5 = {}
kill6 = {}
kill7 = {}
kill8 = {}
killr = {}
selfkills = {}
teamkillr = {}
khp = {}
PlayerName = {}
Bname = {}
EV_GLOBAL_CLIENT_SOUND = 54
et.CS_PLAYERS = 689
team = { "AXIS" , "ALLIES" , "SPECTATOR" }
class = { [0]="SOLDIER" , "MEDIC" , "ENGINEER" , "FIELD OPS" , "COVERT OPS" }
AdminLV0 = {}
AdminLV1 = {}
AdminLV2 = {}
AdminLV3 = {}
chkGUID = {}
AdminName = {}
originalclass = {}
originalweap = {}
et.MAX_WEAPONS = 50
GAMEPAUSED = 0
pweapons = {
nil, --// 1
false, --WP_LUGER, // 2
false, --WP_MP40, // 3
false, --WP_GRENADE_LAUNCHER, // 4
true, --WP_PANZERFAUST, // 5
false, --WP_FLAMETHROWER, // 6
false, --WP_COLT, // 7 // equivalent american weapon to german luger
false, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
false, --WP_GRENADE_PINEAPPLE, // 9
false, --WP_STEN, // 10 // silenced sten sub-machinegun
false, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
false, --WP_AMMO, // 12 // JPW NERVE likewise
false, --WP_ARTY, // 13
false, --WP_SILENCER, // 14 // used to be sp5
false, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
false, --WP_MEDKIT, // 19
false, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
false, --WP_KAR98, // 23 // WolfXP weapons
false, --WP_CARBINE, // 24
false, --WP_GARAND, // 25
false, --WP_LANDMINE, // 26
false, --WP_SATCHEL, // 27
false, --WP_SATCHEL_DET, // 28
nil, --// 29
false, --WP_SMOKE_BOMB, // 30
false, --WP_MOBILE_MG42, // 31
false, --WP_K43, // 32
false, --WP_FG42, // 33
nil, --// 34
false, --WP_MORTAR, // 35
nil, --// 36
false, --WP_AKIMBO_COLT, // 37
false, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
false, --WP_SILENCED_COLT, // 41
false, --WP_GARAND_SCOPE, // 42
false, --WP_K43_SCOPE, // 43
false, --WP_FG42SCOPE, // 44
false, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
false, --WP_AKIMBO_SILENCEDCOLT,// 47
false --WP_AKIMBO_SILENCEDLUGER,// 48
}
fweapons = {
nil, --// 1
true, --WP_LUGER, // 2
true, --WP_MP40, // 3
true, --WP_GRENADE_LAUNCHER, // 4
true, --WP_PANZERFAUST, // 5
true, --WP_FLAMETHROWER, // 6
true, --WP_COLT, // 7 // equivalent american weapon to german luger
true, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
true, --WP_GRENADE_PINEAPPLE, // 9
true, --WP_STEN, // 10 // silenced sten sub-machinegun
true, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
true, --WP_AMMO, // 12 // JPW NERVE likewise
true, --WP_ARTY, // 13
true, --WP_SILENCER, // 14 // used to be sp5
true, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
true, --WP_MEDKIT, // 19
true, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
true, --WP_KAR98, // 23 // WolfXP weapons
true, --WP_CARBINE, // 24
true, --WP_GARAND, // 25
true, --WP_LANDMINE, // 26
true, --WP_SATCHEL, // 27
true, --WP_SATCHEL_DET, // 28
nil, --// 29
true, --WP_SMOKE_BOMB, // 30
true, --WP_MOBILE_MG42, // 31
true, --WP_K43, // 32
true, --WP_FG42, // 33
nil, --// 34
true, --WP_MORTAR, // 35
nil, --// 36
true, --WP_AKIMBO_COLT, // 37
true, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
true, --WP_SILENCED_COLT, // 41
true, --WP_GARAND_SCOPE, // 42
true, --WP_K43_SCOPE, // 43
true, --WP_FG42SCOPE, // 44
true, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
true, --WP_AKIMBO_SILENCEDCOLT,// 47
true --WP_AKIMBO_SILENCEDLUGER,// 48
}
aweapons = {
nil, --// 1
true, --WP_LUGER, // 2
true, --WP_MP40, // 3
true, --WP_GRENADE_LAUNCHER, // 4
true, --WP_PANZERFAUST, // 5
true, --WP_FLAMETHROWER, // 6
true, --WP_COLT, // 7 // equivalent american weapon to german luger
true, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
true, --WP_GRENADE_PINEAPPLE, // 9
true, --WP_STEN, // 10 // silenced sten sub-machinegun
true, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
true, --WP_AMMO, // 12 // JPW NERVE likewise
true, --WP_ARTY, // 13
true, --WP_SILENCER, // 14 // used to be sp5
true, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
true, --WP_MEDKIT, // 19
true, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
true, --WP_KAR98, // 23 // WolfXP weapons
true, --WP_CARBINE, // 24
true, --WP_GARAND, // 25
true, --WP_LANDMINE, // 26
true, --WP_SATCHEL, // 27
true, --WP_SATCHEL_DET, // 28
nil, --// 29
true, --WP_SMOKE_BOMB, // 30
true, --WP_MOBILE_MG42, // 31
true, --WP_K43, // 32
true, --WP_FG42, // 33
nil, --// 34
true, --WP_MORTAR, // 35
nil, --// 36
true, --WP_AKIMBO_COLT, // 37
true, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
true, --WP_SILENCED_COLT, // 41
true, --WP_GARAND_SCOPE, // 42
true, --WP_K43_SCOPE, // 43
true, --WP_FG42SCOPE, // 44
true, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
true, --WP_AKIMBO_SILENCEDCOLT,// 47
true --WP_AKIMBO_SILENCEDLUGER,// 48
}
gweapons = {
nil, --// 1
false, --WP_LUGER, // 2
false, --WP_MP40, // 3
true, --WP_GRENADE_LAUNCHER, // 4
false, --WP_PANZERFAUST, // 5
false, --WP_FLAMETHROWER, // 6
false, --WP_COLT, // 7 // equivalent american weapon to german luger
false, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
true, --WP_GRENADE_PINEAPPLE, // 9
false, --WP_STEN, // 10 // silenced sten sub-machinegun
false, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
false, --WP_AMMO, // 12 // JPW NERVE likewise
false, --WP_ARTY, // 13
false, --WP_SILENCER, // 14 // used to be sp5
false, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
false, --WP_MEDKIT, // 19
false, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
false, --WP_KAR98, // 23 // WolfXP weapons
false, --WP_CARBINE, // 24
false, --WP_GARAND, // 25
false, --WP_LANDMINE, // 26
false, --WP_SATCHEL, // 27
false, --WP_SATCHEL_DET, // 28
nil, --// 29
false, --WP_SMOKE_BOMB, // 30
false, --WP_MOBILE_MG42, // 31
false, --WP_K43, // 32
false, --WP_FG42, // 33
nil, --// 34
false, --WP_MORTAR, // 35
nil, --// 36
false, --WP_AKIMBO_COLT, // 37
false, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
false, --WP_SILENCED_COLT, // 41
false, --WP_GARAND_SCOPE, // 42
false, --WP_K43_SCOPE, // 43
false, --WP_FG42SCOPE, // 44
false, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
false, --WP_AKIMBO_SILENCEDCOLT,// 47
false --WP_AKIMBO_SILENCEDLUGER,// 48
}
sweapons = {
nil, --// 1
false, --WP_LUGER, // 2
false, --WP_MP40, // 3
false, --WP_GRENADE_LAUNCHER, // 4
false, --WP_PANZERFAUST, // 5
false, --WP_FLAMETHROWER, // 6
false, --WP_COLT, // 7 // equivalent american weapon to german luger
false, --WP_THOMPSON, // 8 // equivalent american weapon to german mp40
false, --WP_GRENADE_PINEAPPLE, // 9
false, --WP_STEN, // 10 // silenced sten sub-machinegun
false, --WP_MEDIC_SYRINGE, // 11 // JPW NERVE -- broken out from CLASS_SPECIAL per Id request
false, --WP_AMMO, // 12 // JPW NERVE likewise
false, --WP_ARTY, // 13
false, --WP_SILENCER, // 14 // used to be sp5
false, --WP_DYNAMITE, // 15
nil, --// 16
nil, --// 17
nil, --// 18
false, --WP_MEDKIT, // 19
false, --WP_BINOCULARS, // 20
nil, --// 21
nil, --// 22
false, --WP_KAR98, // 23 // WolfXP weapons
false, --WP_CARBINE, // 24
true, --WP_GARAND, // 25
false, --WP_LANDMINE, // 26
false, --WP_SATCHEL, // 27
nil, --WP_SATCHEL_DET, // 28
nil, --// 29
false, --WP_SMOKE_BOMB, // 30
false, --WP_MOBILE_MG42, // 31
true, --WP_K43, // 32
true, --WP_FG42, // 33
nil, --// 34
false, --WP_MORTAR, // 35
nil, --// 36
false, --WP_AKIMBO_COLT, // 37
false, --WP_AKIMBO_LUGER, // 38
nil, --// 39
nil, --// 40
false, --WP_SILENCED_COLT, // 41
true, --WP_GARAND_SCOPE, // 42
true, --WP_K43_SCOPE, // 43
true, --WP_FG42SCOPE, // 44
false, --WP_MORTAR_SET, // 45
false, --WP_MEDIC_ADRENALINE, // 46
false, --WP_AKIMBO_SILENCEDCOLT,// 47
false --WP_AKIMBO_SILENCEDLUGER,// 48
}
lvl0c = 5
lvl0 = {
k_commandprefix.."admintest",
k_commandprefix.."time",
k_commandprefix.."date",
k_commandprefix.."spree_record",
k_commandprefix.."tk_index",
}
lvl1c = 1
lvl1 = {
k_commandprefix.."spec999",
}
lvl2c = 1
lvl2 = {
k_commandprefix.."finger",
}
lvl3c = 13
lvl3 = {
k_commandprefix.."ban",
k_commandprefix.."readconfig",
k_commandprefix.."spree_restart",
k_commandprefix.."getip",
k_commandprefix.."crazygravity",
k_commandprefix.."getguid",
k_commandprefix.."setlevel",
k_commandprefix.."gib",
k_commandprefix.."slap",
k_commandprefix.."panzerwar",
k_commandprefix.."frenzy",
k_commandprefix.."grenadewar",
k_commandprefix.."sniperwar",
}
firstblood = 0
lastblood = ""
oldspree = ""
oldspree2 = ""
intmrecord = ""
panzers = ""
medics = ""
cvops = ""
fops = ""
engie = ""
flamers = ""
mortars = ""
mg42s = ""
soldcharge = ""
speed = ""
redlimbo = ""
bluelimbo = ""
floodprotect = 0
commandSaid = false
kick = false
fullcom = ""
finger = false
removereferee = false
makereferee = false
removeshoutcaster = false
makeshoutcaster = false
putspec = false
putallies = false
putaxis = false
unmute = false
mute = false
warn = false
ban = false
crazygravity = false
crazytime = 0
--[[
--Defaults
killingspreesound="sound/misc/killingspree.wav"
rampagesound="sound/misc/rampage.wav"
dominatingsound="sound/misc/dominating.wav"
unstopablesound="sound/misc/unstoppable.wav"
godlikesound="sound/misc/godlike.wav"
wickedsicksound="sound/misc/wickedsick.wav"
flakmonkeysound="sound/misc/flakmonkey.wav"
firstbloodsound="sound/misc/firstblood.wav"
deathspreesound1="sound/misc/humiliation.wav"
deathspreesound2="sound/misc/you_suck.wav"
deathspreesound3="sound/misc/ae821.wav"
doublekillsound="sound/misc/doublekill.wav"
multikillsound="sound/misc/multikill.wav"
ultrakillsound="sound/misc/ultrakill.wav"
monsterkillsound="sound/misc/monsterkill.wav"
ludicrouskillsound="sound/misc/ludicrouskill.wav"
k_spreesounds = 1
k_sprees = 1 -- includes sounds
k_multikillsounds = 1
k_multikills = 1 --includes sounds
k_flakmonkeysound = 1
k_flakmonkey = 1 --includes sounds
k_firstbloodsound = 1
k_firstblood = 1 --includes sound
k_lastblood = 1
k_killerhpdisplay = 1
k_spreerecord = 1
k_advplayers = 1
k_crazygravityinterval = 30
k_slashkilllimit = 1
k_slashkills = 3
k_teamkillrestriction = 1
k_tklimit_high = 3
k_tklimit_low = -3
k_color = "^2"
k_advancedpms = 1
k_playdead = 0
k_logchat = 1
k_disablevotes = 1
k_dvmode = 2
k_dvpercent = 90
k_adrensound = 1
k_advancedadrenaline = 1
k_noisereduction = 0
k_endroundshuffle = 0
k_deathsprees = 1
k_deathspreesounds = 1
k_antiunmute = 1
k_advancedspawn = 0
--]]
pmsound = "sound/misc/NewBeep.wav"
antiloop = 0
antiloop2 = 0
antiloop3 = 0
antiloop4 = 0
antiloopes = 0
antilooppw = 0
confirm = 0
spreerecordkills = 0
crazydv = 1
CGactive = 0
panzdv = 0
sldv = 0
frenzdv = 0
grendv = 0
snipdv = 0
antiloopm = 0
pausedv = 0
pausedv2 = 0
pausetime = 0
timedv = 0
timedvs = 0
refreshrate = 0
timedelay_antiloop = 0
egamemodes = 0
onetime = 0
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
antiloopadr1[i] = 0
antiloopadr2[i] = 0
adrenaline[i] = 0
adrnum[i] = 0
adrnum2[i] = 0
adrtime[i] = 0
adrtime2[i] = 0
end
function et_RunFrame( levelTime )
mtime=tonumber(levelTime) -- still cannot remember why i made this but its used in alot of stuff so i'll leave it
if timedvs == 0 then
local ktime = (((mtime - initTime)/1000))
timecounter = ktime
timedvs = 1
end
timelimit=tonumber(et.trap_Cvar_Get("timelimit"))
Gamestate=tonumber(et.trap_Cvar_Get("gamestate"))
if GAMEPAUSED == 1 then
if pausedv == 0 then
pausetime = mtime
pausedv = 1
end
if ((mtime - pausetime)/1000) >= 180 then -- Server is paused for 3 minutes (180 seconds)
GAMEPAUSED = 0
end
elseif GAMEPAUSED == 0 and pausedv == 1 then
if pausedv2 == 0 then
pausetime = mtime
pausedv2 = 1
end
if ((mtime - pausetime)/1000) >= 10 then -- when unpaused before 3 minutes is up it counts down from 10 seconds
pausedv = 0
pausedv2 = 0
timedv1 = nil
timedv2 = nil
end
else
if timedv == 0 then
timedv1 = mtime
timedv = 1
timecounter=timecounter+((timedv1 - timedv2)/1000)
s,e,thous = string.find(timecounter, "%d*%.%d%d(%d*)")
-- s,e = string.find(thous, "9")
if thous == 9999999 then
timecounter=timecounter+0.000000001
end
else
timedv2 = mtime
timedv = 0
timecounter=timecounter+((timedv2 - timedv1)/1000)
s,e,thous = string.find(timecounter, "%d*%.%d%d(%d*)")
-- s,e = string.find(thous, "9")
if thous == 9999999 then
timecounter=timecounter+0.000000001
end
end
-- timecounter=timecounter+0.05
end
killingspreesound = tostring(et.trap_Cvar_Get("killingspreesound"))
k_color = tostring(et.trap_Cvar_Get("k_color"))
rampagesound = tostring(et.trap_Cvar_Get("rampagesound"))
dominatingsound = tostring(et.trap_Cvar_Get("dominatingsound"))
unstopablesound = tostring(et.trap_Cvar_Get("unstopablesound"))
godlikesound = tostring(et.trap_Cvar_Get("godlikesound"))
wickedsicksound = tostring(et.trap_Cvar_Get("wickedsicksound"))
flakmonkeysound = tostring(et.trap_Cvar_Get("flakmonkeysound"))
firstbloodsound = tostring(et.trap_Cvar_Get("firstbloodsound"))
deathspreesound1 = tostring(et.trap_Cvar_Get("deathspreesound1"))
deathspreesound2 = tostring(et.trap_Cvar_Get("deathspreesound2"))
deathspreesound3 = tostring(et.trap_Cvar_Get("deathspreesound3"))
doublekillsound = tostring(et.trap_Cvar_Get("doublekillsound"))
multikillsound = tostring(et.trap_Cvar_Get("multikillsound"))
megakillsound = tostring(et.trap_Cvar_Get("megakillsound"))
ultrakillsound = tostring(et.trap_Cvar_Get("ultrakillsound"))
monsterkillsound = tostring(et.trap_Cvar_Get("monsterkillsound"))
ludicrouskillsound = tostring(et.trap_Cvar_Get("ludicrouskillsound"))
holyshitsound = tostring(et.trap_Cvar_Get("holyshitsound"))
k_ds_message1 = tostring(et.trap_Cvar_Get("k_ds_message1"))
k_ds_message2 = tostring(et.trap_Cvar_Get("k_ds_message2"))
k_ds_message3 = tostring(et.trap_Cvar_Get("k_ds_message3"))
k_ks_message1 = tostring(et.trap_Cvar_Get("k_ks_message1"))
k_ks_message2 = tostring(et.trap_Cvar_Get("k_ks_message2"))
k_ks_message3 = tostring(et.trap_Cvar_Get("k_ks_message3"))
k_ks_message4 = tostring(et.trap_Cvar_Get("k_ks_message4"))
k_ks_message5 = tostring(et.trap_Cvar_Get("k_ks_message5"))
k_ks_message6 = tostring(et.trap_Cvar_Get("k_ks_message6"))
k_mk_message1 = tostring(et.trap_Cvar_Get("k_mk_message1"))
k_mk_message2 = tostring(et.trap_Cvar_Get("k_mk_message2"))
k_mk_message3 = tostring(et.trap_Cvar_Get("k_mk_message3"))
k_mk_message4 = tostring(et.trap_Cvar_Get("k_mk_message4"))
k_mk_message5 = tostring(et.trap_Cvar_Get("k_mk_message5"))
k_mk_message6 = tostring(et.trap_Cvar_Get("k_mk_message6"))
k_mk_message7 = tostring(et.trap_Cvar_Get("k_mk_message7"))
k_fm_message = tostring(et.trap_Cvar_Get("k_fm_message"))
k_end_message1 = tostring(et.trap_Cvar_Get("k_end_message1"))
k_end_message2 = tostring(et.trap_Cvar_Get("k_end_message2"))
k_end_message3 = tostring(et.trap_Cvar_Get("k_end_message3"))
k_end_message4 = tostring(et.trap_Cvar_Get("k_end_message4"))
k_fb_message = tostring(et.trap_Cvar_Get("k_fb_message"))
k_lb_message = tostring(et.trap_Cvar_Get("k_lb_message"))
k_spreesounds = tonumber(et.trap_Cvar_Get("k_spreesounds"))
k_sprees = tonumber(et.trap_Cvar_Get("k_sprees"))
k_multikillsounds = tonumber(et.trap_Cvar_Get("k_multikillsounds"))
k_multikills = tonumber(et.trap_Cvar_Get("k_multikills"))
k_flakmonkeysound = tonumber(et.trap_Cvar_Get("k_flakmonkeysound"))
k_flakmonkey = tonumber(et.trap_Cvar_Get("k_flakmonkey"))
k_firstbloodsound = tonumber(et.trap_Cvar_Get("k_firstbloodsound"))
k_firstblood = tonumber(et.trap_Cvar_Get("k_firstblood"))
k_lastblood = tonumber(et.trap_Cvar_Get("k_lastblood"))
k_killerhpdisplay = tonumber(et.trap_Cvar_Get("k_killerhpdisplay"))
k_deathsprees = tonumber(et.trap_Cvar_Get("k_deathsprees"))
k_deathspreesounds = tonumber(et.trap_Cvar_Get("k_deathspreesounds"))
k_spreerecord = tonumber(et.trap_Cvar_Get("k_spreerecord"))
k_advplayers = tonumber(et.trap_Cvar_Get("k_advplayers"))
k_crazygravityinterval = tonumber(et.trap_Cvar_Get("k_crazygravityinterval"))
k_teamkillrestriction = tonumber(et.trap_Cvar_Get("k_teamkillrestriction"))
k_tklimit_high = tonumber(et.trap_Cvar_Get("k_tklimit_high"))
k_tklimit_low = tonumber(et.trap_Cvar_Get("k_tklimit_low"))
k_tk_protect = tonumber(et.trap_Cvar_Get("k_tk_protect"))
k_slashkilllimit = tonumber(et.trap_Cvar_Get("k_slashkilllimit"))
k_slashkills = tonumber(et.trap_Cvar_Get("k_slashkills"))
k_endroundshuffle = tonumber(et.trap_Cvar_Get("k_endroundshuffle"))
k_noisereduction = tonumber(et.trap_Cvar_Get("k_noisereduction"))
k_advancedpms = tonumber(et.trap_Cvar_Get("k_advancedpms"))
k_logchat = tonumber(et.trap_Cvar_Get("k_logchat"))
k_disablevotes = tonumber(et.trap_Cvar_Get("k_disablevotes"))
k_dvmode = tonumber(et.trap_Cvar_Get("k_dvmode"))
k_dvtime = tonumber(et.trap_Cvar_Get("k_dvtime"))
k_adrensound = tonumber(et.trap_Cvar_Get("k_adrensound"))
k_advancedadrenaline = tonumber(et.trap_Cvar_Get("k_advancedadrenaline"))
k_antiunmute = tonumber(et.trap_Cvar_Get("k_antiunmute"))
k_advancedspawn = tonumber(et.trap_Cvar_Get("k_advancedspawn"))
k_deathspree1_amount = tonumber(et.trap_Cvar_Get("k_deathspree1_amount"))
k_deathspree2_amount = tonumber(et.trap_Cvar_Get("k_deathspree2_amount"))
k_deathspree3_amount = tonumber(et.trap_Cvar_Get("k_deathspree3_amount"))
k_spree1_amount = tonumber(et.trap_Cvar_Get("k_spree1_amount"))
k_spree2_amount = tonumber(et.trap_Cvar_Get("k_spree2_amount"))
k_spree3_amount = tonumber(et.trap_Cvar_Get("k_spree3_amount"))
k_spree4_amount = tonumber(et.trap_Cvar_Get("k_spree4_amount"))
k_spree5_amount = tonumber(et.trap_Cvar_Get("k_spree5_amount"))
k_spree6_amount = tonumber(et.trap_Cvar_Get("k_spree6_amount"))
k_multikill_time = tonumber(et.trap_Cvar_Get("k_multikill_time"))
k_ds_location = tonumber(et.trap_Cvar_Get("k_ds_location"))
k_ks_location = tonumber(et.trap_Cvar_Get("k_ks_location"))
k_mk_location = tonumber(et.trap_Cvar_Get("k_mk_location"))
k_fm_location = tonumber(et.trap_Cvar_Get("k_fm_location"))
k_fb_location = tonumber(et.trap_Cvar_Get("k_fb_location"))
k_lb_location = tonumber(et.trap_Cvar_Get("k_lb_location"))
if k_ds_location == 2 then
ds_location = "cp"
elseif k_ds_location == 3 then
ds_location = "bp"
else
ds_location = "qsay"
end
if k_ks_location == 2 then
ks_location = "cp"
elseif k_ks_location == 3 then
ks_location = "bp"
else
ks_location = "qsay"
end
if k_mk_location == 2 then
mk_location = "cp"
elseif k_mk_location == 3 then
mk_location = "bp"
else
mk_location = "qsay"
end
if k_fm_location == 2 then
fm_location = "cp"
elseif k_fm_location == 3 then
fm_location = "bp"
else
fm_location = "qsay"
end
if k_fb_location == 2 then
fb_location = "cp"
elseif k_fb_location == 3 then
fb_location = "bp"
else
fb_location = "qsay"
end
if k_lb_location == 2 then
lb_location = "cp"
elseif k_lb_location == 3 then
lb_location = "bp"
else
lb_location = "qsay"
end
if onetime == 0 then
readconfig()
onetime = 1
end
if k_advancedspawn == 1 and tonumber(et.trap_Cvar_Get("g_inactivity")) > 0 then -- g_inactivity is required or this will not work
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if switchteam[i] == 1 then et.gentity_set(i,"ps.powerups", 1, 0) end
switchteam[i] = 0
end
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if clientrespawn[i] == 1 then
if (switchteam[i] == 0 and et.gentity_get(i,"ps.powerups", 1) > 0) then
if invincDummy[i] == 0 then
invincStart[i] = tonumber(et.gentity_get(i,"client.inactivityTime"))
invincDummy[i] = 1
end
local inactivity = tonumber(et.gentity_get(i,"client.inactivityTime"))
if inactivity == invincStart[i] then
local timer = mtime + 3000
et.gentity_set(i,"ps.powerups", 1, timer)
else
clientrespawn[i] = 0
invincDummy[i] = 0
end
else
clientrespawn[i] = 0
invincDummy[i] = 0
end
end
end
end
if panzdv == 1 or frenzdv == 1 or grendv == 1 or snipdv == 1 then
if timedelay_antiloop == 0 then
refreshrate = mtime
timedelay_antiloop = 1
end
if ((mtime-refreshrate)/1000) >= 0.25 then -- reset ammo and stuff every 0.25 of a second rather than 0.05 of a second (which caused lag)
egamemodes = 1
timedelay_antiloop = 0
else
egamemodes = 0
end
else
egamemodes = 0
end
if panzdv == 1 then
if egamemodes == 1 then
for q=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
et.gentity_set(q,"sess.latchPlayerWeapon",5)
for i=1,(et.MAX_WEAPONS-1),1 do
if not pweapons[i] then
et.gentity_set(q,"ps.ammoclip",i,0)
et.gentity_set(q,"ps.ammo",i,0)
else
et.gentity_set(q,"ps.ammoclip",i,999)
et.gentity_set(q,"ps.ammo",i,999)
end
end
end
end
elseif frenzdv == 1 then
if egamemodes == 1 then
for w=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
for i=1,(et.MAX_WEAPONS-1),1 do
if not fweapons[i] then
et.gentity_set(w,"ps.ammoclip",i,0)
et.gentity_set(w,"ps.ammo",i,0)
else
et.gentity_set(w,"ps.ammoclip",i,999)
et.gentity_set(w,"ps.ammo",i,999)
end
end
end
end
elseif grendv == 1 then
if egamemodes == 1 then
for e=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
for i=1,(et.MAX_WEAPONS-1),1 do
if not gweapons[i] then
et.gentity_set(e,"ps.ammoclip",i,0)
et.gentity_set(e,"ps.ammo",i,0)
else
et.gentity_set(e,"ps.ammoclip",i,999)
et.gentity_set(e,"ps.ammo",i,999)
end
end
end
end
elseif snipdv == 1 then
if egamemodes == 1 then
for r=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if tonumber(et.gentity_get(r,"sess.latchPlayerType")) ~= 4 then
et.gentity_set(r,"sess.latchPlayerType",4)
end
if tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 32 or tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 25 or tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 42 or tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 43 then
if tonumber(et.gentity_get(r,"sess.latchPlayerWeapon")) ~= 33 then
if tonumber(et.gentity_get(r,"sess.sessionTeam")) == 1 then
et.gentity_set(r,"sess.latchPlayerWeapon", 32)
elseif tonumber(et.gentity_get(r,"sess.sessionTeam")) == 2 then
et.gentity_set(r,"sess.latchPlayerWeapon", 25)
end
end
end
for i=1,(et.MAX_WEAPONS-1),1 do
if not sweapons[i] then
et.gentity_set(r,"ps.ammoclip",i,0)
et.gentity_set(r,"ps.ammo",i,0)
else
et.gentity_set(r,"ps.ammoclip",i,999)
et.gentity_set(r,"ps.ammo",i,999)
end
end
end
end
else
panzers = tonumber(et.trap_Cvar_Get("team_maxpanzers"))
medics = tonumber(et.trap_Cvar_Get("team_maxmedics"))
cvops = tonumber(et.trap_Cvar_Get("team_maxcovertops"))
fops = tonumber(et.trap_Cvar_Get("team_maxfieldops"))
engie = tonumber(et.trap_Cvar_Get("team_maxengineers"))
flamers = tonumber(et.trap_Cvar_Get("team_maxflamers"))
mortars = tonumber(et.trap_Cvar_Get("team_maxmortars"))
mg42s = tonumber(et.trap_Cvar_Get("team_maxmg42s"))
soldcharge = tonumber(et.trap_Cvar_Get("g_soldierchargetime"))
speed = tonumber(et.trap_Cvar_Get("g_speed"))
end
if crazygravity then
CGactive = 1
crazygravity_gravity = math.random(10, 1200)
if crazydv == 1 then
crazytime = mtime + (k_crazygravityinterval*1000)
crazydv = 0
end
if (crazytime-mtime)/1000 == 0 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Crazygravity: ^7The gravity has been changed to ^1" .. crazygravity_gravity .. "^7!\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_gravity " .. crazygravity_gravity .. "\n" )
crazydv = 1
elseif (crazytime-mtime)/1000 == 5 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Crazygravity: ^7The gravity will be changed in ^15^7 seconds!\n" )
end
end
local ftime = ((mtime-initTime)/1000)
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
PlayerName[i] = et.gentity_get(i,"pers.netname")
if not PlayerName[i] then
PlayerName[i] = ""
end
if et.gentity_get(i,"pers.connected") ~= 2 then
PlayerName[i] = ""
end
end
if Gamestate == 3 then
if k_lastblood == 1 then
if antiloop == 0 then
if lastblood then
local str = string.gsub(k_lb_message, "#killer#", lastblood)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..lb_location.." "..str.."\n" )
end
if k_spreerecord == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^" .. k_color .. "" .. tostring(intmrecord) .. "\n" )
end
antiloop = 1
end
end
if k_endroundshuffle == 1 then
if antiloopes == 0 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref shuffleteamsxp_norestart\n" )
antiloopes = 1
end
end
if panzdv == 1 or snipdv == 1 then
if antilooppw == 0 then
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") == 1 or et.gentity_get(p,"sess.sessionTeam") == 2 then
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
antilooppw = 1
end
end
end
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "b_privatemessages 0\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "b_privatemessages 2\n" )
end
if k_sprees == 0 then
if antiloop2 == 0 then
killingspreereset()
end
antiloop2 = 1
elseif k_sprees == 1 then
antiloop2 = 0
end
if k_deathsprees == 0 then
if antiloop3 == 0 then
dspreereset()
end
antiloop3 = 1
elseif k_deathsprees == 1 then
antiloop3 = 0
end
if k_flakmonkey == 0 then
if antiloop4 == 0 then
flakreset()
end
antiloop4 = 1
elseif k_flakmonkey == 1 then
antiloop4 = 0
end
if floodprotect == 1 then
fpPtime = (mtime-fpProt)/1000
if fpPtime >= 2 then
floodprotect = 0
end
end
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(i,"pers.connected") == 2 then
if PlayerName[i] ~= Bname[i] then
log_chat( Bname[i], "NAME_CHANGE", PlayerName[i] )
Bname[i] = PlayerName[i]
end
end
end
if k_advancedadrenaline == 1 then
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local adrentlimit = 10
local adrensound = "sound/misc/regen.wav"
if pausedv == 1 then
adrendummy[i] = 1
end
if adrendummy[i] == 1 and tonumber(et.gentity_get(i,"ps.powerups", 12)) == 0 then
adrendummy[i] = 0
end
if adrendummy[i] == 0 then
if tonumber(et.gentity_get(i,"ps.powerups", 12)) > 0 then
adrnum[i] = tonumber(et.gentity_get(i,"ps.powerups", 12))
soundindex = et.G_SoundIndex(adrensound)
local name = et.gentity_get(i,"pers.netname")
if antiloopadr1[i] == 0 then
adrtime[i] = mtime
if k_adrensound == 1 then
et.G_Sound( i, soundindex)
end
antiloopadr1[i] = 1
end
if antiloopadr2[i] == 0 then
adrtime2[i] = mtime
adrnum2[i] = tonumber(et.gentity_get(i,"ps.powerups", 12))
antiloopadr2[i] = 1
end
adrenaline[i] = 1
local tottime = math.floor((((mtime - adrtime[i])/1000)+0.05))
local tottime2 = math.floor((((mtime - adrtime2[i])/1000)+0.05))
if tottime >= 1 then
antiloopadr1[i] = 0
end
if adrnum[i] ~= adrnum2[i] then
adrnum2[i] = tonumber(et.gentity_get(i,"ps.powerups", 12))
if k_adrensound == 1 then
et.G_Sound( i, soundindex)
end
adrtime[i] = mtime
adrtime2[i] = mtime
end
local atime = (adrentlimit - tottime2)
et.trap_SendServerCommand(i, string.format("cp \"^3Adrenaline ^1".. atime .."\n\""))
else
adrenaline[i] = 0
antiloopadr1[i] = 0
antiloopadr2[i] = 0
adrnum[i] = 0
adrnum2[i] = 0
end
end
end
end
--[[
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
-- if muted[i] > 0 then
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3"..mtime.."\n" )
-- end
-- if muted[i] > mtime then
-- if antiloopm == 0 then
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3CurseFilter: ^7Countdown initated\n" )
-- antiloopm = 1
-- end
-- end
if muted[i] ~= 0 then
if mtime > muted[i] then
local cs = et.trap_GetConfigstring(et.CS_PLAYERS + i)
local mute = et.Info_ValueForKey(cs, "mu")
if mute == 1 then
local name = et.gentity_get(i,"pers.netname")
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref unmute "..i.."\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3CurseFilter: ^7"..name.." has been unmuted. Please watch your language!\n" )
end
muted[i] = 0
end
end
end
--]]
if k_disablevotes == 1 then
local timelimit = tonumber(et.trap_Cvar_Get("timelimit"))
if k_dvmode == 1 then
local cancel_time = ( timelimit - k_dvtime )
if timecounter >= (cancel_time * 60) then
if votedis == 0 then
votedis = 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings are now DISABLED\n")
end
else
if votedis == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings have been reenabled due to timelimit change\n")
end
votedis = 0
end
elseif k_dvmode == 3 then
if timecounter >= (k_dvtime * 60) then
if votedis == 0 then
votedis = 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings are now DISABLED\n")
end
else
if votedis == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings have been reenabled due to timelimit change\n")
end
votedis = 0
end
else
local cancel_percent = ( timelimit * ( k_dvtime / 100 ) )
if timecounter >= (cancel_percent * 60) then
if votedis == 0 then
votedis = 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings are now DISABLED\n")
end
else
if votedis == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay XP-Shuffle / Map Restart / Swap Teams / Match Reset and New Campaign votings have been reenabled due to timelimit change\n")
end
votedis = 0
end
end
end
end
function et_Print( text )
local t = ParseString(text)
if t[1] == "saneClientCommand:" and t[3] == "callvote" then
local caller = tonumber(t[2])
local vote = t[4]
local target = tonumber(t[5])
if vote == "kick" or vote == "mute" then
if AdminUserLevel(caller) < AdminUserLevel(target) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "cancelvote; qsay Admins cannot be vote kicked or vote muted!\n")
end
end
end
if t[1] == "Medic_Revive:" then
local reviver = tonumber(t[2])
teamkillr[reviver] = teamkillr[reviver] + 1
if teamkillr[reviver] > k_tklimit_high then
teamkillr[reviver] = k_tklimit_high
end
end
end
function ParseString(inputString)
local i = 1
local t = {}
for w in string.gfind(inputString, "([^%s]+)%s*") do
t[i]=w
i=i+1
end
return t
end
function et_ShutdownGame ( restart )
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; g_speed " .. speed .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
elseif frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
if panzdv == 1 then
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") == 1 or et.gentity_get(p,"sess.sessionTeam") == 2 then
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
end
if k_logchat == 1 then
log_chat( "DV", "START", "DV" )
end
end
function panzerwar_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; g_speed " .. speed .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function frenzy_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function grenadewar_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function sniperwar_reset()
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics " .. medics .. "; team_maxcovertops " .. cvops .. "; team_maxfieldops " .. fops .. "; team_maxengineers " .. engie .. "; team_maxflamers " .. flamers .. "; team_maxmortars " .. mortars .. "; team_maxmg42s " .. mg42s .. "; team_maxpanzers " .. panzers .. "; forcecvar g_soldierchargetime " .. soldcharge .. "\n" )
end
function et_ClientSpawn(clientNum,revived)
if panzdv == 1 then
local doublehealth = tonumber(et.gentity_get(clientNum,"health"))*2
if et.gentity_get(clientNum,"sess.sessionTeam") >= 1 and et.gentity_get(clientNum,"sess.sessionTeam") < 3 then
et.gentity_set(clientNum,"health", doublehealth)
end
end
if revived == 0 then
if et.gentity_get(clientNum,"sess.sessionTeam") >= 1 and et.gentity_get(clientNum,"sess.sessionTeam") < 3 then
clientrespawn[clientNum] = 1
end
end
end
function killingspreereset()
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local name = et.gentity_get(i,"pers.netname")
if killingspree[i] >= 5 then
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." ^7" ..name.. "^1's Killing spree was ended! Sprees Disabled!\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^1Killingspree's disabled. All sprees reset.\n" )
end
killingspree[i] = 0
end
end
function dspreereset()
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
deathspree[i] = 0
end
end
function flakreset()
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
flakmonkey[i] = 0
end
end
function floodprotector()
floodprotect = 1
fpProt = tonumber(mtime)
end
function et_InitGame( levelTime, randomSeed, restart )
initTime = levelTime
loadAdmins()
loadspreerecord()
loadcommands()
local currentver = et.trap_Cvar_Get("mod_version")
et.RegisterModname( "KMOD version " .. KMODversion .. " " .. et.FindSelf() )
et.trap_SendConsoleCommand(et.EXEC_APPEND, "forcecvar mod_version \"" .. currentver .. " - KMOD" .. KMODversion2 .. "\"" .. "\n" )
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
killingspree[i] = 0
flakmonkey[i] = 0
deathspree[i] = 0
multikill[i] = 0
muted[i] = 0
antiloopadr1[i] = 0
antiloopadr2[i] = 0
adrenaline[i] = 0
adrnum[i] = 0
adrnum2[i] = 0
adrtime[i] = 0
adrtime2[i] = 0
adrendummy[i] = 0
clientrespawn[i] = 0
invincDummy[i] = 0
switchteam[i] = 0
playerwhokilled[i] = 1022
killedwithweapk[i] = ""
killedwithweapv[i] = ""
playerlastkilled[i] = 1022
selfkills[i] = 0
teamkillr[i] = 0
khp[i] = 0
AdminName[i] = ""
originalclass[i] = ""
originalweap[i] = ""
killr[i] = 0
end
et.G_Print( "KMOD version " .. KMODversion .. " has been initialized...\n" )
end
function et_ClientDisconnect( clientNum)
killingspree[clientNum] = 0
flakmonkey[clientNum] = 0
deathspree[clientNum] = 0
multikill[clientNum] = 0
muted[clientNum] = 0
antiloopadr1[clientNum] = 0
antiloopadr2[clientNum] = 0
adrenaline[clientNum] = 0
adrnum[clientNum] = 0
adrnum2[clientNum] = 0
adrtime[clientNum] = 0
adrtime2[clientNum] = 0
adrendummy[clientNum] = 0
clientrespawn[clientNum] = 0
invincDummy[clientNum] = 0
switchteam[clientNum] = 0
playerwhokilled[clientNum] = 1022
killedwithweapk[clientNum] = ""
killedwithweapv[clientNum] = ""
playerlastkilled[clientNum] = 1022
selfkills[clientNum] = 0
teamkillr[clientNum] = 0
khp[clientNum] = 0
AdminName[clientNum] = ""
originalclass[clientNum] = ""
originalweap[clientNum] = ""
killr[clientNum] = 0
kill1[clientNum] = ""
kill2[clientNum] = ""
kill3[clientNum] = ""
kill4[clientNum] = ""
kill5[clientNum] = ""
kill6[clientNum] = ""
PlayerName[clientNum] = ""
if k_logchat == 1 then
log_chat(clientNum, "DISCONNECT", "DV2")
end
end
function spreerecord(PlayerID, kills2)
local fdadm,len = et.trap_FS_FOpenFile( "spree_record.dat", et.FS_WRITE )
local Name = et.Q_CleanStr(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "name" ))
local date = os.date("%x %I:%M:%S%p")
local kills = tonumber(kills2)
SPREE = kills .. "@" .. date .. "@" .. Name
et.trap_FS_Write( SPREE, string.len(SPREE) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^1New spree record: ^7" ..Name.. " ^7with^3 " ..kills.. "^7 kills ^7" ..tostring(oldspree).. "\n" )
loadspreerecord()
end
function spreerecord_reset()
local fdadm,len = et.trap_FS_FOpenFile( "spree_record.dat", et.FS_WRITE )
SPREE = ""
et.trap_FS_Write( SPREE, string.len(SPREE) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Spree record: ^7Spree record has been reset!\n" )
loadspreerecord()
end
function loadspreerecord()
local fd,len = et.trap_FS_FOpenFile( "spree_record.dat", et.FS_READ )
local kills = 0
local date = ""
local name = ""
if len <= 0 then
et.G_Print("WARNING: No spree record found! \n")
oldspree = "^3[Old: ^7N/A^3]"
oldspree2 = "^3Spree Record: ^7There is no current spree record"
spreerecordkills = 0
else
local filestr = et.trap_FS_Read( fd, len )
s,e,kills,date,name = string.find(filestr, "(%d+)%@(%d+%/%d+%/%d+%s%d+%:%d+%:%d+%a+)%@([^%\n]*)")
spreerecordkills = tonumber(kills)
oldspree = "^3[Old: ^7" ..name.. "^3 " .. kills .. "^7 @ " ..date.. "^3]"
oldspree2 = "^3Spree Record: ^7" ..name.. "^7 with ^3" .. kills .. "^7 kills at " ..date
intmrecord = "Current spree record: ^7" ..name.. "^7 with ^3" .. kills .. "^7 kills at " ..date
end
et.trap_FS_FCloseFile( fd )
end
function et_ConsoleCommand()
if string.lower(et.trap_Argv(0)) == k_commandprefix.."setlevel" then
if (et.trap_Argc() < 2) then
et.G_Print("Setlevel is used to set admin status to a player.\n")
et.G_Print("useage: !setlevel \[name/PID\] \[level 0-3\]\n")
return 1
end
commandSaid = false
sldv = 1
setlevel(et.trap_Argv(1), 0)
sldv = 0
setlevel(et.trap_Argv(1), et.trap_Argv(2))
return 1
elseif string.lower(et.trap_Argv(0)) == k_commandprefix.."showadmins" then
showAdmins()
return 1
elseif string.lower(et.trap_Argv(0)) == k_commandprefix.."gib" then
if (et.trap_Argc() < 2) then
et.G_Print("Gib is used to instantly kill a player\n")
et.G_Print("useage: gib \[name/PID\]\n")
return 1
end
Gib(et.trap_Argv(1))
return 1
elseif string.lower(et.trap_Argv(0)) == k_commandprefix.."slap" then
if (et.trap_Argc() < 2) then
et.G_Print("Slap is used to slap a player\n")
et.G_Print("useage: slap \[name/PID\]\n")
return 1
end
burn(et.trap_Argv(1)) -- the command was originally !burn
return 1
elseif string.lower(et.trap_Argv(0)) == "k_commandprefix" then
et.G_Print("Unknown command in line k_commandprefix\n")
return 1
elseif string.lower(et.trap_Argv(0)) == "m2" then -- used when advancedpms is enabled
if k_advancedpms == 1 then
if (et.trap_Argc() < 2) then
et.G_Print("Useage: /m \[pname/ID\] \[message\]\n")
return 1
else
private_message(1022, et.trap_Argv(1), et.ConcatArgs(2))
end
if k_logchat == 1 then
log_chat( 1022, "PMESSAGE", et.ConcatArgs(2), et.trap_Argv(1) )
end
end
return 1
elseif string.lower(et.trap_Argv(0)) == "m" or string.lower(et.trap_Argv(0)) == "pm" or string.lower(et.trap_Argv(0)) == "msg" then
if k_advancedpms == 0 then
if k_logchat == 1 then
log_chat( 1022, "PMESSAGE", et.ConcatArgs(2), et.trap_Argv(1) )
end
end
return 1
elseif string.lower(et.trap_Argv(0)) == "ma" or string.lower(et.trap_Argv(0)) == "pma" then
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if AdminUserLevel(i) >= 2 then
et.trap_SendServerCommand(i, ("b 8 \"^dPm to admins from ^1SERVER^d --> ^3" .. et.ConcatArgs(1) .. "^7"))
et.G_ClientSound(i, pmsound)
end
end
if k_logchat == 1 then
log_chat( 1022, "PMADMINS", et.ConcatArgs(1))
end
et.G_Print("Private message sent to admins\n")
return 1
elseif string.lower(et.trap_Argv(0)) == "ref" and string.lower(et.trap_Argv(1)) == "pause" and pausedv == 0 then
GAMEPAUSED = 1
dummypause = mtime
return 0
elseif string.lower(et.trap_Argv(0)) == "ref" and string.lower(et.trap_Argv(1)) == "unpause" and pausedv == 1 then
GAMEPAUSED = 0
return 0
else
return 0
end
end
function setlevel(client, level2)
local clientnum = tonumber(client)
local level = tonumber(level2)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^Setlevel: ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getsetlvlidfname(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if level < 0 or level > 3 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7Admin level does not exist! \[0-3\]\n" )
commandSaid = false
else
et.G_Print("Admin level does not exist! \[0-3\]\n")
end
return
end
setAdmin(clientnum, level)
end
function getsetlvlidfname(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7There are currently ^1" .. matchcount .. "^7 client\[s\] that match \"" ..name.. "\"\n" )
commandSaid = false
else
et.G_Print("There are currently ^1" .. matchcount .. "^7 client\[s\] that match \"" ..name.. "\"\n")
end
return nil
else
return slot
end
end
function setAdmin(PlayerID, levelv)
local level = tonumber(levelv)
local fdadm,len = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_APPEND )
local Name = et.Q_CleanStr(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "name" ))
local GUID = string.upper(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
local dv = 0
local dvi = 0
if len == -1 then
confirm = 1
else
for i=0, 64, 1 do
if chkGUID[i] == GUID then
et.trap_FS_FCloseFile( fdadm )
dv = 1
if dv == 1 then
adminchange(PlayerID, level)
end
break
end
dvi = i
end
if dvi == 64 then
confirm = 1
end
end
if confirm == 1 then
if level == 0 then
if sldv == 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7" .. Name .. "^7 is now a regular ^7user!\n" )
commandSaid = false
else
et.G_Print( Name .. "^7 is now a regular ^7user!\n" )
confirm = 0
end
end
loadAdmins()
return
elseif level == 1 then
AdminLV0[GUID] = true
AdminLV1[GUID] = true
ADMIN = level .. " - " .. GUID .. " - " .. Name .. "\n"
confirm = 0
elseif level == 2 then
AdminLV0[GUID] = true
AdminLV1[GUID] = true
AdminLV2[GUID] = true
ADMIN = level .. " - " .. GUID .. " - " .. Name .. "\n"
confirm = 0
elseif level == 3 then
AdminLV0[GUID] = true
AdminLV1[GUID] = true
AdminLV2[GUID] = true
AdminLV3[GUID] = true
ADMIN = level .. " - " .. GUID .. " - " .. Name .. "\n"
confirm = 0
end
et.trap_FS_Write( ADMIN, string.len(ADMIN) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel: ^7" .. Name .. "^7 is now a level ^1" .. level .. " ^7user!\n" )
commandSaid = false
else
et.G_Print( Name .. "^7 is now a level ^1" .. level .. " ^7user!\n" )
end
loadAdmins()
return 1
else
et.trap_FS_FCloseFile( fdadm )
return 1
end
end
function addAdmin(GUID)
s,e,level,GUID = string.find(GUID, "(%d)%s%-%s(%x+)")
level=tonumber(level)
if level == 1 then
AdminLV1[GUID] = true
elseif level == 2 then
AdminLV1[GUID] = true
AdminLV2[GUID] = true
elseif level == 3 then
AdminLV1[GUID] = true
AdminLV2[GUID] = true
AdminLV3[GUID] = true
end
end
function adminStatus(PlayerID)
local IP = et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "ip" )
local GUID = string.upper(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
if finger then
local name = et.gentity_get(PlayerID,"pers.netname")
if ( AdminLV3[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is an admin \[lvl 3\]\n" )
elseif ( AdminLV2[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is an admin \[lvl 2\]\n" )
elseif ( AdminLV1[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is an admin \[lvl 1\]\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger: ^7" .. name .. " ^7is a guest \[lvl 0\]\n" )
end
finger = false
commandSaid = false
else
if ( AdminLV3[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are an admin \[lvl 3\]\n" )
elseif ( AdminLV2[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are an admin \[lvl 2\]\n" )
elseif ( AdminLV1[GUID] ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are an admin \[lvl 1\]\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Admintest: ^7You are a guest \[lvl 0\]\n" )
end
end
end
function adminchange(PlayerID, level)
local fdin,lenin = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_READ )
local fdout,lenout = et.trap_FS_FOpenFile( "shrubbottmp.cfg", et.FS_WRITE )
local GUID2 = string.upper(et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
local i = 0
local IPRemove = ""
local fname = ""
local dv = 1
if lenin == -1 then
et.G_Print("There is no Power User IP to remove \n")
else
local filestr = et.trap_FS_Read( fdin, lenin )
for lvl,guid,name in string.gfind(filestr, "(%d)%s%-%s(%x+)%s%-%s*([^%\n]*)") do
if (guid==GUID2) then
guid = string.upper(guid)
fname = name
AdminLV0[GUID2] = false
AdminLV1[GUID2] = false
AdminLV2[GUID2] = false
AdminLV3[GUID2] = false
else
guid = lvl .. " - " .. guid .. " - " .. name .. "\n"
et.trap_FS_Write( guid, string.len(guid) ,fdout )
end
i=i+1
end
end
confirm = 1
et.trap_FS_FCloseFile( fdin )
et.trap_FS_FCloseFile( fdout )
et.trap_FS_Rename( "shrubbottmp.cfg", "shrubbot.cfg" )
if dv == 1 then
loadAdmins()
end
end
function AdminUserLevel(PlayerID)
local guid = ""
if(PlayerID~=-1) then
guid = et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" )
else
guid=-1
end
if ( AdminLV3[guid] ) then
return 3
elseif ( AdminLV2[guid] ) then
return 2
elseif ( AdminLV1[guid] ) then
return 1
end
return 0
end
function showAdmins()
local fd,len = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_READ )
if len <= 0 then
et.G_Print("WARNING: No Admins's Defined! \n")
else
local filestr = et.trap_FS_Read( fd, len )
for level,guid,Name in string.gfind(filestr, "(%d)%s%-%s(%x+)%s%-%s*([^%\n]*)") do
-- upcase for exact matches
GUID = string.upper(guid)
et.G_Print( "Name = " ..Name.. "\nLevel = " ..level.. "\n\n")
end
end
et.trap_FS_FCloseFile( fd )
end
function loadAdmins()
local i = 0
local i2 = 0
local dv = 1
local dv2 = 1
local fd,len = et.trap_FS_FOpenFile( "shrubbot.cfg", et.FS_READ )
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
chkGUID[i] = 0
AdminName[i] = ""
end
if len <= 0 then
et.G_Print("WARNING: No Admins's Defined! \n")
else
local filestr = et.trap_FS_Read( fd, len )
local i = 0
for guid in string.gfind(filestr, "%d%s%-%s(%x+)%s%-%s*") do
-- upcase for exact matches
chkGUID[i] = string.upper(guid)
if dv == 1 then
i=i+1
end
end
for guid2 in string.gfind(filestr, "(%d%s%-%s%x+)%s%-%s*") do
-- upcase for exact matches
guid2 = string.upper(guid2)
addAdmin(guid2)
end
for guid3,Name in string.gfind(filestr, "%d%s%-%s(%x+)%s%-%s*([^%\n]*)") do
AdminName[guid3] = Name
end
end
et.trap_FS_FCloseFile( fd )
end
function burn(client)
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getPlayernameToIdburn(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
et.gentity_set(clientnum,"health",(et.gentity_get(clientnum,"health")-5))
local slapsound = "sound/player/hurt_barbwire.wav"
soundindex = et.G_SoundIndex(slapsound)
et.G_Sound( clientnum, soundindex)
et.trap_SendServerCommand(-1, ("b 16 \"^7" .. et.gentity_get(clientnum,"pers.netname") .. " ^7was Slapped^7"))
end
function getPlayernameToIdburn(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function Gib(client)
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getPlayernameToId(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if et.gentity_get(clientnum,"sess.sessionTeam") >= 3 or et.gentity_get(clientnum,"sess.sessionTeam") < 1 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is not activly playing\n" )
commandSaid = false
else
et.G_Print("Client is not activly playing\n")
end
return
end
if et.gentity_get(clientnum,"health") <= 0 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib: ^7Client is currently dead\n" )
commandSaid = false
else
et.G_Print("Client is currently dead\n")
end
return
end
et.G_Damage(clientnum, clientnum, 1022, 400, 24, 0)
et.trap_SendServerCommand(-1, ("b 16 \"^7" .. et.gentity_get(clientnum,"pers.netname") .. " ^7was Gibbed^7"))
end
function getPlayernameToId(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function spec999()
local matches = 0
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local team = tonumber(et.gentity_get(i,"sess.sessionTeam"))
local ping = tonumber(et.gentity_get(i,"ps.ping"))
if team ~= 3 and team ~= 0 then
if ping >= 999 then
matches = matches + 1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref remove " .. i .. "\n" )
end
end
end
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Spec999: ^7Moving ^1" ..matches.. " ^7players to spectator\n" )
end
function et_ClientBegin( clientNum )
local name=et.Info_ValueForKey( et.trap_GetUserinfo( clientNum ), "name" )
ModInfo(clientNum)
loadAdmins()
AdminUserLevel(clientNum)
teamkillr[clientNum] = 0
selfkills[clientNum] = 0
muted[clientNum] = 0
Bname[clientNum] = name
if k_logchat == 1 then
log_chat(clientNum, "CONN", "DV")
end
end
function ModInfo(PlayerID)
et.trap_SendServerCommand( PlayerID,"cpm \"This server is running the new KMOD version " .. KMODversion .. "\n\"")
et.trap_SendServerCommand( PlayerID,"cpm \"Created by Clutch152.\n\"")
end
function advPlayers(PlayerID)
et.trap_SendServerCommand(PlayerID, string.format("print \"^3 ID ^1: ^3Player Rate Snaps\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1--------------------------------------------\n"))
local team = { "^1X" , "^4L" , " " }
local playercount = 0
local spa = 24
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
local teamnumber = tonumber(et.gentity_get(i,"sess.sessionTeam"))
local cname = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "name" )
local rate = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "rate" )
local snaps = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "snaps" )
local name = string.lower(et.Q_CleanStr( cname ))
local namel = tonumber(string.len(name))-1
local namespa = spa - namel
local space = string.rep( " ", namespa)
local ref = tonumber(et.gentity_get(PlayerID,"sess.referee"))
if ref == 0 then
ref = ""
else
ref = "^3REF"
end
if et.gentity_get(i,"pers.connected") ~= 2 then
else
et.trap_SendServerCommand(PlayerID, string.format('print "%s^7%2s ^1:^7 %s%s %5s %5s %s\n"',team[teamnumber], i, name, space, rate, snaps, ref))
playercount = playercount + 1
end
end
et.trap_SendServerCommand(PlayerID, string.format("print \"\n^3 " ..playercount.. " ^7total players\n"))
end
function admins(PlayerID)
et.trap_SendServerCommand(PlayerID, string.format("print \"^3 ID ^1:^3 Player ^1: ^3 Level ^1 : ^3 AdminName\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1----------------------------------------------------------------\n"))
local team = { "^1X" , "^4L" , " " }
local playercount = 0
local spa = 23
local adname = ""
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
guis = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "cl_guid" )
GUID = string.upper( guis )
local teamnumber = tonumber(et.gentity_get(i,"sess.sessionTeam"))
local cname = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "name" )
local nudge = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "cl_timenudge" )
local pitch = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "m_pitch" )
local name = string.lower(et.Q_CleanStr( cname ))
local namel = tonumber(string.len(name))-1
local namespa = spa - namel
local space = string.rep( " ", namespa)
local fps = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "com_maxfps" )
local sens = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "sensitivity" )
local fov = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "cg_fov" )
local pmove = et.Info_ValueForKey( et.trap_GetUserinfo( i ), "pmove_fixed" )
local level = AdminUserLevel(i)
adname = AdminName[GUID]
if AdminUserLevel(i) == nil or AdminUserLevel(i) == " " or AdminUserLevel(i) < 1 then
else
if et.gentity_get(i,"pers.connected") ~= 2 then
else
et.trap_SendServerCommand(PlayerID, string.format('print "%s^7%2s ^1:^7 %s%s ^1: %5s ^1:^7 ^7%s\n"',team[teamnumber], i, name, space, level, adname))
playercount = playercount + 1
--string.format('print "%2d : %6s : %s\n"',i, team, et.gentity_get(i,'pers.netname')))
end
end
end
et.trap_SendServerCommand(PlayerID, string.format("print \"\n^3 " ..playercount.. " ^7total admins\n"))
return 1
end
function private_message(PlayerID,client,message)
local clientnum = ""
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"There is no client associated with this slot number\n"))
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
else
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"Please enter a slot number between 0 and 63\n"))
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"Player name requires more than 2 characters\n"))
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = name2IDPM(client)
end
end
if not clientnum then
if commandSaid then
et.trap_SendServerCommand(PlayerID, string.format("print \"Try name again or use slot number\n"))
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
local name = et.gentity_get(PlayerID,"pers.netname")
local rname = et.gentity_get(clientnum,"pers.netname")
if PlayerID == 1022 then
name = "^1SERVER"
end
if commandSaid then
et.trap_SendServerCommand(PlayerID, ("b 8 \"^dPrivate message sent to "..rname.."^d --> ^3" .. message .. "^7"))
et.G_ClientSound(PlayerID, pmsound)
commandSaid = false
else
et.G_Print("Private message sent to "..rname.."^d --> ^3" .. message .. "^7\n")
end
et.trap_SendServerCommand(clientnum, ("b 8 \"^dPrivate message from "..name.."^d --> ^3" .. message .. "^7"))
et.G_ClientSound(clientnum, pmsound)
end
function name2IDPM(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
--[[
function curse_filter( PlayerID )
local k_cursemode = 1
local name = et.gentity_get(PlayerID,"pers.netname")
if k_cursemode == 1 then
muted[PlayerID] = mtime + 30000 --5 minutes in milliseconds
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref mute "..PlayerID.."\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3CurseFilter: ^7"..name.." ^7has been auto muted for ^15^7 minutes!\n" )
-- et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3"..muted[PlayerID].."\n" )
end
end
--]]
function log_chat( PlayerID, mode, text, PMID )
local text = et.Q_CleanStr(text)
local fdadm,len = et.trap_FS_FOpenFile( "chat_log.log", et.FS_APPEND )
local time = os.date("%x %I:%M:%S%p")
if mode == et.SAY_ALL then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. ": " .. text.. "\n"
elseif mode == et.SAY_TEAM then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.." (TEAM): " ..text.. "\n"
elseif mode == et.SAY_BUDDY then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (BUDDY): " ..text.. "\n"
elseif mode == et.SAY_TEAMNL then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (TEAM): " ..text.. "\n"
elseif mode == "VSAY_TEAM" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (VSAY_TEAM): " ..text.. "\n"
elseif mode == "VSAY_BUDDY" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (VSAY_BUDDY): " ..text.. "\n"
elseif mode == "VSAY_ALL" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "("..time..") "..name.. " (VSAY): " ..text.. "\n"
elseif mode == "PMESSAGE" then
local from = "SERVER"
if PlayerID ~= 1022 then
from = et.gentity_get(PlayerID,"pers.netname")
end
local rec1 = part2id(PMID)
if rec1 then
local repipiant = et.gentity_get(rec1,"pers.netname")
LOG = "("..time..") "..from.." to "..repipiant.." (PRIVATE): " ..text.. "\n"
end
elseif mode == "PMADMINS" then
local from = "SERVER"
if PlayerID ~= 1022 then
from = et.gentity_get(PlayerID,"pers.netname")
end
local repipiant = "ADMINS"
LOG = "("..time..") "..from.." to "..repipiant.." (PRIVATE): " ..text.. "\n"
elseif mode == "CONN" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "*** " ..name.. " HAS ENTERED THE GAME ***\n"
elseif mode == "NAME_CHANGE" then
LOG = "*** " ..PlayerID.. " HAS RENAMED TO "..text.." ***\n"
elseif mode == "DISCONNECT" then
local name = et.gentity_get(PlayerID,"pers.netname")
local name = et.Q_CleanStr( name )
LOG = "*** " ..name.. " HAS DISCONNECTED ***\n"
elseif mode == "START" then
LOG = "\n ***SERVER RESTART OR MAP CHANGE***\n\n"
end
et.trap_FS_Write( LOG, string.len(LOG) ,fdadm )
et.trap_FS_FCloseFile( fdadm )
end
function et_ClientCommand( clientNum, command )
local name2 = et.gentity_get(clientNum,"pers.netname")
local name2 = et.Q_CleanStr( name2 )
local arg0 = string.lower(et.trap_Argv(0))
local arg1 = string.lower(et.trap_Argv(1))
local muted = et.gentity_get(clientNum, "sess.muted")
if muted == 0 then
if arg0 == "say" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_ALL, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_ALL, et.ConcatArgs(1))
elseif arg0 == "say_team" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_TEAM, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_TEAM, et.ConcatArgs(1))
elseif arg0 == "say_buddy" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_BUDDY, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_BUDDY, et.ConcatArgs(1))
elseif arg0 == "say_teamnl" then
if k_logchat == 1 then
log_chat( clientNum, et.SAY_TEAMNL, et.ConcatArgs(1))
end
say_parms = "qsay"
et_ClientSay( clientNum, et.SAY_TEAMNL, et.ConcatArgs(1))
elseif arg0 == "sc" then
if AdminUserLevel(clientNum) == 3 then
local name = et.gentity_get(clientNum,"pers.netname")
if k_advancedpms == 1 then
say_parms = "m2 ".. clientNum
else
say_parms = "m "..name
end
et_ClientSay( clientNum, SC, et.ConcatArgs(1))
return 1
end
elseif arg0 == "vsay" then
if k_logchat == 1 then
log_chat( clientNum, "VSAY_ALL", et.ConcatArgs(1))
end
elseif arg0 == "vsay_team" then
if k_logchat == 1 then
log_chat( clientNum, "VSAY_TEAM", et.ConcatArgs(1))
end
elseif arg0 == "vsay_buddy" then
if k_logchat == 1 then
log_chat( clientNum, "VSAY_BUDDY", et.ConcatArgs(1))
end
end
end
if arg0 == "m" or arg0 == "pm" then
if k_logchat == 1 then
log_chat( clientNum, "PMESSAGE", et.ConcatArgs(2), et.trap_Argv(1) )
end
elseif arg0 == "ma" or arg0 == "pma" or arg0 == "msg" then
if k_logchat == 1 then
log_chat( clientNum, "PMADMINS", et.ConcatArgs(1))
end
end
if k_advplayers == 1 then
if string.lower(command) == "players" then
advPlayers(clientNum)
return 1
end
if AdminUserLevel(clientNum) >= 2 then
if string.lower(command) == "admins" then
admins(clientNum)
return 1
end
end
end
local ref = tonumber(et.gentity_get(clientNum,"sess.referee"))
if tonumber(et.gentity_get(clientNum,"sess.sessionTeam")) == 3 then
if et.trap_Argv(0) == "team" and et.trap_Argv(1) then
switchteam[clientNum] = 1
end
end
if votedis == 1 then
local vote = et.trap_Argv(1)
if AdminUserLevel(clientNum) < 3 then
if et.trap_Argv(0) == "callvote" then
if vote == "shuffleteamsxp" or vote == "shuffleteamsxp_norestart" or vote == "nextmap" or vote == "swapteams" or vote == "matchreset" or vote == "maprestart" or vote == "map" then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "cancelvote; qsay Voting has been disabled!\n")
end
end
end
end
local vote = et.trap_Argv(1)
if k_antiunmute == 1 then
if vote == "unmute" then
local client = et.trap_Argv(2)
local clientnumber = part2id(client)
local targetmuted = et.gentity_get(clientnumber, "sess.muted")
if targetmuted == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "cancelvote; qsay Cannot vote to unmute a muted person!\n")
end
end
end
if arg0 == "ref" and arg1 == "pause" and pausedv == 0 then
GAMEPAUSED = 1
dummypause = mtime
elseif arg0 == "ref" and arg1 == "unpause" and pausedv == 1 then
if ((mtime - dummypause)/1000) >= 5 then
GAMEPAUSED = 0
end
end
if k_advancedpms == 1 then
if string.lower(command) == "m" or string.lower(command) == "msg" or string.lower(command) == "pm" then
if et.trap_Argv(1) == nil or et.trap_Argv(1) == "" or et.trap_Argv(1) == " " then
et.trap_SendServerCommand(clientNum, string.format("print \"Useage: /m \[pname/ID\] \[message\]\n"))
else
commandSaid = true
private_message(clientNum, et.trap_Argv(1), et.ConcatArgs(2))
return 1
end
end
end
if string.lower(command) == "ma" or string.lower(command) == "pma" then
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if AdminUserLevel(i) >= 2 then
local name = et.gentity_get(clientNum,"pers.netname")
et.trap_SendServerCommand(i, ("b 8 \"^dPm to admins from "..name.."^d --> ^3" .. et.ConcatArgs(1) .. "^7"))
if k_advancedpms == 1 then
et.G_ClientSound(i, pmsound)
end
end
end
if AdminUserLevel(clientNum) < 2 then
et.trap_SendServerCommand(clientNum, ("b 8 \"^dPm to admins has been sent^d --> ^3" .. et.ConcatArgs(1) .. "^7"))
if k_advancedpms == 1 then
et.G_ClientSound(clientNum, pmsound)
end
end
return 1
end
if k_slashkilllimit == 1 then
local name = et.gentity_get(clientNum,"pers.netname")
local teamnumber = tonumber(et.gentity_get(clientNum,"sess.sessionTeam"))
if string.lower(command) == "kill" then
if teamnumber ~= 3 then
if et.gentity_get(clientNum,"health") > 0 then
if selfkills[clientNum] < k_slashkills then
selfkills[clientNum] = selfkills[clientNum] + 1
if selfkills[clientNum] == k_slashkills then
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. name .. " ^7You have reached your /kill limit! You can no longer /kill for the rest of this map.\n" )
et.G_ClientSound(clientNum, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. name .. " ^7You have reached your /kill limit! You can no longer /kill for the rest of this map.\n" )
end
elseif selfkills[clientNum] == (k_slashkills - 1) then
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. name .. " ^7You have ^11^7 /kill left for this map.\n" )
et.G_ClientSound(clientNum, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. name .. " ^7You have ^11^7 /kill left for this map.\n" )
end
end
else
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. name .. " ^7You may no longer /kill for the rest of this map!\n" )
et.G_ClientSound(clientNum, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. name .. " ^7You may no longer /kill for the rest of this map!\n" )
end
return 1
end
end
end
end
end
return 0
end
function et_ClientSay(clientNum,mode,text)
local command1=""
local commands = 0
local first = ""
local second = ""
local third = ""
local returnVal = 0
s,e,first,second,third = string.find(text,"%s*([%p]?[.%S]*)%s+([.%S]*)%s+(.*)")
if(mode==et.SAY_ALL) then
command1="say"
elseif (mode==et.SAY_TEAM or mode==et.SAY_TEAMNL) then
command1="say_team"
elseif (mode==et.SAY_BUDDY) then
command1="say_buddy"
elseif (mode==SC) then
command1="SC"
end
if(third~=nil) then
commands=4
else
s,e,first,second = string.find(text,"%s*([^%s+]+)%s+(.+)%s*")
third=""
if(second~=nil) then
commands = 3
else
second=""
first = et.ConcatArgs(1)
commands = 2
end
end
return ClientUserCommand(clientNum, command1, first, second, third, commands)
end
function comds(client, cvar1, caller)
local clientnum = tonumber(client)
if clientnum then
local wname = ""
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7There is no client associated with this slot number\n" )
commandSaid = false
else
et.G_Print("There is no client associated with this slot number\n")
end
return
end
else
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7Please enter a slot number between 0 and 63\n" )
commandSaid = false
else
et.G_Print("Please enter a slot number between 0 and 63\n")
end
return
end
else
if client then
s,e=string.find(client, client)
if e <= 2 then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7Player name requires more than 2 characters\n" )
commandSaid = false
else
et.G_Print("Player name requires more than 2 characters\n")
end
return
else
clientnum = getsetlvlidfpname(client)
wname = clientnum
end
end
if not clientnum then
if commandSaid then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ": ^7Try name again or use slot number\n" )
commandSaid = false
else
et.G_Print("Try name again or use slot number\n")
end
return
end
end
if kick then
local client2 = clientnum+1
if AdminUserLevel(caller) > AdminUserLevel(clientnum) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "pb_sv_kick " .. client2 .. " " .. cvar1 .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ":^7 Cannot kick a higher admin\n" )
end
kick = false
commandSaid = false
elseif ban then
local client2 = clientnum+1
et.trap_SendConsoleCommand( et.EXEC_APPEND, "pb_sv_ban " .. client2 .. " " .. cvar1 .. "\n" )
ban = false
commandSaid = false
elseif warn then
local name = et.gentity_get(clientnum,"pers.netname")
wname = string.lower(et.Q_CleanStr( name ))
local cvar1 = tostring( cvar1 )
if AdminUserLevel(caller) > AdminUserLevel(clientnum) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref warn \"" .. wname .. "\" \"" .. cvar1 .. "\"\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ":^7 Cannot warn a higher admin\n" )
end
warn = false
commandSaid = false
elseif mute then
local name = et.gentity_get(clientnum,"pers.netname")
if AdminUserLevel(caller) > AdminUserLevel(clientnum) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref mute " .. clientnum .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Mute: ^7" ..name.. " ^7has been muted\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3" .. fullcom .. ":^7 Cannot mute a higher admin\n" )
end
mute = false
commandSaid = false
elseif unmute then
local name = et.gentity_get(clientnum,"pers.netname")
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref unmute " .. clientnum .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3Unmute: ^7" ..name.. " ^7has been unmuted\n" )
unmute = false
commandSaid = false
elseif putaxis then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref putaxis " .. clientnum .. "\n" )
putaxis = false
commandSaid = false
elseif putallies then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref putallies " .. clientnum .. "\n" )
putallies = false
commandSaid = false
elseif putspec then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref remove " .. clientnum .. "\n" )
putspec = false
commandSaid = false
elseif makeshoutcaster then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref makeshoutcaster " .. clientnum .. "\n" )
makeshoutcaster = false
commandSaid = false
elseif removeshoutcaster then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref removeshoutcaster " .. clientnum .. "\n" )
removeshoutcaster = false
commandSaid = false
elseif makereferee then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref referee " .. clientnum .. "\n" )
makereferee = false
commandSaid = false
elseif removereferee then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "ref unreferee " .. clientnum .. "\n" )
removereferee = false
commandSaid = false
elseif finger then
adminStatus(clientnum)
elseif getip then
local IP = et.Info_ValueForKey( et.trap_GetUserinfo( clientnum ), "ip" )
local cvar1 = tonumber(cvar1)
local name = et.gentity_get(clientnum,"pers.netname")
et.trap_SendServerCommand(cvar1, string.format("b 8 \"^3Getip: " .. name .. "^7's IP is " .. IP .. ""))
getip = false
commandSaid = false
elseif getguid then
local GUID = et.Info_ValueForKey( et.trap_GetUserinfo( clientnum ), "cl_guid" )
local cvar1 = tonumber(cvar1)
local name = et.gentity_get(clientnum,"pers.netname")
et.trap_SendServerCommand(cvar1, string.format("b 8 \"^3Getguid: " .. name .. "^7's GUID is " .. GUID .. ""))
getguid = false
commandSaid = false
end
end
--[[
function getsetlvlidfpname(name)
local i
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
for i=0,63,1 do
playeri = et.gentity_get(i,"pers.netname")
if playeri then
playerp = string.lower(et.Q_CleanStr( playeri ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
if matchcount == 1 then
slot = i
else
slot = nil
end
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
--]]
function getsetlvlidfpname(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function part2id(client)
local clientnum = tonumber(client)
if clientnum then
if (clientnum >= 0) and (clientnum < 64) then
if et.gentity_get(clientnum,"pers.connected") ~= 2 then
return nil
end
return clientnum
end
else
local client = string.lower(et.Q_CleanStr( client ))
if client then
s,e=string.find(client, client)
if e <= 2 then
return nil
else
clientnum = nameforID(client)
end
end
if not clientnum then
return nil
end
end
return clientnum
end
--[[
function nameforID(name)
local i
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
for i=0,63,1 do
playeri = et.gentity_get(i,"pers.netname")
if playeri then
playerp = string.lower(et.Q_CleanStr( playeri ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
if matchcount == 1 then
slot = i
else
slot = nil
end
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
--]]
function nameforID(name)
local i = 0
local slot = nil
local matchcount = 0
local cleanname = string.lower(et.Q_CleanStr( name ))
local playerp = ""
for i=0,tonumber(et.trap_Cvar_Get("sv_maxclients"))-1,1 do
if PlayerName[i] then
playerp = string.lower(et.Q_CleanStr( PlayerName[i] ))
s,e=string.find(playerp, cleanname)
if s and e then
matchcount = matchcount + 1
slot = i
end
end
end
if matchcount >= 2 then
return nil
else
return slot
end
end
function loadcommands()
local fd,len = et.trap_FS_FOpenFile( "commands.cfg", et.FS_READ )
if len > 0 then
local filestr = et.trap_FS_Read( fd, len )
local counter0 = 0
local counter1 = 0
local counter2 = 0
local counter3 = 0
for level,comm in string.gfind(filestr, "[^%#](%d)%s*%-%s*(%w+)%s*%=%s*[^%\n]*") do
d0 = 5
d1 = 1
d2 = 6
d3 = 23
local comm2 = k_commandprefix..comm
if tonumber(level) == 0 then
counter0 = counter0 + 1
lvl0c = d0 + counter0
lvl0[lvl0c] = comm2
elseif tonumber(level) == 1 then
counter1 = counter1 + 1
lvl1c = d1 + counter1
lvl1[lvl1c] = comm2
elseif tonumber(level) == 2 then
counter2 = counter2 + 1
lvl2c = d2 + counter2
lvl2[lvl2c] = comm2
elseif tonumber(level) == 3 then
counter3 = counter3 + 1
lvl3c = d3 + counter3
lvl3[lvl3c] = comm2
end
end
end
et.trap_FS_FCloseFile( fd )
end
function readconfig()
loadAdmins()
loadspreerecord()
lvl0c = 5
lvl0 = {
k_commandprefix.."admintest",
k_commandprefix.."time",
k_commandprefix.."date",
k_commandprefix.."spree_record",
k_commandprefix.."tk_index",
}
lvl1c = 1
lvl1 = {
k_commandprefix.."spec999",
}
lvl2c = 6
lvl2 = {
k_commandprefix.."finger",
k_commandprefix.."kick",
k_commandprefix.."warn",
k_commandprefix.."mute",
k_commandprefix.."unmute",
k_commandprefix.."timelimit",
}
lvl3c = 23
lvl3 = {
k_commandprefix.."ban",
k_commandprefix.."readconfig",
k_commandprefix.."makeshoutcaster",
k_commandprefix.."makereferee",
k_commandprefix.."removeshoutcaster",
k_commandprefix.."removereferee",
k_commandprefix.."gravity",
k_commandprefix.."speed",
k_commandprefix.."knifeonly",
k_commandprefix.."knockback",
k_commandprefix.."cheats",
k_commandprefix.."laser",
k_commandprefix.."spree_restart",
k_commandprefix.."getip",
k_commandprefix.."crazygravity",
k_commandprefix.."getguid",
k_commandprefix.."setlevel",
k_commandprefix.."gib",
k_commandprefix.."slap",
k_commandprefix.."panzerwar",
k_commandprefix.."frenzy",
k_commandprefix.."grenadewar",
k_commandprefix.."sniperwar",
}
loadcommands()
end
function ClientUserCommand(PlayerID, Command, BangCommand, Cvar1, Cvar2, Cvarct)
local fd,len = et.trap_FS_FOpenFile( "commands.cfg", et.FS_READ )
if len > 0 then
local filestr = et.trap_FS_Read( fd, len )
for level,comm,str in string.gfind(filestr, "[^%#](%d)%s*%-%s*([%w%_]*)%s*%=%s*([^%\n]*)") do
local strnumber = {}
local strnumber = ParseString(str)
local comm2 = k_commandprefix..comm
local t = tonumber(et.gentity_get(PlayerID,"sess.sessionTeam"))
local c = tonumber(et.gentity_get(PlayerID,"sess.latchPlayerType"))
local player_last_victim_name = ""
local player_last_killer_name = ""
local player_last_victim_cname = ""
local player_last_killer_cname = ""
if playerlastkilled[PlayerID] == 1022 then
player_last_victim_name = "NO ONE"
player_last_victim_cname = "NO ONE"
else
player_last_victim_name = et.Q_CleanStr(et.gentity_get(playerlastkilled[PlayerID],"pers.netname"))
player_last_victim_cname = et.gentity_get(playerlastkilled[PlayerID],"pers.netname")
end
if playerwhokilled[PlayerID] == 1022 then
player_last_killer_name = "NO ONE"
player_last_killer_cname = "NO ONE"
else
player_last_killer_name = et.Q_CleanStr(et.gentity_get(playerwhokilled[PlayerID],"pers.netname"))
player_last_killer_cname = et.gentity_get(playerwhokilled[PlayerID],"pers.netname")
end
local pnameID = part2id(Cvar1)
if not pnameID then
pnameID = 1021
end
local PBpnameID = pnameID + 1
local str = string.gsub(str, "<CLIENT_ID>", PlayerID)
local str = string.gsub(str, "<GUID>", et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "cl_guid" ))
local str = string.gsub(str, "<COLOR_PLAYER>", et.gentity_get(PlayerID,"pers.netname"))
local str = string.gsub(str, "<ADMINLEVEL>", AdminUserLevel(PlayerID))
local str = string.gsub(str, "<PLAYER>", et.Q_CleanStr(et.gentity_get(PlayerID,"pers.netname")))
local str = string.gsub(str, "<PLAYER_CLASS>", class[c])
local str = string.gsub(str, "<PLAYER_TEAM>", team[t])
local str = string.gsub(str, "<PARAMETER>", Cvar1..Cvar2)
local str = string.gsub(str, "<PLAYER_LAST_KILLER_ID>", playerwhokilled[PlayerID])
local str = string.gsub(str, "<PLAYER_LAST_KILLER_NAME>", player_last_killer_name)
local str = string.gsub(str, "<PLAYER_LAST_KILLER_CNAME>", player_last_killer_cname)
local str = string.gsub(str, "<PLAYER_LAST_KILLER_WEAPON>", killedwithweapv[PlayerID])
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_ID>", playerlastkilled[PlayerID])
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_NAME>", player_last_victim_name)
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_CNAME>", player_last_victim_cname)
local str = string.gsub(str, "<PLAYER_LAST_VICTIM_WEAPON>", killedwithweapk[PlayerID])
local str = string.gsub(str, "<PNAME2ID>", pnameID)
local str = string.gsub(str, "<PBPNAME2ID>", PBpnameID)
local teamnumber = tonumber(et.gentity_get(PlayerID,"sess.sessionTeam"))
local classnumber = tonumber(et.gentity_get(PlayerID,"sess.latchPlayerType"))
if (string.lower(BangCommand) == comm2 ) then
if tonumber(level) <= AdminUserLevel(PlayerID) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "".. str .. "\n" )
if strnumber[1] == "forcecvar" then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3etpro svcmd: ^7forcing client cvar ["..strnumber[2].."] to [".. Cvar1 .."]\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "qsay ^3"..comm..":^7 Insufficient Admin status\n" )
end
end
end
end
et.trap_FS_FCloseFile( fd )
if (string.lower(BangCommand) == k_commandprefix.."admintest") then
adminStatus(PlayerID)
elseif (string.lower(BangCommand) == k_commandprefix.."time" ) then
local time = os.date("%I:%M:%S%p")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." The server time is " ..time.. "\n" )
elseif (string.lower(BangCommand) == k_commandprefix.."date" ) then
local date = os.date("%x %I:%M:%S%p")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." The server date is " ..date.. "\n" )
elseif (string.lower(BangCommand) == k_commandprefix.."spree_record" ) then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ".. tostring(oldspree2) .."\n" )
elseif (string.lower(BangCommand) == k_commandprefix.."tk_index" ) then
local status = ""
local name = et.Info_ValueForKey( et.trap_GetUserinfo( PlayerID ), "name" )
if teamkillr[PlayerID] < -1 then
status = "^1NOT OK"
else
status = "^2OK"
end
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Tk_index: ^7" .. name .. "^7 has a tk index of ^3" ..teamkillr[PlayerID] .. "^7 \[" .. status .. "^7\] \n" )
elseif (string.lower(BangCommand) == k_commandprefix.."listcmds" ) then
lstcomds( PlayerID )
end
--Admin commands
--level 3
if (string.lower(BangCommand) == k_commandprefix.."gib" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib:^7 \[partname/id#\]\n" )
else
commandSaid = true
Gib(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gib:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."slap" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap:^7 \[partname/id#\]\n" )
else
commandSaid = true
burn(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Slap:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."setlevel" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel:^7 \[partname/id#\] \[level\]\n" )
else
commandSaid = true
sldv = 1
setlevel(Cvar1, 0)
sldv = 0
setlevel(Cvar1, Cvar2)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Setlevel:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."readconfig" ) then
if AdminUserLevel(PlayerID) == 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "exec kmod.cfg; qsay ^3ReadConfig:^7 Config reloaded\n" )
readconfig()
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3ReadConfig:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."spree_restart" ) then
if AdminUserLevel(PlayerID) == 3 then
spreerecord_reset()
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Spree reset:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."ban" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Ban:^7 \[partname/id#\] \[reason\]\n" )
else
commandSaid = true
ban = true
fullcom = "Ban"
comds(Cvar1, Cvar2)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Ban:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."getip" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getip:^7 \[partname/id#\]\n" )
else
commandSaid = true
getip = true
fullcom = "Getip"
comds(Cvar1, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getip:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."getguid" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getguid:^7 \[partname/id#\]\n" )
else
commandSaid = true
getguid = true
fullcom = "Getguid"
comds(Cvar1, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Getguid:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!makeshoutcaster" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makeshoutcaster:^7 \[partname/id#\]\n" )
else
commandSaid = true
makeshoutcaster = true
fullcom = "Makeshoutcaster"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makeshoutcaster:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!removeshoutcaster" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removeshoutcaster:^7 \[partname/id#\]\n" )
else
commandSaid = true
removeshoutcaster = true
fullcom = "Removeshoutcaster"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removeshoutcaster:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!makereferee" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makereferee:^7 \[partname/id#\]\n" )
else
commandSaid = true
makereferee = true
fullcom = "Makereferee"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Makereferee:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!removereferee" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removereferee:^7 \[partname/id#\]\n" )
else
commandSaid = true
removereferee = true
fullcom = "Removereferee"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Removereferee:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!gravity" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 Changes the gravity \[default = 800\]\n" )
else
local grav = tonumber(Cvar1)
if grav then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_gravity " .. grav .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 Gravity has been changed to " .. grav .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 Please enter in only numbers\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Gravity:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!knifeonly" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7 Disable or enable g_knifeonly \[0-1\]\n" )
else
local knife = tonumber(Cvar1)
if knife >= 0 and knife <= 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_knifeonly " .. knife .. "\n" )
if knife == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7Knifeonly has been Enabled\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7Knifeonly has been Disabled\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knifeonly:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!speed" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 Changes game speed \[default = 320\]\n" )
else
local speed2 = tonumber(Cvar1)
if speed then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_speed " .. speed2 .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 Game speed has been changed to " .. speed2 .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 Please enter in only numbers\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Speed:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!knockback" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 Changes knockback \[default = 1000\]\n" )
else
local knock = tonumber(Cvar1)
if knock then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_knockback " .. knock .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 Knockback has been changed to " .. knock .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 Please enter in only numbers\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Knockback:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!cheats" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7 Disable or enable cheats \[0-1\]\n" )
else
local cheat = tonumber(Cvar1)
if cheat >= 0 and cheat <= 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "forcecvar sv_cheats " .. cheat .. "\n" )
if cheat == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7Cheats have been Enabled\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7Cheats have been Disabled\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Cheats:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!laser" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7 Disable or enable g_debugbullets \[0-1\]\n" )
else
local laser = tonumber(Cvar1)
if laser >= 0 and laser <= 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "forcecvar g_debugbullets " .. laser .. "\n" )
if laser == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7Laser has been Enabled\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7Laser has been Disabled\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Laser:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."crazygravity" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Disable or enable crazygravity \[0-1\]\n" )
else
local crazy = tonumber(Cvar1)
if crazy >= 0 and crazy <= 1 then
if crazy == 1 then
if CGactive == 0 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity has been Enabled\n" )
crazygravity = true
crazydv = 1
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity is already active\n" )
end
else
if CGactive == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity has been Disabled. Resetting gravity\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "g_gravity 800\n" )
crazygravity = false
crazydv = 0
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Crazygravity has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Crazygravity:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."panzerwar" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Disable or enable panzerwar \[0-1\]\n" )
else
local panz = tonumber(Cvar1)
local dspeed = (speed*2)
if panz >= 0 and panz <= 1 then
if panz == 1 then
if panzdv == 0 then
if frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Frenzy mode must be disabled first\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Grenadewar must be disabled first\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Sniperwar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics 0; team_maxcovertops 0; team_maxfieldops 0; team_maxengineers 0; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers -1; g_speed " .. dspeed .. "; forcecvar g_soldierchargetime 0\n" )
panzdv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
originalclass[p] = tonumber(et.gentity_get(p,"sess.latchPlayerType"))
originalweap[p] = tonumber(et.gentity_get(p,"sess.latchPlayerWeapon"))
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
et.gentity_set(p,"sess.latchPlayerType",0)
et.gentity_set(p,"sess.latchPlayerWeapon",5)
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar is already active\n" )
end
else
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar has been Disabled.\n" )
panzerwar_reset()
panzdv = 0
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") == 1 or et.gentity_get(p,"sess.sessionTeam") == 2 then
if et.gentity_get(p,"health") >= 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Panzerwar has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Panzerwar:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."frenzy" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Disable or enable frenzy \[0-1\]\n" )
else
local frenz = tonumber(Cvar1)
if frenz >= 0 and frenz <= 1 then
if frenz == 1 then
if frenzdv == 0 then
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Panzerwar must be disabled first\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Grenadewar must be disabled first\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Sniperwar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics -1; team_maxcovertops -1; team_maxfieldops -1; team_maxengineers -1; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers 0\n" )
frenzdv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy is already active\n" )
end
else
if frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy has been Disabled.\n" )
frenzdv = 0
frenzy_reset()
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Frenzy has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Frenzy:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."grenadewar" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Disable or enable Grenadewar \[0-1\]\n" )
else
local gren = tonumber(Cvar1)
if gren >= 0 and gren <= 1 then
if gren == 1 then
if grendv == 0 then
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Panzerwar must be disabled first\n" )
elseif frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Frenzy must be disabled first\n" )
elseif snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Sniperwar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics -1; team_maxcovertops -1; team_maxfieldops -1; team_maxengineers -1; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers 0\n" )
grendv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar is already active\n" )
end
else
if grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar has been Disabled.\n" )
grendv = 0
grenadewar_reset()
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Grenadewar has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Grenadewar:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."sniperwar" ) then
if AdminUserLevel(PlayerID) == 3 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Disable or enable Sniperwar \[0-1\]\n" )
else
local snip = tonumber(Cvar1)
if snip >= 0 and snip <= 1 then
if snip == 1 then
if snipdv == 0 then
if panzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Panzerwar must be disabled first\n" )
elseif frenzdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Frenzy must be disabled first\n" )
elseif grendv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Grenadewar must be disabled first\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar has been Enabled\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "team_maxmedics -1; team_maxcovertops -1; team_maxfieldops -1; team_maxengineers -1; team_maxflamers 0; team_maxmortars 0; team_maxmg42s 0; team_maxpanzers 0\n" )
snipdv = 1
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
originalclass[p] = tonumber(et.gentity_get(p,"sess.latchPlayerType"))
originalweap[p] = tonumber(et.gentity_get(p,"sess.latchPlayerWeapon"))
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
end
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar is already active\n" )
end
else
if snipdv == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar has been Disabled.\n" )
snipdv = 0
sniperwar_reset()
for p=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if et.gentity_get(p,"sess.sessionTeam") >= 1 and et.gentity_get(p,"sess.sessionTeam") < 3 then
if et.gentity_get(p,"health") > 0 then
et.G_Damage(p, p, 1022, 400, 24, 0)
et.gentity_set(p,"health",(et.gentity_get(p,"health")-400)) -- in case they recently spawned and are protected by spawn shield
end
et.gentity_set(p,"sess.latchPlayerType",originalclass[p])
et.gentity_set(p,"sess.latchPlayerWeapon",originalweap[p])
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Sniperwar has already been disabled\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 Valid values are \[0-1\]\n" )
end
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Sniperwar:^7 command unavailible due to lack of required admin status!\n" )
end
end
--level 2
if (string.lower(BangCommand) == "!kick" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Kick:^7 \[partname/id#\] \[time\] \[reason\]\n" )
else
commandSaid = true
kick = true
fullcom = "Kick"
comds(Cvar1, Cvar2, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Kick:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!warn" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Warn:^7 \[partname/id#\] \[reason\]\n" )
else
commandSaid = true
warn = true
fullcom = "Warn"
comds(Cvar1, Cvar2, PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Warn:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!mute" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Mute:^7 \[partname/id#\]\n" )
else
commandSaid = true
mute = true
fullcom = "Mute"
comds(Cvar1, "dv", PlayerID)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Mute:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!timelimit" ) then
if AdminUserLevel(PlayerID) >= 2 then
local timel = tonumber(Cvar1)
if timel then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "timelimit " .. timel .. "\n" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Timelimit:^7 Timelimit has been changed to " .. timel .. "\n" )
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Timelimit:^7 Please enter in only numbers\n" )
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Unlock:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == "!unmute" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Unmute:^7 \[partname/id#\]\n" )
else
commandSaid = true
unmute = true
fullcom = "Unmute"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Unmute:^7 command unavailible due to lack of required admin status!\n" )
end
elseif (string.lower(BangCommand) == k_commandprefix.."finger" ) then
if AdminUserLevel(PlayerID) >= 2 then
if Cvarct < 3 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Finger:^7 \[partname/id#\]\n" )
else
commandSaid = true
finger = true
fullcom = "Finger"
comds(Cvar1)
end
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..say_parms.." ^3Map_restart:^7 command unavailible due to lack of required admin status!\n" )
end
end
end
function lstcomds( PlayerID )
if AdminUserLevel(PlayerID) >= 0 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 0 Commands\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for q=1, tonumber(lvl0c), 3 do
local b = q
local m = q + 1
local e = q + 2
if lvl0[b] == nil then
lvl0[b] = " "
end
if lvl0[m] == nil then
lvl0[m] = " "
end
if lvl0[e] == nil then
lvl0[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl0[b], lvl0[m], lvl0[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
if AdminUserLevel(PlayerID) >= 1 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 1 Commands \[PROTECTED USER\]\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for w=1, tonumber(lvl1c), 3 do
local b = w
local m = w + 1
local e = w + 2
if lvl1[b] == nil then
lvl1[b] = " "
end
if lvl1[m] == nil then
lvl1[m] = " "
end
if lvl1[e] == nil then
lvl1[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl1[b], lvl1[m], lvl1[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
if AdminUserLevel(PlayerID) >= 2 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 2 Commands\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for r=1, tonumber(lvl2c), 3 do
local b = r
local m = r + 1
local e = r + 2
if lvl2[b] == nil then
lvl2[b] = " "
end
if lvl2[m] == nil then
lvl2[m] = " "
end
if lvl2[e] == nil then
lvl2[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl2[b], lvl2[m], lvl2[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
if AdminUserLevel(PlayerID) == 3 then
et.trap_SendServerCommand(PlayerID, string.format("print \"Level 3 Commands \[SILENT COMMANDS WITH /sc \(command\)\]\n"))
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n"))
for t=1, tonumber(lvl3c), 3 do
local b = t
local m = t + 1
local e = t + 2
if lvl3[b] == nil then
lvl3[b] = " "
end
if lvl3[m] == nil then
lvl3[m] = " "
end
if lvl3[e] == nil then
lvl3[e] = " "
end
et.trap_SendServerCommand(PlayerID, string.format('print \"%21s^1|^7 %21s^1|^7 %21s^1|^7\n"', lvl3[b], lvl3[m], lvl3[e]))
end
et.trap_SendServerCommand(PlayerID, string.format("print \"^1-------------------------------------------------------------------\n\n"))
end
end
function et_Obituary( victim, killer, meansOfDeath )
local killername= ""
local killedname=et.Info_ValueForKey( et.trap_GetUserinfo( victim ), "name" )
local victimteam = tonumber(et.gentity_get(victim, "sess.sessionTeam"))
local killerteam = tonumber(et.gentity_get(killer, "sess.sessionTeam"))
weapon = ""
if victimteam ~= killerteam and killer ~= 1022 and killer ~= victim then
killername=et.Info_ValueForKey( et.trap_GetUserinfo( killer ), "name" )
lastblood = killername
khp[killer] = (mtime + 5000)
if khp[victim] == nil then
khp[victim] = 0
end
end
if victimteam ~= killerteam and killer ~= 1022 and killer ~= victim then
if killer ~= victim then
if firstblood == 0 then
firstblood = 1
if k_firstblood == 1 then
local str = string.gsub(k_fb_message, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..fb_location.." "..str.."\n" )
if k_firstbloodsound == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, firstbloodsound)
else
et.G_globalSound(firstbloodsound)
end
end
end
end
end
local killerhp = et.gentity_get(killer, "health")
if k_killerhpdisplay == 1 then
if khp[victim] < mtime then
if (killerhp>=75) then
-- et.trap_SendServerCommand(victim, ("b 8 \"^" .. k_color .. "You got owned!"))
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. "'s hp (^o" ..killerhp .. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
elseif (killerhp>=50 and killerhp<=74) then
-- et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "You're not a total newb."))
et.trap_SendServerCommand(victim, string.format("b 8 \"^7" ..killername .. "^" .. k_color .. "'s hp (^o" ..killerhp.. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
elseif (killerhp>=25 and killerhp<=49) then
-- et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "Try Harder!"))
et.trap_SendServerCommand(victim, string.format("b 8 \"^7" ..killername.. "^" .. k_color .. "'s hp (^o" ..killerhp.. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
elseif (killerhp>0 and killerhp<=24) then
-- et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "Almost!"))
et.trap_SendServerCommand(victim, string.format("b 8 \"^7" ..killername.. "^" .. k_color .. "'s hp (^o" ..killerhp.. "^" .. k_color .. ")"))
if adrenaline[killer] == 1 then
et.trap_SendServerCommand(victim, ("b 8 \"^7" .. killername .. "^" .. k_color .. " is an adrenaline junkie!\""))
end
end
end
if (killerhp<=0) then
if meansOfDeath == 4 or meansOfDeath == 18 or meansOfDeath == 18 or meansOfDeath == 26 or meansOfDeath == 27 or meansOfDeath == 30 or meansOfDeath == 44 or meansOfDeath == 43 then
et.trap_SendServerCommand(victim, string.format("b 8 \"^" .. k_color .. "You were owned by ^7" .. killername .. "^" .. k_color .. "'s explosive inheritance"))
end
end
end
end
kills(victim, killer, meansOfDeath, weapon)
deaths(victim, killer, meansOfDeath, weapon)
if meansOfDeath == 64 or meansOfDeath == 63 then
switchteam[victim] = 1
else
switchteam[victim] = 0
end
--Weapons used!
if (meansOfDeath==0) then
weapon="UNKNOWN"
elseif (meansOfDeath==1) then
weapon="MACHINEGUN"
elseif (meansOfDeath==2) then
weapon="BROWNING"
elseif (meansOfDeath==3) then
weapon="MG42"
elseif (meansOfDeath==4) then
weapon="GRENADE"
elseif (meansOfDeath==5) then
weapon="ROCKET"
elseif (meansOfDeath==6) then
weapon="KNIFE"
elseif (meansOfDeath==7) then
weapon="LUGER"
elseif (meansOfDeath==8) then
weapon="COLT"
elseif (meansOfDeath==9) then
weapon="MP40"
elseif (meansOfDeath==10) then
weapon="THOMPSON"
elseif (meansOfDeath==11) then
weapon="STEN"
elseif (meansOfDeath==12) then
weapon="GARAND"
elseif (meansOfDeath==13) then
weapon="SNOOPERSCOPE"
elseif (meansOfDeath==14) then
weapon="SILENCER"
elseif (meansOfDeath==15) then
weapon="FG42"
elseif (meansOfDeath==16) then
weapon="FG42SCOPE"
elseif (meansOfDeath==17) then
weapon="PANZERFAUST"
elseif (meansOfDeath==18) then
weapon="GRENADE_LAUNCHER"
elseif (meansOfDeath==19) then
weapon="FLAMETHROWER"
elseif (meansOfDeath==20) then
weapon="GRENADE_PINEAPPLE"
elseif (meansOfDeath==21) then
weapon="CROSS"
elseif (meansOfDeath==22) then
weapon="MAPMORTAR"
elseif (meansOfDeath==23) then
weapon="MAPMORTAR_SPLASH"
elseif (meansOfDeath==24) then
weapon="KICKED"
elseif (meansOfDeath==25) then
weapon="GRABBER"
elseif (meansOfDeath==26) then
weapon="DYNAMITE"
elseif (meansOfDeath==27) then
weapon="AIRSTRIKE"
elseif (meansOfDeath==28) then
weapon="SYRINGE"
elseif (meansOfDeath==29) then
weapon="AMMO"
elseif (meansOfDeath==30) then
weapon="ARTY"
elseif (meansOfDeath==31) then
weapon="WATER"
elseif (meansOfDeath==32) then
weapon="SLIME"
elseif (meansOfDeath==33) then
weapon="LAVA"
elseif (meansOfDeath==34) then
weapon="CRUSH"
elseif (meansOfDeath==35) then
weapon="TELEFRAG"
elseif (meansOfDeath==36) then
weapon="FALLING"
elseif (meansOfDeath==37) then
weapon = "SUICIDE"
elseif (meansOfDeath==38) then
weapon="TARGET_LASER"
elseif (meansOfDeath==39) then
weapon="TRIGGER_HURT"
elseif (meansOfDeath==40) then
weapon="EXPLOSIVE"
elseif (meansOfDeath==41) then
weapon="CARBINE"
elseif (meansOfDeath==42) then
weapon="KAR98"
elseif (meansOfDeath==43) then
weapon="GPG40"
elseif (meansOfDeath==44) then
weapon="M7"
elseif (meansOfDeath==45) then
weapon="LANDMINE"
elseif (meansOfDeath==46) then
weapon="SATCHEL"
elseif (meansOfDeath==47) then
weapon="TRIPMINE"
elseif (meansOfDeath==48) then
weapon="SMOKEBOMB"
elseif (meansOfDeath==49) then
weapon="MOBILE_MG42"
elseif (meansOfDeath==50) then
weapon="SILENCED_COLT"
elseif (meansOfDeath==51) then
weapon="GARAND_SCOPE"
elseif (meansOfDeath==52) then
weapon="CRUSH_CONSTRUCTION"
elseif (meansOfDeath==53) then
weapon="CRUSH_CONSTRUCTIONDEATH"
elseif (meansOfDeath==54) then
weapon="CRUSH_CONSTRUCTIONDEATH_NOATTACKER"
elseif (meansOfDeath==55) then
weapon="K43"
elseif (meansOfDeath==56) then
weapon="K43_SCOPE"
elseif (meansOfDeath==57) then
weapon="MORTAR"
elseif (meansOfDeath==58) then
weapon="AKIMBO_COLT"
elseif (meansOfDeath==59) then
weapon="AKIMBO_LUGER"
elseif (meansOfDeath==60) then
weapon="AKIMBO_SILENCEDCOLT"
elseif (meansOfDeath==61) then
weapon="AKIMBO_SILENCEDLUGER"
elseif (meansOfDeath==62) then
weapon="SMOKEGRENADE"
elseif (meansOfDeath==63) then
weapon="SWAP_SPACES"
elseif (meansOfDeath==64) then
weapon="SWITCH_TEAM"
end
end
function kills(victim, killer, meansOfDeath, weapon)
if (meansOfDeath==0) then
weapon="UNKNOWN"
elseif (meansOfDeath==1) then
weapon="MACHINEGUN"
elseif (meansOfDeath==2) then
weapon="BROWNING"
elseif (meansOfDeath==3) then
weapon="MG42"
elseif (meansOfDeath==4) then
weapon="GRENADE"
elseif (meansOfDeath==5) then
weapon="ROCKET"
elseif (meansOfDeath==6) then
weapon="KNIFE"
elseif (meansOfDeath==7) then
weapon="LUGER"
elseif (meansOfDeath==8) then
weapon="COLT"
elseif (meansOfDeath==9) then
weapon="MP40"
elseif (meansOfDeath==10) then
weapon="THOMPSON"
elseif (meansOfDeath==11) then
weapon="STEN"
elseif (meansOfDeath==12) then
weapon="GARAND"
elseif (meansOfDeath==13) then
weapon="SNOOPERSCOPE"
elseif (meansOfDeath==14) then
weapon="SILENCER"
elseif (meansOfDeath==15) then
weapon="FG42"
elseif (meansOfDeath==16) then
weapon="FG42SCOPE"
elseif (meansOfDeath==17) then
weapon="PANZERFAUST"
elseif (meansOfDeath==18) then
weapon="GRENADE_LAUNCHER"
elseif (meansOfDeath==19) then
weapon="FLAMETHROWER"
elseif (meansOfDeath==20) then
weapon="GRENADE_PINEAPPLE"
elseif (meansOfDeath==21) then
weapon="CROSS"
elseif (meansOfDeath==22) then
weapon="MAPMORTAR"
elseif (meansOfDeath==23) then
weapon="MAPMORTAR_SPLASH"
elseif (meansOfDeath==24) then
weapon="KICKED"
elseif (meansOfDeath==25) then
weapon="GRABBER"
elseif (meansOfDeath==26) then
weapon="DYNAMITE"
elseif (meansOfDeath==27) then
weapon="AIRSTRIKE"
elseif (meansOfDeath==28) then
weapon="SYRINGE"
elseif (meansOfDeath==29) then
weapon="AMMO"
elseif (meansOfDeath==30) then
weapon="ARTY"
elseif (meansOfDeath==31) then
weapon="WATER"
elseif (meansOfDeath==32) then
weapon="SLIME"
elseif (meansOfDeath==33) then
weapon="LAVA"
elseif (meansOfDeath==34) then
weapon="CRUSH"
elseif (meansOfDeath==35) then
weapon="TELEFRAG"
elseif (meansOfDeath==36) then
weapon="FALLING"
elseif (meansOfDeath==37) then
weapon = "SUICIDE"
elseif (meansOfDeath==38) then
weapon="TARGET_LASER"
elseif (meansOfDeath==39) then
weapon="TRIGGER_HURT"
elseif (meansOfDeath==40) then
weapon="EXPLOSIVE"
elseif (meansOfDeath==41) then
weapon="CARBINE"
elseif (meansOfDeath==42) then
weapon="KAR98"
elseif (meansOfDeath==43) then
weapon="GPG40"
elseif (meansOfDeath==44) then
weapon="M7"
elseif (meansOfDeath==45) then
weapon="LANDMINE"
elseif (meansOfDeath==46) then
weapon="SATCHEL"
elseif (meansOfDeath==47) then
weapon="TRIPMINE"
elseif (meansOfDeath==48) then
weapon="SMOKEBOMB"
elseif (meansOfDeath==49) then
weapon="MOBILE_MG42"
elseif (meansOfDeath==50) then
weapon="SILENCED_COLT"
elseif (meansOfDeath==51) then
weapon="GARAND_SCOPE"
elseif (meansOfDeath==52) then
weapon="CRUSH_CONSTRUCTION"
elseif (meansOfDeath==53) then
weapon="CRUSH_CONSTRUCTIONDEATH"
elseif (meansOfDeath==54) then
weapon="CRUSH_CONSTRUCTIONDEATH_NOATTACKER"
elseif (meansOfDeath==55) then
weapon="K43"
elseif (meansOfDeath==56) then
weapon="K43_SCOPE"
elseif (meansOfDeath==57) then
weapon="MORTAR"
elseif (meansOfDeath==58) then
weapon="AKIMBO_COLT"
elseif (meansOfDeath==59) then
weapon="AKIMBO_LUGER"
elseif (meansOfDeath==60) then
weapon="AKIMBO_SILENCEDCOLT"
elseif (meansOfDeath==61) then
weapon="AKIMBO_SILENCEDLUGER"
elseif (meansOfDeath==62) then
weapon="SMOKEGRENADE"
elseif (meansOfDeath==63) then
weapon="SWAP_SPACES"
elseif (meansOfDeath==64) then
weapon="SWITCH_TEAM"
end
local kil = tonumber(killer)
local killername = ""
victimname=et.Info_ValueForKey( et.trap_GetUserinfo( victim ), "name" )
playerlastkilled[killer] = victim
killedwithweapk[killer] = tostring(weapon)
local victimteam = tonumber(et.gentity_get(victim, "sess.sessionTeam"))
local killerteam = tonumber(et.gentity_get(killer, "sess.sessionTeam"))
if killer == 1022 then
killername="The World"
if k_sprees == 1 then
if (killingspree[victim]>=5) then
local str = string.gsub(k_end_message3, "#victim#", victimname)
local str = string.gsub(str, "#kills#", killingspree[victim])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[victim]=0
else
killingspree[victim]=0
end
end
if k_spreerecord == 1 then
if killr[victim] > spreerecordkills then
spreerecord(victim, killr[victim])
killr[victim] = 0
else
killr[victim] = 0
end
end
-- multikill[victim]=0
flakmonkey[victim]=0
else
killername=et.Info_ValueForKey( et.trap_GetUserinfo( killer ), "name" )
end
if (killer~=victim) then
if k_sprees == 1 then
deathspree[killer]=0
end
else
end
if Gamestate == 0 then
if k_teamkillrestriction == 1 then
if victimteam == killerteam and killer ~= victim and killer ~= 1022 then
if AdminUserLevel(killer) < k_tk_protect then
local warning = (k_tklimit_low + 1)
local pbkiller = killer + 1
if meansOfDeath == 17 or meansOfDeath == 43 or meansOfDeath == 44 or meansOfDeath == 4 or meansOfDeath == 18 or meansOfDeath == 57 or meansOfDeath == 30 or meansOfDeath == 27 or meansOfDeath == 49 or meansOfDeath == 3 then
teamkillr[killer] = teamkillr[killer] - 0.75
elseif meansOfDeath == 30 or meansOfDeath == 27 then
teamkillr[killer] = teamkillr[killer] - 0.65
elseif meansOfDeath == 45 then -- Mines do nothing!
else
teamkillr[killer] = teamkillr[killer] - 1
end
if warning > teamkillr[killer] and k_tklimit_low < teamkillr[killer] then
if k_advancedpms == 1 then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m2 " .. killername .. " ^1You are making to many teamkills please be more careful or you will be kicked!\n" )
et.G_ClientSound(killer, pmsound)
else
et.trap_SendConsoleCommand( et.EXEC_APPEND, "m " .. killername .. " ^1You are making to many teamkills please be more careful or you will be kicked!\n" )
end
elseif teamkillr[killer] <= k_tklimit_low then
et.trap_SendConsoleCommand( et.EXEC_APPEND, "pb_sv_kick " .. pbkiller .. " 10 Too many teamkills\n" )
end
end
else
if killer ~= victim then
if killer ~= 1022 then
teamkillr[killer] = teamkillr[killer] + 1
if teamkillr[killer] > k_tklimit_high then
teamkillr[killer] = k_tklimit_high
end
end
end
end
end
end
if k_multikills == 1 then
if killer ~= victim and victimteam ~= killerteam and killer ~= 1022 then
local dvtime = (k_multikill_time * 1000)
multikill[killer]=multikill[killer]+1
if (multikill[killer]==1) then
kill1[killer]=mtime
elseif (multikill[killer]==2) then
kill2[killer]=mtime
local mktime=((kill2[killer]-kill1[killer])/1000)
if ((kill2[killer]-kill1[killer])<=dvtime) then
local str = string.gsub(k_mk_message1, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, doublekillsound)
else
et.G_globalSound(doublekillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==3) then
kill3[killer]=tonumber(mtime)
local mktime=((kill3[killer]-kill2[killer])/1000)
if ((kill3[killer]-kill2[killer])<=dvtime) then
local str = string.gsub(k_mk_message2, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, multikillsound)
else
et.G_globalSound(multikillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==4) then
kill4[killer]=tonumber(mtime)
local mktime=((kill4[killer]-kill3[killer])/1000)
if ((kill4[killer]-kill3[killer])<=dvtime) then
local str = string.gsub(k_mk_message3, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, megakillsound)
else
et.G_globalSound(megakillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==5) then
kill5[killer]=tonumber(mtime)
local mktime=((kill5[killer]-kill4[killer])/1000)
if ((kill5[killer]-kill4[killer])<=dvtime) then
local str = string.gsub(k_mk_message4, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, ultrakillsound)
else
et.G_globalSound(ultrakillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==6) then
kill6[killer]=tonumber(mtime)
local mktime=((kill6[killer]-kill5[killer])/1000)
if ((kill6[killer]-kill5[killer])<=dvtime) then
local str = string.gsub(k_mk_message5, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, monsterkillsound)
else
et.G_globalSound(monsterkillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==7) then
kill7[killer]=tonumber(mtime)
local mktime=((kill7[killer]-kill6[killer])/1000)
if ((kill6[killer]-kill5[killer])<=dvtime) then
local str = string.gsub(k_mk_message6, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, ludicrouskillsound)
else
et.G_globalSound(ludicrouskillsound)
end
end
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
elseif (multikill[killer]==8) then
kill8[killer]=tonumber(mtime)
local mktime=((kill8[killer]-kill7[killer])/1000)
if ((kill6[killer]-kill5[killer])<=dvtime) then
local str = string.gsub(k_mk_message7, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..mk_location.." "..str.."\n")
if k_multikillsounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, holyshitsound)
else
et.G_globalSound(holyshitsound)
end
end
multikill[killer]=0
else
multikill[killer]=0
multikill[killer]=multikill[killer]+1
kill1[killer]=mtime
end
end
else
multikill[killer]=0
end
end
if killer ~= victim and victimteam ~= killerteam and killer ~= 1022 then
if k_spreerecord == 1 then
killr[killer] = killr[killer] + 1
end
if k_sprees == 1 then
killingspree[killer]=killingspree[killer]+1
if (killingspree[killer]==k_spree1_amount) then
local str = string.gsub(k_ks_message1, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1KILLINGSPREE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, killingspreesound)
else
et.G_globalSound(killingspreesound)
end
end
elseif (killingspree[killer]==k_spree2_amount) then
local str = string.gsub(k_ks_message2, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1RAMPAGE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, rampagesound)
else
et.G_globalSound(rampagesound)
end
end
elseif (killingspree[killer]==k_spree3_amount) then
local str = string.gsub(k_ks_message3, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1DOMINATION!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, dominatingsound)
else
et.G_globalSound(dominatingsound)
end
end
elseif (killingspree[killer]==k_spree4_amount) then
local str = string.gsub(k_ks_message4, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1UNSTOPABLE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, unstopablesound)
else
et.G_globalSound(unstopablesound)
end
end
elseif (killingspree[killer]==k_spree5_amount) then
local str = string.gsub(k_ks_message5, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1GODLIKE!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, godlikesound)
else
et.G_globalSound(godlikesound)
end
end
elseif (killingspree[killer]==k_spree6_amount) then
local str = string.gsub(k_ks_message6, "#killer#", killername)
local str = string.gsub(str, "#kills#", killingspree[killer])
-- et.trap_SendServerCommand( killer,"cp \"^1WICKED SICK!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
if k_spreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, wickedsicksound)
else
et.G_globalSound(wickedsicksound)
end
end
end
end
else
if (killingspree[killer]>=5) then
if killer == victim then
local str = string.gsub(k_end_message2, "#victim#", victimname)
local str = string.gsub(str, "#kills#", killingspree[victim])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[killer]=0
else
local str = string.gsub(k_end_message4, "#victim#", victimname)
local str = string.gsub(str, "#kills#", killingspree[killer])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[killer]=0
end
else
killingspree[killer]=0
end
if k_spreerecord == 1 then
if killr[victim] > spreerecordkills then
spreerecord(victim, killr[victim])
killr[victim] = 0
else
killr[victim] = 0
end
end
end
if k_flakmonkey == 1 then
if (meansOfDeath==17 or meansOfDeath==43 or meansOfDeath==44) then
if killer ~= victim and victimteam ~= killerteam then
flakmonkey[killer]=flakmonkey[killer]+1
if (flakmonkey[killer]==3) then
local str = string.gsub(k_fm_message, "#killer#", killername)
-- et.trap_SendServerCommand( killer,"cp \"^1FLAKMONKEY!\"\n")
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..fm_location.." "..str.."\n" )
if k_flakmonkeysound == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(killer, flakmonkeysound)
else
et.G_globalSound(flakmonkeysound)
end
end
flakmonkey[killer]=0
end
else
flakmonkey[killer]=0
end
else
flakmonkey[killer]=0
end
end
end
function deaths(victim, killer, meansOfDeath, weapon)
if (meansOfDeath==0) then
weapon="UNKNOWN"
elseif (meansOfDeath==1) then
weapon="MACHINEGUN"
elseif (meansOfDeath==2) then
weapon="BROWNING"
elseif (meansOfDeath==3) then
weapon="MG42"
elseif (meansOfDeath==4) then
weapon="GRENADE"
elseif (meansOfDeath==5) then
weapon="ROCKET"
elseif (meansOfDeath==6) then
weapon="KNIFE"
elseif (meansOfDeath==7) then
weapon="LUGER"
elseif (meansOfDeath==8) then
weapon="COLT"
elseif (meansOfDeath==9) then
weapon="MP40"
elseif (meansOfDeath==10) then
weapon="THOMPSON"
elseif (meansOfDeath==11) then
weapon="STEN"
elseif (meansOfDeath==12) then
weapon="GARAND"
elseif (meansOfDeath==13) then
weapon="SNOOPERSCOPE"
elseif (meansOfDeath==14) then
weapon="SILENCER"
elseif (meansOfDeath==15) then
weapon="FG42"
elseif (meansOfDeath==16) then
weapon="FG42SCOPE"
elseif (meansOfDeath==17) then
weapon="PANZERFAUST"
elseif (meansOfDeath==18) then
weapon="GRENADE_LAUNCHER"
elseif (meansOfDeath==19) then
weapon="FLAMETHROWER"
elseif (meansOfDeath==20) then
weapon="GRENADE_PINEAPPLE"
elseif (meansOfDeath==21) then
weapon="CROSS"
elseif (meansOfDeath==22) then
weapon="MAPMORTAR"
elseif (meansOfDeath==23) then
weapon="MAPMORTAR_SPLASH"
elseif (meansOfDeath==24) then
weapon="KICKED"
elseif (meansOfDeath==25) then
weapon="GRABBER"
elseif (meansOfDeath==26) then
weapon="DYNAMITE"
elseif (meansOfDeath==27) then
weapon="AIRSTRIKE"
elseif (meansOfDeath==28) then
weapon="SYRINGE"
elseif (meansOfDeath==29) then
weapon="AMMO"
elseif (meansOfDeath==30) then
weapon="ARTY"
elseif (meansOfDeath==31) then
weapon="WATER"
elseif (meansOfDeath==32) then
weapon="SLIME"
elseif (meansOfDeath==33) then
weapon="LAVA"
elseif (meansOfDeath==34) then
weapon="CRUSH"
elseif (meansOfDeath==35) then
weapon="TELEFRAG"
elseif (meansOfDeath==36) then
weapon="FALLING"
elseif (meansOfDeath==37) then
weapon = "SUICIDE"
elseif (meansOfDeath==38) then
weapon="TARGET_LASER"
elseif (meansOfDeath==39) then
weapon="TRIGGER_HURT"
elseif (meansOfDeath==40) then
weapon="EXPLOSIVE"
elseif (meansOfDeath==41) then
weapon="CARBINE"
elseif (meansOfDeath==42) then
weapon="KAR98"
elseif (meansOfDeath==43) then
weapon="GPG40"
elseif (meansOfDeath==44) then
weapon="M7"
elseif (meansOfDeath==45) then
weapon="LANDMINE"
elseif (meansOfDeath==46) then
weapon="SATCHEL"
elseif (meansOfDeath==47) then
weapon="TRIPMINE"
elseif (meansOfDeath==48) then
weapon="SMOKEBOMB"
elseif (meansOfDeath==49) then
weapon="MOBILE_MG42"
elseif (meansOfDeath==50) then
weapon="SILENCED_COLT"
elseif (meansOfDeath==51) then
weapon="GARAND_SCOPE"
elseif (meansOfDeath==52) then
weapon="CRUSH_CONSTRUCTION"
elseif (meansOfDeath==53) then
weapon="CRUSH_CONSTRUCTIONDEATH"
elseif (meansOfDeath==54) then
weapon="CRUSH_CONSTRUCTIONDEATH_NOATTACKER"
elseif (meansOfDeath==55) then
weapon="K43"
elseif (meansOfDeath==56) then
weapon="K43_SCOPE"
elseif (meansOfDeath==57) then
weapon="MORTAR"
elseif (meansOfDeath==58) then
weapon="AKIMBO_COLT"
elseif (meansOfDeath==59) then
weapon="AKIMBO_LUGER"
elseif (meansOfDeath==60) then
weapon="AKIMBO_SILENCEDCOLT"
elseif (meansOfDeath==61) then
weapon="AKIMBO_SILENCEDLUGER"
elseif (meansOfDeath==62) then
weapon="SMOKEGRENADE"
elseif (meansOfDeath==63) then
weapon="SWAP_SPACES"
elseif (meansOfDeath==64) then
weapon="SWITCH_TEAM"
end
local kil = tonumber(killer)
local killername = ""
if killer == 1022 then
killername="The World"
else
killername=et.Info_ValueForKey( et.trap_GetUserinfo( killer ), "name" )
end
playerwhokilled[victim] = killer
killedwithweapv[victim] = tostring(weapon)
local victimteam = tonumber(et.gentity_get(victim, "sess.sessionTeam"))
local killerteam = tonumber(et.gentity_get(killer, "sess.sessionTeam"))
local killedname=et.Info_ValueForKey( et.trap_GetUserinfo( victim ), "name" )
if k_spreerecord == 1 then
if killr[victim] > spreerecordkills then
spreerecord(victim, killr[victim])
killr[victim] = 0
else
killr[victim] = 0
end
end
if k_deathsprees == 1 then
deathspree[victim]=deathspree[victim]+1
end
if k_sprees == 1 then
if (killingspree[victim]>=5) then
local str = string.gsub(k_end_message1, "#victim#", killedname)
local str = string.gsub(str, "#kills#", killingspree[victim])
local str = string.gsub(str, "#killer#", killername)
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ks_location.." "..str.."\n" )
killingspree[victim]=0
else
killingspree[victim]=0
end
end
flakmonkey[victim]=0
-- multikill[victim]=0
if k_deathsprees == 1 then
if (deathspree[victim]==k_deathspree1_amount) then
local str = string.gsub(k_ds_message1, "#victim#", killedname)
local str = string.gsub(str, "#deaths#", deathspree[victim])
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ds_location.." "..str.."\n" )
if k_deathspreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(victim, deathspreesound1)
else
et.G_globalSound(deathspreesound1)
end
end
elseif (deathspree[victim]==k_deathspree2_amount) then
local str = string.gsub(k_ds_message2, "#victim#", killedname)
local str = string.gsub(str, "#deaths#", deathspree[victim])
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ds_location.." "..str.."\n" )
if k_deathspreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(victim, deathspreesound2)
else
et.G_globalSound(deathspreesound2)
end
end
elseif (deathspree[victim]==k_deathspree3_amount) then
local str = string.gsub(k_ds_message3, "#victim#", killedname)
local str = string.gsub(str, "#deaths#", deathspree[victim])
et.trap_SendConsoleCommand( et.EXEC_APPEND, ""..ds_location.." "..str.."\n" )
if k_deathspreesounds == 1 then
if k_noisereduction == 1 then
et.G_ClientSound(victim, deathspreesound3)
else
et.G_globalSound(deathspreesound3)
end
end
end
end
end
function et.G_ClientSound(clientnum, soundfile)
local tempentity = et.G_TempEntity(et.gentity_get(clientnum, "r.currentOrigin"), EV_GLOBAL_CLIENT_SOUND)
et.gentity_set(tempentity, "s.teamNum", clientnum)
et.gentity_set(tempentity, "s.eventParm", et.G_SoundIndex(soundfile))
end