Introducing Unique Notifier Plugin
Features:
Custom Notifications : Set up to ten player names whom you wish to notify when a unique monster appears nearby. Simply input their names into the designated text boxes in the gui.
Party and Guild Notifications: Choose whether you want to notify your entire party or guild when a unique monster is spotted. Toggle these options with ease using the checkboxes provided.
from phBot import *
import phBotChat
from time import sleep
import QtBind
from threading import Timer
import os
import json
pName = "UniqueNotifier"
gui = QtBind.init(__name__, "Unique Notifier")
players_to_notify_label = QtBind.createLabel(gui, "Players to notify:", 10, 10)
player_01_label = QtBind.createLabel(gui, "Player #01", 10, 30)
player_01_name_txtbox = QtBind.createLineEdit(gui, "", 80, 30, 120, 20)
player_02_label = QtBind.createLabel(gui, "Player #02", 10, 50)
player_02_name_txtbox = QtBind.createLineEdit(gui, "", 80, 50, 120, 20)
player_03_label = QtBind.createLabel(gui, "Player #03", 10, 70)
player_03_name_txtbox = QtBind.createLineEdit(gui, "", 80, 70, 120, 20)
player_04_label = QtBind.createLabel(gui, "Player #04", 10, 90)
player_04_name_txtbox = QtBind.createLineEdit(gui, "", 80, 90, 120, 20)
player_05_label = QtBind.createLabel(gui, "Player #05", 10, 110)
player_05_name_txtbox = QtBind.createLineEdit(gui, "", 80, 110, 120, 20)
player_06_label = QtBind.createLabel(gui, "Player #06", 10, 130)
player_06_name_txtbox = QtBind.createLineEdit(gui, "", 80, 130, 120, 20)
player_07_label = QtBind.createLabel(gui, "Player #07", 10, 150)
player_07_name_txtbox = QtBind.createLineEdit(gui, "", 80, 150, 120, 20)
player_08_label = QtBind.createLabel(gui, "Player #08", 10, 170)
player_08_name_txtbox = QtBind.createLineEdit(gui, "", 80, 170, 120, 20)
player_09_label = QtBind.createLabel(gui, "Player #09", 10, 190)
player_09_name_txtbox = QtBind.createLineEdit(gui, "", 80, 190, 120, 20)
player_10_label = QtBind.createLabel(gui, "Player #10", 10, 210)
player_10_name_txtbox = QtBind.createLineEdit(gui, "", 80, 210, 120, 20)
notify_party_checkbox = QtBind.createCheckBox(gui, "", "Notify party", 10, 235)
notify_guild_checkbox = QtBind.createCheckBox(gui, "", "Notify guild", 130, 235)
save_button = QtBind.createButton(gui, "save_settings", "Save All", 80, 255)
#for debugging purposes
#load_button = QtBind.createButton(gui, "load_settings", "Load Settings", 200, 255)
credits = QtBind.createLabel(gui, "By:Slaintrax", 660, 255)
def joined_game():
load_settings()
def handle_event(t, data):
if t == 0:
global unique_name
unique_name = data
if QtBind.isChecked(gui, notify_party_checkbox):
log("he_party")
Timer(0.5,notify_party).start()
if QtBind.isChecked(gui, notify_guild_checkbox):
log("he_guild")
Timer(0.5,notify_guild).start()
if QtBind.text(gui, player_01_name_txtbox):
log("he_01")
Timer(0.5,notify_player01).start()
if QtBind.text(gui, player_02_name_txtbox):
log("he_02")
Timer(0.5,notify_player02).start()
if QtBind.text(gui, player_03_name_txtbox):
log("he_03")
Timer(0.5,notify_player03).start()
if QtBind.text(gui, player_04_name_txtbox):
log("he_04")
Timer(0.5,notify_player04).start()
if QtBind.text(gui, player_05_name_txtbox):
log("he_05")
Timer(0.5,notify_player05).start()
if QtBind.text(gui, player_06_name_txtbox):
log("he_06")
Timer(0.5,notify_player06).start()
if QtBind.text(gui, player_07_name_txtbox):
log("he_07")
Timer(0.5,notify_player07).start()
if QtBind.text(gui, player_08_name_txtbox):
log("he_08")
Timer(0.5,notify_player08).start()
if QtBind.text(gui, player_09_name_txtbox):
log("he_09")
Timer(0.5,notify_player09).start()
if QtBind.text(gui, player_10_name_txtbox):
log("he_10")
Timer(0.5,notify_player10).start()
def notify_party():
log("not_party")
phBotChat.Party("Unique [ "+unique_name+" ] is next to me")
def notify_guild():
log("not_guild")
phBotChat.Guild("Unique [ "+unique_name+" ] is next to me")
def notify_player01():
log("not_01")
phBotChat.Private(QtBind.text(gui, player_01_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player02():
log("not_02")
phBotChat.Private(QtBind.text(gui, player_02_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player03():
log("not_03")
phBotChat.Private(QtBind.text(gui, player_03_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player04():
log("not_04")
phBotChat.Private(QtBind.text(gui, player_04_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player05():
log("not_05")
phBotChat.Private(QtBind.text(gui, player_05_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player06():
log("not_06")
phBotChat.Private(QtBind.text(gui, player_06_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player07():
log("not_07")
phBotChat.Private(QtBind.text(gui, player_07_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player08():
log("not_08")
phBotChat.Private(QtBind.text(gui, player_08_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player09():
log("not_09")
phBotChat.Private(QtBind.text(gui, player_09_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def notify_player10():
log("not_10")
phBotChat.Private(QtBind.text(gui, player_10_name_txtbox), "Unique [ "+unique_name+" ] is next to me")
def save_settings():
if isJoined():
if os.path.exists(getPath()):
data = {}
data["player01name"] = QtBind.text(gui, player_01_name_txtbox)
data["player02name"] = QtBind.text(gui, player_02_name_txtbox)
data["player03name"] = QtBind.text(gui, player_03_name_txtbox)
data["player04name"] = QtBind.text(gui, player_04_name_txtbox)
data["player05name"] = QtBind.text(gui, player_05_name_txtbox)
data["player06name"] = QtBind.text(gui, player_06_name_txtbox)
data["player07name"] = QtBind.text(gui, player_07_name_txtbox)
data["player08name"] = QtBind.text(gui, player_08_name_txtbox)
data["player09name"] = QtBind.text(gui, player_09_name_txtbox)
data["player10name"] = QtBind.text(gui, player_10_name_txtbox)
data["notifyparty"] = QtBind.isChecked(gui, notify_party_checkbox)
data["notifyguild"] = QtBind.isChecked(gui, notify_guild_checkbox)
with open(getConfig(),"w") as f:
f.write(json.dumps(data, indent=4, sort_keys=True))
log("Plugin: "+pName+": All settings saved")
else:
os.makedirs(getPath())
data = {}
data["player01name"] = QtBind.text(gui, player_01_name_txtbox)
data["player02name"] = QtBind.text(gui, player_02_name_txtbox)
data["player03name"] = QtBind.text(gui, player_03_name_txtbox)
data["player04name"] = QtBind.text(gui, player_04_name_txtbox)
data["player05name"] = QtBind.text(gui, player_05_name_txtbox)
data["player06name"] = QtBind.text(gui, player_06_name_txtbox)
data["player07name"] = QtBind.text(gui, player_07_name_txtbox)
data["player08name"] = QtBind.text(gui, player_08_name_txtbox)
data["player09name"] = QtBind.text(gui, player_09_name_txtbox)
data["player10name"] = QtBind.text(gui, player_10_name_txtbox)
data["notifyparty"] = QtBind.isChecked(gui, notify_party_checkbox)
data["notifyguild"] = QtBind.isChecked(gui, notify_guild_checkbox)
with open(getConfig(),"w") as f:
f.write(json.dumps(data, indent=4, sort_keys=True))
log("Plugin: "+pName+": All settings saved")
def load_settings():
load_default_settings()
if isJoined() and os.path.exists(getConfig()):
data = {}
with open(getConfig(),"r") as f:
data = json.load(f)
if "player01name" in data:
QtBind.setText(gui, player_01_name_txtbox,data["player01name"])
if "player02name" in data:
QtBind.setText(gui, player_02_name_txtbox,data["player02name"])
if "player03name" in data:
QtBind.setText(gui, player_03_name_txtbox,data["player03name"])
if "player04name" in data:
QtBind.setText(gui, player_04_name_txtbox,data["player04name"])
if "player05name" in data:
QtBind.setText(gui, player_05_name_txtbox,data["player05name"])
if "player06name" in data:
QtBind.setText(gui, player_06_name_txtbox,data["player06name"])
if "player07name" in data:
QtBind.setText(gui, player_07_name_txtbox,data["player07name"])
if "player08name" in data:
QtBind.setText(gui, player_08_name_txtbox,data["player08name"])
if "player09name" in data:
QtBind.setText(gui, player_09_name_txtbox,data["player09name"])
if "player10name" in data:
QtBind.setText(gui, player_10_name_txtbox,data["player10name"])
if "notifyparty" in data and data["notifyparty"]:
QtBind.setChecked(gui,notify_party_checkbox,True)
if "notifyguild" in data and data["notifyguild"]:
QtBind.setChecked(gui,notify_guild_checkbox,True)
def load_default_settings():
QtBind.setText(gui, player_01_name_txtbox,"")
QtBind.setText(gui, player_02_name_txtbox,"")
QtBind.setText(gui, player_03_name_txtbox,"")
QtBind.setText(gui, player_04_name_txtbox,"")
QtBind.setText(gui, player_05_name_txtbox,"")
QtBind.setText(gui, player_06_name_txtbox,"")
QtBind.setText(gui, player_07_name_txtbox,"")
QtBind.setText(gui, player_08_name_txtbox,"")
QtBind.setText(gui, player_09_name_txtbox,"")
QtBind.setText(gui, player_10_name_txtbox,"")
QtBind.setChecked(gui,notify_party_checkbox,False)
QtBind.setChecked(gui,notify_guild_checkbox,False)
def isJoined():
global character_data
character_data = get_character_data()
if not (character_data and "name" in character_data and character_data["name"]):
character_data = None
return character_data
# Return folder path
def getPath():
return get_config_dir()+pName+"\\"
# Return character configs path (JSON)
def getConfig():
return getPath()+character_data['server'] + "_" + character_data['name'] + ".json"
# Plugin loaded
log('Plugin: '+pName+' successfully loaded')
if not os.path.exists(getPath()):
# Creating configs folder
os.makedirs(getPath())
log('Plugin: '+pName+' folder has been created')