On the map rotations you have a choice. Either a "Simple" one you can write yourself or an "Advanced" one that is included in a pk4 and is already written. The advanced one is the default map rotation and I recommend that one. The simple one will need to be used when some custom maps come out. In the server cfg all you need to do to use the default mapcycle is call it up with the via the command g_mapCycle "mapcycle" and the game will find it. Also the advance one, if someone votes in a ctf map the gametype will change to ctf. If they vote in a dm map the gametype will change to dm.
As far as a server cfg, here is a generic one that will work. You can add what you want to it:
/ Sample Quake 4 DM Server Configuration File
// ---------------------------
// si_name
// ---------------------------
// name advertised to server browsers
si_name "^2pLANET^4rELOADi"
// ---------------------------
// si_gametype
// ---------------------------
// gametype can be "DM", "Team DM", "Tourney", "CTF", "Arena CTF"
si_gameType "DM"
// ---------------------------
// net_serverDedicated
// ---------------------------
// type of server, dedicated or listen. Dedicated server
// recommended for anything other than small pick up games
net_serverDedicated 1
// ---------------------------
// si_maxPlayers
// ---------------------------
// maxPlayers, set appropriate to your upstream
si_maxPlayers 16
// ---------------------------
// si_minPlayers
// ---------------------------
// minPlayers, game will stay in warmup until at least this many
// players connect. Only valid if si_warmup 1
si_minPlayers 1
// ---------------------------
// si_warmup
// ---------------------------
// perform a match warmup
si_warmup 1
// ---------------------------
// si_countdown
// ---------------------------
// how many seconds the warmup->game countdown lasts
si_countdown 10
// ---------------------------
// net_serverMaxClientRate
// ---------------------------
// serverMaxClientRate - maximum data rate out to each client. Divide
// your out bandwidth by this value to figure out how many clients you
// can support
// net_serverMaxClientRate 16000
// ---------------------------
// si_mapCycle
// ---------------------------
// simple mapcycle, semicolon delimited list of maps to cycle through
// for more advanced map cycling that sets minplayers/gametype/etc see
// g_mapCycle
//si_mapCycle "mp/q4dm1;mp/q4dm2;mp/q4dm3;mp/q4dm4;mp/q4dm5;mp/q4dm6;mp/q4dm7;mp/q4dm8;mp/q4dm9"
// ---------------------------
// g_mapCycle
// ---------------------------
// advanced mapcycle, set this to the name of the .scriptcfg in
// q4base/ you want to use
// defaults to "mapcycle" to use q4base/mapcycle.scriptcfg
g_mapCycle "mapcycle"
// ---------------------------
// si_fragLimit
// ---------------------------
// fraglimit, in DM and Team DM number of frags required to win the
// game, in tourney the number of frags to win an individual round
si_fragLimit 20
// ---------------------------
// si_timeLimit
// ---------------------------
// timelimit, in DM, Team DM, CTF, Arena CTF how long the match will
// last before ending. in tourney how long an individual round will
// last before ending.
si_timeLimit 10
// NOTE:
// if both timelimit and fraglimit is set, the game will end when
// either one is hit
// ---------------------------
// si_map
// ---------------------------
// map, the map to start on
si_map mp/q4dm1
// start the server
spawnServer
This is the one I started with. Deltaray has put together a really good one over at
PsB. I would use that one.