예제 #1
0
 public void ShowOnLogin(Character character)
 {
     if (character == Owner)
     {
         Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(Owner.Client, PrivateShopOpenedResult.Ok,
                                                               ItemsOnTrade);
     }
     else
     {
         Asda2PrivateShopHandler.SendCharacterPrivateShopInfoResponse(character.Client,
                                                                      Asda2ViewTradeShopInfoStatus.Ok, this);
     }
 }
예제 #2
0
 public PrivateShopOpenedResult StartTrade(List <Asda2ItemTradeRef> itemsToTrade, string title)
 {
     Owner.Asda2TradeDescription = title;
     for (int index = 0; index < ItemsOnTrade.Length; ++index)
     {
         ItemsOnTrade[index] = itemsToTrade.Count <= index ? null : itemsToTrade[index];
     }
     Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(Owner.Client, PrivateShopOpenedResult.Ok,
                                                           ItemsOnTrade);
     Owner.IsSitting = true;
     Owner.IsAsda2TradeDescriptionEnabled = true;
     Trading = true;
     return(PrivateShopOpenedResult.Ok);
 }
예제 #3
0
        public static void OpenPrivateShopRequest(IRealmClient client, RealmPacketIn packet)
        {
            if (client.ActiveCharacter.PrivateShop == null)
            {
                Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(client, PrivateShopOpenedResult.Error,
                                                                      (Asda2ItemTradeRef[])null);
                client.ActiveCharacter.YouAreFuckingCheater("Trying to open not existing private shop", 2);
            }
            else
            {
                ++packet.Position;
                List <Asda2ItemTradeRef> asda2ItemTradeRefList = new List <Asda2ItemTradeRef>();
                for (int index = 0; index < 10; ++index)
                {
                    bool flag = false;
                    if (packet.ReadInt32() == 0)
                    {
                        flag = true;
                    }
                    Asda2InventoryType asda2InventoryType = (Asda2InventoryType)packet.ReadByte();
                    short num1 = packet.ReadInt16();
                    short num2 = packet.ReadInt16();
                    packet.Position += 4;
                    if (num1 < (short)0 || (int)num1 >= client.ActiveCharacter.Asda2Inventory.ShopItems.Length ||
                        num2 < (short)0)
                    {
                        flag = true;
                    }
                    int num3 = packet.ReadInt32();
                    if (!flag)
                    {
                        Asda2Item asda2Item = asda2InventoryType == Asda2InventoryType.Regular
                            ? client.ActiveCharacter.Asda2Inventory.RegularItems[(int)num1]
                            : client.ActiveCharacter.Asda2Inventory.ShopItems[(int)num1];
                        if (asda2Item == null)
                        {
                            Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(client,
                                                                                  PrivateShopOpenedResult.ThereIsNoItemInfo, (Asda2ItemTradeRef[])null);
                            return;
                        }

                        if (asda2Item.Amount < (int)num2)
                        {
                            num2 = (short)asda2Item.Amount;
                        }
                        foreach (Asda2ItemTradeRef asda2ItemTradeRef in asda2ItemTradeRefList)
                        {
                            if (asda2ItemTradeRef.Item.InventoryType == asda2Item.InventoryType &&
                                (int)asda2ItemTradeRef.Item.Slot == (int)asda2Item.Slot)
                            {
                                flag = true;
                                break;
                            }
                        }

                        if (!flag)
                        {
                            asda2ItemTradeRefList.Add(new Asda2ItemTradeRef()
                            {
                                Item      = asda2Item,
                                Amount    = (int)num2,
                                Price     = num3,
                                TradeSlot = (byte)asda2ItemTradeRefList.Count <Asda2ItemTradeRef>()
                            });
                        }
                    }

                    packet.Position += 28;
                }

                string str = packet.ReadAsdaString(50, Locale.Start);
                if (!Asda2EncodingHelper.IsPrueEnglish(str))
                {
                    client.ActiveCharacter.SendOnlyEnglishCharactersAllowed("Shop title");
                    Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(client, PrivateShopOpenedResult.Error,
                                                                          (Asda2ItemTradeRef[])null);
                }
                else
                {
                    int num = (int)client.ActiveCharacter.PrivateShop.StartTrade(asda2ItemTradeRefList, str);
                }
            }
        }