Mercurial > traipse_dev
diff plugins/xxnamesound.py @ 0:4385a7d0efd1 grumpy-goblin
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author | sirebral |
---|---|
date | Tue, 14 Jul 2009 16:41:58 -0500 |
parents | |
children | c54768cffbd4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/xxnamesound.py Tue Jul 14 16:41:58 2009 -0500 @@ -0,0 +1,137 @@ +import os +import orpg.pluginhandler +import orpg.dirpath +import re +import string +from orpg.orpgCore import open_rpg + +class Plugin(orpg.pluginhandler.PluginHandler): + # Initialization subroutine. + # + # !self : instance of self + # !openrpg : instance of the the base openrpg control + def __init__(self, plugindb, parent): + orpg.pluginhandler.PluginHandler.__init__(self, plugindb, parent) + + # The Following code should be edited to contain the proper information + self.name = 'Name Sound' + self.author = 'mDuo13' + self.help = "This plays a 'hey!' sound whenever your name is said in chat. It is\n" + self.help += "not HTML- or case-sensitive. You can also create nicknames to which the plugin\n" + self.help += "will also respond. To add a nickname, type '/xxnick add *name*', where *name*\n" + self.help += "is the nickname you want to add. Then, whenever *name* is said in chat, you'll\n" + self.help += "hear the sound also. You can remove your nicknames by typing\n" + self.help += "'/xxnick del*name*' where *name* is the nickname you wish to delete. Neither is\n" + self.help += "case sensitive. Additionally, you can see what nicknames you currently have\n" + self.help += "with '/xxnick list'." + + self.antispam = 0 + self.names = [] + self.soundfile = '' + self.soundplayer = '' + self.notify = False + + + def plugin_enabled(self): + self.plugin_addcommand('/xxnick', self.on_xxnick, 'add name|del name|list - This is the command for the namesound plugin') + self.plugin_addcommand('/wnotify', self.on_wnotify, 'This will toggle notification on incoming whispers') + self.plugin_addcommand('/sfile', self.on_sfile, 'This will set the sound file to use for notification') + + self.names = self.plugindb.GetList("xxnamesound", "names", []) + + self.soundplayer = self.sound_player = open_rpg.get_component('sound') + + tmp = self.plugindb.GetString('xxnamesound', 'wnotify', str(self.notify)) + if tmp == 'True': + self.on_wnotify(None) + + self.soundfile = self.plugindb.GetString('xxnamesound', 'soundfile', orpg.dirpath.dir_struct['plugins'] + 'heya.wav') + + + reg = [] + + if not self.chat.html_strip(self.session.name.lower()) in self.names: + self.names.append(self.chat.html_strip(self.session.name.lower())) + + for name in self.names: + reg.append("(?<![a-zA-Z0-9>/\#\-])" + name + "(?!\w+|[<])") + + reg = string.join(reg, "|") + self.nameReg = re.compile(reg, re.I) + + + def plugin_disabled(self): + self.plugin_removecmd('/xxnick') + self.plugin_removecmd('/wnotify') + self.plugin_removecmd('/sfile') + + + def on_wnotify(self, cmdargs): + self.notify = not self.notify + + self.plugindb.SetString('xxnamesound', 'wnotify', str(self.notify)) + + if self.notify: + self.chat.InfoPost("Whisper Notification is On!") + else: + self.chat.InfoPost("Whisper Notification is Off!") + + + def on_sfile(self, cmdargs): + self.soundfile = cmdargs + self.plugindb.SetString('xxnamesound', 'soundfile', cmdargs) + + def on_xxnick(self, cmdargs): + args = cmdargs.split(None,-1) + reg = [] + if len(args): + name = cmdargs[len(args[0])+1:].lower().strip() + + if len(args) == 0 or args[0] == 'list': + name_list = '' + i = 0 + for name in self.names: + name_list += name + if i < len(self.names)-1: + name_list += ', ' + i += 1 + self.chat.InfoPost('Currently chacking for ' + name_list) + elif args[0] == 'add': + if name not in self.names and name != '': + self.names.append(name) + self.plugindb.SetList('xxnamesound', 'names', self.names) + self.chat.InfoPost('The name ' + name + ' has been added to your nickname list. You will now hear a sound when someone says it in chat.') + else: + self.chat.InfoPost('The name ' + name + ' is already in your nickname list.') + elif args[0] == 'del': + if name in self.names: + self.names.remove(name) + self.plugindb.SetList('xxnamesound', 'names', self.names) + self.chat.InfoPost('The name ' + name + ' has been removed from your nickname list.') + else: + self.chat.InfoPost('The name ' + name + ' is not in your nickname list.') + + for name in self.names: + reg.append("(?<![a-zA-Z0-9>/\#\-])" + name + "['s]*(?!\w+|[<])") + + reg = string.join(reg, "|") + self.nameReg = re.compile(reg, re.I) + + def plugin_incoming_msg(self, text, type, name, player): + if self.antispam > 0: + return text, type, name + + if self.nameReg.search(self.chat.html_strip(text.lower())) != None: + self.soundplayer.play(self.soundfile) + self.antispam = 1 + elif self.notify and type == 2: + self.soundplayer.play(self.soundfile) + self.antispam = 1 + + + return text, type, name + + def refresh_counter(self): + #This is called once per second. That's all you need to know. + if self.antispam: + self.antispam -= 0.04