package handling.cashshop.handler; import client.MapleCharacter; import client.MapleClient; import handling.cashshop.CashShopServer; import handling.channel.ChannelServer; import handling.login.LoginServer; import handling.world.CharacterTransfer; import handling.world.World; import java.util.List; import org.apache.log4j.Logger; import tools.FileoutputUtil; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; import tools.packet.MTSCSPacket; public class CashShopOperation { private static final Logger log = Logger.getLogger(CashShopOperation.class); /** * 玩家离开商城 * @param slea * @param c * @param chr */ public static void LeaveCS(SeekableLittleEndianAccessor slea, MapleClient c, MapleCharacter chr) { if (chr == null) { return; } int channel = c.getChannel(); ChannelServer toch = ChannelServer.getInstance(channel); if (toch == null) { FileoutputUtil.log(FileoutputUtil.离开商城, new StringBuilder().append("玩家: ").append(chr.getName()).append(" 从商城离开发生错误.找不到频道[").append(channel).append("]的信息.").toString(), true); c.getSession().close(true); return; } World.ChannelChange_Data(new CharacterTransfer(chr), chr.getId(), c.getChannel()); CashShopServer.getPlayerStorage().deregisterPlayer(chr); c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION, c.getSessionIPAddress()); String s = c.getSessionIPAddress(); LoginServer.addIPAuth(s.substring(s.indexOf('/') + 1, s.length())); c.getSession().write(MaplePacketCreator.getChannelChange(c, Integer.parseInt(toch.getIP().split(":")[1]))); chr.saveToDB(false, true); c.setPlayer(null); c.setReceiving(false); } /** * 玩家进入商城 * @param transfer * @param c */ public static void EnterCS(CharacterTransfer transfer, MapleClient c) { if (transfer == null) { FileoutputUtil.log("玩家为空:"+c.getPlayer().getAccountID()); c.getSession().close(true); return; } MapleCharacter chr = MapleCharacter.ReconstructChr(transfer, c, false); c.setPlayer(chr); c.setAccID(chr.getAccountID()); if (!c.CheckIPAddress()) { c.getSession().close(true); FileoutputUtil.log(new StringBuilder().append("商城检测连接 - 2 ").append(!c.CheckIPAddress()).toString()); return; } int state = c.getLoginState(); boolean allowLogin = false; if (((state == 1) || (state == 3)) && (!World.isCharacterListConnected(c.loadCharacterNames(c.getWorld())))) { allowLogin = true; } if (!allowLogin) { c.setPlayer(null); c.getSession().close(true); FileoutputUtil.log(new StringBuilder().append("商城检测连接 - 3 ").append(!allowLogin).toString()); return; } c.updateLoginState(MapleClient.LOGIN_LOGGEDIN, c.getSessionIPAddress()); CashShopServer.getPlayerStorage().registerPlayer(chr); c.getSession().write(MTSCSPacket.warpchartoCS(c)); c.getSession().write(MTSCSPacket.商城道具栏信息(c)); List gifts = chr.getCashInventory().loadGifts(); // c.getSession().write(MTSCSPacket.商城礼物信息(c, gifts)); // c.getSession().write(MTSCSPacket.商城购物车(c.getPlayer(), false)); c.getSession().write(MTSCSPacket.刷新点券信息(c.getPlayer())); // c.getPlayer().getCashInventory().checkExpire(c); } public static void CSUpdate(MapleClient c) { c.getSession().write(MTSCSPacket.刷新点券信息(c.getPlayer())); } }