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); }
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); }
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(); } }
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; } } } } } }