/** * Reloads the quest database. */ void do_reload_quest(void) { memset(&quest_dummy, 0, sizeof(quest_dummy)); questdb->clear(questdb, questdb_free); quest_read_db(); //Update quest data for players, to ensure no entries about removed quests are left over. map_foreachpc(&quest_reload_check_sub); }
void duel_leave (const unsigned int did, struct map_session_data *sd) { char output[256]; // " <- Player %s has left duel --" sprintf (output, msg_txt (375), sd->status.name); clif_disp_message (&sd->bl, output, strlen (output), DUEL_WOS); duel_list[did].members_count--; if (duel_list[did].members_count == 0) { map_foreachpc (duel_leave_sub, did); duel_count--; } sd->duel_group = 0; duel_savetime (sd); clif_map_property (sd, MAPPROPERTY_NOTHING); }
/*-------------------------------------- * Removes a simple instance map *--------------------------------------*/ void instance_del_map(int m) { int i; if( m <= 0 || !map[m].instance_id ) { ShowError("Tried to remove non-existing instance map (%d)\n", m); return; } map_foreachpc(instance_del_load, m); map_foreachinmap(instance_cleanup_sub, m, BL_ALL); if( map[m].mob_delete_timer != INVALID_TIMER ) delete_timer(map[m].mob_delete_timer, map_removemobs_timer); mapindex_removemap( map[m].index ); // Free memory aFree(map[m].cell); aFree(map[m].block); aFree(map[m].block_mob); // Remove from instance for( i = 0; i < instance[map[m].instance_id].num_map; i++ ) { if( instance[map[m].instance_id].map[i] == m ) { instance[map[m].instance_id].num_map--; for( ; i < instance[map[m].instance_id].num_map; i++ ) instance[map[m].instance_id].map[i] = instance[map[m].instance_id].map[i+1]; i = -1; break; } } if( i == instance[map[m].instance_id].num_map ) ShowError("map_instance_del: failed to remove %s from instance list (%s): %d\n", map[m].name, instance[map[m].instance_id].name, m); map_removemapdb(&map[m]); memset(&map[m], 0x00, sizeof(map[0])); /* for it is default and makes it not try to delete a non-existent timer since we did not delete this entry. */ map[m].mob_delete_timer = INVALID_TIMER; }
void duel_showinfo(const unsigned int did, struct map_session_data* sd) { int p=0; char output[256]; if(duel_list[did].max_players_limit > 0) sprintf(output, msg_txt(370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --" did, duel_count, duel_list[did].members_count, duel_list[did].members_count + duel_list[did].invites_count, duel_list[did].max_players_limit); else sprintf(output, msg_txt(371), //" -- Duels: %d/%d, Members: %d/%d --" did, duel_count, duel_list[did].members_count, duel_list[did].members_count + duel_list[did].invites_count); clif->disp_onlyself(sd, output, strlen(output)); map_foreachpc(duel_showinfo_sub, sd, &p); }
/* * Display duel infos, * Number of duely... */ void duel_showinfo(const unsigned int did, struct map_session_data* sd) { int p=0; char output[256]; if(duel_list[did].max_players_limit > 0) sprintf(output, msg_txt(sd,370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --" did, duel_count, duel_list[did].members_count, duel_list[did].members_count + duel_list[did].invites_count, duel_list[did].max_players_limit); else sprintf(output, msg_txt(sd,371), //" -- Duels: %d/%d, Members: %d/%d --" did, duel_count, duel_list[did].members_count, duel_list[did].members_count + duel_list[did].invites_count); clif_messagecolor(&sd->bl, color_table[COLOR_LIGHT_GREEN], output, false, SELF); map_foreachpc(duel_showinfo_sub, sd, &p); }
static int elemental_ai_timer(int tid, unsigned int tick, int id, intptr_t data) { map_foreachpc(elemental_ai_sub_foreachclient,tick); return 0; }