Mercurial > traipse_dev
diff plugins/xxgvm.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/xxgvm.py Tue Jul 14 16:41:58 2009 -0500 @@ -0,0 +1,195 @@ +import os +import orpg.pluginhandler +import string + +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 = 'Game Variable Manager' + self.author = 'mDuo13' + self.help = 'This plugin is used to manage variables in your idle status. That way,\n' + self.help += 'you can keep as many numbers as you want in your idle status, and you can update \n' + self.help += 'them without having to go to the Settings menu.\n' + self.help += '\n' + self.help += 'First you must create some variables. You can do that by typing \n' + self.help += '"/gvm set *var*=*value*" where *var* is the variables name (no $ symbol), and\n' + self.help += '*value* is the variables starting value. The variables name can be any word,\n' + self.help += 'but dont put spaces between the variables name and value.\n' + self.help += '\n' + self.help += 'You can look up the value of a variable by typing "/gvm get *var*"\n' + self.help += '\n' + self.help += 'To set your status, type "/gvm status *message*" where *message* is the message \n' + self.help += 'you want your status to have. To include variables, simply the variables name, \n' + self.help += 'STARTING WITH A $ SYMBOL. For example, you could create a status with \n' + self.help += '"/gvm status HP:$hp MP:$mp AC:$ac" which, if $hp was 20, $mp was 10, and $ac\n' + self.help += 'was 5, would make your status "HP:20 MP:10 AC:5".\n' + self.help += '\n' + self.help += 'If you later change the values of any of the variables in your status, they will \n' + self.help += 'be automatically updated; to update a value, just type\n' + self.help += '"/gvm set *var*=*variable*" the same way you used it to create the variable.\n' + self.help += '\n' + self.help += 'You can list the current variables with the "/gvm list" command. You can also\n' + self.help += 'now roll dice with curly brackets, and have filters apply to them, like this:\n' + self.help += '"{4d6.takeHighest(3)+$bonus}". Any other filters you have (i.e. the Alias \n' + self.help += 'Library) will also apply to curly bracket rolls automatically.\n' + self.help += '\n' + self.help += 'Note that the GVM plugin conflicts with the NowPlaying and GSC plugins, so if\n' + self.help += 'you have both plugin enabled at the same time, they may not work quite right.\n' + self.help += '\n' + self.help += 'You can now save a group of variables with "/gvm save *name*". You can also load\n' + self.help += 'a group of previously saved variables with "/gvm open *name*"\n' + + #You can set variables below here. Always set them to a blank value in this section. Use plugin_enabled + #to set their proper values. + self.vars = {} + self.status_scrip="" + self.status_on=0 + + + def plugin_enabled(self): + #You can add new /commands like + # self.plugin_addcommand(cmd, function, helptext) + self.plugin_addcommand('/gvm', self.on_gvm, '[set name=value | calc name=value | get name | status | list | save set_name | open set_name] - This plugin is used to manage variables that you can use in your status bar or in dice rolls') + self.plugin_addcommand('/gvmq', self.on_gvmq, '[set name=value | calc name=value | get name | status | list | save set_name | open set_name] - This plugin is used to manage variables that you can use in your status bar or in dice rolls', False) + self.plugin_addcommand('/=', self.on_comment, '', False) + + def plugin_disabled(self): + #Here you need to remove any commands you added, and anything else you want to happen when you disable the plugin + #such as closing windows created by the plugin + self.plugin_removecmd('/gvm') + self.plugin_removecmd('/gvmq') + self.plugin_removecmd('/=') + + def on_comment(self, cmdargs): + pass + + def on_gvm(self, cmdargs): + for key in self.vars.keys(): + cmdargs = cmdargs.replace("$" + key, self.vars[key]) + + args = cmdargs.split(None,-1) + if len(args) == 0: + args = [' '] + if args[0]=="set": + cmd = cmdargs[len(args[0])+1:].strip().split("=") + self.vars[cmd[0]] = cmd[1] + self.chat.InfoPost("GVM: Set variable $" + cmd[0] + " to be: " + cmd[1]) + if self.status_on: + self.gvm_status(self.status_scrip) + + elif args[0]=="calc": + cmd = cmdargs[len(args[0])+1:].strip().split("=") + val = str(eval(cmd[1])) + self.vars[cmd[0]] = val + self.chat.InfoPost("GVM: Set variable $" + cmd[0] + " to be: " + val) + if self.status_on: + self.gvm_status(self.status_scrip) + + elif args[0]=="get": + if args[1] in self.vars.keys(): + self.chat.InfoPost("GVM: Variable $" + args[1] + " is: " + self.vars[args[1]]) + else: + self.chat.InfoPost("GVM: Variable $" + args[1] + " does not exist!") + + elif args[0]=="status": + self.status_scrip = cmdargs[len(args[0])+1:] + status_on = 1 + self.gvm_status(self.status_scrip) + + elif args[0]=="save": + fname = cmdargs[len(args[0])+1:] + self.plugindb.SetDict("xxgvm", fname, self.vars) + self.chat.InfoPost("GVM: Successfully saved variable set " + fname + "!") + + elif args[0]=="open": + fname = cmdargs[len(args[0])+1:] + self.vars = self.plugindb.GetDict("xxgvm", fname, {}) + self.chat.InfoPost("GVM: Loaded the file " + fname + ". Variables contained are:<br />" + self.make_list()) + + elif args[0] == "list": + self.chat.Post(self.make_list()) + + else: + self.chat.InfoPost("GVM: SYNTAX ERROR. <br />USEAGE: /gvm [set name=value | get name | status | list | save set_name | open set_name]") + + def on_gvmq(self, cmdargs): + for key in self.vars.keys(): + cmdargs = cmdargs.replace("$" + key, self.vars[key]) + args = cmdargs.split(None,-1) + if len(args) == 0: + args = [' '] + if args[0]=="set": + cmd = cmdargs[len(args[0])+1:].strip().split("=") + self.vars[cmd[0]] = cmd[1] + if self.status_on: + self.gvm_status(self.status_scrip) + + elif args[0]=="calc": + cmd = cmdargs[len(args[0])+1:].strip().split("=") + self.vars[cmd[0]] = str(eval(cmd[1])) + if self.status_on: + self.gvm_status(self.status_scrip) + + elif args[0]=="get": + if args[1] in self.vars.keys(): + self.chat.InfoPost("GVM: Variable $" + args[1] + " is: " + self.vars[args[1]]) + else: + self.chat.InfoPost("GVM: Variable $" + args[1] + " does not exist!") + + elif args[0]=="status": + self.status_scrip = cmdargs[len(args[0])+1:] + status_on = 1 + self.gvm_status(self.status_scrip) + + elif args[0]=="save": + fname = cmdargs[len(args[0])+1:] + self.plugindb.SetDict("xxgvm", fname, self.vars) + + elif args[0]=="open": + fname = cmdargs[len(args[0])+1:] + self.vars = self.plugindb.GetDict("xxgvm", fname, {}) + + elif args[0] == "list": + self.chat.Post(self.make_list()) + + else: + self.chat.InfoPost("GVM: SYNTAX ERROR. <br />USEAGE: /gvmq [set name=value | get name | status | list | save set_name | open set_name]") + + + def pre_parse(self, text): + try: + for key in self.vars.keys(): + text = text.replace("$" + key, self.vars[key]) + except Exception, e: + print e + print key + self.vars[key] + + return text + + def gvm_status(self, cmd): + keychain = self.vars.keys() + keychain.sort() + newchain = [] + for key in keychain: + newchain = [key] + newchain + for key in keychain: + cmd = cmd.replace("$" + key, self.vars[key]) + self.settings.set_setting("IdleStatusAlias", cmd) + self.session.set_text_status(cmd) + + def make_list(self): + keychain = self.vars.keys() + lister = "" + for key in keychain: + lister += "$" + key + "\t::\t" + self.vars[key] + "<br />" + if len(keychain)==0: + return "No variables!" + else: + return lister \ No newline at end of file