public void handlePacket(Client c, PacketReader packet) { int cid = packet.ReadInt(); byte[] mac = packet.ReadBytes(6); byte[] hwid = packet.ReadBytes(4); packet.Skip(8); long sessionID = packet.ReadLong(); c.mAccount = new Account(); c.mAccount.Load(cid); Logger.Write(Logger.LogTypes.정보, "SESSIONID;\r\n\t CID={0},\r\n\t CMAC={1},\r\n\t CHWID={2},\r\n\t CSESSIONID={3},\r\n\t SMAC={4},\r\n\t SHWID={5},\r\n\t SSESSIONID={6}", cid, mac.ToString2s(), hwid.ToString2s(), sessionID, c.mAccount.MacAddress.ToString2s(), c.mAccount.HDDSerial.ToString2s(), c.mAccount.SessionID); if (c.mAccount.SessionID != sessionID) { Logger.Write(Logger.LogTypes.경고, "UNEQUAL SESSIONID !"); return; // TODO: Autoban } c.validated = true; c.mCharacter = Database.GetCharacter(cid); Program.mServer.center.mCenterConnection.mSession.SendPacket(CenterServerPacketDefinitions.GuildInfo(c.mCharacter.mID, c.mCharacter.mGuild.GuildID)); System.Threading.Thread.Sleep(500); // should be enough c.mCharacter.mPosition = Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].GetPortal(c.mCharacter.mFieldPosition).mPosition; c.mCharacter.mClient = c; Console.WriteLine("Character: {0}:{1}", c.mCharacter.mID, c.mCharacter.mGuild.Name); c.SendPacket(CStage.SetField(c, true)); Program.mServer.Fields[c.mCharacter.mField][c.mCharacter.mFieldInstance].AddCharacter(c.mCharacter); }
public void handlePacket(Client c, PacketReader packet) { packet.Skip(1); byte world = packet.ReadByte(); byte channel = packet.ReadByte(); c.RecentChannel = channel; c.RecentWorld = world; c.Characters = Database.GetCharacters(c.AccountId); c.SaveAccountToDatabase(); c.SendPacket(PacketDefinitions.CharacterLoadout(c)); }
public void handlePacket(Client c, PacketReader packet) { string charname = Database.MySqlEscape(packet.ReadMapleString()); int jobtype = packet.ReadInt(); short specialjobtype = packet.ReadShort(); byte gender = packet.ReadByte(); packet.Skip(2); int face = packet.ReadInt(); int hair = packet.ReadInt(); int haircolor = packet.ReadInt(); int skin = packet.ReadInt(); int top = packet.ReadInt(); int bottom = 0; if (jobtype < 5) bottom = packet.ReadInt(); int shoes = packet.ReadInt(); int weapon = packet.ReadInt(); int shield = 0; if (jobtype == 6) shield = packet.ReadInt(); Character newchr = new Character(); newchr.mName = charname; if (jobtype == 0) { newchr.mPrimaryStats.Job = (short)Job.Citizen; } else if (jobtype == 1) { newchr.mPrimaryStats.Job = (short)Job.Beginner; } else if (jobtype == 2) { newchr.mPrimaryStats.Job = (short)Job.Noblesse; } else if (jobtype == 3) { newchr.mPrimaryStats.Job = (short)Job.Legend; } else if (jobtype == 4) { newchr.mPrimaryStats.Job = (short)Job.Evan1; } else if (jobtype == 5) { newchr.mPrimaryStats.Job = (short)Job.Mercedes; } else if (jobtype == 6) { newchr.mPrimaryStats.Job = (short)Job.DemonSlayer; } newchr.mMap = 100000000; newchr.mClient = c; newchr.mHair = hair + haircolor; newchr.mFace = face; newchr.mSkin = (byte)skin; newchr.mGender = gender; newchr.mPrimaryStats.Level = 1; newchr.mPrimaryStats.HP = 50; newchr.mPrimaryStats.MaxHP = 50; newchr.mPrimaryStats.MP = 50; newchr.mPrimaryStats.MaxMP = 50; newchr.mPrimaryStats.Str = 4; newchr.mPrimaryStats.Dex = 4; newchr.mPrimaryStats.Int = 4; newchr.mPrimaryStats.Luk = 4; Equip eweapon = new Equip(weapon, "Character creation (JobId " + jobtype + ")"); eweapon.Watk = 17; eweapon.Position = -11; newchr.mInventory[0].Add(eweapon.Position, eweapon); if (shield > 0) { Equip eshield = new Equip(shield, "Character creation (JobId " + jobtype + ")"); eshield.Position = -10; newchr.mInventory[0].Add(eshield.Position, eshield); } Equip etop = new Equip(top, "Character creation (JobId " + jobtype + ")"); etop.Position = -5; newchr.mInventory[0].Add(etop.Position, etop); if (bottom > 0) { Equip ebottom = new Equip(bottom, "Character creation (JobId " + jobtype + ")"); ebottom.Position = -6; newchr.mInventory[0].Add(ebottom.Position, ebottom); } Equip eshoes = new Equip(shoes, "Character creation (JobId " + jobtype + ")"); eshoes.Position = -7; newchr.mInventory[0].Add(eshoes.Position, eshoes); Database.SaveCharacter(newchr, true); c.SendPacket(PacketDefinitions.NewCharacter(newchr)); }