Crossfire Server, Branch 1.12
R12190
|
00001 /*****************************************************************************/ 00002 /* Crossfire Plugin Interface Common Parts */ 00003 /* Version: 2.0beta8 (also known as "Alexander") */ 00004 /* Contact: yann.chachkoff@myrealbox.com */ 00005 /*****************************************************************************/ 00006 /* That code is placed under the GNU General Public Licence (GPL) */ 00007 /* (C)2001-2005 by Chachkoff Yann (Feel free to deliver your complaints) */ 00008 /*****************************************************************************/ 00009 /* CrossFire, A Multiplayer game for X-windows */ 00010 /* */ 00011 /* Copyright (C) 2000 Mark Wedel */ 00012 /* Copyright (C) 1992 Frank Tore Johansen */ 00013 /* */ 00014 /* This program is free software; you can redistribute it and/or modify */ 00015 /* it under the terms of the GNU General Public License as published by */ 00016 /* the Free Software Foundation; either version 2 of the License, or */ 00017 /* (at your option) any later version. */ 00018 /* */ 00019 /* This program is distributed in the hope that it will be useful, */ 00020 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ 00021 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ 00022 /* GNU General Public License for more details. */ 00023 /* */ 00024 /* You should have received a copy of the GNU General Public License */ 00025 /* along with this program; if not, write to the Free Software */ 00026 /* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 00027 /* */ 00028 /*****************************************************************************/ 00029 #ifndef PLUGIN_COMMON_H 00030 #define PLUGIN_COMMON_H 00031 00032 #ifdef WIN32 00033 #define CF_PLUGIN __declspec(dllexport) 00034 #else 00035 #define CF_PLUGIN 00036 #endif 00037 00038 #include <plugin.h> 00039 00040 #define PLUGIN_ERROR_INT 0x0FFFFF 00041 00042 extern int cf_init_plugin(f_plug_api getHooks); 00043 extern void cf_system_register_global_event(int event, const char *name, f_plug_api hook); 00044 extern void cf_system_unregister_global_event(int event, const char *name); 00045 00046 /* General functions */ 00047 extern sstring cf_add_string(const char *str); 00048 extern void cf_free_string(sstring str); 00049 extern sstring cf_find_string(const char *str); 00050 extern char *cf_strdup_local(const char *str); 00051 extern char *cf_get_maps_directory(const char *name, char *buf, int size); 00052 extern int cf_find_animation(const char *txt); 00053 extern int cf_find_face(const char *name, int error); 00054 extern void cf_log(LogLevel logLevel, const char *format, ...); 00055 extern void cf_log_plain(LogLevel logLevel, const char *message); 00056 extern void cf_get_time(timeofday_t *tod); 00057 extern int cf_timer_create(object *ob, long delay, int mode); 00058 extern int cf_timer_destroy(int id); 00059 extern const char *cf_get_directory(int id); 00060 extern const char *cf_re_cmp(const char *str, const char *regexp); 00061 extern const char *cf_get_season_name(int index); 00062 extern const char *cf_get_month_name(int index); 00063 extern const char *cf_get_weekday_name(int index); 00064 extern const char *cf_get_periodofday_name(int index); 00065 00066 /* Objects */ 00067 extern void cf_object_set_int_property(object *op, int propcode, int value); 00068 extern int cf_object_get_int_property(object *op, int propcode); 00069 extern long cf_object_get_long_property(object *op, long propcode); 00070 extern void cf_object_set_movetype_property(object *op, int propcode, MoveType value); 00071 extern MoveType cf_object_get_movetype_property(object *op, int propcode); 00072 extern object *cf_object_get_object_property(object *op, int propcode); 00073 extern void cf_object_set_object_property(object *op, int propcode, object *value); 00074 extern float cf_object_get_float_property(object *op, int propcode); 00075 extern void cf_object_set_float_property(object *op, int propcode, float value); 00076 extern mapstruct *cf_object_get_map_property(object *op, int propcode); 00077 extern archetype *cf_object_get_archetype_property(object *op, int propcode); 00078 extern partylist *cf_object_get_partylist_property(object *op, int propcode); 00079 extern sint64 cf_object_get_int64_property(object *op, int propcode); 00080 extern void cf_object_set_int64_property(object *op, int propcode, sint64 value); 00081 extern double cf_object_get_double_property(object *op, int propcode); 00082 extern sstring cf_object_get_sstring_property(object *op, int propcode); 00083 extern char *cf_object_get_string_property(object *op, int propcode, char *buf, int size); 00084 extern void cf_fix_object(object *op); 00085 extern char *cf_query_name(object *ob, char *name, int size); 00086 extern sstring cf_query_name_pl(object *ob); 00087 extern char *cf_query_base_name(object *ob, int plural, char *name, int size); 00088 extern const char *cf_object_get_msg(object *); 00089 extern void cf_object_set_weight(object *ob, int weight); 00090 extern int cf_object_get_weight(object *ob); 00091 extern void cf_object_set_weight_limit(object *ob, int weight); 00092 extern int cf_object_get_weight_limit(object *ob); 00093 extern int cf_object_set_nrof(object *, int nrof); 00094 extern int cf_object_get_nrof(object *); 00095 extern int cf_object_get_flag(object *ob, int flag); 00096 extern void cf_object_set_flag(object *ob, int flag, int value); 00097 extern object *cf_object_insert_in_ob(object *op, object *where); 00098 extern void cf_object_set_string_property(object *op, int propcode, const char *value); 00099 extern void cf_spring_trap(object *trap, object *victim); 00100 extern int cf_object_check_trigger(object *op, object *cause); 00101 extern int cf_object_query_money(const object *op); 00102 extern int cf_object_query_cost(const object *tmp, object *who, int flag); 00103 extern int cf_object_cast_spell(object *op, object *caster, int dir, object *spell_ob, char *stringarg); 00104 extern void cf_object_learn_spell(object *op, object *spell, int special_prayer); 00105 extern void cf_object_forget_spell(object *op, object *sp); 00106 extern object *cf_object_check_for_spell(object *op, const char *name); 00107 extern int cf_object_cast_ability(object *caster, object *ctoo, int dir, object *sp, char *flags); 00108 extern int cf_object_pay_amount(object *pl, uint64 to_pay); 00109 extern int cf_object_pay_item(object *op, object *pl); 00110 extern void cf_object_set_long_property(object *op, int propcode, long value); 00111 extern int cf_object_transfer(object *op, int x, int y, int randomly, object *originator); 00112 extern int cf_object_move_to(object *op, int x, int y); 00113 extern int cf_object_out_of_map(object *op, int x, int y); 00114 extern void cf_object_drop(object *op, object *author); 00115 extern void cf_object_say(object *op, char *msg); 00116 extern object *cf_object_insert_object(object *op, object *container); 00117 extern object *cf_object_present_archname_inside(object *op, char *whatstr); 00118 extern int cf_object_apply(object *op, object *author, int flags); 00119 extern void cf_object_remove(object *op); 00120 extern void cf_object_free(object *ob); 00121 extern object *cf_create_object(void); 00122 extern object *cf_create_object_by_name(const char *name); 00123 extern object *cf_object_change_map(object *op, mapstruct *m, object *originator, int flag, int x, int y); 00124 extern int cf_object_teleport(object *ob, mapstruct *map, int x, int y); 00125 extern void cf_object_update(object *op, int flags); 00126 extern void cf_object_pickup(object *op, object *what); 00127 extern const char *cf_object_get_key(object *op, const char *keyname); 00128 extern int cf_object_set_key(object *op, const char *keyname, const char *value, int add_key); 00129 extern sint16 cf_object_get_resistance(object *op, int rtype); 00130 extern void cf_object_set_resistance(object *op, int rtype, sint16 value); 00131 extern int cf_object_move(object *op, int dir, object*originator); 00132 extern void cf_object_apply_below(object *pl); 00133 extern object *cf_object_clone(object *op, int clonetype); 00134 extern void cf_object_change_exp(object *op, sint64 exp, const char *skill_name, int flag); 00135 extern int cf_object_change_abil(object *op, object *tmp); 00136 extern int cf_object_user_event(object *op, object *activator, object *third, const char *message, int fix); 00137 /* Maps */ 00138 /*extern void *cf_map_get_property(mapstruct *map, int propcode);*/ 00139 extern sstring cf_map_get_sstring_property(mapstruct *map, int propcode); 00140 extern mapstruct *cf_map_get_map_property(mapstruct *map, int propcode); 00141 extern region *cf_map_get_region_property(mapstruct *map, int propcode); 00142 extern int cf_map_get_int_property(mapstruct *map, int property); 00143 00144 extern void cf_map_set_int_property(mapstruct *map, int propcode, int value); 00145 extern void cf_map_set_string_property(mapstruct *map, int propcode, const char *value); 00146 extern mapstruct *cf_map_get_map(const char *name, int flags); 00147 extern mapstruct *cf_get_empty_map(int sizex, int sizey); 00148 extern mapstruct *cf_map_get_first(void); 00149 extern mapstruct *cf_map_has_been_loaded(const char *name); 00150 extern void cf_map_message(mapstruct *m, const char *msg, int color); 00151 extern object *cf_map_get_object_at(mapstruct *m, int x, int y); 00152 extern object *cf_map_insert_object(mapstruct *where, object *op, int x, int y); 00153 extern object *cf_map_present_arch_by_name(const char *str, mapstruct *map, int nx, int ny); 00154 extern int cf_map_get_flags(mapstruct *oldmap, mapstruct **newmap, sint16 x, sint16 y, sint16 *nx, sint16 *ny); 00155 extern object *cf_map_insert_object_there(object *op, mapstruct *m, object *originator, int flag); 00156 extern int cf_map_get_difficulty(mapstruct *map); 00157 extern int cf_map_get_reset_time(mapstruct *map); 00158 extern int cf_map_get_reset_timeout(mapstruct *map); 00159 extern int cf_map_get_players(mapstruct *map); 00160 extern int cf_map_get_darkness(mapstruct *map); 00161 extern int cf_map_get_light(mapstruct *map); 00162 extern int cf_map_get_width(mapstruct *map); 00163 extern int cf_map_get_height(mapstruct *map); 00164 extern int cf_map_get_enter_x(mapstruct *map); 00165 extern int cf_map_get_enter_y(mapstruct *map); 00166 extern int cf_map_change_light(mapstruct *m, int change); 00167 extern void cf_map_trigger_connected(objectlink *ol, object *cause, int state); 00168 00169 /* Random maps */ 00170 extern int cf_random_map_set_variable(RMParms *rp, const char *buf); 00171 extern mapstruct *cf_random_map_generate(const char *OutFileName, RMParms *RP, char **use_layout); 00172 00173 /* Players */ 00174 extern sstring cf_player_get_title(object *op); 00175 extern void cf_player_set_title(object *op, const char *title); 00176 extern sstring cf_player_get_ip(object *op); 00177 extern object *cf_player_get_marked_item(object *op); 00178 extern void cf_player_set_marked_item(object *op, object *ob); 00179 extern player *cf_player_find(const char *plname); 00180 extern void cf_player_message(object *op, char *txt, int flags); 00181 extern int cf_player_move(player *pl, int dir); 00182 extern partylist *cf_player_get_party(object *op); 00183 extern void cf_player_set_party(object *op, partylist *party); 00184 extern int cf_player_can_pay(object *op); 00185 00186 /* Archetypes */ 00187 extern archetype *cf_archetype_get_first(void); 00188 extern sstring cf_archetype_get_name(archetype *arch); 00189 extern archetype *cf_archetype_get_next(archetype *arch); 00190 extern archetype *cf_archetype_get_more(archetype *arch); 00191 extern archetype *cf_archetype_get_head(archetype *arch); 00192 extern object *cf_archetype_get_clone(archetype *arch); 00193 00194 /* Parties */ 00195 extern partylist *cf_party_get_first(void); 00196 extern const char *cf_party_get_name(partylist *party); 00197 extern partylist *cf_party_get_next(partylist *party); 00198 extern const char *cf_party_get_password(partylist *party); 00199 extern player *cf_party_get_first_player(partylist *party); 00200 extern player *cf_party_get_next_player(partylist *party, player *op); 00201 00202 /* Regions */ 00203 extern region *cf_region_get_first(void); 00204 extern const char *cf_region_get_name(region *reg); 00205 extern region *cf_region_get_next(region *reg); 00206 extern region *cf_region_get_parent(region *reg); 00207 extern const char *cf_region_get_longname(region *reg); 00208 extern const char *cf_region_get_message(region *reg); 00209 00210 /* Friendly list */ 00211 extern object *cf_friendlylist_get_first(void); 00212 extern object *cf_friendlylist_get_next(object *ob); 00213 00214 #ifdef WIN32 00215 00216 struct timezone { 00217 int tz_minuteswest; 00218 int tz_dsttime; 00219 }; 00220 00221 int gettimeofday(struct timeval *time_Info, struct timezone *timezone_Info); 00222 00223 #endif 00224 00225 #endif /* PLUGIN_COMMON_H */