Here's what I used it works you just have to edit the messages the server and nextmap is shown bottom left in red, the "messages" at bottom of script is yellow at top left. The mapnames.txt goes in a settings folder in server main folder. I upload the mod I used for bolt rifles only for freeze tag server use what you want or none of it. Hope it helps.
SERVER CONFIG
Code:
// General Settings
seta sv_hostname "EZ's Freeze Tag Server"
seta sv_maxRate "25000" // DO NOT SET OVER 15000 OR YOUR ACCOUNT WILL BE LOCKED!
set ip "216.52.25.135:12203"
seta mapinfo "1"
seta mapinfo_mapname "1"
seta mapinfo_custommapwarning "0"
seta pingkick 1 // default 0 (off) - 1 turns this mod on - 0 turns it off
seta ping_low 999 // default 999 - Set ping limit from 100-999 when Server is less then half full
seta ping_high 400 // default 999 - Set ping limit from 100-999 when Server is more than half full
seta pingwarnings 2 // default 3 - Set the number of warnings before kicking
seta pingscantime 300 // default 15 - Sets the number of seconds between each ping scan ( minimum 5 seconds )
set ping_message "1"
set ping_kick_message_delay "30"
//** Sets banning 1=on 0=off
seta sv_banning 1
//** Sets filter 1=on 0=off reads filterchat.cfg
seta sv_filterchat 1
//** Sets In-game chat 1=on 0=off
sv_disablechat 0
//** Sets Kinping //was 998
seta sv_kickping 400
//** sets how many connections from Same IP
seta sv_maxconnperip -1
//** Set Kick Bad cmd 1=on 0=off
seta sv_kickbadcmd 1
//** Sets Sound Distance
seta sv_sounddistance "8000" // deprecated, doesn't change anything
//** Sets Anti Wall hack mode 1,2,3,4,5,6
//** 1=Bone A-WH; 2=Hitbox A-WH; 3=BonePredict
//** A-WH; 4=FramePredict A-WH;
//** 5=Testing(better accuracy);
//** 6=tweaked mode 5 (RC3.1.005+ only))
seta sv_antiwh "0"
//** Skips AntiWH checks for players above given
//** ping (<0...999>)
sv_antiwhskipping 400
//** Sets Anti shoot through walls 1=on 0=off
seta sv_antistwh "1"
//** Sets recoil emulation 1=on 0=off
seta sv_recoilemulation "0"
//** Sets stufftext detection 1=on 0=off
seta sv_stufftextdetection "0"
//** Sets Anti cham 1=on 0=off
seta anticham "1" // works only with anticham mod
//** Sets server update check delay (hours)
seta sv_updatedelay 24
//** Turns Teambalancing feature 0=off; 1=on
seta g_teambalance 1
//** Sets an IP from which your
//** remote tool like CI, ForeSight or Scapp is
//** communicating with the patch. It will be let
//** through the anti-getstatus flood as trusted
//** IP.(XXX.XXX.XXX.XXX)
seta sv_remotetoolip "127.0.0.1"
//** GetStatus/GetInfo Anti Flood Protection 1=on 0=off
seta sv_packetantiflood 1
seta anticham 1
seta anticham_startDelay 15
seta anticham_periodWaittime 280
//Logging
seta logfile "3"
seta g_log "mohserver.log"
seta g_logSync "0"
seta developer 2
seta sv_gamespy "1" // Show our server in gamespy
seta g_healthdrop 1
seta g_realismmode 1
seta g_forceteamspectate 1
seta g_spectate_allow_full_chat 0
seta sv_team_spawn_interval 0
seta g_inactivespectate 0
seta g_inactivekick 0
seta g_teamswitchdelay 10
seta g_allowjointime 20 //default 30
seta sv_timeout "200"
seta sv_precache "1"
seta sv_privateClients "1"
seta sv_privatePassword "easy"
seta sv_maxclients "12"
seta sv_reconnectlimit "3"
seta sv_zombietime "1"
seta g_inactivity "3600"
seta g_forcerespawn "1"
seta g_syncronousclients "0"
seta g_smoothClients "1"
seta sv_fps 20
seta sv_allowdownload 0
seta sv_floodprotect "1"
seta cheats "0"
seta sv_pure "0"
seta set g_realismmode "1"
seta g_teamdamage "1"
seta sv_maxPing "350"
seta sv_minPing "0"
seta sv_flood_waitdelay "10"
seta sv_flood_persecond "4"
seta sv_flood_msgs "4"
seta noipx "1"
set sv_runspeed 300
set sv_dmspeedmult 1.0
// Master Servers
seta sv_master1 "mohmaster.2015.com"
seta sv_master2 "master0.gamespy.com"
seta sv_master3 "master1.gamespy.com"
seta sv_master1 "master.x-null.net"
seta sv_gamespy 1
//************ Caputure the flag ************
set g_extgametype ctf
set g_ctf_settings "respawn: 0 returnboth: 1 capturepress: -1"
//************ Demolition *******************
set g_extgametype dem
set g_dem_settings "respawn: 1 attacker: swap mef_team_spawn_interval: 6"
//************ Freeze-Tag *******************
set g_extgametype ft
set g_ft_settings "meltgun: on melttime: 35" //deactived
//************ Freeze-Tag-CTF ***************
set g_extgametype ftctf
set g_ftctf_settings "pointlimit: 6 countdown: 30 meltgun: on mef_team_spawn_interval: 6"
//************ Freeze-Tag-Demolition ********
set g_extgametype ftdem
set g_ftdem_settings "settime: 20 defusetime: 10 ticktime: 60"
//************ Freeze-Tag-Objective *********
set g_extgametype ftobj
set g_ftobj_settings "meltgun: on melttime: 30"
set g_extgametype_mohdm1 ft
set g_extgametype_mohdm2 ft
set g_extgametype_mohdm3 ft
set g_extgametype_mohdm4 ft
set g_extgametype_mohdm5 ft
set g_extgametype_mohdm6 ft
set g_extgametype_mohdm7 ft
set g_extgametype_obj_team1 ftobj
set g_extgametype_obj_team2 ftobj
set g_extgametype_obj_team3 ftobj
set g_extgametype_obj_team4 ftobj
set sv_maplist "dm/mohdm1 dm/mohdm2 dm/mohdm3 dm/mohdm4 dm/mohdm5 dm/mohdm6 dm/mohdm7 obj/obj_team1 obj/obj_team2 obj/obj_team3 obj/obj_team4"
set g_gametype 3
set g_extgametype ""
// load the first map
map dm/mohdm1 //dm/mohdm1
INFO SCRIPT (nextmap)
Code:
/*
If you want to make any variable accesable after the player has left the server:
local.player.listener.your_variable = your value
Else:
local.player.your_variable = your value
*/
main local.player:
//make sure not running twice
if (level.run_mapinfo)
end
level.run_mapinfo = 1
println("Mapinfo mod is called.")
level.mapnames1= waitexec (settings/mapnames.txt::mapnames1)
level.mapnames2= waitexec (settings/mapnames.txt::mapnames2)
level.mapnames3= waitexec (settings/mapnames.txt::mapnames3)
level.mapnames4= waitexec (settings/mapnames.txt::mapnames4)
thread nextmap_message
thread messages
end
nextmap_message:
if(int(getcvar("mapinfo"))!=1)
println("Mapinfo mod is not enabled")
while(1)
{
if(int(getcvar("mapinfo")) == 1)
{
if($player != NULL)
{
local.maplist = getcvar "sv_maplist"
local.words = waitthread split_line local.maplist
level.thismap = getcvar "mapname"
for(local.i = 1; local.i <= local.words[2];local.i++)
{
if(local.words[1][local.i] == level.thismap)
{
local.i++
level.nextmap = local.words[1][local.i]
if(level.nextmap == NIL || level.nextmap == "")
{
level.nextmap = local.words[1][1]
}
waitthread get_ifcustom level.nextmap
}
}
if (int(getcvar("mapinfo_mapname")) == 1)
{
local.mapname_nat= waitthread getmapname level.nextmap
if (local.mapname_nat==NIL)
local.mapname_nat=level.nextmap
local.nextmap="Next Map: " + local.mapname_nat
}
else
{
local.nextmap="Up Next: " + level.nextmap
}
if (local.nextmap )
{
if(local.nextmap.size)
local.draw_x = local.nextmap.size
local.sv_hostname = getcvar(sv_hostname)
local.g_gametypestring = getcvar(g_gametypestring)
local.ip = getcvar(ip)
huddraw_virtualsize 180 0
huddraw_align 180 left bottom
huddraw_rect 180 155 -33 1 1
huddraw_color 180 1.0 0.0 0.0
huddraw_font 180 "facfont-20"
huddraw_alpha 180 1
huddraw_string 180 local.sv_hostname
wait 5 //65
huddraw_alpha 180 0
wait 5
huddraw_virtualsize 181 0
huddraw_align 181 left bottom
huddraw_rect 181 155 -33 1 1
huddraw_color 181 1.0 0.0 0.0
huddraw_font 181 "facfont-20"
huddraw_alpha 181 1
huddraw_string 181 ("Gametype: "+(local.g_gametypestring)+"")
wait 5
huddraw_alpha 181 0
wait 5
huddraw_virtualsize 183 0
huddraw_align 183 left bottom
huddraw_rect 183 155 -33 1 1
huddraw_color 183 1.0 0.0 0.0
huddraw_font 183 "facfont-20"
huddraw_alpha 183 1
huddraw_string 183 ("Server IP: "+(local.ip)+"")
wait 5
huddraw_alpha 183 0
wait 5
huddraw_virtualsize 231 0
huddraw_align 231 "left" "bottom"
huddraw_alpha 231 1
huddraw_virtualsize 231 0
huddraw_rect 231 155 -33 1 1
huddraw_color 231 1.0 0.0 0.0
huddraw_font 231 "facfont-20"
huddraw_string 231 local.nextmap
wait 5
huddraw_alpha 231 0
wait 230
}
}
}
wait 5
}
end
////////////////////////////////////////////////////////////////////
getmapname local.name:
if (local.name != NIL && local.name !="")
{
if(level.mapnames1.size > 0)
{
for(local.i=1; local.i<=level.mapnames1.size; local.i++)
{
if (local.name==level.mapnames1[local.i][1])
{
local.name=level.mapnames1[local.i][2]
end local.name
}
}
}
if(level.mapnames2.size > 0)
{
for(local.i=1; local.i<=level.mapnames2.size; local.i++)
{
if (local.name==level.mapnames2[local.i][1])
{
local.name=level.mapnames2[local.i][2]
end local.name
}
}
}
if(level.mapnames3.size > 0)
{
for(local.i=1; local.i<=level.mapnames3.size; local.i++)
{
if (local.name==level.mapnames3[local.i][1])
{
local.name=level.mapnames3[local.i][2]
end local.name
}
}
}
if(level.mapnames4.size > 0)
{
for(local.i=1; local.i<=level.mapnames4.size; local.i++)
{
if (local.name==level.mapnames4[local.i][1])
{
local.name=level.mapnames4[local.i][2]
end local.name
}
}
}
}
end local.name
////////////////////////////////////////////////////////////////////
split_line local.info:
local.wordcount = 1
if(local.info[0] == " ")
{
local.spacer = "_"
local.start = 1
}
else if(local.info[0] == " " || local.info[0] == "")
{
local.spacer = " "
for(local.i = 0;local.i <= local.info.size;local.i++)
{
if(local.info[local.i] != " " && local.info[local.i] != "")
{
local.start = local.i
break
}
}
}
else
{
local.spacer = " "
local.start = 0
}
for(local.i=local.start;local.i<=local.info.size - 1;local.i++)
{
if(local.info[local.i]!=local.spacer && local.info[local.i] != "`")
{
if(local.words[local.wordcount]==NIL)
{
local.words[local.wordcount]=""
}
local.words[local.wordcount] += local.info[local.i]
}
else
{
if(local.spacer == "_" && local.info[local.i + 1] == "`")
{
local.words[local.wordcount] += local.info[local.i]
}
else if(local.spacer == "_" && local.info[local.i ] != "`")
{
local.wordcount++
}
else if(local.spacer == " " && local.info[local.i ] == " ")
{
//if(local.info[local.i + 1] != " ")
//{
local.wordcount++
}
}
}
//}
end ( local.words::local.wordcount )
////////////////////////////////////////////////////////////////////////////////////
get_ifcustom local.map:
local.stock = "dm/mohdm1"::"dm/mohdm2"::"dm/mohdm3"::"dm/mohdm4"::"dm/mohdm5"::"dm/mohdm6"::"dm/mohdm7"::"obj/obj_team1"::"obj/obj_team2"::"obj/obj_team3"::"obj/obj_team4"::"obj/mp_palermo_obj"::"lib/mp_anzio_lib"::"lib/mp_tunisia_lib"::"obj/mp_castello_obj"::"lib/mp_bizerteharbor_lib"::"obj/mp_montecassino_tow"::"obj/mp_bologna_obj"::"lib/mp_ship_lib"::"dm/mp_bizerte_dm"::"obj/mp_kasserine_tow"::"dm/MP_Bahnhof_DM"::"dm/MP_Verschneit_DM"::"obj/mp_montebattaglia_tow"::"dm/MP_Brest_DM"::"dm/MP_Unterseite_DM"::"dm/MP_Holland_DM"::"dm/MP_Stadt_DM"::"dm/MP_Gewitter_DM"::"dm/MP_Bazaar_DM"::"obj/MP_Druckkammern_TOW"::"obj/MP_Flughafen_TOW"::"obj/MP_Ardennes_TOW"::"obj/MP_Berlin_TOW "
for(local.i = 1;local.i <= local.stock.size;local.i++)
{
if(local.stock[local.i] == local.map )
{
level.iscustommap = 0
end
}
}
if(local.map[1] == m || local.map[1] == t || local.map[1] == e)
{
level.iscustommap = 0
end
}
level.iscustommap = 1
end
end
messages:
while (1)
{
//loop this forever
wait 30
iprintln "Welcome To My Server"
wait 5
iprintln "Bolt Action Rifles Only"
wait 60
iprintln ""
wait 60
iprintln ""
wait 60
iprintln ""
wait 60
iprintln ""
wait 60
iprintln ""
wait 60
iprintln "www.easymeat.wixsite.com/themeathouse"
wait 3640
}
// end of the loop
end
MAPNAMES.TXT
Code:
//------------------------------------------------
//---------- list of map names -------------------
//------------------------------------------------
// Please note:
// Each array can hold a maximum of 255 map names, values above will fail.
// Please make sure that each map and according mapname is in quotes: "map"
// The syntax is: "map" "mapname"
// mapnames2, mapnames3, mapnames4 to are empty as current, use them
// for your additions
//
mapnames1:
local.array= makearray
//-----------------------------------------------------------------
//------------------------Mapnames 1-------------------------------
"dm/mohdm1" "Southern France"
"dm/mohdm2" "Destroyed Village"
"dm/mohdm3" "Remagen"
"dm/mohdm4" "Crossroads"
"dm/mohdm5" "Snowy Park"
"dm/mohdm6" "Stalingrad"
"dm/mohdm7" "Algiers"
"obj/obj_team1" "The Hunt"
"obj/obj_team2" "V2 Rocket"
"obj/obj_team3" "Omaha Beach"
"obj/obj_team4" "The Bridge"
"m1l3c" "M1l3c - Lighting The Torch - Lighthouse"
"m2l1" "M2l1 - Kriegsmarine"
"m3l2" "M3l2 - Battle in the Bocage"
"m3l3" "M3l3 - The Nebelwerfer Hunt"
"m4l1" "M4l1 - Resistance"
"m4l2" "M42 - Diverting the Enemy"
"m5l1a" "M5l1A - Sniper's Last Stand"
"m5l1b" "M5l1b - City Hall"
"m5l3" "M5l3 - The Bridge"
"m6l1b" "M6l1b - Siegfried Forest"
"m6l2a" "M6l2a - Communications Blackout"
"m6l2b" "M6l2b - The Schmerzen Express"
//-----------------------------------------------------------------
//-----------------------------------------------------------------
endarray
end local.array
//---------------------------------------------------------
//---------------------------------------------------------
mapnames2:
local.array= makearray
//-----------------------------------------------------------------
//---------------------Mapnames 2----------------------------------
"obj/dasboot" "Das Boot"
"obj/obj_lastcastle2" "Last Castle 2"
"obj/objlol_v2_13" "LoL V2 OBJ"
"obj/Navarone" "Navarone"
"obj/obj_howitzer" "Howitzer"
"obj/TheChurch_Final_obj" "The Church"
"obj/schplatzburg_obj" "Schplatzburg"
"obj/renan" "St Renan"
"obj/stlo" "St Lo"
"obj/obj_DesertBase_Final" "Desert Base Final"
"obj/obj_CloseCombat" "Close Combat"
"obj/zutphen" "Zutphen"
"dm/AC_Battlefield" "AC Battlefield"
"dm/cmc2" "CMC 2'
"dm/thefalls" "The Falls"
"dm/anubis" "anubis"
"dm/bridges" "bridges"
"dm/city_nights" "City Nights"
"dm/DeadEndStreet" "Dead End Street"
"dm/doomed" "Doomed"
"dm/fortwreck" "Fort Wreck"
"dm/huntrevisited" "Hunt Revisited"
"dm/lastcastle2" "Last Castle 2"
"dm/round_lol_v2_13" "LoL V2"
"dm/thesiege_dm" "The Siege"
"dm/evening" "Evening"
"dm/toysoldiers" "Toy Soldiers"
"dm/CloseCombat" "Close Combat"
"dm/canal" "Canal"
"dm/Renverse" "Renverse"
"dm/schule" "Schule"
"dm/stalingrad-2" "stalingrad-2"
"dm/Tirtagen-Kechtat" "Tirtagen Kechtat"
"dm/MP_Bazaar_DM" "Bazaar"
"dm/MP_Brest_DM" "Brest"
"dm/MP_Stadt_DM" "Stadt"
//-----------------------------------------------------------------
//-----------------------------------------------------------------
endarray
end local.array
mapnames3:
local.array= makearray
//-----------------------------------------------------------------
//---------------------Mapnames 3----------------------------------
"obj/obj_omg_team4" "OMG Bridge"
"obj/obj_clifftop" "Clifftop"
"obj/hunt_reborn" "Hunt Reborn"
"obj/bob_carentan" "Bob Carentan"
"obj/obj_canal" "Canal"
"obj/obj_FallenVillage" "Fallen Village"
"obj/obj_rustinpeace" "Rust In Peace"
"obj/push_cityhall" "Push Cityhall"
"obj/thefarm" "The Farm"
"obj/stalingrad1942" "Stalingrad 1942"
"obj/stalingrad_3_obj" "Stalingrad 3"
"dm/dm_rustinpeace" "Rust In Peace"
"dm/snipersnow" "Sniper Snow"
"dm/stalingrad1942tdm" "Stalingrad 1942"
"dm/stalingradsnow" "Stalingrad Snow"
"dm/stalingrad_3_dm" "Stalingrad 3"
"dm/dm_snipers_last_stand" "Snipers Last Stand"
"dm/concert_hall_Ver2" "Concert Hall"
"dm/duenkirchen" "Duenkirchen"
"dm/mvb05" "Mountain Village"
"dm/SmallCity" "Small City"
"dm/smalltown" "Small Town"
"dm/hb_sneaky" "Sneaky"
"dm/evening" "Evening"
//-----------------------------------------------------------------
//-----------------------------------------------------------------
endarray
end local.array
mapnames4:
local.array= makearray
//-----------------------------------------------------------------
//---------------------Mapnames 4----------------------------------
//-----------------------------------------------------------------
//-----------------------------------------------------------------
endarray
end local.array