diff options
author | Dico200 <dico.karssiens@gmail.com> | 2016-05-30 04:52:26 +0200 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2016-05-30 04:52:26 +0200 |
commit | 9d1956dc2a23528e9015764d89ebd0daf5204cd1 (patch) | |
tree | 207eb8e90fab55fa722758249e3dd9d91dc52c39 | |
parent | 765fa76cb78e58d06edb324cd3507f09418b6b1e (diff) | |
parent | e08666995cc14436a2566cc03c250ca2e8ff0b3e (diff) |
Merge branch 'dev'
-rw-r--r-- | friends.py | 81 |
1 files changed, 49 insertions, 32 deletions
@@ -29,6 +29,13 @@ def friendmessage(player, message): # sends a message with a prefix msg(player, "&7[&aFriends&7] " + message) +def get_player(name): + result = server.getOfflinePlayer(name) + if result is not None and (result.hasPlayedBefore() or result.isOnline()): + return result + return None + + def ls(sender): try: sender_friends = friends.get(uid(sender), False) @@ -59,21 +66,25 @@ def add(sender, names): added = [] notfound = [] friendalready = [] + added_self = False if not sender_id in friends: friends[sender_id] = [] for name in names: - player = server.getPlayer(name) + player = get_player(name) if player: player_id = uid(player) - not_yourself = player != sender + not_yourself = sender != player if not player_id in friends[sender_id]: if not_yourself: friends[sender_id].append(player_id) added.append(player.getName()) - friendmessage(player.getPlayer(), "&a&o%s &aadded you to their friends list" % stripcolors(sender.getDisplayName())) + if player.isOnline(): + friendmessage(player.getPlayer(), "&a&o%s &aadded you to their friends list" % stripcolors(sender.getDisplayName())) + else: + added_self = True else: friendalready.append(player.getName()) @@ -84,10 +95,10 @@ def add(sender, names): if added: friendmessage(sender, "&a&o%s&a added." % ", ".join(added)) if notfound: - friendmessage(sender, "&c&o%s&c not found. (must be online)" % ", ".join(notfound)) + friendmessage(sender, "&c&o%s&c not found." % ", ".join(notfound)) if friendalready: friendmessage(sender, "&c&o%s&c is/are already your friend." % ", ".join(friendalready)) - if not not_yourself: + if added_self: friendmessage(sender, "&cYou can't add yourself to your friends list.") @@ -98,18 +109,21 @@ def rem(sender, names): notafriend = [] for name in names: - player = server.getPlayer(name) + player = get_player(name) if player: player_id = uid(player) if player_id in friends.get(sender_id, []): friends[sender_id].remove(player_id) removed.append(player.getName()) - friendmessage(player.getPlayer(), "&c&o%s &cremoved you from their friends list" % stripcolors(sender.getDisplayName())) + if player.isOnline(): + friendmessage(player.getPlayer(), "&c&o%s &cremoved you from their friends list" % stripcolors(sender.getDisplayName())) else: notafriend.append(player.getName()) else: notfound.append(name) + if not friends.get(sender_id, False): + del friends[sender_id] save_friends() if removed: friendmessage(sender, "&a&o%s&a removed." % ", ".join(removed)) @@ -130,35 +144,38 @@ def fhelp(sender): @hook.command("friends") def on_friend_command(sender, command, label, args): - if not is_player(sender): - friendmessage(sender, "&c&lYou can't have friends!") - return True + try: + if not is_player(sender): + friendmessage(sender, "&c&lYou can't have friends!") + return True - cmd = args[0] if args else None - fargs = args[1:] + cmd = args[0] if args else None + fargs = args[1:] - # /friends list - if cmd in ["list", "lst", "*"]: - thread.start_new_thread(ls, (sender,)) + # /friends list + if cmd in ["list", "lst", "*"]: + thread.start_new_thread(ls, (sender,)) - # /friends clear - elif cmd in ["clear", "/"]: - clear(sender) + # /friends clear + elif cmd in ["clear", "/"]: + clear(sender) - # /friends add <names> - elif cmd in ["add", "+"]: - if fargs: - add(sender, fargs) - else: - fhelp(sender) + # /friends add <names> + elif cmd in ["add", "+"]: + if fargs: + add(sender, fargs) + else: + fhelp(sender) + + # /friends remove <names> + elif cmd in ["remove", "rem", "delete", "del", "-"]: + if fargs: + rem(sender, fargs) + else: + fhelp(sender) - # /friends remove <names> - elif cmd in ["remove", "rem", "delete", "del", "-"]: - if fargs: - rem(sender, fargs) else: fhelp(sender) - - else: - fhelp(sender) - return True
\ No newline at end of file + return True + except: + error(trace()) |