Both sides previous revisionPrevious revisionNext revision | Previous revision |
cfpython:cfpython [2021/07/27 14:47] – Document Player.Transport partmedia | cfpython:cfpython [2025/04/18 12:51] (current) – external edit 127.0.0.1 |
---|
**Important note:** the API, and other parts, are valid for code's ''trunk''. ''branch'' contains hopefully all the changes too, but there may be differences. Also, links to SVN are to trunk. | **Important note:** the API, and other parts, are valid for code's ''trunk''. ''branch'' contains hopefully all the changes too, but there may be differences. Also, links to SVN are to trunk. |
| |
| As from September, 14th, 2021, a ''.pyi'' file is available in ''maps/python/pyi''. It lists all available functions and variables, though functions aren't documented, so no parameters or description. |
| |
| |
====== General information ====== | ====== General information ====== |
The plugin has access to all built-in functions of Python, and its regular libraries. Python version being used depends on the platform the server was built, but should be 2.3 or higher. FIXME {is that always true?} | The plugin has access to all built-in functions of Python, and its regular libraries. Python version being used depends on the platform the server was built, but must be 3 or higher. FIXME {is that always true?} |
| |
Using a library not part of Python's default distribution is discouraged as this introduces new dependencies. | Using a library not part of Python's default distribution is discouraged as this introduces new dependencies. |
| |
===== How do I hook a script to an object? ===== | ===== How do I hook a script to an object? ===== |
Python plugin is a [[:server plugin]], thus you need to insert in this object one of the //event_xxx// archetype (see ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/arch/trunk/system/|/arch/system]]'' directory). The fields to fill are: | Python plugin is a [[server plugin]], thus you need to insert in this object one of the //event_xxx// archetype (see ''[[https://sourceforge.net/p/crossfire/crossfire-arch/ci/master/tree/system|/arch/system]]'' directory). The fields to fill are: |
* **title**: should be //Python// to call the Python plugin. | * **title**: should be //Python// to call the Python plugin. |
* **slaying**: contains the path to the Python script to execute. Root refers to the map directory. | * **slaying**: contains the path to the Python script to execute. Root refers to the map directory. |
| |
The following constant types exist: | The following constant types exist: |
* ''AttackType'': AT_xxx constants, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/attack.h?view=markup|include/attack.h]]'' | * ''AttackType'': AT_xxx constants, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/attack.h|include/attack.h]]'' |
* ''AttackTypeNumber'': ATNR_xxx constants, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/attack.h?view=markup|include/attack.h]]'' | * ''AttackTypeNumber'': ATNR_xxx constants, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/attack.h|include/attack.h]]'' |
* ''CostFlag'': F_xxx constants, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/define.h?view=markup|include/define.h]]'' (without the F_ prefix) | * ''CostFlag'': F_xxx constants, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/define.h|include/define.h]]'' (without the F_ prefix) |
* ''Direction'': contains NORTH, NORTHEAST, ..., NORTHWEST | * ''Direction'': contains NORTH, NORTHEAST, ..., NORTHWEST |
* ''EventType'': EVENT_xxx constants, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/plugin.h?view=markup|include/plugin.h]]'' | * ''EventType'': EVENT_xxx constants, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/plugin.h|include/plugin.h]]'' |
* ''MessageFlag'': NDI_xxx constants, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/newclient.h?view=markup|include/newclient.h]]'' | * ''MessageFlag'': NDI_xxx constants, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/newclient.h|include/newclient.h]]'' |
* ''Move'': movement types, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/define.h?view=markup|include/define.h]]'' | * ''Move'': movement types, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/define.h|include/define.h]]'' |
* ''Type'': object type, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/define.h?view=markup|include/define.h]]'' | * ''Type'': object type, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/define.h|include/define.h]]'' |
* ''ReplyType'': the rt_xxx constants, reply type, as defined in ''[[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/define.h?view=markup|include/dialog.h]]'' | * ''ReplyType'': the rt_xxx constants, reply type, as defined in ''[[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/define.h|include/dialog.h]]'' |
* ''AttackMovement'': the various DISTATT, PETMOVE and other constants in the "MONSTER_MOVEMENT" group as defined in [[http://crossfire.svn.sourceforge.net/viewvc/crossfire/server/trunk/include/define.h?view=markup|include/define.h]] | * ''AttackMovement'': the various DISTATT, PETMOVE and other constants in the "MONSTER_MOVEMENT" group as defined in [[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/include/define.h|include/define.h]] |
| |
| |
| |
==== CostStringFromValue ==== | ==== CostStringFromValue ==== |
| (trunk only) |
| |
Parameters: | Parameters: |
* ''amount'', long integer | * ''amount'', long integer |
| |
Properties in **bold** are read-write, others are read-only. Most properties are mapped to fields of the ''object'' structure. ''Boolean'' values are mapped to the various flags. | Properties in **bold** are read-write, others are read-only. Most properties are mapped to fields of the ''object'' structure. ''Boolean'' values are mapped to the various flags. |
* **Name**: ''String'' containing the object's name | * **Name**: ''String'' containing the object's name, adjusted for the number of objects. Settings this property changes both the singular and plural names |
* **NamePl**: ''String'' containing the object's plural name | * **NamePl**: ''String'' containing the object's plural name. Changing this property only changes the item's plural name |
| * NameSingular: ''String'' containing the object's singular name |
* **Title**: ''String'' | * **Title**: ''String'' |
* **Race**: ''String'' | * **Race**: ''String'' |
* Identified: ''Boolean'' | * Identified: ''Boolean'' |
* **Alive**: ''Boolean'' | * **Alive**: ''Boolean'' |
* DungeonMaster: ''Boolean'' | * **DungeonMaster**: ''Boolean'', writable on ''master'' |
* WasDungeonMaster: ''Boolean'' | * WasDungeonMaster: ''Boolean'' |
* **Applied**: ''Boolean'' | * **Applied**: ''Boolean'' |
| |
Arguments: | Arguments: |
* ''Crossfire.Object'' representing the spell to case | * ''Crossfire.Object'' representing the spell to cast |
* ''Crossfire.Direction'', direction in which the object should cast | * ''Crossfire.Direction'', direction in which the object should cast |
* ''String'', optional arguments to the spell (for food creation, ...) | * ''String'', optional arguments to the spell (for food creation, ...) |
==== CastAbility ==== | ==== CastAbility ==== |
| |
Equivalent of ''Cast''. | Obsolete, will be removed, use ''Cast''. |
| |
==== ChangeAbil ==== | ==== ChangeAbil ==== |
| |
==== Remove ==== | ==== Remove ==== |
Destroys current object, which then becomes invalid. | Destroys current object, which then becomes invalid. If the object is on a map, its inventory is dropped to the ground (except no drop or god given items), else everything is destroyed. |
| |
==== Reposition ==== | ==== Reposition ==== |
* **BedX** : ''number'' containing the x coordinate of last savebed. | * **BedX** : ''number'' containing the x coordinate of last savebed. |
* **BedY** : ''number'' containing the y coordinate of last savebed. | * **BedY** : ''number'' containing the y coordinate of last savebed. |
| * **CmdCount**: ''number'' command count |
* **MarkedItem**: ''Crossfire.Object'', item the player has marked. | * **MarkedItem**: ''Crossfire.Object'', item the player has marked. |
* **Party**: ''Crossfire.Party'', party in which the player is. Note that changing it bypasses a potential party's password. | * **Party**: ''Crossfire.Party'', party in which the player is. Note that changing it bypasses a potential party's password. |
* Longname: ''String'' | * Longname: ''String'' |
* Message: ''String'' | * Message: ''String'' |
* Next: ''Crossfire.Region'' | * <del>Next: ''Crossfire.Region''</del> deprecated, will be ''None'' on master branch |
* JailX, JailY: ''Integer'', coordinates of the jail for this region (trunk only) | * JailX, JailY: ''Integer'', coordinates of the jail for this region (trunk only) |
* JailPath: ''String'', path of the jail for this region (trunk only) | * JailPath: ''String'', path of the jail for this region (trunk only) |