Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from commands.say import SayCommand
- from listeners import OnClientActive, OnClientDisconnect
- from messages import SayText2
- from players.entity import Player
- READY_PLAYERS_CAP = 10
- CHAT_PREFIX = "[\x02PUG\x01] "
- ST2_MATCH_START = SayText2(
- "{}{}".format(CHAT_PREFIX, "The match will now begin"))
- ST2_STILL_WAITING = SayText2(
- "{}{}".format(CHAT_PREFIX,
- "Still waiting for 10 players to be ready to start the match"))
- ST2_ALREADY_READY = SayText2(
- "{}{}".format(CHAT_PREFIX, "You're already \x06READY"))
- ST2_MARKED_READY = SayText2(
- "{}{}".format(CHAT_PREFIX, "You have been marked as \x06READY"))
- ST2_ALREADY_NOTREADY = SayText2(
- "{}{}".format(CHAT_PREFIX, "You're already \x02NOT READY"))
- ST2_MARKED_NOTREADY = SayText2(
- "{}{}".format(CHAT_PREFIX, "You have been marked as \x02NOT READY"))
- class MyPlayer:
- def __init__(self, player):
- self.player = player
- self.ready = False
- self.permissions = 0
- def broadcast(message):
- if not isinstance(message, SayText2):
- message = SayText2("{}{}".format(CHAT_PREFIX, message))
- player_indexes = [my_player.player.index for my_player in players.values()]
- message.send(*player_indexes)
- def tell(my_player, message):
- if not isinstance(message, SayText2):
- message = SayText2("{}{}".format(CHAT_PREFIX, message))
- message.send(my_player.player.index)
- def try_start_match(issued_by=None):
- ready_players = list(
- filter(lambda my_player: my_player.ready, players.values()))
- if len(ready_players) >= READY_PLAYERS_CAP:
- broadcast(ST2_MATCH_START)
- else:
- if issued_by is not None:
- tell(issued_by, ST2_STILL_WAITING)
- @OnClientActive
- def on_client_active(index):
- player = Player(index)
- players[index] = MyPlayer(player)
- @OnClientDisconnect
- def on_client_disconnect(index):
- if index in players:
- del players[index]
- @SayCommand('.players')
- def say_players(command, index, team):
- ready_player_names = []
- for my_player in players.values():
- if my_player.ready:
- ready_player_names.append(my_player.player.name)
- my_player = players[index]
- tell(my_player, "Ready players: {}".format(','.join(ready_player_names)))
- @SayCommand('.ready')
- def say_ready(command, index, team):
- my_player = players[index]
- if my_player.ready:
- tell(my_player, ST2_ALREADY_READY)
- else:
- tell(my_player, ST2_MARKED_READY)
- my_player.ready = True
- try_start_match(my_player)
- @SayCommand('.notready')
- def say_notready(command, index, team):
- my_player = players[index]
- if not my_player.ready:
- tell(my_player, ST2_ALREADY_NOTREADY)
- else:
- tell(my_player, ST2_MARKED_NOTREADY)
- my_player.ready = False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement