Пример #1
0
            public static bool ShopItem(int who, int value)
            {
                var coinTypes = new int[] { ItemID.CopperCoin, ItemID.SilverCoin, ItemID.GoldCoin, ItemID.PlatinumCoin };

                Stash.Initialize(coinTypes);
                Stash a = null;

                if ((a = CoinInit(who)) >= value)
                {
                    a -= value;
                    var inv = Main.player[who].inventory;
                    for (int i = 0; i < inv.Length; i++)
                    {
                        foreach (int ct in coinTypes)
                        {
                            if (inv[i].type == ct)
                            {
                                InvPlayer.UpdateItem(ref inv[i], i, who, true);
                            }
                        }
                    }
                    var tsp = TShock.Players[who];
                    foreach (int ct in coinTypes)
                    {
                        tsp.GiveItem(ct, "", 32, 48, (int)a.GetCurrency(ct));
                    }
                    return(true);
                }
                return(false);
            }
Пример #2
0
 public override void Initialize()
 {
     InvPlayer.Initialize();
     if (!File.Exists(config))
     {
         var str = File.Create(".\\" + config);
         str.Close();
         str.Dispose();
     }
     using (StreamReader sr = new StreamReader(config))
     {
         string[] ids = sr.ReadToEnd().Split(' ');
         int      i   = 0;
         foreach (string s in ids)
         {
             if (s.Length > 0)
             {
                 if (int.TryParse(s, out i))
                 {
                     item.Add(i);
                 }
             }
         }
     }
     ServerApi.Hooks.ServerJoin.Register(this, OnJoin);
     ServerApi.Hooks.NetGetData.Register(this, OnGetData);
     ServerApi.Hooks.ServerCommand.Register(this, OnCommand);
     ServerApi.Hooks.GameUpdate.Register(this, OnUpdate);
     ServerApi.Hooks.ServerLeave.Register(this, OnLeave);
 }
Пример #3
0
 private void Revived(InvPlayer i)
 {
     if (dropOpt)
     {
         if (TShock.Players[i.who].Difficulty != 0)
         {
             foreach (Item m in i.keep)
             {
                 TShock.Players[i.who].GiveItem(m.type, m.Name, m.width, m.height, m.stack, m.prefix);
             }
         }
         i.Clear();
     }
 }
Пример #4
0
 private void OnGetData(GetDataEventArgs e)
 {
     if (enabled && !e.Handled)
     {
         byte who = 255;
         if (e.MsgID == PacketTypes.PlayerDeathV2)
         {
             using (BinaryReader br = new BinaryReader(new MemoryStream(e.Msg.readBuffer, e.Index, e.Length)))
             {
                 who             = br.ReadByte();
                 invp[who].death = true;
             }
             InvPlayer plr = null;
             foreach (var i in invp)
             {
                 if (i.who == (int)who)
                 {
                     plr = i;
                 }
             }
             if (plr == null)
             {
                 return;
             }
             invp[who].aether.Clear();
             plr.DropRand(who, dropOpt);
         }
         else if (who != 255 && e.MsgID == PacketTypes.ItemDrop)
         {
             foreach (Item i in invp[who].keep)
             {
                 foreach (Item j in Main.item)
                 {
                     if (j.IsTheSameAs(i))
                     {
                         j.active = false;
                         j.SetDefaults(0);
                         break;
                     }
                 }
             }
         }
     }
 }