From aa86881f5eabe0a7471aadf73ee8a7b789e679dc Mon Sep 17 00:00:00 2001 From: Dico200 Date: Tue, 3 Nov 2015 19:05:15 +0100 Subject: Fix survival use of /signalstrength, other interesting changes --- synchronizeranks.py | 79 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 13 deletions(-) (limited to 'synchronizeranks.py') diff --git a/synchronizeranks.py b/synchronizeranks.py index 8d0db60..4509185 100644 --- a/synchronizeranks.py +++ b/synchronizeranks.py @@ -3,6 +3,14 @@ from secrets import * import mysqlhack from com.ziclix.python.sql import zxJDBC +""" +WORK IN PROGRESS +""" + +#-----------------------Config-------------------------- + +config_file = "website-roles" + ranks = { "member" : 3, "builder" : 7, @@ -13,31 +21,41 @@ ranks = { "admin" : 5 } +ranks = open_json_file(config_file, ranks) + +def save_ranks(): + save_json_file(config_file, ranks) + +#-----------------------Event--------------------------- @hook.event("player.PlayerJoinEvent", "normal") def on_player_join(event): user = event.getPlayer() uuid = uid(player).replace("-", "") - role = get_role(uuid) - if role in [1, 2, 6]: #Disabled/Banned/Superadmin - return - if role != None: - for rank in ranks: - if user.hasPermission("group." + rank): - if role != ranks[rank]: - set_role(uuid, ranks[rank]) - elif user.hasPlayedBefore(): - msg(user, "&cYou haven't registed yet! Make sure to do so on redstoner.com") + + sql_instruction + + def callback_thing(role, args): + + if role in [1, 2, 6]: #Disabled/Banned/Superadmin + return + if role != None: + for rank in ranks: + if user.hasPermission("group." + rank): + if role != ranks[rank]: + set_role(uuid, ranks[rank]) + elif user.hasPlayedBefore(): + msg(user, "&cYou haven't registed yet! Make sure to do so on redstoner.com") def get_role(uuid): - results = execute_query("SELECT `role_id` FROM users WHERE `uuid` = ? LIMIT 1", uuid) + results = execute_query("SELECT `role_id` FROM users WHERE `uuid` = ? LIMIT 1;", uuid) return results[0][0] # Returns a table with 1 row (LIMIT 1) and 1 column (SELECT `role_id`), so we're looking for the first row of the first column. def set_role(uuid, role_id): - execute_update(("UPDATE users SET `role_id` = %d WHERE `uuid` = ?" % role_id), uuid) + execute_update("UPDATE users SET `role_id` = ? WHERE `uuid` = ?;", (role_id, uuid,)) # %d is like %s for integers (unlogically, you'd expect something like %i), though %s also works here. @@ -55,5 +73,40 @@ def execute_update(update, uuid): conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver") curs = conn.cursor() curs.execute(update, (uuid,)) + conn.commit() curs.close() - conn.close() \ No newline at end of file + conn.close() + +def get_role(uuid): + sql_instruction() + +#--------------------------------Queries / Updates---------------------------- + +def sql_instruction(instruction, args, fetch = True, callback_func = ignored_func, callback_args = tuple()): + thread = threading.Thread(target = curs_instruction, args = (instruction_executor, instruction, fetch, callback_func, callback_args)) + thread.start() + + +def curs_instruction(func, instruction, fetch, callback_func, callback_args): + conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver") + curs = conn.getCursor() + + if fetch: + returned = func(curs, instruction, fetch) + curs.close() + conn.close() + callback_func(returned, callback_args) + + else: + func(curs, instruction, fetch) + conn.commit() + curs.close() + conn.close() + + +def instruction_executor(curs, instruction, fetch): + curs.execute(instruction) + return curs.fetchall() if fetch else None + +def ignored_func(*args): + pass \ No newline at end of file -- cgit v1.2.3