import random from Credentials import botowner, botname, botpassword from SubspaceBot import * if __name__ == '__main__': bot = SubspaceBot(botowner, 'This bot gives you an arena list') bot.connectToServer('66.235.184.102', 7900, botname, botpassword, '#python') print "Bot connected to server" arena_command_id = bot.registerCommand('!arena', 'List the arenas in the zone') requester_names = [] while bot.isConnected(): event = bot.waitForEvent() if event.type == EVENT_COMMAND: if event.command.id == arena_command_id: requester_names.append(event.player.name) bot.sendPublicMessage("?arena") elif event.type == EVENT_ARENA_LIST: if len(requester_names) > 0: player_name = requester_names.pop(0) for arena_name, num_players in event.arena_list: bot.sendPrivateMessage( player_name, 'Arena: %s - %d' % (arena_name, num_players)) print "Bot disconnected"
#!/usr/bin/env python import random from Credentials import botowner, botname, botpassword from SubspaceBot import * if __name__ == '__main__': bot = SubspaceBot(botowner, 'This bot sets timers') bot.connectToServer('66.235.184.102', 7900, botname, botpassword, '#python') print "Bot connected to server" timer_command_id = bot.registerCommand('!timer', 'Set a timer') while bot.isConnected(): event = bot.waitForEvent() if event.type == EVENT_COMMAND: if event.command.id == timer_command_id: if len(event.arguments) == 1: bot.setTimer(int(event.arguments[0]), event.player.name) bot.sendPrivateMessage(event.player.name, "Ok") else: bot.sendPrivateMessage(event.player.name, "Usage: !timer <seconds>") elif event.type == EVENT_TIMER: bot.sendPrivateMessage(event.user_data, "Timer expired") print "Bot disconnected"
start = Rectangle(478, 510, 483, 514) finish = Rectangle(541, 510, 545, 514) roll_start_id = bot.registerCommand('!race', 'Start the race') while bot.isConnected(): event = bot.waitForEvent() if event.type == EVENT_ENTER: # initialize player info event.player.player_info = PlayerInfo() elif event.type == EVENT_POSITION_UPDATE: if event.player.player_info.start_ticks is None and start.containsPlayer(event.player): # the players start ticks is empty and hes entered the start area # start the race off and set his tick stamp event.player.player_info.start_ticks = GetTickCountHs() bot.sendArenaMessage('%s has started the race!' % event.player.name) if event.player.player_info.start_ticks is not None and finish.containsPlayer(event.player): # the player has a start tick stamp, and hes entered the finish area race_time = TickDiff(GetTickCountHs(), event.player.player_info.start_ticks) / 100.0 bot.sendArenaMessage('%s finished the race in %f seconds!' % (event.player.name, race_time)) # unset the tick stamp, so to start again he has to enter the start area event.player.player_info.start_ticks = None elif event.type == EVENT_COMMAND: if event.command.id == roll_start_id: bot.sendPrivateMessage(event.player, '*warpto %d %d' % beginning_warpto) bot.sendPrivateMessage(event.player, 'The race will start when you cross the start line') # unset his ticks, just in case he used the command from inside a race event.player.player_info.start_ticks = None print "Bot disconnected"
#!/usr/bin/env python import random from Credentials import botowner, botname, botpassword from SubspaceBot import * if __name__ == '__main__': bot = SubspaceBot(botowner, 'This bot gives you an arena list') bot.connectToServer('66.235.184.102', 7900, botname, botpassword, '#python') print "Bot connected to server" arena_command_id = bot.registerCommand('!arena', 'List the arenas in the zone') requester_names = [] while bot.isConnected(): event = bot.waitForEvent() if event.type == EVENT_COMMAND: if event.command.id == arena_command_id: requester_names.append(event.player.name) bot.sendPublicMessage("?arena") elif event.type == EVENT_ARENA_LIST: if len(requester_names) > 0: player_name = requester_names.pop(0) for arena_name, num_players in event.arena_list: bot.sendPrivateMessage(player_name, 'Arena: %s - %d' % (arena_name, num_players)) print "Bot disconnected"
#!/usr/bin/env python import random from Credentials import botowner, botname, botpassword from SubspaceBot import * if __name__ == '__main__': bot = SubspaceBot(botowner, 'This bot sets timers') bot.connectToServer('66.235.184.102', 7900, botname, botpassword, '#python') print "Bot connected to server" timer_command_id = bot.registerCommand('!timer', 'Set a timer') while bot.isConnected(): event = bot.waitForEvent() if event.type == EVENT_COMMAND: if event.command.id == timer_command_id: if len(event.arguments) == 1: bot.setTimer(int(event.arguments[0]), event.player.name) bot.sendPrivateMessage(event.player.name, "Ok") else: bot.sendPrivateMessage(event.player.name, "Usage: !timer <seconds>") elif event.type == EVENT_TIMER: bot.sendPrivateMessage(event.user_data, "Timer expired") print "Bot disconnected"
start = Rectangle(478, 510, 483, 514) finish = Rectangle(541, 510, 545, 514) roll_start_id = bot.registerCommand("!race", "Start the race") while bot.isConnected(): event = bot.waitForEvent() if event.type == EVENT_ENTER: # initialize player info event.player.player_info = PlayerInfo() elif event.type == EVENT_POSITION_UPDATE: if event.player.player_info.start_ticks is None and start.containsPlayer(event.player): # the players start ticks is empty and hes entered the start area # start the race off and set his tick stamp event.player.player_info.start_ticks = GetTickCountHs() bot.sendArenaMessage("%s has started the race!" % event.player.name) if event.player.player_info.start_ticks is not None and finish.containsPlayer(event.player): # the player has a start tick stamp, and hes entered the finish area race_time = TickDiff(GetTickCountHs(), event.player.player_info.start_ticks) / 100.0 bot.sendArenaMessage("%s finished the race in %f seconds!" % (event.player.name, race_time)) # unset the tick stamp, so to start again he has to enter the start area event.player.player_info.start_ticks = None elif event.type == EVENT_COMMAND: if event.command.id == roll_start_id: bot.sendPrivateMessage(event.player, "*warpto %d %d" % beginning_warpto) bot.sendPrivateMessage(event.player, "The race will start when you cross the start line") # unset his ticks, just in case he used the command from inside a race event.player.player_info.start_ticks = None print "Bot disconnected"