|
@@ -556,6 +556,7 @@ int pc_isequip(struct map_session_data *sd,int n)
|
|
|
*/
|
|
|
int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_time, struct mmo_charstatus *st)
|
|
|
{
|
|
|
+ TBL_PC* old_sd;
|
|
|
int i;
|
|
|
unsigned long tick = gettick();
|
|
|
|
|
@@ -572,6 +573,17 @@ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_t
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+ if( (old_sd=map_id2sd(sd->status.account_id)) != NULL ){
|
|
|
+ if (old_sd->state.finalsave || !old_sd->state.auth)
|
|
|
+ ; //Previous player is not done loading, No need to kick.
|
|
|
+ else if (old_sd->fd)
|
|
|
+ clif_authfail_fd(old_sd->fd, 2); // same id
|
|
|
+ else
|
|
|
+ map_quit(old_sd);
|
|
|
+ clif_authfail_fd(sd->fd, 8); // still recognizes last connection
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
if (map_id2sd(st->account_id) != NULL)
|
|
|
{ //Somehow a second connection has managed to go through the double-connection
|
|
|
//check in clif_parse_WantToConnection! [Skotlex]
|