ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/doc/Developers/plugins
Revision: 1.2
Committed: Thu Sep 7 21:42:49 2006 UTC (17 years, 8 months ago) by pippijn
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Log Message:
Moved documents to doc/historic

File Contents

# Content
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.