Esempio n. 1
0
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'))
Esempio n. 2
0
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'))
Esempio n. 3
0
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))
Esempio n. 4
0
File: duel.py Progetto: pguenth/xsbs
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))
Esempio n. 5
0
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)
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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)

Esempio n. 11
0
        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)