ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/doc/historic/Developers/plugins
Revision: 1.1
Committed: Thu Sep 7 21:42:57 2006 UTC (17 years, 10 months ago) by pippijn
Branch: MAIN
CVS Tags: rel-2_82, rel-2_81, rel-2_80, rel-3_1, rel-3_0, rel-2_6, rel-2_7, rel-2_4, rel-2_5, rel-2_2, rel-2_3, rel-2_0, rel-2_1, rel-2_72, rel-2_73, rel-2_71, rel-2_76, rel-2_77, rel-2_74, rel-2_75, rel-2_54, rel-2_55, rel-2_56, rel-2_79, rel-2_52, rel-2_53, rel-2_32, rel-2_90, rel-2_92, rel-2_93, rel-2_78, rel-2_61, rel-2_43, rel-2_42, rel-2_41, HEAD
Log Message:
Moved documents to doc/historic

File Contents

# User Rev Content
1 pippijn 1.1 Plugin support
2     ==============
3    
4     Crossfire can be extended through plugins. It's basically a library file, that gets loaded
5     at server initialization.
6     A plugin can be hooked to different events, either related to an object or global ones.
7     (see list later on).
8    
9     You should always include two header files in your plugin projects:
10    
11     - plugin.h, which contains the declaration of most plugin-related constants and
12     the required Crossfire includes;
13     - plugin_common.h (from the plugins/plugin_common directory), which includes the
14     necessary support for Crossfire function wrappers.
15    
16     All your projects should also include plugin_common.c in their build processes;
17     that source file contains a lot of Crossfire function wrappers you can call.
18     Do *not* call the callbacks sent by the Crossfire server directly - use what's
19     provided by plugin_common.c.
20    
21     Important: a plugin should *never* directly call malloc, free, or any function
22     manipulating memory if the memory needs to be given to server. This breaks Windows
23     compatibility. Hooks are provided in case of need.
24    
25     List of supported events.
26     =========================
27    
28     Local events
29     ------------
30     Those can be attached to a specific object in the game.
31    
32     APPLY
33     Tag: event_apply
34     This event is generated whenever the object is applied or unapplied.
35    
36     ATTACK
37     Tag: event_attack
38     This event is used in two cases:
39     - bound to a weapon, it is triggered each time the weapon is used to slay
40     something; this can typically be used to generate special effects when
41     you hit a monster;
42     - bound to a monster, it is triggered when the monster is attacked.
43    
44     CLOSE
45     Tag: event_close
46     Generated when a container is closed.
47    
48     DEATH
49     Tag: event_death
50     Generated when the object dies.
51    
52     DROP
53     Tag: event_drop
54     Generated when the object is dropped, either on the floor or in a container.
55    
56     PICKUP
57     Tag: event_pickup
58     Generated when the object is picked up.
59    
60     SAY
61     Tag: event_say
62     Generated when someone says something around the object.
63    
64     STOP
65     Tag: event_stop
66     Generated for a thrown object, when the object is stopped for some reason.
67    
68     TIME
69     Tag: event_time
70     Generated each time the object gets an opportunity to move.
71    
72     THROW
73     Tag: event_throw
74     Generated when the object is thrown.
75    
76     TRIGGER
77     Tag: event_trigger
78     Used for various objects, like traps, teleporters or triggers. Generated when
79     those objects are used (for example, when a player passes through a teleporter).
80    
81     TIMER
82     Tag: event_timer
83     Generated when the timer connected triggered.
84    
85     Global events
86     -------------
87     Those concern the game as a whole or can't be bound to a specific object.
88     Those events may be "registered" by a plugin (it means that the plugin requests
89     to get a message each time one of those events happens).
90    
91     BORN
92     Generated when a new character is created.
93    
94     CLOCK
95     Generated at each game loop.
96     Warning: When no player is logged, the loop "stops", meaning that clock events
97     are not generated anymore!
98    
99     CRASH
100     Generated when a server crash does occur. It is not a recursive event, so if a
101     crash occur from *inside* the crash event handling, it is not called a second
102     time, preventing infinite loops to occur.
103     Note: This event is not implemented for now.
104    
105     GDEATH
106     Generated whenever someone dies.
107    
108     GKILL
109     Generated whenever something/someone is killed.
110    
111     LOGIN
112     Generated whenever a player logs into the game.
113    
114     LOGOUT
115     Generated whenever a player logs out the game.
116    
117     MAPENTER
118     Generated whenever someone enters a map.
119    
120     MAPLEAVE
121     Generated whenever someone leaves a map.
122    
123     MAPRESET
124     Generated each time a map is reset.
125    
126     REMOVE
127     Generated when a player character is removed from the game ("quit" command).
128    
129     SHOUT
130     Generated whenever someone shouts something.
131    
132     TELL
133     Generated whenever someone tells something.
134    
135     MUZZLE
136     Generated when a player was muzzled by a DM.
137    
138     KICK
139     Generated when a player was kicked by a DM.