diff options
Diffstat (limited to 'src/char')
-rw-r--r-- | src/char/char.c | 7 | ||||
-rw-r--r-- | src/char/char.h | 2 | ||||
-rw-r--r-- | src/char/geoip.c | 5 | ||||
-rw-r--r-- | src/char/int_guild.c | 2 | ||||
-rw-r--r-- | src/char/int_party.c | 7 |
5 files changed, 15 insertions, 8 deletions
diff --git a/src/char/char.c b/src/char/char.c index 37db77300..66bfdd4ee 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -120,8 +120,6 @@ char char_achievement_db[256] = "char_achievements"; static struct char_interface char_s; struct char_interface *chr; -char db_path[1024] = "db"; - static char wisp_server_name[NAME_LENGTH] = "Server"; static char login_ip_str[128]; static uint32 login_ip = 0; @@ -5792,7 +5790,8 @@ static bool char_config_read_database(const char *filename, const struct config_ if (autosave_interval <= 0) autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; } - libconfig->setting_lookup_mutable_string(setting, "db_path", db_path, sizeof(db_path)); + libconfig->setting_lookup_mutable_string(setting, "db_path", chr->db_path, sizeof(chr->db_path)); + libconfig->set_db_path(chr->db_path); libconfig->setting_lookup_bool_real(setting, "log_char", &chr->enable_logs); return true; } @@ -6454,6 +6453,8 @@ void char_defaults(void) chr = &char_s; memset(chr->server, 0, sizeof(chr->server)); + sprintf(chr->db_path, "db"); + libconfig->set_db_path(chr->db_path); chr->login_fd = 0; chr->char_fd = -1; diff --git a/src/char/char.h b/src/char/char.h index 5de3e2a80..3b8bcff2e 100644 --- a/src/char/char.h +++ b/src/char/char.h @@ -124,6 +124,8 @@ struct char_interface { bool show_save_log; ///< Show loading/saving messages. bool enable_logs; ///< Whether to log char server operations. + char db_path[256]; //< Database directory (db) + int (*waiting_disconnect) (int tid, int64 tick, int id, intptr_t data); int (*delete_char_sql) (int char_id); struct DBData (*create_online_char_data) (union DBKey key, va_list args); diff --git a/src/char/geoip.c b/src/char/geoip.c index 2870e5f0c..67c057aff 100644 --- a/src/char/geoip.c +++ b/src/char/geoip.c @@ -23,6 +23,7 @@ #include "geoip.h" #include "common/cbasetypes.h" +#include "common/conf.h" #include "common/memmgr.h" #include "common/showmsg.h" @@ -141,7 +142,9 @@ static void geoip_init(void) geoip->data->active = true; - db = fopen("./db/GeoIP.dat","rb"); + char file_path[256]; + libconfig->format_db_path("GeoIP.dat", file_path, sizeof(file_path)); + db = fopen(file_path, "rb"); if (db == NULL) { ShowError("geoip_readdb: Error reading GeoIP.dat!\n"); geoip->final(false); diff --git a/src/char/int_guild.c b/src/char/int_guild.c index 87cb3bee0..3e9d50f8d 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -747,7 +747,7 @@ static int inter_guild_sql_init(void) inter_guild->castle_db = idb_alloc(DB_OPT_RELEASE_DATA); //Read exp file - sv->readdb("db", DBPATH"exp_guild.txt", ',', 1, 1, MAX_GUILDLEVEL, inter_guild->exp_parse_row); + sv->readdb(chr->db_path, DBPATH"exp_guild.txt", ',', 1, 1, MAX_GUILDLEVEL, inter_guild->exp_parse_row); timer->add_func_list(inter_guild->save_timer, "inter_guild->save_timer"); timer->add(timer->gettick() + 10000, inter_guild->save_timer, 0, 0); diff --git a/src/char/int_party.c b/src/char/int_party.c index c27d708f2..bf680c816 100644 --- a/src/char/int_party.c +++ b/src/char/int_party.c @@ -118,7 +118,6 @@ static void inter_party_calc_state(struct party_data *p) p->party.exp = 0; //Set off even share. mapif->party_optionchanged(0, &p->party, 0, 0); } - return; } // Save party to mysql @@ -472,8 +471,11 @@ static bool inter_party_leave(int party_id, int account_id, int char_id) mapif->party_withdraw(party_id, account_id, char_id); j = p->party.member[i].lv; - if (p->party.member[i].online > 0) + if (p->party.member[i].online > 0) { + p->party.member[i].online = 0; p->party.count--; + } + inter_party->tosql(&p->party, PS_DELMEMBER, i); memset(&p->party.member[i], 0, sizeof(struct party_member)); p->size--; if (j == p->min_lv || j == p->max_lv || p->family) { @@ -482,7 +484,6 @@ static bool inter_party_leave(int party_id, int account_id, int char_id) } if (inter_party->check_empty(p) == 0) { - inter_party->tosql(&p->party, PS_DELMEMBER, i); mapif->party_info(-1, &p->party, 0); } return true; |