This documentation is about the old plugin system. It is obsolete and should not be used, except for historical purposes. Documentation for current Python plugin can be found here.
Use the event_xxx
to specify the script to use. The base directory for the scripts is the map
directory.
You of course need to write some Python code too… You do as usual, but remember to add an “import CFPython
” to make all crossfire-specific functions available in your scripts.
Each global event is bound to a specific Python script file. Those files are located in the python/
subdirectory of your crossfire map directory. They have specific names, too: python_xxx.py
, where xxx
is the name of the global event you want to intercept. For example, a script that should be run each time a player logs in (“login” event
) should be named python_login.py
.
Here is a listing of the server events and their number codes:
EVENT_NONE 0 No event. This exists only to reserve the "0". EVENT_APPLY 1 Object applied-unapplied. EVENT_ATTACK 2 Monster attacked or Scripted Weapon used. EVENT_DEATH 3 Player or monster dead. EVENT_DROP 4 Object dropped on the floor. EVENT_PICKUP 5 Object picked up. EVENT_SAY 6 Someone speaks. EVENT_STOP 7 Thrown object stopped. EVENT_TIME 8 Triggered each time the object can react/move. EVENT_THROW 9 Object is thrown. EVENT_TRIGGER 10 Button pushed, lever pulled, etc. EVENT_CLOSE 11 Container closed. EVENT_TIMER 12 Timer connected triggered it.
And the global events are:
EVENT_BORN 13 A new character has been created. EVENT_CLOCK 14 Global time event. EVENT_CRASH 15 Triggered when the server crashes. Not recursive EVENT_GDEATH 16 Global Death event EVENT_GKILL 17 Triggered when anything got killed by anyone. EVENT_LOGIN 18 Player login. EVENT_LOGOUT 19 Player logout. EVENT_MAPENTER 20 A player entered a map. EVENT_MAPLEAVE 21 A player left a map. EVENT_MAPRESET 22 A map is resetting. EVENT_REMOVE 23 A Player character has been removed. EVENT_SHOUT 24 A player 'shout' something.
A complete list of supported functions is given below.
Note to Scriptfire users: CFPython implements all the old Scriptfire functions. Although the syntax of Python is quite different from Guile, it should not be a problem to port your old code.
Last count (10/09/2001) result: 181 functions (not counting the various spells and skills wrappers). This of course does not include all the Python functions, just the crossfire-specific ones.
In the following, I use the following type naming convention:
int
: An integer;long
: A long;object
: A crossfire object. (In fact, it is a long).string
: A character string.Chachkoff Y.