Sync login state on channel change (#323)
This commit is contained in:
@@ -122,7 +122,6 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
|
|||||||
c.setPlayer(player);
|
c.setPlayer(player);
|
||||||
c.setAccID(player.getAccountID());
|
c.setAccID(player.getAccountID());
|
||||||
|
|
||||||
int state = c.getLoginState();
|
|
||||||
boolean allowLogin = true;
|
boolean allowLogin = true;
|
||||||
|
|
||||||
World world = server.getWorld(c.getWorld());
|
World world = server.getWorld(c.getWorld());
|
||||||
@@ -157,13 +156,19 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (state != MapleClient.LOGIN_SERVER_TRANSITION || !allowLogin) {
|
c.lockClient(); // Sync this to prevent wrong login state for double channel changes
|
||||||
c.setPlayer(null);
|
try {
|
||||||
c.announce(MaplePacketCreator.getAfterLoginError(7));
|
int state = c.getLoginState();
|
||||||
return;
|
if (state != MapleClient.LOGIN_SERVER_TRANSITION || !allowLogin) {
|
||||||
|
c.setPlayer(null);
|
||||||
|
c.announce(MaplePacketCreator.getAfterLoginError(7));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
c.updateLoginState(MapleClient.LOGIN_LOGGEDIN);
|
||||||
|
} finally {
|
||||||
|
c.unlockClient();
|
||||||
}
|
}
|
||||||
c.updateLoginState(MapleClient.LOGIN_LOGGEDIN);
|
|
||||||
|
|
||||||
cserv.addPlayer(player);
|
cserv.addPlayer(player);
|
||||||
world.addPlayer(player);
|
world.addPlayer(player);
|
||||||
|
|||||||
Reference in New Issue
Block a user