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 duelCountdown(count, map, mode): players = sbserver.players() if len(sbserver.players()) != 2 or players[0] not in duelers or players[1] not in duelers: cancelDuel() elif count == 0: currently_dueling[0] = True sbserver.message(green('Fight!')) sbserver.setMap(map, mode) sbserver.setPaused(False) else: sbserver.message(green('%i seconds' % count)) addTimer(1000, duelCountdown, (count-1, map, mode))
def duelCountdown(count, map, mode): players = sbserver.players() if len(sbserver.players() ) != 2 or players[0] not in duelers or players[1] not in duelers: cancelDuel() elif count == 0: currently_dueling[0] = True sbserver.message(green('Fight!')) sbserver.setMap(map, mode) sbserver.setPaused(False) else: sbserver.message(green('%i seconds' % count)) addTimer(1000, duelCountdown, (count - 1, map, mode))
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 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 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 setMap(map_name, mode_number): '''Set current map and mode''' if isFrozen(): raise StateError('Server is currently frozen') sbserver.setMap(map_name, mode_number)
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 onConnect(cn): if rotate_on_join[0]: rotate_on_join[0] = False sbserver.setPaused(False) if preset_rotation: modeMapLists = {} for mode in map_modes: modeMapLists[mode[0]] = mode[1].replace(' ', '').split(',') rotate_on_join = [False] mn = modes.index(start_mode) sbserver.setMap(modeMapLists[start_mode][0], mn) registerServerEventHandler('intermission_ended', presetRotate) registerCommandHandler('nextmap', onNextMapCmd) registerServerEventHandler('player_connect', onConnect) else: registerServerEventHandler('intermission_ended', onIntermEnd)
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 onConnect(cn): if rotate_on_join[0]: rotate_on_join[0] = False sbserver.setPaused(False) if preset_rotation: modeMapLists = {} for mode in map_modes: modeMapLists[mode[0]] = mode[1].replace(' ', '').split(',') rotate_on_join = [False] mn = modes.index(start_mode) sbserver.setMap(modeMapLists[start_mode][0], mn) registerServerEventHandler('intermission_ended', presetRotate) registerCommandHandler('nextmap', onNextMapCmd) registerServerEventHandler('player_connect', onConnect) else: registerServerEventHandler('intermission_ended', onIntermEnd)