diff --git a/python/events/README b/python/events/README index b8646025e..c46c448f2 100644 --- a/python/events/README +++ b/python/events/README @@ -1,14 +1,5 @@ -The script names following are reserved for global events. -They will be triggered automatically when the event occurs. - -EVENT_BORN - python_born.py -EVENT_LOGIN - python_login.py -EVENT_LOGOUT - python_logout.py -EVENT_REMOVE - python_remove.py -EVENT_SHOUT - python_shout.py -EVENT_MUZZLE - python_muzzle.py -EVENT_KICK - python_kick.py -EVENT_MAPENTER - python_mapenter.py -EVENT_MAPLEAVE - python_mapleave.py -EVENT_CLOCK - python_clock.py -EVENT_MAPRESET - python_mapreset.py +This directory contains 2 scripts: + * python_init.py: called when the plugin is called. Will execute scripts in + the 'init' subdirectory. + * python_event.py: called when a global event (except plugin init) happens. Looks for + scripts in the revelant subdirectory (Crossfire.ScriptParameters()) and executes them. diff --git a/python/events/born/log_born.py b/python/events/born/log_born.py new file mode 100644 index 000000000..2e356e7fb --- /dev/null +++ b/python/events/born/log_born.py @@ -0,0 +1,29 @@ +# python_born.py - handler for global born event +# +# Copyright (C) 2002 Joris Bontje +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# The author can be reached via e-mail at jbontje@suespammers.org +# +#Updated to use new path functions in CFPython -Todd Mitchell + +import Crossfire +import CFLog + +activator = Crossfire.WhoIsActivator() + +log = CFLog.CFLog() +log.create(activator.Name) diff --git a/python/events/init/guild_init.py b/python/events/init/guild_init.py new file mode 100644 index 000000000..598a8ba8b --- /dev/null +++ b/python/events/init/guild_init.py @@ -0,0 +1,3 @@ +import CFGuilds +print "Updating Guilds" +CFGuilds.GuildUpdate() diff --git a/python/events/kick/log_kick.py b/python/events/kick/log_kick.py new file mode 100644 index 000000000..c16a3bfa9 --- /dev/null +++ b/python/events/kick/log_kick.py @@ -0,0 +1,27 @@ +# python_kick.py - handler for global KICK event +# +# Copyright (C) 2004 Todd Mitchell +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# + +import Crossfire +import CFLog + +activator = Crossfire.WhoIsActivator() + +log = CFLog.CFLog() +log.kick_update(activator.Name) + diff --git a/python/events/login/log_login.py b/python/events/login/log_login.py new file mode 100644 index 000000000..965763259 --- /dev/null +++ b/python/events/login/log_login.py @@ -0,0 +1,13 @@ +import Crossfire +import CFLog + +activator = Crossfire.WhoIsActivator() +name = activator.Name +ip = Crossfire.WhatIsMessage() + +log = CFLog.CFLog() + +if log.info(name): + log.login_update(name, ip) +else: + log.create(name) diff --git a/python/events/login/mail_login.py b/python/events/login/mail_login.py new file mode 100644 index 000000000..f20740955 --- /dev/null +++ b/python/events/login/mail_login.py @@ -0,0 +1,35 @@ +# mail.py - handler for init of mail system +# +# Copyright (C) 2002-2005 Joris Bontje and others +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# The author can be reached via e-mail at jbontje@suespammers.org +# +#Updated to use new path functions in CFPython -Todd Mitchell + +import Crossfire +import CFMail + +activator = Crossfire.WhoIsActivator() +name = activator.Name + +mail = CFMail.CFMail() +total = mail.countmail(name) +if total > 0: + activator.Write('You have some mail waiting for you') +else: + activator.Write('No mail...') + diff --git a/python/events/muzzle/log_muzzle.py b/python/events/muzzle/log_muzzle.py new file mode 100644 index 000000000..7af54453d --- /dev/null +++ b/python/events/muzzle/log_muzzle.py @@ -0,0 +1,27 @@ +# python_muzzle.py - handler for global MUZZLE event +# +# Copyright (C) 2004 Todd Mitchell +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# + +import Crossfire +import CFLog + +activator = Crossfire.WhoIsActivator() +name = activator.Name + +log = CFLog.CFLog() +log.muzzle_update(name) diff --git a/python/events/python_event.py b/python/events/python_event.py new file mode 100644 index 000000000..f82a067b3 --- /dev/null +++ b/python/events/python_event.py @@ -0,0 +1,17 @@ +# global_event.py - this script handles all global events, except the plugin init (check plugin_init.py for that). +# +# This script merely looks and launches scripts in a specific subdirectory of /python/events/ +# Only .py files are considered, you can simply rename a file to disable. +# +# This should simplify the separation of different Python things. + +import Crossfire +import os + +path = os.path.join(Crossfire.DataDirectory(), Crossfire.MapDirectory(), 'python/events', Crossfire.ScriptParameters()) + +scripts = os.listdir(path) + +for script in scripts: + if (script.endswith('.py')): + execfile(os.path.join(path, script)) \ No newline at end of file diff --git a/python/events/python_init.py b/python/events/python_init.py index 1dd31fb58..fc73b502a 100644 --- a/python/events/python_init.py +++ b/python/events/python_init.py @@ -5,6 +5,10 @@ import sys print "Running python initialize script." sys.path.insert(0, os.path.join(Crossfire.DataDirectory(), Crossfire.MapDirectory(), 'python')) -import CFGuilds -print "Updating Guilds" -CFGuilds.GuildUpdate() +path = os.path.join(Crossfire.DataDirectory(), Crossfire.MapDirectory(), 'python/events/init') + +scripts = os.listdir(path) + +for script in scripts: + if (script.endswith('.py')): + execfile(os.path.join(path, script)) diff --git a/python/events/remove/bank_remove.py b/python/events/remove/bank_remove.py new file mode 100644 index 000000000..4b56cc501 --- /dev/null +++ b/python/events/remove/bank_remove.py @@ -0,0 +1,33 @@ +# python_remove.py - handler for global remove event +# +# Copyright (C) 2002 Joris Bontje +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# The author can be reached via e-mail at jbontje@suespammers.org +# +# Updated to use new path functions in CFPython and Bank +# acount cleanup - Todd Mitchell + +import Crossfire +import CFBank + +activator = Crossfire.WhoIsActivator() +name = activator.Name + +#If you add a new bank database add an entry here to remove their account +#when the player quits +bank = CFBank.CFBank('ImperialBank_DB') +bank.remove_account(name) diff --git a/python/events/remove/guild_remove.py b/python/events/remove/guild_remove.py new file mode 100644 index 000000000..a270121d9 --- /dev/null +++ b/python/events/remove/guild_remove.py @@ -0,0 +1,32 @@ +# python_remove.py - handler for global remove event +# +# Copyright (C) 2002 Joris Bontje +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# The author can be reached via e-mail at jbontje@suespammers.org +# +# Updated to use new path functions in CFPython and Bank +# acount cleanup - Todd Mitchell + +import Crossfire +import CFGuilds + +activator = Crossfire.WhoIsActivator() +name = activator.Name + +in_guild = CFGuilds.SearchGuilds(name) +if in_guild: + CFGuilds.CFGuild(in_guild).remove_member(name) diff --git a/python/events/remove/log_remove.py b/python/events/remove/log_remove.py new file mode 100644 index 000000000..354e4c523 --- /dev/null +++ b/python/events/remove/log_remove.py @@ -0,0 +1,31 @@ +# python_remove.py - handler for global remove event +# +# Copyright (C) 2002 Joris Bontje +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# The author can be reached via e-mail at jbontje@suespammers.org +# +# Updated to use new path functions in CFPython and Bank +# acount cleanup - Todd Mitchell + +import Crossfire +import CFLog + +activator = Crossfire.WhoIsActivator() +name = activator.Name + +log = CFLog.CFLog() +log.remove(name)