00001
00002
00003
00004
00005
00012
00013
00014
00015
00016 #ifndef PLUGIN_H
00017 #define PLUGIN_H
00018
00019
00020
00021
00022 #ifndef WIN32
00023 #include <dlfcn.h>
00024 #endif
00025
00026 #undef MODULEAPI
00027 #ifdef WIN32
00028 #ifdef PYTHON_PLUGIN_EXPORTS
00029 #define MODULEAPI __declspec(dllexport)
00030 #else
00031 #define MODULEAPI __declspec(dllimport)
00032 #endif
00033 #else
00034 #define MODULEAPI
00035 #endif
00036
00037 #include <global.h>
00038 #include <object.h>
00039 #include <logger.h>
00040
00041 #ifdef HAVE_TIME_H
00042 #include <time.h>
00043 #endif
00044 #include <../random_maps/random_map.h>
00045 #include <../random_maps/rproto.h>
00046
00047
00048
00049
00050 #ifndef WIN32
00051 #include <dirent.h>
00052 #endif
00053
00054
00055
00056
00057
00058
00059
00060
00061 #define EVENT_NONE 0
00062 #define EVENT_APPLY 1
00063 #define EVENT_ATTACK 2
00064 #define EVENT_DEATH 3
00065 #define EVENT_DROP 4
00066 #define EVENT_PICKUP 5
00067 #define EVENT_SAY 6
00068 #define EVENT_STOP 7
00069 #define EVENT_TIME 8
00070 #define EVENT_THROW 9
00071 #define EVENT_TRIGGER 10
00072 #define EVENT_CLOSE 11
00073 #define EVENT_TIMER 12
00074 #define EVENT_DESTROY 13
00075 #define EVENT_USER 31
00076
00077
00078
00079 #define EVENT_BORN 14
00080 #define EVENT_CLOCK 15
00081 #define EVENT_CRASH 16
00082 #define EVENT_PLAYER_DEATH 17
00083 #define EVENT_GKILL 18
00084 #define EVENT_LOGIN 19
00085 #define EVENT_LOGOUT 20
00086 #define EVENT_MAPENTER 21
00087 #define EVENT_MAPLEAVE 22
00088 #define EVENT_MAPRESET 23
00089 #define EVENT_REMOVE 24
00090 #define EVENT_SHOUT 25
00091 #define EVENT_TELL 26
00092 #define EVENT_MUZZLE 27
00093 #define EVENT_KICK 28
00094 #define EVENT_MAPUNLOAD 29
00095 #define EVENT_MAPLOAD 30
00096 #define NR_EVENTS 32
00097
00098 #include <stdarg.h>
00099
00100 #define CFAPI_NONE 0
00101 #define CFAPI_INT 1
00102 #define CFAPI_LONG 2
00103 #define CFAPI_CHAR 3
00104 #define CFAPI_STRING 4
00105 #define CFAPI_POBJECT 5
00106 #define CFAPI_PMAP 6
00107 #define CFAPI_FLOAT 7
00108 #define CFAPI_DOUBLE 8
00109 #define CFAPI_PARCH 9
00110 #define CFAPI_FUNC 10
00111 #define CFAPI_PPLAYER 11
00112 #define CFAPI_PPARTY 12
00113 #define CFAPI_PREGION 13
00114 #define CFAPI_INT16 14
00115 #define CFAPI_TIME 15
00116 #define CFAPI_SINT64 16
00117 #define CFAPI_SSTRING 17
00118 #define CFAPI_MOVETYPE 18
00119
00121 typedef void *(*f_plug_api)(int *type, ...);
00123 typedef int (*f_plug_postinit)(void);
00125 typedef int (*f_plug_init)(const char *iversion, f_plug_api gethooksptr);
00126
00127 #ifndef WIN32
00128 #define LIBPTRTYPE void *
00129 #else
00130
00131 #define LIBPTRTYPE HMODULE
00132 #endif
00133
00135 typedef struct _crossfire_plugin {
00136 f_plug_api eventfunc;
00137 f_plug_api propfunc;
00138 f_plug_postinit closefunc;
00139 LIBPTRTYPE libptr;
00140 char id[MAX_BUF];
00141 char fullname[MAX_BUF];
00142 f_plug_api gevent[NR_EVENTS];
00143 struct _crossfire_plugin *next;
00144 struct _crossfire_plugin *prev;
00145 } crossfire_plugin;
00146
00147 extern int plugin_number;
00148 extern crossfire_plugin *plugins_list;
00149
00150 #ifdef WIN32
00151
00152 #define plugins_dlopen(fname) LoadLibrary(fname)
00153 #define plugins_dlclose(lib) FreeLibrary(lib)
00154 #define plugins_dlsym(lib, name) GetProcAddress(lib, name)
00155
00156 #else
00157
00158 #define plugins_dlopen(fname) dlopen(fname, RTLD_NOW|RTLD_GLOBAL)
00159 #define plugins_dlclose(lib) dlclose(lib)
00160 #define plugins_dlsym(lib, name) dlsym(lib, name)
00161 #define plugins_dlerror() dlerror()
00162 #endif
00163
00164
00165
00166 #define CFAPI_OBJECT_PROP_OB_ABOVE 1
00167 #define CFAPI_OBJECT_PROP_OB_BELOW 2
00168 #define CFAPI_OBJECT_PROP_NEXT_ACTIVE_OB 3
00169 #define CFAPI_OBJECT_PROP_PREV_ACTIVE_OB 4
00170 #define CFAPI_OBJECT_PROP_INVENTORY 5
00171 #define CFAPI_OBJECT_PROP_ENVIRONMENT 6
00172 #define CFAPI_OBJECT_PROP_HEAD 7
00173 #define CFAPI_OBJECT_PROP_CONTAINER 8
00174 #define CFAPI_OBJECT_PROP_MAP 9
00175 #define CFAPI_OBJECT_PROP_COUNT 10
00176 #define CFAPI_OBJECT_PROP_NAME 12
00177 #define CFAPI_OBJECT_PROP_NAME_PLURAL 13
00178 #define CFAPI_OBJECT_PROP_TITLE 14
00179 #define CFAPI_OBJECT_PROP_RACE 15
00180 #define CFAPI_OBJECT_PROP_SLAYING 16
00181 #define CFAPI_OBJECT_PROP_SKILL 17
00182 #define CFAPI_OBJECT_PROP_MESSAGE 18
00183 #define CFAPI_OBJECT_PROP_LORE 19
00184 #define CFAPI_OBJECT_PROP_X 20
00185 #define CFAPI_OBJECT_PROP_Y 21
00186 #define CFAPI_OBJECT_PROP_SPEED 22
00187 #define CFAPI_OBJECT_PROP_SPEED_LEFT 23
00188 #define CFAPI_OBJECT_PROP_NROF 24
00189 #define CFAPI_OBJECT_PROP_DIRECTION 25
00190 #define CFAPI_OBJECT_PROP_FACING 26
00191 #define CFAPI_OBJECT_PROP_TYPE 27
00192 #define CFAPI_OBJECT_PROP_SUBTYPE 28
00193 #define CFAPI_OBJECT_PROP_CLIENT_TYPE 29
00194 #define CFAPI_OBJECT_PROP_RESIST 30
00195 #define CFAPI_OBJECT_PROP_ATTACK_TYPE 31
00196 #define CFAPI_OBJECT_PROP_PATH_ATTUNED 32
00197 #define CFAPI_OBJECT_PROP_PATH_REPELLED 33
00198 #define CFAPI_OBJECT_PROP_PATH_DENIED 34
00199 #define CFAPI_OBJECT_PROP_MATERIAL 35
00200 #define CFAPI_OBJECT_PROP_MATERIAL_NAME 36
00201 #define CFAPI_OBJECT_PROP_MAGIC 37
00202 #define CFAPI_OBJECT_PROP_VALUE 38
00203 #define CFAPI_OBJECT_PROP_LEVEL 39
00204 #define CFAPI_OBJECT_PROP_LAST_HEAL 40
00205 #define CFAPI_OBJECT_PROP_LAST_SP 41
00206 #define CFAPI_OBJECT_PROP_LAST_GRACE 42
00207 #define CFAPI_OBJECT_PROP_LAST_EAT 43
00208 #define CFAPI_OBJECT_PROP_INVISIBLE_TIME 44
00209 #define CFAPI_OBJECT_PROP_PICK_UP 45
00210 #define CFAPI_OBJECT_PROP_ITEM_POWER 46
00211 #define CFAPI_OBJECT_PROP_GEN_SP_ARMOUR 47
00212 #define CFAPI_OBJECT_PROP_WEIGHT 48
00213 #define CFAPI_OBJECT_PROP_WEIGHT_LIMIT 49
00214 #define CFAPI_OBJECT_PROP_CARRYING 50
00215 #define CFAPI_OBJECT_PROP_GLOW_RADIUS 51
00216 #define CFAPI_OBJECT_PROP_PERM_EXP 52
00217 #define CFAPI_OBJECT_PROP_CURRENT_WEAPON 53
00218 #define CFAPI_OBJECT_PROP_ENEMY 54
00219 #define CFAPI_OBJECT_PROP_ATTACKED_BY 55
00220 #define CFAPI_OBJECT_PROP_RUN_AWAY 56
00221 #define CFAPI_OBJECT_PROP_CHOSEN_SKILL 57
00222 #define CFAPI_OBJECT_PROP_HIDDEN 58
00223 #define CFAPI_OBJECT_PROP_MOVE_STATUS 59
00224 #define CFAPI_OBJECT_PROP_ATTACK_MOVEMENT 60
00225 #define CFAPI_OBJECT_PROP_SPELL_ITEM 61
00226 #define CFAPI_OBJECT_PROP_EXP_MULTIPLIER 62
00227 #define CFAPI_OBJECT_PROP_ARCHETYPE 63
00228 #define CFAPI_OBJECT_PROP_OTHER_ARCH 64
00229 #define CFAPI_OBJECT_PROP_CUSTOM_NAME 65
00230 #define CFAPI_OBJECT_PROP_ANIM_SPEED 66
00231 #define CFAPI_OBJECT_PROP_FRIENDLY 67
00232 #define CFAPI_OBJECT_PROP_SHORT_NAME 68
00233 #define CFAPI_OBJECT_PROP_BASE_NAME 69
00234 #define CFAPI_OBJECT_PROP_MAGICAL 70
00235 #define CFAPI_OBJECT_PROP_LUCK 71
00236 #define CFAPI_OBJECT_PROP_EXP 72
00237 #define CFAPI_OBJECT_PROP_OWNER 73
00238 #define CFAPI_OBJECT_PROP_PRESENT 74
00239 #define CFAPI_OBJECT_PROP_CHEATER 75
00240 #define CFAPI_OBJECT_PROP_MERGEABLE 76
00241 #define CFAPI_OBJECT_PROP_PICKABLE 77
00242 #define CFAPI_OBJECT_PROP_FLAGS 78
00243 #define CFAPI_OBJECT_PROP_STR 79
00244 #define CFAPI_OBJECT_PROP_DEX 80
00245 #define CFAPI_OBJECT_PROP_CON 81
00246 #define CFAPI_OBJECT_PROP_WIS 82
00247 #define CFAPI_OBJECT_PROP_INT 83
00248 #define CFAPI_OBJECT_PROP_POW 84
00249 #define CFAPI_OBJECT_PROP_CHA 85
00250 #define CFAPI_OBJECT_PROP_WC 86
00251 #define CFAPI_OBJECT_PROP_AC 87
00252 #define CFAPI_OBJECT_PROP_HP 88
00253 #define CFAPI_OBJECT_PROP_SP 89
00254 #define CFAPI_OBJECT_PROP_GP 90
00255 #define CFAPI_OBJECT_PROP_FP 91
00256 #define CFAPI_OBJECT_PROP_MAXHP 92
00257 #define CFAPI_OBJECT_PROP_MAXSP 93
00258 #define CFAPI_OBJECT_PROP_MAXGP 94
00259 #define CFAPI_OBJECT_PROP_DAM 95
00260 #define CFAPI_OBJECT_PROP_GOD 96
00261 #define CFAPI_OBJECT_PROP_ARCH_NAME 97
00262 #define CFAPI_OBJECT_PROP_INVISIBLE 98
00263 #define CFAPI_OBJECT_PROP_FACE 99
00264 #define CFAPI_OBJECT_PROP_ANIMATION 100
00265 #define CFAPI_OBJECT_PROP_NO_SAVE 101
00266 #define CFAPI_OBJECT_PROP_MOVE_TYPE 102
00267 #define CFAPI_OBJECT_PROP_MOVE_BLOCK 103
00268 #define CFAPI_OBJECT_PROP_MOVE_ALLOW 104
00269 #define CFAPI_OBJECT_PROP_MOVE_ON 105
00270 #define CFAPI_OBJECT_PROP_MOVE_OFF 106
00271 #define CFAPI_OBJECT_PROP_MOVE_SLOW 107
00272 #define CFAPI_OBJECT_PROP_MOVE_SLOW_PENALTY 108
00273 #define CFAPI_OBJECT_PROP_DURATION 109
00274
00275 #define CFAPI_PLAYER_PROP_IP 150
00276 #define CFAPI_PLAYER_PROP_MARKED_ITEM 151
00277 #define CFAPI_PLAYER_PROP_PARTY 152
00278 #define CFAPI_PLAYER_PROP_BED_MAP 153
00279 #define CFAPI_PLAYER_PROP_BED_X 154
00280 #define CFAPI_PLAYER_PROP_BED_Y 155
00281 #define CFAPI_PLAYER_PROP_NEXT 156
00282 #define CFAPI_PLAYER_PROP_TITLE 157
00283
00284 #define CFAPI_MAP_PROP_FLAGS 0
00285 #define CFAPI_MAP_PROP_DIFFICULTY 1
00286 #define CFAPI_MAP_PROP_PATH 2
00287 #define CFAPI_MAP_PROP_TMPNAME 3
00288 #define CFAPI_MAP_PROP_NAME 4
00289 #define CFAPI_MAP_PROP_RESET_TIME 5
00290 #define CFAPI_MAP_PROP_RESET_TIMEOUT 6
00291 #define CFAPI_MAP_PROP_PLAYERS 7
00292 #define CFAPI_MAP_PROP_LIGHT 8
00293 #define CFAPI_MAP_PROP_DARKNESS 9
00294 #define CFAPI_MAP_PROP_WIDTH 10
00295 #define CFAPI_MAP_PROP_HEIGHT 11
00296 #define CFAPI_MAP_PROP_ENTER_X 12
00297 #define CFAPI_MAP_PROP_ENTER_Y 13
00298 #define CFAPI_MAP_PROP_MESSAGE 22
00299 #define CFAPI_MAP_PROP_NEXT 23
00300 #define CFAPI_MAP_PROP_REGION 24
00301 #define CFAPI_MAP_PROP_UNIQUE 25
00302
00303 #define CFAPI_ARCH_PROP_NAME 0
00304 #define CFAPI_ARCH_PROP_NEXT 1
00305 #define CFAPI_ARCH_PROP_HEAD 2
00306 #define CFAPI_ARCH_PROP_MORE 3
00307 #define CFAPI_ARCH_PROP_CLONE 4
00308
00309 #define CFAPI_PARTY_PROP_NAME 0
00310 #define CFAPI_PARTY_PROP_NEXT 1
00311 #define CFAPI_PARTY_PROP_PASSWORD 2
00312 #define CFAPI_PARTY_PROP_PLAYER 3
00313
00314 #define CFAPI_REGION_PROP_NAME 0
00315 #define CFAPI_REGION_PROP_NEXT 1
00316 #define CFAPI_REGION_PROP_PARENT 2
00317 #define CFAPI_REGION_PROP_LONGNAME 3
00318 #define CFAPI_REGION_PROP_MESSAGE 4
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00336 typedef struct _hook_entry {
00337 f_plug_api func;
00338 int fid;
00339 const char fname[256];
00340 } hook_entry;
00341
00342 #endif