summaryrefslogtreecommitdiff
path: root/badges.py
diff options
context:
space:
mode:
authorGap <l.uisv.gt@icloud.com>2015-01-01 22:31:53 +0100
committerGap <l.uisv.gt@icloud.com>2015-01-01 22:31:53 +0100
commit1fd75516a9e6610b4ded696f2ade56ac0c9b095a (patch)
tree617ba670a0f3d3bd3c9d4e0e5dec7a69ec8d2c3e /badges.py
parentfef075b7d2b08a783836e2047d6fd95ef532bab3 (diff)
Added player reward module
Diffstat (limited to 'badges.py')
-rw-r--r--badges.py138
1 files changed, 138 insertions, 0 deletions
diff --git a/badges.py b/badges.py
new file mode 100644
index 0000000..69a73a5
--- /dev/null
+++ b/badges.py
@@ -0,0 +1,138 @@
+from helpers import *
+from traceback import format_exc as print_traceback
+
+
+badges = open_json_file("badges", {})
+badges_available = {
+ "helpful": "A very helpful player",
+ "expert_minecraft": "An expert in Minecraft",
+ "expert_coder": "A good coder",
+ "oldtimer": "A long time player",
+ "good_builder": "A very good builder",
+ "friendly": "Many think that this player is friendly",
+ "very_active": "A very active player",
+ "trustworthy": "This player is very trustworthy",
+}
+badges_perm_add = "utils.badges.add"
+badges_perm_del = "utils.badges.delete"
+
+def save_badges():
+ save_json_file("badges", badges)
+
+def get_badges(player):
+ sender_id = uid(player)
+ if sender_id in badges.keys():
+ badges_list = badges[sender_id]
+ else:
+ badges_list = []
+ return badges_list
+
+def show_badges(sender, player):
+ player_badges = get_badges(player)
+ if player_badges:
+ for key in player_badges:
+ msg(sender, "&6> %s" % badges_available[key])
+ else:
+ msg(sender, "&eThis player has no badges yet")
+
+def new_badge_event(player, badge):
+ msg(player, "")
+ msg(player, "&6Wow! You just received a badge!")
+ msg(player, "&b-> &3%s" % badges_available[badge])
+ msg(player, "&7Type /badge to see all your badges!")
+ msg(player, "")
+ player.playSound(player.getLocation(), "random.orb", 1, 1)
+
+def del_badge_event(player, badge):
+ msg(player, "&cWe took your badge \"%s\"." % badges_available[badge])
+
+def list_badges(sender):
+ if badges_available:
+ for key in badges_available.keys():
+ msg(sender, "&e> %s = %s" % (key, badges_available[key]))
+ else:
+ msg(sender, "&cThere are currently no badges available")
+
+def add_badge(sender, target, badge):
+ if badge in badges_available:
+ player_badges = get_badges(target)
+ if badge in player_badges:
+ msg(sender, "&cThis player got this badge already!")
+ return
+ player_badges.append(badge)
+ if player_badges:
+ badges[uid(target)] = player_badges
+ msg(sender, "&aYou just gave %s a new badge!" % target.getName())
+ new_badge_event(target, badge)
+ save_badges()
+ else:
+ msg(sender, "&cThere is no badge called %s. Check /badge list!" % badge)
+
+def del_badge(sender, target, badge):
+ if badge in badges_available.keys():
+ player_badges = get_badges(target)
+ if badge in player_badges:
+ player_badges.remove(badge)
+ msg(sender, "&7... just removed badge from player_badges ...")
+ msg(sender, "&7... result: %s" % ", ".join(player_badges))
+ badges[uid(target)] = player_badges
+ msg(sender, "&7... set player_badges to uid badges target ...")
+ msg(sender, "&7... result: %s" % ", ".join(badges[uid(target)]))
+
+ msg(sender, "&aYou just took %s from %s!" % (badge, target.getName()))
+ save_badges()
+ del_badge_event(target)
+ return
+ msg(sender, "&c%s doesn't have this badge!" % target.getName())
+ else:
+ msg(sender, "&cThere is no badge called %s. Check /badge list!" % badge)
+
+@hook.command("badge", aliases=["badges", "rewards"])
+def on_badge_command(sender, args):
+ argnum = int(len(args))
+
+ # No arguments
+ if argnum is 0:
+ show_badges(sender, sender)
+
+ # Length of arguments is 1
+ if argnum == 1:
+
+ # If only argument is "list"
+ if args[0].lower() == "list":
+ list_badges(sender)
+ return
+
+ # If only argument is a player name
+ target = server.getPlayer(args[0])
+ if is_player(target):
+ show_badges(sender, target)
+ return
+ else:
+ msg(sender, "&cThere is no player called %s online." % args[0])
+ return
+
+ msg(sender, "&cUnknown syntax: /badge <playername> &o&c /badge list")
+ return
+
+ # Length of arguments is 3
+ if argnum == 3:
+ cmd = args[0].lower()
+ target = server.getPlayer(args[1])
+ new_badge = args[2].lower()
+
+ if cmd == "add":
+ if not sender.hasPermission(badges_perm_add):
+ noperm(sender)
+ return
+ add_badge(sender, target, new_badge)
+ return
+
+ if cmd == "take" or cmd == "del":
+ if not sender.hasPermission(badges_perm_del):
+ noperm(sender)
+ return
+ del_badge(sender, target, new_badge)
+ return
+
+ msg(sender, "&cUnknown syntax: /badge <add|take> <playername> <badge>") \ No newline at end of file