public static void MoveItemToStorage(InPacket lea, Client gc)
        {
            int     SourceType = lea.ReadShort();
            int     SourceSlot = lea.ReadShort();
            int     TargetType = lea.ReadShort();
            int     TargetSlot = lea.ReadShort();
            int     Quantity   = lea.ReadInt();
            var     chr        = gc.Character;
            Storage Target     = chr.Storages.GetItem((byte)TargetType, (byte)TargetSlot);
            Item    Source     = chr.Items.getItem((byte)SourceType, (byte)SourceSlot);

            if (Target != null || Source.ItemID / 100000 == 86 || Source.ItemID / 100000 == 87 ||
                Source.ItemID / 100000 == 92 || Source.ItemID / 100000 == 94 || Source.ItemID / 100000 == 95)
            {
                return;
            }

            chr.Storages.Add(new Storage(Source.ItemID, Quantity, Source.Spirit, Source.Level1, Source.Level2,
                                         Source.Level3, Source.Level4, Source.Level5, Source.Level6, Source.Level7, Source.Level8, Source.Level9,
                                         Source.Level10, Source.Fusion, Source.IsLocked, Source.Icon, Source.Term, TargetType, TargetSlot, 0));
            chr.Items.Remove((byte)SourceType, (byte)SourceSlot, Quantity);
            chr.Save();
            StoragePacket.getStoreInfo(gc);
            InventoryHandler.UpdateInventory(gc, (byte)SourceType);
        }
        public static void GiveStorageMoney(InPacket lea, Client gc)
        {
            var chr   = gc.Character;
            int money = lea.ReadInt();
            int unk   = lea.ReadInt();

            chr.Storages.getStorages()[0].Money -= money;
            chr.Storages.getStorages()[0].Save();
            chr.Money += money;
            chr.Save();
            InventoryPacket.getInvenMoney(gc, chr.Money, money);
            StoragePacket.getStoreMoney(gc);
        }
        public static void MoveItemToBag(InPacket lea, Client gc)
        {
            int SourceType = lea.ReadShort();
            int SourceSlot = lea.ReadShort();
            int TargetSlot = lea.ReadShort();

            lea.ReadShort();
            int Quantity = lea.ReadInt();
            var chr      = gc.Character;

            Storage Source     = chr.Storages.GetItem((byte)SourceType, (byte)SourceSlot);
            int     TargetType = InventoryType.getItemType(Source.ItemID);
            Item    Item       = chr.Items.getItem((byte)TargetType, (byte)TargetSlot);

            if (Item == null)
            {
                chr.Items.Add(new Item(Source.ItemID, (short)Quantity, Source.Spirit, Source.Level1, Source.Level2,
                                       Source.Level3, Source.Level4, Source.Level5, Source.Level6, Source.Level7, Source.Level8,
                                       Source.Level9, Source.Level10, Source.Fusion, Source.IsLocked, Source.Icon, Source.Term,
                                       (byte)TargetType, (byte)TargetSlot));
            }
            else
            {
                if (Source.ItemID != Item.ItemID)
                {
                    return;
                }

                int QuantityTemp = Item.Quantity;
                chr.Items.Remove((byte)TargetType, (byte)TargetSlot);
                chr.Items.Add(new Item(Item.ItemID, (short)(QuantityTemp + Quantity), Item.Spirit, Item.Level1,
                                       Item.Level2, Item.Level3, Item.Level4, Item.Level5, Item.Level6, Item.Level7, Item.Level8,
                                       Item.Level9, Item.Level10, Item.Fusion, Item.IsLocked, Item.Icon, Item.Term, (byte)TargetType,
                                       (byte)TargetSlot));
            }

            chr.Storages.Remove((byte)Source.Type, (byte)Source.Slot, Quantity);

            chr.Save();
            StoragePacket.getStoreInfo(gc);
            InventoryHandler.UpdateInventory(gc, (byte)TargetType);
        }
Exemple #4
0
        public static void Game_Log_Req(InPacket lea, Client gc)
        {
            //int re = SearchBytes(lea.Content, new byte[] { 0x0 });
            string[]  data            = lea.ReadString(0x100 /*re*/).Split(new[] { (char)0x20 }, StringSplitOptions.None);
            int       encryptKey      = int.Parse(data[1]);
            string    username        = data[2];
            string    password        = data[4];
            int       selectCharacter = lea.ReadByte();
            IPAddress hostid          = lea.ReadIPAddress();

            gc.SetAccount(new Account(gc));

            try
            {
                gc.Account.Load(username);
                //var pe = new PasswordEncrypt(encryptKey);
                //string encryptPassword = pe.encrypt(gc.Account.Password, gc.RetryLoginCount > 0 ? password.ToCharArray() : null);

                if (password.Equals(gc.Account.Password))
                {
                    gc.Dispose();
                    Log.Error("Login Fail!");
                }
                else
                {
                    gc.Account.Characters = new List <Character>();
                    foreach (dynamic datum in new Datums("Characters").PopulateWith("id", "accountId = '{0}' ORDER BY position ASC", gc.Account.ID))
                    {
                        Character character = new Character(datum.id, gc);
                        character.Load(false);
                        character.IP = hostid;
                        gc.Account.Characters.Add(character);
                    }
                    gc.SetCharacter(gc.Account.Characters[selectCharacter]);
                }
                Log.Inform("Password = {0}", password);
                //Log.Inform("encryptKey = {0}", encryptKey);
                //Log.Inform("encryptPassword = {0}", encryptPassword);
            }
            catch (NoAccountException)
            {
                gc.Dispose();
                Log.Error("Login Fail!");
            }

            Character chr = gc.Character;

            chr.CharacterID = gc.CharacterID;
            MapFactory.AllCharacters.Add(chr);

            StatusPacket.UpdateHpMp(gc, 0, 0, 0, 0);
            GamePacket.FW_DISCOUNTFACTION(gc);
            StatusPacket.getStatusInfo(gc);
            InventoryPacket.getCharacterEquip(gc);
            SkillPacket.getSkillInfo(gc, chr.Skills.getSkills());
            QuestPacket.getQuestInfo(gc, chr.Quests.getQuests());
            GamePacket.getQuickSlot(gc, chr.Keymap);
            StoragePacket.getStoreInfo(gc);
            StoragePacket.getStoreMoney(gc);
            MapPacket.enterMapStart(gc);
            InventoryPacket.getInvenCash(gc);
            CashShopPacket.MgameCash(gc);
            CashShopPacket.GuiHonCash(gc);
            InventoryPacket.getInvenEquip(gc);
            InventoryPacket.getInvenEquip1(gc);
            InventoryPacket.getInvenEquip2(gc);
            InventoryPacket.getInvenSpend3(gc);
            InventoryPacket.getInvenOther4(gc);
            InventoryPacket.getInvenPet5(gc);
        }