Source: Lucera 1.7
Здравствуйте, если кто в курсе, подскажите / натолкните на мысль, куда копать.
Суть проблемы: если чара выкидывает с игрового сервера, он не может зайти определенное время. Логин сервер пишет: Аккаунт уже кем-то используется и на этом процесс замирает. Минут через 10-30 пускает.
Так понимаю за сообщение что аккаунт уже используется отвечают эти два кейса:
[SRC="java"]
case ALREADY_ON_LS:
L2LoginClient oldClient;
if ((oldClient = lc.getAuthedClient(_user)) != null)
{
// kick the other client
oldClient.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
lc.removeAuthedLoginClient(_user);
}
// kick also current client
client.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
break;
case ALREADY_ON_GS:
GameServerInfo gsi;
if ((gsi = lc.getAccountOnGameServer(_user)) != null)
{
client.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
// kick from there
if (gsi.isAuthed())
gsi.getGameServerThread().kickPlayer(_user);
}
break;
[/SRC]
Метод GameServerThread: kickPlayer
[SRC="java"] public void kickPlayer(String account)
{
KickPlayer kp = new KickPlayer(account);
sendPacket(kp);
}
[/SRC]
То есть по идее, игрока должна было викинуть с сервера. Но я так понимаю, что логин сервер в себе его еще как-то, где-то хранит. Или возможно его не полностью с сервера кикает. Если перезагрузить логин сервер, вновь пускает без проблем, тех кого не пускало. Подозрение больше на логин сервер чем на гейм.
Добавлено через 9 часов 53 минуты
Проблему решил.
НЕ актуально.
Спасибо.
Здравствуйте, если кто в курсе, подскажите / натолкните на мысль, куда копать.
Суть проблемы: если чара выкидывает с игрового сервера, он не может зайти определенное время. Логин сервер пишет: Аккаунт уже кем-то используется и на этом процесс замирает. Минут через 10-30 пускает.
Так понимаю за сообщение что аккаунт уже используется отвечают эти два кейса:
[SRC="java"]
case ALREADY_ON_LS:
L2LoginClient oldClient;
if ((oldClient = lc.getAuthedClient(_user)) != null)
{
// kick the other client
oldClient.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
lc.removeAuthedLoginClient(_user);
}
// kick also current client
client.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
break;
case ALREADY_ON_GS:
GameServerInfo gsi;
if ((gsi = lc.getAccountOnGameServer(_user)) != null)
{
client.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
// kick from there
if (gsi.isAuthed())
gsi.getGameServerThread().kickPlayer(_user);
}
break;
[/SRC]
Метод GameServerThread: kickPlayer
[SRC="java"] public void kickPlayer(String account)
{
KickPlayer kp = new KickPlayer(account);
sendPacket(kp);
}
[/SRC]
То есть по идее, игрока должна было викинуть с сервера. Но я так понимаю, что логин сервер в себе его еще как-то, где-то хранит. Или возможно его не полностью с сервера кикает. Если перезагрузить логин сервер, вновь пускает без проблем, тех кого не пускало. Подозрение больше на логин сервер чем на гейм.
Добавлено через 9 часов 53 минуты
Проблему решил.
НЕ актуально.
Спасибо.