This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
wiki:data:pages:cfpython [2020/12/12 10:47] ryo [Cast] |
wiki:data:pages:cfpython [2021/10/19 14:13] ryo [General information] update |
||
---|---|---|---|
Line 8: | Line 8: | ||
Note that this guide doesn't intend to teach you Python. Documentation for that is available on [[http://docs.python.org|Python's official web site]]. | Note that this guide doesn't intend to teach you Python. Documentation for that is available on [[http://docs.python.org|Python's official web site]]. | ||
- | Also, advanced functions can require some knowledge of Crossfire's inner workings. Developers seeking help should check [[http://crossfire.real-time.com/development/index.html|Crossfire's page on development]] or [[http://crossfire.real-time.com/resources/index.html|Crossfire's resource page]] (which includes links to lists, IRC, how to contact people, ...). Another option is to check existing Python scripts, available in the [[http://crossfire.svn.sourceforge.net/viewvc/crossfire/maps/trunk/python/|maps source tree]]. | + | Also, advanced functions can require some knowledge of Crossfire's inner workings. Developers seeking help should check [[http://crossfire.real-time.com/development/index.html|Crossfire's page on development]] or [[http://crossfire.real-time.com/resources/index.html|Crossfire's resource page]] (which includes links to lists, IRC, how to contact people, ...). Another option is to check existing Python scripts, available in the [[https://sourceforge.net/p/crossfire/crossfire-maps/ci/master/tree/|maps source tree]]. |
Old plugin's reference can be found on [[plugin_python]], for historical purposes. | Old plugin's reference can be found on [[plugin_python]], for historical purposes. | ||
- | **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 ''master''. ''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. | ||
Line 32: | Line 33: | ||
Data that should survive a server restart should be persisted in the ''PlayerDirectory'' (for specific player information) or ''DataDirectory'' (for regular information), where the server normally has write access. | Data that should survive a server restart should be persisted in the ''PlayerDirectory'' (for specific player information) or ''DataDirectory'' (for regular information), where the server normally has write access. | ||
- | Scripts for server releases after 9 November 2007 should prefer the use of new [[cfpython#Log|Crossfire.Log(level,message)]] method over the python build-in print method. The reason of this is to keep coherency between python scripts messages and server logging. | + | Scripts for server releases muse use the [[cfpython#Log|Crossfire.Log(level,message)]] method over the python build-in print method. The reason of this is to keep coherency between python scripts messages and server logging. |
===== How do I hook a script to an object? ===== | ===== How do I hook a script to an object? ===== | ||
Line 472: | Line 473: | ||
* Identified: ''Boolean'' | * Identified: ''Boolean'' | ||
* **Alive**: ''Boolean'' | * **Alive**: ''Boolean'' | ||
- | * DungeonMaster: ''Boolean'' | + | * **DungeonMaster**: ''Boolean'', writable on ''master'' |
* WasDungeonMaster: ''Boolean'' | * WasDungeonMaster: ''Boolean'' | ||
* **Applied**: ''Boolean'' | * **Applied**: ''Boolean'' |