def presetRotate(): try: map = getSuccessor(sbserver.gameMode(), sbserver.mapName()) except KeyError: logging.warning('No map list specified for current mode. Defaulting to user-specified rotation.') clientReloadRotate() except ValueError: logging.info('Maps list for current mode is empty. Defaulting to user-specified rotation.') clientReloadRotate() else: sbserver.setMap(map, sbserver.gameMode()) if sbserver.numClients() == 0: rotate_on_join[0] = True sbserver.setPaused(True)
def onDuelCommand(cn, args): if args == '': sbserver.playerMessage( cn, error('Usage: #duel <mapname> (mode) (cn) (cn)')) args = args.split(' ') players = sbserver.players() if len(players) != 2: sbserver.playerMessage( cn, error( 'There must be only two unspectated players to enter duel mode.' )) else: if len(args) == 2: map = args[0] mode = int(args[1]) elif len(args) == 1: map = args[0] mode = sbserver.gameMode() else: sbserver.playerMessage(cn, error('Usage: #duel <mapname> (mode)')) return duelers[0] = players[0] duelers[1] = players[1] prev_mastermode = sbserver.masterMode() sbserver.setMasterMode(2) sbserver.message(green('Duel begins in...')) duelCountdown(5, map, mode)
def onMapVote(cn, mapname, mapmode): p = player(cn) if sbserver.mapName() == '': setMap(mapname, mapmode) elif isAtLeastMaster(cn) and sbserver.masterMode() > 0: setMap(mapname, mapmode) elif mapmode != sbserver.gameMode() and (lock_mode or not allow_modevote): p.message(error('You cannot vote for a new game mode')) else: try: vote = player(cn).gamevars['mapvote'] allow_vote = vote[0] != mapname and vote[1] != mapmode except KeyError: allow_vote = True if allow_vote: sbserver.message( info( request_temp.substitute( colordict, user=p.name(), modename=sbserver.modeName(mapmode), mapname=mapname))) p.gamevars['mapvote'] = (mapname, mapmode) else: sbserver.playerMessage( cn, error('You have already requested this map.')) countVotes()
def presetRotate(): try: map = getSuccessor(sbserver.gameMode(), sbserver.mapName()) except KeyError: logging.warning( 'No map list specified for current mode. Defaulting to user-specified rotation.' ) clientReloadRotate() except ValueError: logging.info( 'Maps list for current mode is empty. Defaulting to user-specified rotation.' ) clientReloadRotate() else: sbserver.setMap(map, sbserver.gameMode()) if sbserver.numClients() == 0: rotate_on_join[0] = True sbserver.setPaused(True)
def onMapSet(cn, mapname, mapmode): p = player(cn) if sbserver.mapName() == '': setMap(mapname, mapmode) elif mapreload[0]: setMap(mapname, mapmode) mapreload[0] = False elif isAtLeastMaster(cn) and sbserver.masterMode() > 0: sbserver.setMap(mapname, mapmode) elif mapmode != sbserver.gameMode() and (lock_mode or not allow_modevote): p.message(error('You cannot request a new game mode'))
def voteMap(caller,name,mode=None): """This command works just like the /map command except for with #map the caller can also call maps from /storage/maps. This calls the map from the server removing the need to /sendmap (as long as the maps are the same version). """ if mode is None: mode=sbserver.gameMode() mode=modeNumber(mode) sbserver.setMap(name,mode) #load the map if it exists and mode is coop if modeNumber("coop")==mode: try: loadmap(caller,name) except: pass return name
def changeMap(caller,name,mode=None): """Same as the /map command.""" if mode is None: mode=sbserver.gameMode() mode=modeNumber(mode) sbserver.setMap(name,mode) #load the map if it exists and mode is coop if modeNumber("coop")==mode: try: loadmap(caller,name) except: pass return name
def onNextMapCmd(cn, args): '''@description Display next map @usage @public''' if args != '': sbserver.playerMessage(cn, error('Usage: #nextmap')) else: try: sbserver.playerMessage( cn, info( nextmap_response.substitute(colordict, mapname=getSuccessor( sbserver.gameMode(), sbserver.mapName())))) except (KeyError, ValueError): sbserver.playerMessage(cn, error('Could not determine next map'))
def onDuelCommand(cn, args): if args == '': sbserver.playerMessage(cn, error('Usage: #duel <mapname> (mode) (cn) (cn)')) args = args.split(' ') players = sbserver.players() if len(players) != 2: sbserver.playerMessage(cn, error('There must be only two unspectated players to enter duel mode.')) else: if len(args) == 2: map = args[0] mode = int(args[1]) elif len(args) == 1: map = args[0] mode = sbserver.gameMode() else: sbserver.playerMessage(cn, error('Usage: #duel <mapname> (mode)')) return duelers[0] = players[0] duelers[1] = players[1] prev_mastermode = sbserver.masterMode() sbserver.setMasterMode(2) sbserver.message(green('Duel begins in...')) duelCountdown(5, map, mode)
def onMapVote(cn, mapname, mapmode): p = player(cn) if sbserver.mapName() == '': setMap(mapname, mapmode) elif isAtLeastMaster(cn) and sbserver.masterMode() > 0: setMap(mapname, mapmode) elif mapmode != sbserver.gameMode() and (lock_mode or not allow_modevote): p.message(error('You cannot vote for a new game mode')) else: try: vote = player(cn).gamevars['mapvote'] allow_vote = vote[0] != mapname and vote[1] != mapmode except KeyError: allow_vote = True if allow_vote: sbserver.message(info(request_temp.substitute(colordict, user=p.name(), modename=sbserver.modeName(mapmode), mapname=mapname))) p.gamevars['mapvote'] = (mapname, mapmode) else: sbserver.playerMessage(cn, error('You have already requested this map.')) countVotes()
def changeMap(caller,name,mode=None): """This command works just like the #map command except rather than directly going to a map it places a vote for the map of choice. Just like with #map, the caller can also call maps from /storage/maps. This calls the map from the server removing the need to /sendmap (as long as the maps are the same version).""" if mode is None: mode=sbserver.gameMode() triggerServerEvent("vote_map",[caller,modeNumber(mode),name])
def currentMode(): '''Integer value of current game mode''' return sbserver.gameMode()
def onNextMapCmd(cn, args): '''@description Display next map @usage @public''' if args != '': sbserver.playerMessage(cn, error('Usage: #nextmap')) else: try: sbserver.playerMessage(cn, info(nextmap_response.substitute(colordict, mapname=getSuccessor(sbserver.gameMode(), sbserver.mapName())))) except (KeyError, ValueError): sbserver.playerMessage(cn, error('Could not determine next map'))
def voteMap(caller,name,mode=None): """Places a vote for the map of choice. This can be used to call maps from /storage/maps.""" if mode is None: mode=sbserver.gameMode() triggerServerEvent("vote_map",[caller,modeNumber(mode),name])