Go to the documentation of this file.
10 int account_link(
const char *account_name,
const char *player_name);
46 int hit_map(
object *
op,
int dir, uint32_t
type,
int full_hit);
202 int sack_can_hold(
const object *
pl,
const object *sack,
const object *
op, uint32_t nrof);
315 void init(
int argc,
char **argv);
360 int move_ob(
object *
op,
int dir,
object *originator);
361 int transfer_ob(
object *
op,
int x,
int y,
int randomly,
object *originator);
362 int teleport(
object *teleporter, uint8_t tele_type,
object *user);
364 int push_ob(
object *
who,
int dir,
object *pusher);
394 int pets_summon_object(
object *
op,
object *caster,
object *spell_ob,
int dir,
const char *stringarg);
428 int fire_bow(
object *
op,
object *arrow,
int dir,
int wc_mod, int16_t sx, int16_t sy);
429 void fire(
object *
op,
int dir);
430 object *
find_key(
object *
pl,
object *container,
object *door);
440 void cast_dust(
object *
op,
object *throw_ob,
int dir);
475 int write_rune(
object *
op,
object *caster,
object *
spell,
int dir,
const char *runename);
505 int do_skill(
object *
op,
object *part,
object *
skill,
int dir,
const char *
string);
512 int fire_bolt(
object *
op,
object *caster,
int dir,
object *spob);
520 int cast_curse(
object *
op,
object *caster,
object *spell_ob,
int dir);
527 int recharge(
object *
op,
object *caster,
object *spell_ob);
531 int cast_create_food(
object *
op,
object *caster,
object *spell_ob,
int dir,
const char *stringarg);
532 int probe(
object *
op,
object *caster,
object *spell_ob,
int dir,
int level);
537 int cast_wonder(
object *
op,
object *caster,
int dir,
object *spell_ob);
540 int magic_wall(
object *
op,
object *caster,
int dir,
object *spell_ob);
544 int cast_bless(
object *
op,
object *caster,
object *spell_ob,
int dir);
545 int alchemy(
object *
op,
object *caster,
object *spell_ob);
583 int cast_spell(
object *
op,
object *caster,
int dir,
object *spell_ob,
char *stringarg);
618 char const*
newhash(
char const *password);
int SP_level_range_adjust(const object *caster, const object *spob)
player * find_player_socket(const socket_struct *ns)
void command_stack_pop(object *op, const char *params)
void paralyze_living(object *op, int dam)
void command_style_map_info(object *op, const char *params)
int do_skill(object *op, object *part, object *skill, int dir, const char *string)
void apply_changes_to_player(object *pl, object *change, int limit_stats)
int handle_newcs_player(object *op)
void command_dance(object *op, const char *params)
void set_spell_skill(object *op, object *caster, object *spob, object *dest)
int path_to_player(object *mon, object *pl, unsigned mindiff)
int cftimer_find_free_id(void)
void command_shutdown(object *op, const char *params)
const char * party_get_leader(const partylist *party)
void command_cackle(object *op, const char *params)
void command_stack_push(object *op, const char *params)
int fire_bolt(object *op, object *caster, int dir, object *spob)
void tick_the_clock(void)
void pets_terminate_all(object *owner)
void command_northeast(object *op, const char *params)
static struct Command_Line_Options options[]
void command_sound(object *op, const char *params)
void command_bleed(object *op, const char *params)
void command_glare(object *op, const char *params)
void command_delete(object *op, const char *params)
void emergency_save(int flag)
void command_list(object *pl, bool is_dm)
void command_dumpallmaps(object *op, const char *params)
void command_players(object *op, const char *params)
void command_nowiz(object *op, const char *params)
void command_snore(object *op, const char *params)
void command_remove(object *op, const char *params)
void command_dumpfriendlyobjects(object *op, const char *params)
void legacy_move_hole(object *op)
object * find_skill_by_number(object *who, int skillno)
void hiscore_display(object *op, int max, const char *match)
void command_search_items(object *op, const char *params)
void command_wizcast(object *op, const char *params)
void command_growl(object *op, const char *params)
void command_say(object *op, const char *params)
int cast_consecrate(object *op, object *caster, object *spell)
void legacy_animate_trigger(object *op)
int cast_create_food(object *op, object *caster, object *spell_ob, int dir, const char *stringarg)
void command_sulk(object *op, const char *params)
void monster_npc_say(object *npc, const char *cp)
int use_alchemy(object *op)
void command_whistle(object *op, const char *params)
void send_news(const object *op)
void command_cringe(object *op, const char *params)
int monster_can_detect_enemy(object *op, object *enemy, rv_vector *rv)
void command_unarmed_skill(object *op, const char *params)
void command_clap(object *op, const char *params)
int monster_stand_in_light(object *op)
void recursive_roll(object *op, int dir, object *pusher)
void command_cough(object *op, const char *params)
object * find_random_spell_in_ob(object *ob, const char *skill)
based on the size of the this randomly makes land number of spaces randomly lower or higher The default is Note that this is run also based on the the altitude amount will likely be less So if you do something like l and n
void command_spit(object *op, const char *params)
void command_poke(object *op, const char *params)
char const * newhash(char const *password)
void command_shrug(object *op, const char *params)
int plugins_remove_plugin(const char *id)
int plugins_init_plugin(const char *libfile)
void command_time(object *op, const char *params)
int cast_identify(object *op, object *caster, object *spell)
void command_groan(object *op, const char *params)
void remove_locked_door(object *op)
void command_wave(object *op, const char *params)
void party_remove(partylist *party)
int dimension_door(object *op, object *caster, object *spob, int dir)
linked_char * account_get_additional_chars(const char *account_name, const Account_Chars *chars, int *count)
int cast_change_map_lightlevel(object *op, object *spell)
void command_beg(object *op, const char *params)
void command_hiccup(object *op, const char *params)
int perceive_self(object *op)
void command_me(object *op, const char *params)
void command_south(object *op, const char *params)
int pets_should_arena_attack(object *pet, object *owner, object *target)
int get_party_password(object *op, partylist *party)
void do_learn_spell(object *op, object *spell, int special_prayer)
void confuse_living(object *op, object *hitter, int dam)
void clear_skill(object *who)
void make_visible(object *op)
void flush_old_maps(void)
int cast_destruction(object *op, object *caster, object *spell_ob)
int op_on_battleground(object *op, int *x, int *y, archetype **trophy)
void command_kiss(object *op, const char *params)
void command_shout(object *op, const char *params)
void command_thank(object *op, const char *params)
void command_disarm(object *op, const char *params)
int cast_spell(object *op, object *caster, int dir, object *spell_ob, char *stringarg)
partylist * party_find(const char *partyname)
void command_snap(object *op, const char *params)
void command_party(object *op, const char *params)
void command_execute(object *pl, char *command)
void command_wink(object *op, const char *params)
void monster_check_doors(object *op, mapstruct *m, int x, int y)
int tailor_god_spell(object *spellop, object *caster)
char ** account_get_players_for_account(const char *account_name)
void command_recollect(object *op, const char *params)
int detect_curse_on_item(object *pl, object *tmp, object *skill)
void command_cast_spell(object *op, const char *params, int cast_now)
void command_run_stop(object *op, const char *params)
int magic_wall(object *op, object *caster, int dir, object *spell_ob)
void spring_trap(object *trap, object *victim)
void check_bullet(object *op)
void apply_map_builder(object *pl, int dir)
void command_printlos(object *op, const char *params)
void set_map_timeout(mapstruct *oldmap)
int infect_object(object *victim, object *disease, int force)
void do_dump(object *who, object *what)
int cast_cause_disease(object *op, object *caster, object *spell, int dir)
void quest_set_player_state(player *pl, sstring quest_code, int state)
void command_usekeys(object *op, const char *params)
void command_party_rejoin(object *op, const char *params)
void monster_check_earthwalls(object *op, mapstruct *m, int x, int y)
void get_password(object *op)
int write_on_item(object *pl, const char *params, object *skill)
void explode_bullet(object *op)
void command_lock_item(object *op, const char *params)
Crossfire Protocol most of the time after the actual code was already omit certain important and possibly make life miserable any new developer or curious player should be able to find most of the relevant information here If inconsistencies are found or this documentation proves to be consider the latest server side protocol code in the public source code repository as the authoritative reference Introduction If you were ever curious enough to telnet or netcat to a Crossfire chances are you were sorely disappointed While the protocol may seem to use plain text at it actually uses a mix of ASCII and binary data This handbook attempts to document various aspects of the Crossfire protocol As consult the README file to find out how to get in touch with helpful people via mailing and more History the communications plan was set to be a text based system It was up to the server and client to parse these messages and determine what to do These messages were assumed to be line per message At a reasonably early stage of Eric Anderson wrote a then the data itself you could send many data and after the other end could decode these commands This works fairly but I think the creation of numerous sub packets has some performance hit the eutl was not especially well so writing a client for a different platform became more Eric left to work on other products shortly after writing his which didn t really leave anyone with a full understanding of the socket code I have decided to remove the eutl dependency At least one advantage is that having this network related code directly in the client and server makes error handling a bit easier cleaner Packet Format the outside packet method the byte size for the size information is not included here Eutl originally used bytes for the size to bytes seems it makes a least some sense The actual data is something of the nature of the commands listed below It is a text command
non standard information is not specified or uptime this means how long since the executable has been started A particular host may have been running a server for quite a long time
void command_hiscore(object *op, const char *params)
knowledge
DIALOGCHECK MINARGS 1 MAXARGS 1
int use_oratory(object *pl, int dir, object *skill)
void init_ob_methods(void)
void command_invoke(object *op, const char *params)
int move_player(object *op, int dir)
object * races_get_random_monster(const char *race, int level)
void command_twiddle(object *op, const char *params)
int SP_level_duration_adjust(const object *caster, const object *spob)
void command_statistics(object *pl, const char *params)
int cast_curse(object *op, object *caster, object *spell_ob, int dir)
player * get_player(player *p)
void command_northwest(object *op, const char *params)
int singing(object *pl, int dir, object *skill)
static const flag_definition flags[]
void command_diff(object *op, const char *params)
void monster_do_living(object *op)
int change_skill(object *who, object *new_skill, int flag)
void quest_load_definitions(void)
void command_who(object *op, const char *params)
void command_overlay_reset(object *op, const char *params)
linux kernel c mode(defun linux-c-mode() "C mode with adjusted defaults for use with the Linux kernel."(interactive)(c-mode)(c-set-style "K&R")(setq c-basic-offset 8))
void command_throw(object *op, const char *params)
int skill_ident(object *pl, object *skill)
void destroy_object(object *op)
int cast_raise_dead_spell(object *op, object *caster, object *spell, int dir, const char *arg)
void set_first_map(object *op)
void command_puke(object *op, const char *params)
void free_knowledge(void)
int write_mark(object *op, object *spell, const char *msg)
void shuffle_attack(object *op)
int cast_polymorph(object *op, object *caster, object *spell_ob, int dir)
int hit_map(object *op, int dir, uint32_t type, int full_hit)
object * get_nearest_criminal(object *mon)
void rod_adjust(object *rod)
the faster the spell may be cast there are several other common only the caster may be affected by the spell The most common spell range is that of touch This denotes that the caster much touch the recipient of the spell in order to release the spell monster
void command_debug(object *op, const char *params)
int account_link(const char *account_name, const char *player_name)
int find_traps(object *pl, object *skill)
void scroll_failure(object *op, int failure, int power)
void plugins_display_list(object *op)
void cleanupPlugins(void)
void command_whereami(object *op, const char *params)
void receive_play_again(object *op, char key)
void set_player_socket(player *p, socket_struct *ns)
int fire_arch_from_position(object *op, object *caster, int16_t x, int16_t y, int dir, object *spell)
Almost all the spell_ *base png files are taken from JXClient s source
void command_overlay_save(object *op, const char *params)
int apply_manual(object *op, object *tmp, int aflag)
void move_player_attack(object *op, int dir)
void apply_by_living_below(object *pl)
int ok_to_put_more(mapstruct *m, int16_t x, int16_t y, object *op, uint32_t immune_stop)
void command_arrest(object *op, const char *params)
void add_server_collect_hooks()
void party_obsolete_parties(void)
void command_hug(object *op, const char *params)
void load_races(BufferReader *reader, const char *filename)
void command_face(object *op, const char *params)
void command_rename_item(object *op, const char *params)
void hiscore_check(object *op, int quiet)
void key_confirm_quit(object *op, char key)
void command_petmode(object *op, const char *params)
player * add_player(socket_struct *ns, int flags)
void command_rules(object *op, const char *params)
void command_grin(object *op, const char *params)
object * hit_with_arrow(object *op, object *victim)
object * get_nearest_player(object *mon)
void command_stack_clear(object *op, const char *params)
void cast_dust(object *op, object *throw_ob, int dir)
void command_nod(object *op, const char *params)
void pets_move_golem(object *op)
int cast_detection(object *op, object *caster, object *spell)
Plugin animator file specs[Config] name
void cast_magic_storm(object *op, object *tmp, int lvl)
void command_west(object *op, const char *params)
int pets_summon_object(object *op, object *caster, object *spell_ob, int dir, const char *stringarg)
int cast_light(object *op, object *caster, object *spell, int dir)
void command_quit(object *op, const char *params)
void dragon_ability_gain(object *who, int atnr, int level)
void party_join(object *op, partylist *party)
void command_rskill(object *pl, const char *params)
pluglist shows those as well as a short text describing each the list will simply appear empty The keyword for the Python plugin is Python plugout< keyword > Unloads a given identified by its _keyword_ So if you want to unload the Python you need to do plugout Python plugin< libname > Loads a given whose _filename_ is libname So in the case of you d have to do a plugin cfpython so Note that all filenames are relative to the default plugin it tries to load all available files in the SHARE plugins directory as plugin libraries It first displays the Initializing the plugin has the opportunity to signal itself by a message on the console Then the server displays an informative message containing both the plugin content and its keyword For the Python the standard load process thus GreenGoblin When a plugin has been it can request to be warned whenever a global event and are named freely by the developer If the directory doesn t nothing will happen< event name > can be login
void account_password(char *buf, int len, socket_struct *ns)
void knowledge_read(player *pl, object *book)
void store_spell_expiry(object *spell)
int learn_skill(object *pl, object *scroll)
void spell_effect(object *spob, int x, int y, mapstruct *map, object *originator)
void remove_door(object *op)
static event_registration m
void set_darkness_map(mapstruct *m)
void knowledge_send_info(socket_struct *ns)
void command_malloc(object *op, const char *params)
partylist * party_get_first(void)
void apply_auto_fix(mapstruct *m)
void command_banish(object *op, const char *params)
object * monster_find_nearest_enemy(object *npc, object *owner)
void give_initial_items(object *pl, treasurelist *items)
void command_inventory(object *op, const char *params)
void command_kill_pets(object *op, const char *params)
int teleport(object *teleporter, uint8_t tele_type, object *user)
int cast_heal(object *op, object *caster, object *spell, int dir)
int use_skill(object *op, const char *string)
void command_accountpasswd(object *op, const char *params)
int slow_living_by(object *op, const int speed_penalty)
void command_forget_spell(object *op, const char *params)
int spell_find_dir(mapstruct *m, int x, int y, object *exclude)
void command_mark(object *op, const char *params)
int pick_lock(object *pl, int dir, object *skill)
object * pets_get_enemy(object *pet, rv_vector *rv)
void command_teleport(object *op, const char *params)
void command_unregister(command_registration command)
void command_uskill(object *pl, const char *params)
void send_rules(const object *op)
int free_no_drop(object *op)
int party_confirm_password(const partylist *party, const char *password)
void enter_player_savebed(object *op)
const char * determine_god(object *op)
void drop(object *op, object *tmp)
void play_again(object *op)
void command_dump(object *op, const char *params)
int playername_ok(const char *cp)
int remove_curse(object *op, object *caster, object *spell)
void command_take(object *op, const char *params)
void fire(object *op, int dir)
object * monster_find_throw_ob(object *op)
int friendly_fire(object *op, object *hitter)
int mood_change(object *op, object *caster, object *spell)
void blind_living(object *op, object *hitter, int dam)
int cftimer_destroy(int id)
int move_ob(object *op, int dir, object *originator)
void command_north(object *op, const char *params)
void command_save(object *op, const char *params)
void command_mon_aggr(object *op, const char *params)
bool map_can_reset(const mapstruct *map, long current_time)
int check_race_and_class(living *stats, archetype *race, archetype *opclass)
void monster_do_say(const mapstruct *map, const char *message)
void check_login(object *op, const char *password)
void command_dropall(object *op, const char *params)
int face_player(object *op, int dir)
const char * account_get_account_for_char(const char *charname)
int remove_trap(object *op, object *skill)
void check_physically_infect(object *victim, object *hitter)
int64_t calc_skill_exp(const object *who, const object *op, const object *skill)
void remove_unpaid_objects(object *op, object *env, int free_items)
void command_ssdumptable(object *op, const char *params)
void account_char_free(Account_Chars *chars)
void roll_stats(object *op)
int set_object_face_main(object *op)
void examine_monster(object *op, object *tmp, int level)
void party_leave(object *op)
void command_listen(object *op, const char *params)
void cone_drop(object *op)
void knowledge_add_probe_monster(object *op, object *mon)
int account_remove_player(const char *account_name, const char *player_name)
int legal_range(object *op, int r)
void command_loadplugin(object *op, const char *params)
void command_scream(object *op, const char *params)
bool player_can_find(object *op, object *ob)
void display_motd(const object *op)
int apply_container(object *op, object *sack, int aflags)
int transport_can_hold(const object *transport, const object *op, int nrof)
void move_symptom(object *symptom)
void command_follow(object *op, const char *params)
void process_events(void)
int create_bomb(object *op, object *caster, int dir, object *spell)
void enter_player_maplevel(object *op)
void server_main(int argc, char *argv[])
void command_strut(object *op, const char *params)
void delete_character(const char *name)
void command_chuckle(object *op, const char *params)
int should_director_abort(const object *op, const object *victim)
void command_unloadplugin(object *op, const char *params)
object * lookup_spell_by_name(object *op, const char *spname)
void command_think(object *op, const char *params)
void polymorph(object *op, object *who, int level)
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single attempt to find a narrower hallway so that you are not being attacked from all sides Charging into a room full of Beholders for instance would not be open the door and fight them one at a time For there are several maps designed for them Find these areas and clear them out All throughout these a player can find signs and books which they can read by stepping onto them and hitting A to apply the book sign These messages will help the player to learn the system One more always keep an eye on your food If your food drops to your character will soon so BE CAREFUL ! NPCs Non Player Character are special monsters which have intelligence Players may be able to interact with these monsters to help solve puzzles and find items of interest To speak with a monster you suspect to be a simply move to an adjacent square to them and push the double ie Enter your message
void do_goto(object *op, const char *name, int x, int y)
int cast_create_town_portal(object *op, object *caster, object *spell)
void command_help(object *op, const char *params)
void show_skills(object *op, const char *search)
int quest_was_completed(player *pl, sstring quest_code)
void counterspell(object *op, int dir)
void party_set_password(partylist *party, const char *password)
void command_examine(object *op, const char *params)
int trap_disarm(object *disarmer, object *trap, int risk, object *skill)
with a maximum of six This is not so if you are wearing plate you receive no benefit Armour is additive with all the supplementry forms of which means that it lasts until the next semi permanent spell effect is cast upon the character spell
void legacy_remove_force(object *op)
void leave(player *pl, int draw_exit)
void move_firewall(object *op)
void command_free(object *op, const char *params)
int account_new(const char *account_name, const char *account_password)
int create_aura(object *op, object *caster, object *spell)
void command_cry(object *op, const char *params)
int identify_object_with_skill(object *tmp, object *pl, object *skill, int print_on_success)
void fix_stopped_item(object *op, mapstruct *map, object *originator)
int apply_can_apply_object(const object *who, const object *op)
int caster_level(const object *caster, const object *spell)
object * fix_stopped_arrow(object *op)
void command_kick(object *op, const char *params)
void monster_communicate(object *op, const char *txt)
void command_pout(object *op, const char *params)
void command_orcknuckle(object *op, const char *params)
void knowledge_item_can_be_used_alchemy(object *op, const object *item)
void command_search(object *op, const char *params)
void command_abil(object *op, const char *params)
void command_flip(object *op, const char *params)
int pray(object *pl, object *skill)
int move_to(object *op, int x, int y)
void command_possess(object *op, const char *params)
object * find_key(object *pl, object *container, object *door)
void command_language(object *op, const char *params)
void command_dumpallobjects(object *op, const char *params)
int skill_throw(object *op, object *part, int dir, object *skill)
int16_t SP_level_spellpoint_cost(object *caster, object *spell, int flags)
void cftimer_process_timers(void)
void get_attack_message_for_attack_type(int dam, uint8_t atm_type, const char *victim_name, char *buf1, char *buf2)
int become_follower(object *op, const object *new_god)
void list_players(object *op, region *reg, partylist *party)
int account_is_logged_in(const char *name)
int detect_magic_on_item(object *pl, object *tmp, object *skill)
void command_giggle(object *op, const char *params)
partylist * party_form(object *op, const char *partyname)
void regenerate_rod(object *rod)
void command_hide(object *op, const char *params)
void command_accuse(object *op, const char *params)
void accounts_clear(void)
void command_stay(object *op, const char *params)
int push_ob(object *who, int dir, object *pusher)
object * find_skill_by_name(object *who, const char *name)
void command_dumpmap(object *op, const char *params)
static std::shared_ptr< inja::Environment > env
object * drop_object(object *op, object *tmp, uint32_t nrof)
void command_settings(object *op, const char *ignored)
void command_purge_quest_definitions(object *op, const char *param)
int checkbanned(const char *login, const char *host)
int SP_level_wc_adjust(const object *caster, const object *spob)
void receive_player_name(object *op, const char *name)
int cast_bless(object *op, object *caster, object *spell_ob, int dir)
void command_east(object *op, const char *params)
void command_dumpbelow(object *op, const char *params)
void command_peaceful(object *op, const char *params)
int transfer_ob(object *op, int x, int y, int randomly, object *originator)
void monster_check_apply_all(object *monster)
void command_wimpy(object *op, const char *params)
void pets_move(object *ob)
void quest_first_player_save(player *pl)
partylist * party_get_next(const partylist *party)
int move_object(object *op, int dir)
int trap_show(object *trap, object *where)
void free_quest_definitions(void)
void dead_player(object *op)
int probe(object *op, object *caster, object *spell_ob, int dir, int level)
void key_roll_stat(object *op, char key)
void command_bow(object *op, const char *params)
void command_drop(object *op, const char *params)
void command_shake(object *op, const char *params)
void command_use(object *op, const char *params)
void command_fire_stop(object *op, const char *params)
void pets_attempt_follow(object *for_owner, int force)
void command_motd(object *op, const char *params)
void command_loadtest(object *op, const char *params)
int apply_race_and_class(object *op, archetype *race, archetype *opclass, living *stats)
void command_smile(object *op, const char *params)
int monster_can_see_enemy(object *op, object *enemy)
void command_learn_special_prayer(object *op, const char *params)
int apply_auto(object *op)
void command_applymode(object *op, const char *params)
int swap_map(mapstruct *map)
void command_news(object *op, const char *params)
void command_quest(object *op, const char *params)
int hideability(object *ob)
void command_whereabouts(object *op, const char *params)
void apply_handle_yield(object *tmp)
void command_afk(object *op, const char *params)
void command_summon(object *op, const char *params)
void command_knowledge(object *pl, const char *params)
void clean_tmp_files(void)
void command_reset(object *op, const char *params)
const char * get_reply_text_own(reply_type rt)
void command_learn_spell(object *op, const char *params)
int alchemy(object *op, object *caster, object *spell_ob)
int animate_weapon(object *op, object *caster, object *spell, int dir)
void command_version(object *op, const char *params)
int SP_level_dam_adjust(const object *caster, const object *spob)
void command_frown(object *op, const char *params)
void command_toggle_shout(object *op, const char *params)
const char * party_get_password(const partylist *party)
void command_snicker(object *op, const char *params)
Crossfire Protocol most of the time after the actual code was already omit certain important and possibly make life miserable any new developer or curious player should be able to find most of the relevant information here If inconsistencies are found or this documentation proves to be consider the latest server side protocol code in the public source code repository as the authoritative reference Introduction If you were ever curious enough to telnet or netcat to a Crossfire chances are you were sorely disappointed While the protocol may seem to use plain text at it actually uses a mix of ASCII and binary data This handbook attempts to document various aspects of the Crossfire protocol As consult the README file to find out how to get in touch with helpful people via mailing and more History the communications plan was set to be a text based system It was up to the server and client to parse these messages and determine what to do These messages were assumed to be line per message At a reasonably early stage of Eric Anderson wrote a then the data itself you could send many data and after the other end could decode these commands This works fairly but I think the creation of numerous sub packets has some performance hit the eutl was not especially well so writing a client for a different platform became more Eric left to work on other products shortly after writing his which didn t really leave anyone with a full understanding of the socket code I have decided to remove the eutl dependency At least one advantage is that having this network related code directly in the client and server makes error handling a bit easier cleaner Packet Format the outside packet method the byte size for the size information is not included here Eutl originally used bytes for the size to me
void command_reply(object *op, const char *params)
int move_disease(object *disease)
void command_strings(object *op, const char *params)
int apply_check_weapon_power(const object *who, int improves)
void command_yawn(object *op, const char *params)
void enter_exit(object *op, object *exit_ob)
void move_player_mover(object *op)
object * check_spell_known(object *op, const char *name)
void command_setgod(object *op, const char *params)
void command_pickup(object *op, const char *params)
const typedef char * sstring
void roll_again(object *op)
void monster_npc_call_help(object *op)
void command_skills(object *op, const char *params)
void party_send_message(object *op, const char *message)
int summon_hostile_monsters(object *op, int n, const char *monstername)
void receive_player_password(object *op, const char *password)
int cast_create_obj(object *op, object *new_op, int dir)
void command_patch(object *op, const char *params)
void command_dmtell(object *op, const char *params)
int check_pick(object *op)
void command_rotateshoottype(object *op, const char *params)
int pets_summon_golem(object *op, object *caster, int dir, object *spob)
void command_shiver(object *op, const char *params)
int apply_by_living(object *pl, object *op, int aflag, int quiet)
void register_all_ob_types(void)
void spell_failure(object *op, int failure, int power, object *skill)
void command_stats(object *op, const char *params)
void pets_follow_owner(object *ob, object *owner)
void init(int argc, char **argv)
void command_lick(object *op, const char *params)
int dispel_rune(object *op, object *skill, int dir)
object * monster_check_enemy(object *npc, rv_vector *rv)
int hit_player(object *op, int dam, object *hitter, uint32_t type, int full_hit)
void command_chat(object *op, const char *params)
void do_hidden_move(object *op)
void command_southwest(object *op, const char *params)
void do_harvest(object *pl, int dir, object *skill)
int apply_special(object *who, object *op, int aflags)
void command_bounce(object *op, const char *params)
void command_smirk(object *op, const char *params)
void command_resistances(object *op, const char *params)
int cast_wonder(object *op, object *caster, int dir, object *spell_ob)
int player_arrest(object *who)
player * find_player_partial_name(const char *plname)
int account_change_password(const char *account_name, const char *current_password, const char *new_password)
void command_slap(object *op, const char *params)
void check_spell_expiry(object *spell)
void command_stack_list(object *op, const char *params)
void command_fire(object *op, const char *params)
int fire_bow(object *op, object *arrow, int dir, int wc_mod, int16_t sx, int16_t sy)
Player Stats effect how well a character can survie and interact inside the crossfire world This section discusses the various stats
void change_object(object *op)
void command_invisible(object *op, const char *params)
void meditate(object *pl, object *skill)
int steal(object *op, int dir, object *skill)
void command_purge_quest(object *op, const char *param)
int knowledge_player_knows(const player *pl, const char *knowledge)
void account_char_add(Account_Chars *chars, player *pl)
void command_run(object *op, const char *params)
void command_freeze(object *op, const char *params)
void quest_start(player *pl, sstring quest_code, int state)
player * find_player_options(const char *plname, int options, const mapstruct *map)
void knowledge_give(player *pl, const char *marker, const object *book)
int save_player(object *op, int flag)
int monster_move(object *op)
void command_maps(object *op, const char *params)
object * stop_item(object *op)
void command_dumpabove(object *op, const char *params)
bool can_follow(object *op, player *other)
void(* command_function_extra)(object *op, const char *params, const char *extra)
void command_dumpallarchetypes(object *op, const char *params)
int fire_swarm(object *op, object *caster, object *spell, int dir)
command_registration command_register(const char *name, uint8_t type, command_function func, float time)
void process_object(object *op)
void command_speed(object *op, const char *params)
void player_set_state(player *pl, uint8_t state)
int cure_disease(object *sufferer, object *caster, sstring skill)
int trap_see(object *op, object *trap)
int reflwall(mapstruct *m, int x, int y, object *sp_op)
void command_fix_me(object *op, const char *params)
void inventory(object *op, object *inv)
SockList * player_get_delayed_buffer(player *pl)
int player_can_view(object *pl, object *op)
void do_forget_spell(object *op, const char *spell)
int cast_change_ability(object *op, object *caster, object *spell_ob, int dir, int silent)
uint64_t command_registration
bool check_password(const char *typed, const char *crypted)
void do_some_living(object *op)
void command_dm(object *op, const char *params)
void command_addexp(object *op, const char *params)
void command_goto(object *op, const char *params)
int object_teleport(object *op, mapstruct *map, int x, int y)
void command_empty(object *op, const char *params)
void command_cointoss(object *op, const char *params)
int cast_word_of_recall(object *op, object *caster, object *spell_ob)
void command_tell(object *op, const char *params)
command_registration command_register_extra(const char *name, const char *extra, uint8_t type, command_function_extra func, float time)
void command_showpets(object *op, const char *params)
Account_Chars * account_char_load(const char *account_name)
void key_change_class(object *op, char key)
void receive_party_password(object *op, const char *password)
int account_check_string(const char *str)
int write_rune(object *op, object *caster, object *spell, int dir, const char *runename)
void knowledge_send_known(player *pl)
No space after the left no space before the right paren Comma right after the formal param
void check_active_maps(void)
void account_char_remove(Account_Chars *chars, const char *pl_name)
void drain_rod_charge(object *rod)
int attack_ob(object *op, object *hitter)
int cast_create_missile(object *op, object *caster, object *spell, int dir, const char *stringarg)
int stand_near_hostile(object *who)
void command_gsay(object *op, const char *params)
object * find_target_for_friendly_spell(object *op, int dir)
void command_mapinfo(object *op, const char *params)
void command_gasp(object *op, const char *params)
void command_brace(object *op, const char *params)
int cast_transfer(object *op, object *caster, object *spell, int dir)
void confirm_password(object *op)
void command_body(object *op, const char *params)
int account_login(const char *account_name, const char *account_password)
void command_passwd(object *pl, const char *params)
int hide(object *op, object *skill)
void(* command_function)(object *op, const char *params)
int verify_player(const char *name, char *password)
void pets_control_golem(object *op, int dir)
int check_name(player *me, const char *name)
void command_archs(object *op, const char *params)
void command_sniff(object *op, const char *params)
int cast_item_curse_or_bless(object *op, object *spell_ob)
void save_throw_object(object *op, uint32_t type, object *originator)
void command_insert_into(object *op, const char *params)
int cast_smite_spell(object *op, object *caster, int dir, object *spell)
void player_unready_range_ob(player *pl, object *ob)
void account_char_save(Account_Chars *chars)
int cast_earth_to_dust(object *op, object *caster, object *spell_ob)
int recharge(object *op, object *caster, object *spell_ob)
void pick_up(object *op, object *alt)
int makes_invisible_to(object *pl, object *mon)
void examine(object *op, object *tmp)
int sack_can_hold(const object *pl, const object *sack, const object *op, uint32_t nrof)
void kill_player(object *op, const object *killer)
int min_casting_level(const object *caster, const object *spell)
void command_apply(object *op, const char *params)
void command_cast(object *op, const char *params)
object * find_applied_skill_by_name(const object *op, const char *name)
void command_listplugins(object *op, const char *params)
void command_bowmode(object *op, const char *params)
object * find_marked_object(object *op)
void command_title(object *op, const char *params)
void drain_wand_charge(object *wand)
void command_wizpass(object *op, const char *params)
void knowledge_process_incremental(void)
void command_create(object *op, const char *params)
void apply_builder_remove(object *pl, int dir)
int cast_invisible(object *op, object *caster, object *spell_ob)
int monster_compute_path(object *source, object *target, int default_dir)
void command_dmhide(object *op, const char *params)
int cast_cone(object *op, object *caster, int dir, object *spell)
void command_blush(object *op, const char *params)
int is_true_undead(object *op)
archetype * determine_holy_arch(const object *god, const char *type)
const char * account_exists(const char *account_name)
void command_sneeze(object *op, const char *params)
void command_burp(object *op, const char *params)
void account_logout(const char *account_name)
void quest_send_initial_states(player *pl)
void put_object_in_sack(object *op, object *sack, object *tmp, uint32_t nrof)
int quest_get_player_state(player *pl, sstring quest_code)
void skill_attack(object *tmp, object *pl, int dir, const char *string, object *skill)
int cftimer_create(int id, long delay, object *ob, int mode)
int jump(object *pl, int dir, object *skill)
void pray_at_altar(object *pl, object *altar, object *skill)
void command_southeast(object *op, const char *params)
void get_name(object *op)
void command_laugh(object *op, const char *params)
void knowledge_first_player_save(player *pl)
int players_on_map(mapstruct *m, int show_all)
player * find_player(const char *plname)
void command_sigh(object *op, const char *params)