示例#1
0
 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);
 }
示例#2
0
        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));
        }
示例#3
0
        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));
        }