Skip to content

Commit

Permalink
Fix detecting in api server if player reconnected from map to char se…
Browse files Browse the repository at this point in the history
…rver
  • Loading branch information
4144 committed Apr 11, 2023
1 parent 5a9f832 commit efb1ce4
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 3 deletions.
15 changes: 13 additions & 2 deletions src/api/aclif.c
Original file line number Diff line number Diff line change
Expand Up @@ -815,8 +815,19 @@ static void aclif_add_online_char(int account_id, int char_id)
ShowError("Cant set char online. Account not logged in: %d\n", account_id);
return;
}
user->char_id = char_id;
ShowInfo("test connect char: %d, %d\n", account_id, char_id);
if (char_id == 0) {
// reconnect to char server after leave map server
if (user->char_id == 0) {
ShowError("Cant set char online. Char was not logged in: %d\n", account_id);
return;
}
} else {
// probably first login
user->char_id = char_id;
}
if (user->remove_tick != 0)
user->remove_tick = 0;
ShowInfo("test connect char: %d, %d (%d)\n", account_id, char_id, user->char_id);
}

static struct DBData aclif_create_online_login_data(union DBKey key, va_list args)
Expand Down
6 changes: 6 additions & 0 deletions src/login/lapiif.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ static void lapiif_connect_user(struct login_session_data *sd, const unsigned ch
}
}

static void lapiif_connect_user_char(int char_server, int account_id)
{
lapiif->set_char_online(account_id, 0);
}

/// Initializes a server structure.
static void lapiif_server_init(int id)
{
Expand Down Expand Up @@ -338,6 +343,7 @@ void lapiif_defaults(void)
lapiif->init = lapiif_init;
lapiif->final = lapiif_final;
lapiif->connect_user = lapiif_connect_user;
lapiif->connect_user_char = lapiif_connect_user_char;
lapiif->disconnect_user = lapiif_disconnect_user;
lapiif->server_init = lapiif_server_init;
lapiif->server_destroy = lapiif_server_destroy;
Expand Down
1 change: 1 addition & 0 deletions src/login/lapiif.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ struct lapiif_interface {
void (*final) (void);
void (*connect_user) (struct login_session_data *sd, const unsigned char* auth_token);
void (*disconnect_user) (int account_id);
void (*connect_user_char) (int char_server, int account_id);
void (*server_init) (int id);
void (*server_destroy) (int id);
void (*server_reset) (int id);
Expand Down
3 changes: 2 additions & 1 deletion src/login/login.c
Original file line number Diff line number Diff line change
Expand Up @@ -662,7 +662,8 @@ static void login_fromchar_parse_unban(int fd, int id, const char *const ip)
static void login_fromchar_parse_account_online(int fd, int id)
{
login->add_online_user(id, RFIFOL(fd,2));
RFIFOSKIP(fd,6);
lapiif->connect_user_char(id, RFIFOL(fd, 2));
RFIFOSKIP(fd, 6);
}

static void login_fromchar_parse_account_offline(int fd)
Expand Down

0 comments on commit efb1ce4

Please sign in to comment.