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 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 onReqUnspectate(cn, tcn): if tcn != cn: if isAtLeastMaster(cn): sbserver.unspectate(tcn) else: insufficientPermissions(cn) else: if sbserver.masterMode() > 1 and not isAtLeastMaster(cn): sbserver.playerMessage(cn, error('Master mode is locked. You cannot unspectate.')) else: sbserver.unspectate(tcn)
def onReqUnspectate(cn, tcn): if tcn != cn: if isAtLeastMaster(cn): sbserver.unspectate(tcn) else: insufficientPermissions(cn) else: if sbserver.masterMode() > 1 and not isAtLeastMaster(cn): sbserver.playerMessage( cn, error('Master mode is locked. You cannot unspectate.')) else: sbserver.unspectate(tcn)
def masterMode(caller,name=None): """This changes the mastermode in the same way that /mastermode does without the need to have claimed master or admin.""" if name==None: return sbserver.masterMode() mastermode=mastermodeNumber(name) if config["serverpublic"]=="1": if mastermode>=2: UserSessionManager.checkPermissions(caller,"trusted") if config["serverpublic"]=="2": if mastermode>=3: UserSessionManager.checkPermissions(caller,"trusted") return sbserver.setMasterMode(mastermode)
def masterMode(caller,name=None): """Changes the mastermode of the server.""" if name==None: return sbserver.masterMode() mastermode=mastermodeNumber(name) if config["serverpublic"]=="1": if mastermode>=2: UserSessionManager.checkPermissions(caller,"trusted") if config["serverpublic"]=="2": if mastermode>=3: UserSessionManager.checkPermissions(caller,"trusted") return sbserver.setMasterMode(mastermode)
def spectator(caller,boolean=None,cn=None): """If there are no arguments other than #spectator then the caller will be set to spectator. The first argument is a boolen that says what state of spectating the player will be (0 for not not a spectator and 1 for spectator), anything other than 0 will result in an them being a spectator. The cn is the client number of the player that the caller want spectated. If left off it will apply to the caller.""" #empty args if boolean is None: boolean=1 boolean=int(boolean) if cn is None: if(caller[0]=="ingame"): cn=caller[1] else: raise ServerError("You are not ingame. Please specify cn.") cn=int(cn) #check if it's a self call if caller[1]==cn: if boolean==0 and sbserver.masterMode()>=2: UserSessionManager.checkPermissions(caller,"master") spectatorHelpler(boolean,cn) else: UserSessionManager.checkPermissions(caller,"master") spectatorHelpler(boolean,cn)
def spectator(caller,boolean=None,cn=None): """Sets spectator for the given cn. If the cn is left off it applies to the caller.""" #empty args if boolean is None: boolean=1 boolean=int(boolean) if cn is None: if(caller[0]=="ingame"): cn=caller[1] else: raise ServerError("You are not ingame. Please specify cn.") cn=int(cn) #check if it's a self call if caller[1]==cn: if boolean==0 and sbserver.masterMode()>=2: UserSessionManager.checkPermissions(caller,"master") spectatorHelpler(boolean,cn) else: UserSessionManager.checkPermissions(caller,"master") spectatorHelpler(boolean,cn)
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 onNoClients(): if sbserver.masterMode() > 1: sbserver.setMasterMode(1)