예제 #1
0
        public void CharacterCheck(byte[] buff)
        {
            try
            {
                PacketReader Reader = new PacketReader(buff);
                Reader.Byte();

                string name = Reader.Text();
                Reader.Close();
                if (CharacterCheck(name))
                    client.Send(Packet.CharacterName(4));
                else client.Send(Packet.ScreenSuccess(4));
            }
            catch (Exception ex)
            {
                Console.WriteLine("CharacterCheck()");
                deBug.Write(ex);
                Console.WriteLine(ex);
            }
        }
예제 #2
0
        void Handle()
        {
            PacketReader Reader = new PacketReader(PacketInformation.buffer);
            byte iSlot = Reader.Byte();
            Global.slotItem uItemID = GetItem((uint)Character.Information.CharacterID, iSlot, 0);

            if (uItemID.ID == 0 || Character.State.Die) return;
            switch (uItemID.ID)
            {

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Stall decoration
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 3847:
                case 3848:
                case 3849:
                case 3850:
                case 35482:
                case 35483:
                case 35484:
                    StallDeco(uItemID.ID, iSlot);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Monster Masks
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 10364:
                    if (Character.Transformed) return;
                    //Load Mask
                    MonsterMasks(uItemID.ID, iSlot);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Forgotten world entrance
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 33235:
                    ForgottenWorld(uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Repair items
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 3784:
                case 24432:
                case 35249:
                    if (!Character.Action.repair)
                    {
                        Character.Action.repair = true;
                        RepairTimer(30000);
                    //Check if there are any items that need repair
                    double durability = Data.ItemBase[uItemID.ID].Defans.Durability;
                    double currentdurability = Data.ItemBase[uItemID.dbID].Defans.Durability;

                        if (currentdurability < durability)
                        {
                            int countrepairs = MsSQL.GetRowsCount("SELECT * FROM char_items WHERE owner='" + Character.Information.CharacterID + "'");
                            if (countrepairs == 0)
                            {
                                //Do nothing client sends message automaticly
                            }
                            else
                            {
                                //Start repairing call handle
                                HandleRepair(iSlot, uItemID.dbID);
                                HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                            }
                        }
                    }
                    break;

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Thief Return Scrolls
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 2128:
                    if (Character.Information.Scroll) return;
                    HandleThiefScroll(uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Inventory Expansion
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 24456:
                    HandleInventoryExp(uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Monster Summon Scrolls
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 3935:
                case 3936:
                case 3937:
                case 10133:
                case 10145:
                case 30925:
                    HandleSummon(Character.Information.Level);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Reverse return scrolls
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 3795:
                case 24467:
                    if (Character.Information.Scroll) return;
                    HandleReverse(Reader.Int16(),Reader.Byte(), Reader.Int32());
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Premium Tickets
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 7490:
                case 24505:
                    HandlePremiumType(uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Normal Return Scrolls
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 61:
                case 2198:
                case 2199:
                case 3769:
                case 19599:
                case 24684:
                    if (Character.Information.Scroll) return;
                    if (Timer.Movement != null)
                    {
                        Timer.Movement.Dispose();
                        Character.Position.Walking = false;
                    }
                    HandleReturnScroll(uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // HP Potions
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 3817:
                case 3818:
                case 3819:
                case 5912:
                case 3765:
                    byte type = 1;
                    HandlePotion(type, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // MP Potions
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 11:
                case 12:
                case 13:
                case 14:
                case 15:
                case 3820:
                case 3821:
                case 3822:
                case 5913:
                    type = 2;
                    HandlePotion(type, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                case 9:
                    type = 3;
                    HandlePotion(type, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                case 16:
                    type = 4;
                    HandlePotion(type, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Vigor Potions
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 18:
                case 19:
                case 20:
                case 21:
                case 22:
                case 23:
                case 3739:
                case 4013:
                case 5881:
                case 5944:
                case 23316:
                    type = 5;
                    HandlePotion(type, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Special Transport
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 19601:
                case 22770:
                    if (!Character.Stall.Stallactive && !Character.Transport.Right && Character.Action.MonsterID.Count == 0 && !Character.State.Sitting && !Character.Information.Scroll)
                    {
                        bool r = HandleSpecialTrans(uItemID.ID);
                        if (!r)
                            HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    }
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Normal transports
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 2137:
                case 2138:
                case 2139:
                case 3909:
                case 23330:
                case 22953:
                case 23396:
                case 23395:
                case 22952:
                    if (!Character.Stall.Stallactive && !Character.Transport.Right && Character.Action.MonsterID.Count == 0 && !Character.State.Sitting && !Character.Information.Scroll)
                    {
                        if (this.Character.Information.Level >= Data.ItemBase[uItemID.ID].Level)
                        {
                            HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                            HandleHorseScroll(uItemID.ID);
                        }
                        else
                        {
                            //client.Send();// needs error

                        }
                    }
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Global Chatting
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 3851:
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    string text = " " + Reader.Text3();
                    Reader.Close();
                    SendAll(Packet.ChatPacket(6, 0, text, Character.Information.Name));
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Buff Items
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 7100:
                    SpecialBuff(3977);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                case 7098:
                    SpecialBuff(3975);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                case 23311:
                    if (Character.Information.Berserking) return;
                    int style = 1;
                    HandleRegenZerk(style, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                case 23938:
                    if (Character.Information.Berserking) return;
                    style = 2;
                    HandleRegenZerk(style, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Grab Pets
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 23313:
                case 35578:
                case 35583:
                    if (!Character.Grabpet.Active && Character.Action.MonsterID.Count == 0)
                    {
                        bool r = HandleGrabPet(iSlot, uItemID.ID);
                        if (!r)
                            HandleUpdateSlotn(iSlot, uItemID, Reader.UInt16());
                    }
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Attack Pets
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /*
                case 22778:
                    if (!Character.Grabpet.Active && Character.Action.MonsterID.Count == 0)
                    {
                        bool r = HandleAttackPet(iSlot, uItemID.ID);
                        if (!r)
                            HandleUpdateSlotn(iSlot, uItemID, Reader.UInt16());
                    }
                    break;
                */
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Gender Switch Tools
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 24479:
                    //HandleGenderSwitch(iSlot, uItemID.ID);
                    //HandleUpdateSlotn(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Balloons
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                case 24342:
                    //HandleBalloon(iSlot, 31157);
                    SpecialBuff(31182);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // Default , Check item ID
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                default:
                    //Console.WriteLine("{0} Tried to use item {1} , The cast type: {2}", Character.Information.Name, Data.ItemBase[uItemID.ID].Name, uItemID.ID);
                    HandleUpdateSlot(iSlot, uItemID, Reader.UInt16());
                    break;
            }
            Reader.Close();
        }
예제 #3
0
        void CharacterCreate()
        {
            try
            {
                //Define amount of characters allowed!
                if (MsSQL.GetRowsCount("SELECT * FROM character WHERE account='" + Player.AccountName + "'") == 4)
                    return;

                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                Reader.Byte();
                string name = Reader.Text();
                int model = Reader.Int32();
                byte volume = Reader.Byte();
                int[] Item = new int[4];
                Item[0] = Reader.Int32();
                Item[1] = Reader.Int32();
                Item[2] = Reader.Int32();
                Item[3] = Reader.Int32();
                Reader.Close();

                #region Check Name
                if (CharacterCheck(name))
                {
                    client.Send(Packet.CharacterName(4));
                    return;
                }
                if (name.Contains("[")) return;
                if (name.Contains("GM")) return;
                if (name.Contains("]")) return;
                if (name.Contains("_")) return;
                if (name.Contains("-")) return;
                #endregion
                //#################################################################### European models begin

                if (model >= 14715 && model <= 14745)
                {
                    MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume, xsect, ysect, xpos, zpos, ypos, savearea,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','79','105','1000','1000','83','20','0000000000000000')");
                    MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','79','105','1000','22','83')");
                    Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + name + "'", "id");

                    double MagDef = 3;
                    double PhyDef = 6;
                    double Parry = 11;
                    double Hit = 11;
                    double MinPhyA = 6;
                    double MaxPhyA = 9;
                    double MinMagA = 6;
                    double MaxMagA = 10;

                    Framework.Ini ini;
                    ini = new Framework.Ini(Environment.CurrentDirectory + @"\Settings\Settings_Custom.ini");
                    string Item1 = ini.GetValue("START ITEMS EUROPE", "Item001").ToString();
                    string Item2 = ini.GetValue("START ITEMS EUROPE", "Item002").ToString();
                    string Item3 = ini.GetValue("START ITEMS EUROPE", "Item003").ToString();
                    string Item4 = ini.GetValue("START ITEMS EUROPE", "Item004").ToString();
                    string Item5 = ini.GetValue("START ITEMS EUROPE", "Item005").ToString();

                    string Amount1 = ini.GetValue("START ITEMS EUROPE", "Amount001").ToString();
                    string Amount2 = ini.GetValue("START ITEMS EUROPE", "Amount002").ToString();
                    string Amount3 = ini.GetValue("START ITEMS EUROPE", "Amount003").ToString();
                    string Amount4 = ini.GetValue("START ITEMS EUROPE", "Amount004").ToString();
                    string Amount5 = ini.GetValue("START ITEMS EUROPE", "Amount005").ToString();
                    try
                    {
                    AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, 1, Player.CreatingCharID, 0);
                    AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, 1, Player.CreatingCharID, 0);
                    }
                    catch (Exception)
                    {

                    }

                    AddItem(Item[0], 0, 1, 0, Player.CreatingCharID, 0);
                    AddItem(Item[1], 0, 4, 0, Player.CreatingCharID, 0);
                    AddItem(Item[2], 0, 5, 0, Player.CreatingCharID, 0);
                    AddItem(Item[3], 0, 6, 0, Player.CreatingCharID, 0);

                    MagDef += Data.ItemBase[Item[0]].Defans.MinMagDef;
                    MagDef += Data.ItemBase[Item[1]].Defans.MinMagDef;
                    MagDef += Data.ItemBase[Item[2]].Defans.MinMagDef;
                    PhyDef += Data.ItemBase[Item[0]].Defans.MinPhyDef;
                    PhyDef += Data.ItemBase[Item[1]].Defans.MinPhyDef;
                    PhyDef += Data.ItemBase[Item[2]].Defans.MinPhyDef;
                    Parry += Data.ItemBase[Item[0]].Defans.Parry;
                    Parry += Data.ItemBase[Item[1]].Defans.Parry;
                    Parry += Data.ItemBase[Item[2]].Defans.Parry;
                    Hit += Data.ItemBase[Item[3]].Attack.MinAttackRating;
                    MinPhyA += Data.ItemBase[Item[3]].Attack.Min_LPhyAttack;
                    MaxPhyA += Data.ItemBase[Item[3]].Attack.Min_HPhyAttack;
                    MinMagA += Data.ItemBase[Item[3]].Attack.Min_LMagAttack;
                    MaxMagA += Data.ItemBase[Item[3]].Attack.Min_HMagAttack;

                    if (Item[3] == 10730 || Item[3] == 10734)
                    {
                        MagDef += Data.ItemBase[251].Defans.MinMagDef;
                        PhyDef += Data.ItemBase[251].Defans.MinPhyDef;
                        Parry += Data.ItemBase[251].Defans.Parry;
                        AddItem(10738, 0, 7, 0, Player.CreatingCharID, 0);
                    }
                    if (Item[3] == 10733)
                    {
                        AddItem(10376, 250, 7, 1, Player.CreatingCharID, 0);
                    }
                    MsSQL.UpdateData("update character set min_phyatk='" + (int)Math.Round(MinPhyA) +
                            "', max_phyatk='" + Math.Round(MaxPhyA) +
                            "', min_magatk='" + Math.Round(MinMagA) +
                            "', max_magatk='" + Math.Round(MaxMagA) +
                            "', phydef='" + Math.Round(PhyDef) +
                            "', magdef='" + Math.Round(PhyDef) +
                            "', parry='" + Math.Round(Parry) +
                            "', hit='" + Math.Round(Hit) +
                            "' where name='" + name + "'");

                    AddMastery(513, Player.CreatingCharID); //Warrior
                    AddMastery(515, Player.CreatingCharID); //Rogue
                    AddMastery(514, Player.CreatingCharID); //Wizard
                    AddMastery(516, Player.CreatingCharID); //Warlock
                    AddMastery(517, Player.CreatingCharID); //Bard
                    AddMastery(518, Player.CreatingCharID); //Cleric
                    Console.WriteLine("@Gameserver:             Character: " + name + " Has been created");
                    client.Send(Packet.ScreenSuccess(1));
                }
                else
                {

                    #region Check Name
                    if (CharacterCheck(name))
                    {
                        client.Send(Packet.CharacterName(4));
                        return;
                    }
                    #endregion
                    //#################################################################### Chinese models begin
                    MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','0000000000000000')");
                    MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','168','79','911','1083','-32')");
                    Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + name + "'", "id");

                    #region Item
                    double MagDef   = 3;
                    double PhyDef   = 6;
                    double Parry    = 11;
                    double Hit      = 11;
                    double MinPhyA  = 6;
                    double MaxPhyA  = 9;
                    double MinMagA  = 6;
                    double MaxMagA  = 10;

                    Framework.Ini ini;
                    ini = new Framework.Ini(Environment.CurrentDirectory + @"\Settings\Settings_Custom.ini");

                    string Item1 = ini.GetValue("START ITEMS CHINESE", "Item001").ToString();
                    string Item2 = ini.GetValue("START ITEMS CHINESE", "Item002").ToString();
                    string Item3 = ini.GetValue("START ITEMS CHINESE", "Item003").ToString();
                    string Item4 = ini.GetValue("START ITEMS CHINESE", "Item004").ToString();
                    string Item5 = ini.GetValue("START ITEMS CHINESE", "Item005").ToString();

                    string Amount1 = ini.GetValue("START ITEMS CHINESE", "Amount001").ToString();
                    string Amount2 = ini.GetValue("START ITEMS CHINESE", "Amount002").ToString();
                    string Amount3 = ini.GetValue("START ITEMS CHINESE", "Amount003").ToString();
                    string Amount4 = ini.GetValue("START ITEMS CHINESE", "Amount004").ToString();
                    string Amount5 = ini.GetValue("START ITEMS CHINESE", "Amount005").ToString();

                    try
                    {
                        AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, 1, Player.CreatingCharID, 0);
                        AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, 1, Player.CreatingCharID, 0);
                    }
                    catch (Exception)
                    {

                    }

                    AddItem(Item[0], 0, 1, 0, Player.CreatingCharID, 0);
                    AddItem(Item[1], 0, 4, 0, Player.CreatingCharID, 0);
                    AddItem(Item[2], 0, 5, 0, Player.CreatingCharID, 0);
                    AddItem(Item[3], 0, 6, 0, Player.CreatingCharID, 0);

                    MagDef +=   Data.ItemBase[Item[0]].Defans.MinMagDef;
                    MagDef +=   Data.ItemBase[Item[1]].Defans.MinMagDef;
                    MagDef +=   Data.ItemBase[Item[2]].Defans.MinMagDef;
                    PhyDef +=   Data.ItemBase[Item[0]].Defans.MinPhyDef;
                    PhyDef +=   Data.ItemBase[Item[1]].Defans.MinPhyDef;
                    PhyDef +=   Data.ItemBase[Item[2]].Defans.MinPhyDef;
                    Parry +=    Data.ItemBase[Item[0]].Defans.Parry;
                    Parry +=    Data.ItemBase[Item[1]].Defans.Parry;
                    Parry +=    Data.ItemBase[Item[2]].Defans.Parry;
                    Hit +=      Data.ItemBase[Item[3]].Attack.MinAttackRating;
                    MinPhyA +=  Data.ItemBase[Item[3]].Attack.Min_LPhyAttack;
                    MaxPhyA +=  Data.ItemBase[Item[3]].Attack.Min_HPhyAttack;
                    MinMagA +=  Data.ItemBase[Item[3]].Attack.Min_LMagAttack;
                    MaxMagA +=  Data.ItemBase[Item[3]].Attack.Min_HMagAttack;

                    if (Item[3] == 3632 || Item[3] == 3633)
                    {
                        MagDef +=   Data.ItemBase[251].Defans.MinMagDef;
                        PhyDef +=   Data.ItemBase[251].Defans.MinPhyDef;
                        Parry +=    Data.ItemBase[251].Defans.Parry;
                        AddItem(251, 0, 7, 0, Player.CreatingCharID, 0);
                    }
                    if (Item[3] == 3636)
                    {
                        AddItem(62, 250, 7, 1, Player.CreatingCharID, 0);
                    }
                    #endregion

                    MsSQL.UpdateData("update character set min_phyatk='" + (int)Math.Round(MinPhyA) +
                            "', max_phyatk='"   + Math.Round(MaxPhyA) +
                            "', min_magatk='"   + Math.Round(MinMagA) +
                            "', max_magatk='"   + Math.Round(MaxMagA) +
                            "', phydef='"       + Math.Round(PhyDef) +
                            "', magdef='"       + Math.Round(PhyDef) +
                            "', parry='"        + Math.Round(Parry) +
                            "', hit='"          + Math.Round(Hit) +
                            "' where name='"    + name + "'");

                    AddMastery(257, Player.CreatingCharID); //blade
                    AddMastery(258, Player.CreatingCharID); //heuksal
                    AddMastery(259, Player.CreatingCharID); //bow
                    AddMastery(273, Player.CreatingCharID); //cold
                    AddMastery(274, Player.CreatingCharID); //light
                    AddMastery(275, Player.CreatingCharID); //fire
                    AddMastery(276, Player.CreatingCharID); //force
                    Console.WriteLine("@Gameserver:             Character: " + name + " Has been created");
                    client.Send(Packet.ScreenSuccess(1));

                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("CharacterCreate()");
                deBug.Write(ex);
                Console.WriteLine(ex);
            }
        }
예제 #4
0
 protected void SavePlace()
 {
     PacketReader reader = new PacketReader(PacketInformation.buffer);
     int ObjectID = reader.Int32();
     obj o = GetObject(ObjectID);
     byte type = 0;
     switch (Data.ObjectBase[o.ID].Name)
     {
         case "STORE_CH_GATE":
             type = 1;
             break;
         case "STORE_WC_GATE":
             type = 2;
             break;
         case "STORE_KT_GATE":
             type = 5;
             break;
         case "STORE_EU_GATE":
             type = 20;
             break;
         case "STORE_CA_GATE":
             type = 25;
             break;
         case "STORE_SD_GATE1":
             type = 175;
             break;
         case "STORE_SD_GATE2":
             type = 176;
             break;
     }
     Character.Information.Place = type;
     MsSQL.InsertData("update character set savearea='" + Character.Information.Place + "' where id='" + Character.Information.CharacterID + "'");
     client.Send(Packet.UpdatePlace());
 }
예제 #5
0
        protected void Save()
        {
            PacketReader Reader = new PacketReader(PacketInformation.buffer);
            string player_path;
            byte[] file;
            switch (Reader.Byte())
            {
                case 1:
                    player_path = Environment.CurrentDirectory + @"\player\info\quickbar\" + Character.Information.Name + ".dat";
                    file = System.IO.File.ReadAllBytes(player_path);

                    byte Slot = Reader.Byte();
                    byte sType = Reader.Byte();

                    Slot *= 5;

                    file[Slot] = sType;
                    file[Slot + 1] = Reader.Byte();
                    file[Slot + 2] = Reader.Byte();
                    file[Slot + 3] = Reader.Byte();
                    file[Slot + 4] = Reader.Byte();
                    System.IO.File.WriteAllBytes(player_path, file);
                    break;
                case 2:
                    player_path = Environment.CurrentDirectory + @"\player\info\autopot\" + Character.Information.Name + ".dat";
                    file = System.IO.File.ReadAllBytes(player_path);
                    file[0] = Reader.Byte();
                    file[1] = Reader.Byte();
                    file[2] = Reader.Byte();
                    file[3] = Reader.Byte();
                    file[4] = Reader.Byte();
                    file[5] = Reader.Byte();
                    file[6] = Reader.Byte();
                    System.IO.File.WriteAllBytes(player_path, file);
                    UpdateHp();
                    UpdateMp();
                    break;
            }
            Reader.Close();
        }
예제 #6
0
        protected void Open_NPC()
        {
            try
            {
                Character.State.Busy = true;
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                Reader.UInt32();
                byte type = Reader.Byte();

                if (type == 1)
                {
                    client.Send(Packet.OpenNPC(type));
                }
                else
                {
                    client.Send(Packet.OpenNPC(type));
                }
                Reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
예제 #7
0
        public void LoginScreen()
        {
            try
            {
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                string name = Reader.Text();
                Reader.Close();
                #region Check name before entering (exploit)
                Systems.MsSQL ms = new Systems.MsSQL("SELECT name FROM character WHERE account='" + Player.AccountName + "' AND name='" + name + "'");
                int checkinfo = ms.Count();

                if (checkinfo == 0)
                {
                    return;
                }
                #endregion
                else
                {
                    Character = new character();

                    Character.Information.Name = name;
                    Character.Account.ID = Player.ID;
                    PlayerDataLoad();
                    LoadJobData();
                    checkSameChar(name, Character.Information.UniqueID);
                    CheckCharStats(Character);
                    clients.Add(this);
                    client.Send(Packet.LoginScreen());
                    client.Send(Packet.StartPlayerLoad());
                    client.Send(Packet.Load(Character));

                    client.Send(Packet.EndPlayerLoad());
                    client.Send(Packet.PlayerUnknowPack(Character.Information.UniqueID));
                    client.Send(Packet.UnknownPacket());

                    OpenTimer();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error login by: {0}",Character.Information.Name);
                deBug.Write(ex);
                Console.WriteLine(ex);
            }
        }
예제 #8
0
 void CharacterRestore()
 {
     try
     {
         PacketReader Reader = new PacketReader(PacketInformation.buffer);
         Reader.Byte();
         string name = Reader.Text();
         Reader.Close();
         MsSQL.InsertData("UPDATE character SET deletedtime=0 WHERE name='" + name + "'");
         client.Send(Packet.ScreenSuccess(5));
     }
     catch (Exception ex)
     {
         Console.WriteLine("CharacterRestore()");
         deBug.Write(ex);
         Console.WriteLine(ex); //Write source of the error
     }
 }