private void OnNpcStrike(NpcStrikeEventArgs args) { player = TShock.Players[args.Player.whoAmI]; if (!args.Handled && !(player.TPlayer.FindBuffIndex(130) == -1) && !player.HasPermission("slimydisable.bypass")) //check if player has slimy saddle buff { timer.Elapsed += ClearStrikes; #if DEBUG Console.WriteLine($"Player {player.Name} has slime buff and hit {args.Npc.netID}"); #endif if (args.Npc.netID == 488 || args.Npc.netID == 68) // target dummy and dungeon guardian respectively { if ((args.Player.position.Y + 80 > args.Npc.position.Y) && (args.Player.position.Y + 22 < args.Npc.position.Y) && ((args.Player.position.X - args.Npc.position.X < 64) && (args.Npc.position.X - args.Player.position.X < 64))) { strikes++; #if DEBUG player.SendMessage($"{strikes} strikes were counted", Color.BurlyWood); player.SendMessage($"Player y: {args.Player.position.Y},\nNpc {args.Npc.netID} y: {args.Npc.position.Y}\n Diff y: {args.Player.position.Y - args.Npc.position.Y}", Color.Bisque); player.SendMessage($"Player x: {args.Player.position.X},\nNpc {args.Npc.netID} x: {args.Npc.position.X}\n Diff x: {args.Player.position.X - args.Npc.position.X}", Color.Bisque); #endif args.Handled = true; } if (strikes >= strikeCap) { #if DEBUG player.SendMessage("You've been oofed p hard tbh ngl imho.", Color.BurlyWood); #endif Punishment(); } } timer.Start(); } }
private void OnChat(ServerChatEventArgs e) { if (e.Handled) { return; } TSPlayer player = TShock.Players[e.Who]; if (player == null) { e.Handled = true; return; } if (e.Text.StartsWith("/register") && !TShock.Config.AllowRegisterAnyUsername && !player.IsLoggedIn) { var user = TShock.Users.GetUserByName(player.Name); if (user != null) { e.Handled = true; player.SendMessage("We're sorry, but this name is already taken.", Color.DeepPink); if (player.Group.HasPermission("selfname")) { player.SendMessage("Please use /selfname [newname] to change your name.", Color.DeepPink); } } } }
private void SendGatePortStatesInfo(TSPlayer player, GateStateMetadata gateState) { player.SendMessage("Top Port: " + this.GatePortStateToString(gateState.PortStates[0]), Color.LightGray); player.SendMessage("Left Port: " + this.GatePortStateToString(gateState.PortStates[2]), Color.LightGray); player.SendMessage("Bottom Port: " + this.GatePortStateToString(gateState.PortStates[1]), Color.LightGray); player.SendMessage("Right Port: " + this.GatePortStateToString(gateState.PortStates[3]), Color.LightGray); }
void OnElapsed(object sender, ElapsedEventArgs e) { for (int i = 0; i < TPRequests.Length; i++) { TPRequest tpr = TPRequests[i]; if (tpr.timeout > 0) { TSPlayer dst = TShock.Players[tpr.dst]; TSPlayer src = TShock.Players[i]; tpr.timeout--; if (tpr.timeout == 0) { src.SendMessage("[Teleport Request] Your teleport request timed out.", Color.LightCoral); dst.SendMessage("[Teleport Request] " + src.Name.Colorize(Color.Yellow) + "'s teleport request timed out.", Color.LightCoral); } else if (!AutoAccept[dst.TPlayer.whoAmI]) { string msg = String.Format("[Teleport Request] " + src.Name.Colorize(Color.Yellow) + " is requesting to teleport to you. ({0}tpr yes or {0}tpr no)", Commands.Specifier); if (tpr.dir) { msg = String.Format("[Teleport Request] You are requested to teleport to " + src.Name.Colorize(Color.Yellow) + ". ({0}tpr yes or {0}tpr no)", Commands.Specifier); } dst.SendMessage(msg, Color.LightBlue); } else if (AutoAccept[dst.TPlayer.whoAmI]) { if (Config.Timeout - tpr.timeout <= Config.waittime) { if (tpr.dir) { dst.SendMessage("[Teleport Request] You will be teleported to " + src.Name.Colorize(Color.Yellow) + " in " + (Config.waittime - (Config.Timeout - tpr.timeout)).ToString().Colorize(Color.Yellow) + ". Turn off auto-accept to withdraw your consent.", Color.LightBlue); } else { src.SendMessage("[Teleport Request] Teleportation will begin in " + (Config.waittime - (Config.Timeout - tpr.timeout)).ToString().Colorize(Color.Yellow), Color.LightBlue); dst.SendMessage("[Teleport Request] Player " + src.Name.Colorize(Color.Yellow) + " will teleported to you in " + (Config.waittime - (Config.Timeout - tpr.timeout)).ToString().Colorize(Color.Yellow) + ". Turn off auto-accept to withdraw your consent.", Color.LightBlue); } continue; } string msg = String.Format("[Teleport Request] " + src.Name.Colorize(Color.Yellow) + " is requesting to teleport to you. Request is auto-accepted!", Commands.Specifier); if (tpr.dir) { msg = String.Format("[Teleport Request] You are requested to teleport to " + src.Name.Colorize(Color.Yellow) + ". Request is auto-accepted!", Commands.Specifier); } dst.SendMessage(msg, Color.LightBlue); TSPlayer plr1 = tpr.dir ? dst : src; TSPlayer plr2 = tpr.dir ? src : dst; if (plr1.Teleport(plr2.X, plr2.Y)) { plr1.SendMessage("[Teleport Request] Teleported to " + plr2.Name.Colorize(Color.Yellow) + ".", Color.LightBlue); plr2.SendMessage("[Teleport Request] " + plr1.Name.Colorize(Color.Yellow) + " teleported to you.", Color.LightBlue); } tpr.timeout = 0; return; } } } }
private void QuitGamemode(CommandArgs args) { TSPlayer player = args.Player; if (player.GetGamemode() == default || player.GetGamemode() == "Edit") { player.SendMessage("You are currently not in a game.", Color.Cyan); return; } player.SendMessage($"You have quit {player.GetGamemode()}", Color.Cyan); player.SetGamemode(default);
public override void Execute() { ply.SendMessage("Starting Rollback: Radius:" + args.radius + " Since: " + args.since, Color.Green); var database = LogTile.DB; String query = "SELECT * FROM LogTile WHERE X BETWEEN @0 AND @1 AND Y BETWEEN @2 and @3 AND Date > @4 ORDER BY id ASC;"; var events = new List <TileEvent>(); using (var reader = database.QueryReader(query, ply.TileX - args.radius, ply.TileX + args.radius, ply.TileY - args.radius, ply.TileY + args.radius, (LogTile.helper.GetTime() - args.since))) { while (reader.Read()) { var e = new TileEvent(reader.Get <int>("X"), reader.Get <int>("Y"), LogTile.helper.INTtoString(reader.Get <int>("IP")), reader.Get <string>("Name"), LogTile.helper.getAction(reader.Get <int>("Action")), reader.Get <int>("TileType"), (long)reader.Get <int>("Date")); events.Add(e); } } List <TileEvent> rollback = new List <TileEvent>(); foreach (var ev in events) { if (!rollback.Contains(ev)) { rollback.Add(ev); } } foreach (var evt in rollback) { if (LogTile.helper.getAction(evt.GetAction()) == Action.BREAK) { Main.tile[evt.GetX(), evt.GetY()].type = (byte)evt.GetTileType(); Main.tile[evt.GetX(), evt.GetY()].active = true; } else { Main.tile[evt.GetX(), evt.GetY()].active = false; } TSPlayer.All.SendTileSquare(evt.GetX(), evt.GetY(), 1); } ply.SendMessage("Rollback Complete: Tiles Rolled Back: " + rollback.Count, Color.Green); }
private void TeleportLastDeath(CommandArgs arg) { TSPlayer player = arg.Player; SOSKey sos = lastPlaceOfDeathData.GetUserDeathInfo(player.UUID); if (sos.deathCount > 0) { player.Teleport(sos.lastDeathPlaceX, sos.lastDeathPlaceY); player.SendMessage("You have teleported to your last corpse.", Color.YellowGreen); } else { player.SendMessage("You haven't died yet in the server.", Color.YellowGreen); } }
public static void OnJoin(JoinEventArgs args) { TSPlayer plr = TShock.Players[args.Who]; if (plr == null) { return; } TempGroupPlayer tgplr = TempGroupDbManage.GetTempGroup(plr.Name); if (tgplr.ActualGroup == null) { return; } if ((DateTime.Now - tgplr.ExpireDate).TotalMilliseconds > 0) { plr.Group = TShock.Groups.GetGroupByName(tgplr.PrimaryGroup); plr.Account.Group = tgplr.PrimaryGroup; TShock.UserAccounts.SetUserGroup(plr.Account, tgplr.PrimaryGroup); TempGroupDbManage.RemoveTempGroup(plr.Name); plr.SendMessage($"[c/595959:»] Waznosc twojej rangi [c/ffff66:{tgplr.ActualGroup}] wygasla.", Color.Gray); return; } Players.Add(plr.Name, tgplr); }
public static void OnUpdate(EventArgs args) { foreach (string player in _ = Players.Keys.ToArray()) { if ((DateTime.Now - Players[player].ExpireDate).TotalMilliseconds > 0) { TSPlayer plr = TSPlayer.FindByNameOrID(player)[0]; if (plr == null || !plr.Active) { return; } plr.Group = TShock.Groups.GetGroupByName(Players[player].PrimaryGroup); plr.Account.Group = Players[player].PrimaryGroup; TShock.UserAccounts.SetUserGroup(plr.Account, Players[player].PrimaryGroup); TempGroupDbManage.RemoveTempGroup(plr.Name); plr.SendMessage($"[c/595959:»] Waznosc twojej rangi [c/ffff66:{Players[player].ActualGroup}] wygasla.", Color.Gray); Players.Remove(player); } } }
void CheckInfo(CommandArgs args) { TSPlayer plr = args.Player; if (args.Parameters.Count != 1) { plr.SendErrorMessage("Invalid Syntax! Corrext Syntax: /checkinfo <player>"); return; } var foundplr = TShock.Utils.FindPlayer(args.Parameters[0]); if (foundplr.Count == 0) { args.Player.SendErrorMessage("Invalid player!"); return; } else { var iPlayer = foundplr[0]; string name = iPlayer.Name; var hp = iPlayer.TPlayer.statLifeMax2; var mana = iPlayer.TPlayer.statManaMax2; var currenthp = iPlayer.TPlayer.statLife; var currentmana = iPlayer.TPlayer.statMana; var groupname = iPlayer.Group.Name; var groupprefix = iPlayer.Group.Prefix; string array = "Name: " + name + "\nHP: " + hp + ", Current HP: " + currenthp + "\nMana: " + mana + ", Current Mana: " + currentmana + "\nGroup: " + groupname + ", Group Prefix: " + groupprefix; plr.SendMessage(array, Color.LightSteelBlue); } }
private void searchQuotes(TSPlayer player, string searchterm) { List <int> quoteresults = new List <int>(); for (int i = 0; i < quotelist.Count; i++) { if (quotelist[i].qquote.ToLower().Contains(searchterm.ToLower())) { quoteresults.Add(i); } } if (quoteresults.Count < 1) { player.SendInfoMessage("No quotes matched your search."); } else if (quoteresults.Count > 1) { string outputresults = string.Join(", ", quoteresults.Select(p => (p + 1).ToString())); player.SendInfoMessage("Multiple quotes matched your search: " + outputresults); } else { QuoteClass readQuote = quotelist[quoteresults[0]]; if (!readQuote.qdeleted) { player.SendMessage("[" + readQuote.qtime + "] Quote #" + (quoteresults[0] + 1).ToString() + " by " + readQuote.qauthor + ": " + readQuote.qquote, Color.LawnGreen); } else { player.SendErrorMessage("No quotes matched your search."); } } }
public void OnGreetPlayer(GreetPlayerEventArgs e) { int count = 0; string ids = "<"; TSPlayer ply = TShock.Players[e.Who]; using (var reader = MessengerDB.QueryReader("SELECT * FROM Messages")) { while (reader.Read()) { if ((reader.Get <string>("Receiver") == ply.Name) && (reader.Get <string>("Status") == "Unread")) { count++; ids = ids + reader.Get <int>("ID") + " | "; } } } if (count != 0) { ply.SendMessage("[Messenger] You have " + count + " unread message(s). Use /msg " + ids.Remove(ids.Length - 3) + ">", Color.LightBlue); } }
public bool HasPermissionToBuildInRegion(TSPlayer ply) { if (!ply.IsLoggedIn) { if (!ply.HasBeenNaggedAboutLoggingIn) { ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red); ply.HasBeenNaggedAboutLoggingIn = true; } return(false); } if (!DisableBuild) { return(true); } for (int i = 0; i < AllowedIDs.Count; i++) { if (AllowedIDs[i] == ply.UserID) { return(true); } } return(false); }
private void OnChat(ServerChatEventArgs e) { TSPlayer tSPlayer = TShock.Players[e.Who]; if (!e.Text.StartsWith(TShock.Config.CommandSpecifier) && !tSPlayer.mute) { bool flag = false; for (int i = 0; i < LexiconPlugin.config.LexiconedGroups.Length; i++) { if (LexiconPlugin.config.LexiconedGroups[i] == tSPlayer.Group.Name) { flag = true; } } if ((tSPlayer.Group.HasPermission("wordreplacement.permalexiconify") && !tSPlayer.Group.HasPermission("*")) || LexiconPlugin.BeingLexiconed[tSPlayer.Index] || flag) { e.Handled = true; string text = LexiconClass.Lexiconify(e.Text); if (!TShock.Config.EnableChatAboveHeads) { string text2 = string.Format(TShock.Config.ChatFormat, new object[] { tSPlayer.Group.Name, tSPlayer.Group.Prefix, tSPlayer.Name, tSPlayer.Group.Suffix, text }); TShock.Utils.Broadcast(text2, tSPlayer.Group.R, tSPlayer.Group.G, tSPlayer.Group.B); } else { Player player = Main.player[e.Who]; string name = player.name; player.name = string.Format(TShock.Config.ChatAboveHeadsFormat, new object[] { tSPlayer.Group.Name, tSPlayer.Group.Prefix, tSPlayer.Name, tSPlayer.Group.Suffix }); NetMessage.SendData(4, -1, -1, player.name, e.Who, 0f, 0f, 0f, 0); player.name = name; string text2 = text; NetMessage.SendData(25, -1, e.Who, text2, e.Who, (float)tSPlayer.Group.R, (float)tSPlayer.Group.G, (float)tSPlayer.Group.B, 0); NetMessage.SendData(4, -1, -1, name, e.Who, 0f, 0f, 0f, 0); string text3 = string.Format("<{0}> {1}", string.Format(TShock.Config.ChatAboveHeadsFormat, new object[] { tSPlayer.Group.Name, tSPlayer.Group.Prefix, tSPlayer.Name, tSPlayer.Group.Suffix }), text2); tSPlayer.SendMessage(text3, tSPlayer.Group.R, tSPlayer.Group.G, tSPlayer.Group.B); TSPlayer.Server.SendMessage(text3, tSPlayer.Group.R, tSPlayer.Group.G, tSPlayer.Group.B); Log.Info(string.Format("Broadcast: {0}", text3)); } } } }
private static void OnRegionLeft(TSPlayer player, RtRegion region, RtPlayer data) { if (region.HasEvent(Event.LeaveMsg)) { if (string.IsNullOrWhiteSpace(region.LeaveMsg)) { player.SendInfoMessage("You have left region {0}", region.Region.Name); } else { player.SendMessage(region.LeaveMsg, Color.White); } } if (region.HasEvent(Event.TempGroup) && player.tempGroup == region.TempGroup) { player.tempGroup = null; player.SendInfoMessage("You are no longer in group {0}.", region.TempGroup.Name); } if (region.HasEvent(Event.Godmode)) { player.GodMode = false; player.SendInfoMessage("You are no longer in godmode!"); } if (region.HasEvent(Event.Pvp) || region.HasEvent(Event.NoPvp) || region.HasEvent(Event.InvariantPvp)) { data.ForcePvP = null; data.CanTogglePvP = true; player.SendInfoMessage("You can toggle your PvP status now."); } }
public static void SendErrorEX(this TSPlayer tsp, object text, bool playsound = true) { tsp.SendMessage(ServerPrefix + text, new Color(195, 83, 83)); if (playsound) { NetMessage.PlayNetSound(new NetMessage.NetSoundInfo(tsp.TPlayer.position, 122, -1, 0.62f), tsp.Index); } }
//private void SaveMoney(CommandArgs arg) //{ // TSPlayer player = arg.Player; // lastPlaceOfDeathData.UpdateSaveMoneyUser(player.UUID); // if (lastPlaceOfDeathData.GetUserSavedMoney(player.UUID)) // player.SendMessage("Save Money Mode has been Enabled", Color.GreenYellow); // else // player.SendMessage("Save Money Mode has been Disabled", Color.GreenYellow); //} private void InfoLastDeath(CommandArgs arg) { TSPlayer player = arg.Player; SOSKey sos = lastPlaceOfDeathData.GetUserDeathInfo(player.UUID); if (sos.deathCount > 0) { string text = String.Format("Location (X, Y): ({0}, {1})\nDescription: {2}\nDeath Count: {3}", sos.lastDeathPlaceX, sos.lastDeathPlaceY, sos.lastDeathMessage, sos.deathCount); player.SendMessage(text, Color.YellowGreen); } else { player.SendMessage("You haven't died yet in the server.", Color.YellowGreen); } }
public void GetBalance(TSPlayer player) { BankManager manager = new BankManager(TShock.DB); var account = manager.GetBalance(player.UserAccountName); player.SendMessage(string.Format("Your account has a balance of: {0}", account.Amount), Color.Green); }
/// <summary> /// Sends a prefixed message to the specified player. /// </summary> /// <param name="player">The player.</param> /// <param name="message">The message, which must not be <c>null</c>.</param> /// <param name="color">The message color.</param> /// <exception cref="ArgumentNullException"><paramref name="message" /> is null.</exception> private static void SendClansMessage(this TSPlayer player, [NotNull] string message, Color color) { if (message == null) { throw new ArgumentNullException(nameof(message)); } player.SendMessage($"[Clans] {message}", color); }
public static void SendEX(this TSPlayer tsp, object text, bool playsound, Color color = default) { color = color == default ? new Color(212, 239, 245) : color; tsp.SendMessage(ServerPrefix + text, color); if (playsound) { NetMessage.PlayNetSound(new NetMessage.NetSoundInfo(tsp.TPlayer.position, 122, -1, 0.62f), tsp.Index); } }
} // OnJoin ---------------------------------------------------------------- // OnGreetPlayer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void OnGreetPlayer(int playerId, HandledEventArgs eventArgs) { if (_nameChanged) { _player.SendMessage("Warning: Your name had invalid characters, it has been changed to: " + _newName, Color.OrangeRed); } // if } // OnGreetPlayer ---------------------------------------------------------
public override void Execute() { var database = LogTile.DB; String query = "SELECT * FROM LogTile WHERE X BETWEEN @0 AND @1 AND Y BETWEEN @2 and @3 AND Date > @4 ORDER BY id DESC;"; var events = new List <TileEvent>(); using (var reader = database.QueryReader(query, ply.TileX - args.radius, ply.TileX + args.radius, ply.TileY - args.radius, ply.TileY + args.radius, (LogTile.helper.GetTime() - args.since))) { while (reader.Read()) { var e = new TileEvent(reader.Get <int>("X"), reader.Get <int>("Y"), LogTile.helper.INTtoString(reader.Get <int>("IP")), reader.Get <string>("Name"), LogTile.helper.getAction(reader.Get <int>("Action")), reader.Get <int>("TileType"), reader.Get <int>("Date")); events.Add(e); } } if (args.page <= 0) { ply.SendMessage("There are " + Math.Ceiling(events.Count / 7.0) + " pages. (" + events.Count + "edits)"); for (var i = 0; i < Math.Min(6, events.Count); i++) { ply.SendMessage(events[i].parseEvent()); } } else if (events.Count > 0) { for (var i = ((args.page - 1) * 7) - 1; i < Math.Min(args.page * 7 - 1, events.Count); i++) { ply.SendMessage(events[i].parseEvent()); } } else { ply.SendMessage("No results found.", Color.Green); } ply.SendMessage("Edits made: " + events.Count, Color.Green); }
public void Deposit(TSPlayer player, int amount) { if (!CheckInRegion(player)) { return; } BankManager manager = new BankManager(TShock.DB); var account = manager.GetBalance(player.UserAccountName); //// piggy back on the raffle manager to get shards //RaffleManager raffleManager = new RaffleManager(TShock.DB); //var shards = raffleManager.GetServerPointAccounts(player.UserAccountName); try { var ePlayer = ServerPointSystem.ServerPointSystem.EPRPlayers.Single(p => p.TSPlayer == player); if (ePlayer.DisplayAccount < amount) { player.SendMessage("You do not have the required shards.", Color.Red); } else { manager.Deposit(player.UserAccountName, amount); ServerPointSystem.EPREvents.PointOperate(ePlayer, -amount, ServerPointSystem.PointOperateReason.Deduct); //ServerPointSystem.ServerPointSystem.Deduct(new CommandArgs("deduct", player, new List<string>() //{ // player.UserAccountName, // amount.ToString() //})); player.SendMessage("You have successfully deposited into your account.", Color.Green); } } catch (Exception ex) { player.SendMessage("Could not deposit at this time.", Color.Red); } }
public void OnGreet(GreetPlayerEventArgs args) { if (TShock.Players[args.Who] == null) { return; } TSPlayer player = TShock.Players[args.Who]; player.SendMessage(getStaff(), Color.Cyan); return; }
public static void AddCommand(AbstractCommand cmd, TSPlayer ply) { if (ply != null) { ply.SendMessage(String.Format("There are currently {0} items in the queue. Your request will be added to the bottom.", queue.Count), Color.Green); } lock ( queue ) { queue.Add(cmd); } }
public static void Paginate(KeyValuePair <string, Color> header, Dictionary <string, Color> messages, int page, TSPlayer player) { if (messages.Count <= 7) { foreach (var Pair in messages) { player.SendMessage(Pair.Key, Pair.Value); } } else { //pagenation: const int pagelimit = 6; int pagecount = messages.Count / pagelimit; if (page > pagecount) { player.SendMessage(string.Format("Page number exceeds pages ({0}/{1})", page + 1, pagecount + 1), Color.Red); return; } player.SendMessage(header.Key, header.Value); var flines = new List <string>(messages.Keys); var fcolours = new List <Color>(messages.Values); var messagelist = new List <string>(); for (int i = (page * pagelimit); (i < ((page * pagelimit) + pagelimit)) && i < messages.Count; i++) { messagelist.Add(flines[i]); } var colourlist = new List <Color>(); for (int i = (page * pagelimit); (i < ((page * pagelimit) + pagelimit)) && i < messages.Count; i++) { colourlist.Add(fcolours[i]); } for (int i = 0; i < messagelist.Count; i++) { player.SendMessage(messagelist[i], colourlist[i]); } } }
void OnChat(messageBuffer msg, int ply, string text, HandledEventArgs e) { if (!text.StartsWith("/")) { TSPlayer plr = TShock.Players[msg.whoAmI]; if (EBUtils.IsPlayerMuted(plr.Name)) { plr.SendMessage("You are muted!", Color.Red); e.Handled = true; } } }
public void OnGetNetData(GetDataEventArgs args) { PacketTypes packetType = args.MsgID; // Why the hell do GetDataEventArgs not have an args.Who like the other event args do?! TSPlayer player = TShock.Players[args.Msg.whoAmI]; if (null == player) { return; } if (!this.IsLynchable(player.Name)) { return; } switch (packetType) { case PacketTypes.TogglePvp: TShockExtensions.TShockExtensions.EnablePvP(player); player.SendMessage( String.Format("{0}", this.config.denyDisablePvPMessage), this.config.denyDisablePvPMessageRed, this.config.denyDisablePvPMessageGreen, this.config.denyDisablePvPMessageBlue ); args.Handled = true; break; // This packet is stupidly weird and bad. Why would it be called PlayerTeam when there's a packet called ToggleParty that doesn't work the way that the name suggests.. case PacketTypes.PlayerTeam: TShockExtensions.TShockExtensions.ForceNoTeam(player); player.SendMessage( String.Format("{0}", this.config.denyChangeTeamMessage), this.config.denyChangeTeamMessageRed, this.config.denyChangeTeamMessageGreen, this.config.denyChangeTeamMessageBlue ); // These handled thingies really worked out, it doesn't spam the chat anymore when you toggle...10/10 args.Handled = true; break; } }
public void Withdraw(TSPlayer player, int amount) { if (!CheckInRegion(player)) { return; } BankManager manager = new BankManager(TShock.DB); var account = manager.GetBalance(player.UserAccountName); if (account.Amount - amount < 0) { player.SendMessage("You do not have enough to withdraw that amount.", Color.Red); } else { try { var ePlayer = ServerPointSystem.ServerPointSystem.EPRPlayers.Single(p => p.TSPlayer == player); manager.Withdraw(player.UserAccountName, amount); ServerPointSystem.EPREvents.PointOperate(ePlayer, amount, ServerPointSystem.PointOperateReason.Award); //ServerPointSystem.ServerPointSystem.Award(new CommandArgs("award", player, new List<string>() //{ // player.Name, // amount.ToString() //})); player.SendMessage("You have successfully withdrawn from your account.", Color.Green); } catch (Exception ex) { player.SendMessage("Could not withdraw shards at this time.", Color.Red); } } }
private static void viewBalance(TSPlayer client, int pageNumber) { const int itemsPerPage = 4; var lines = new List <string>(BankingPlugin.Instance.Bank.CurrencyManager.Count); foreach (var currency in BankingPlugin.Instance.Bank.CurrencyManager) { var account = BankingPlugin.Instance.GetBankAccount(client.Name, currency.InternalName); if (account == null) { client.SendErrorMessage($"Unable to find account for currency '{currency.InternalName}'."); return; } var balance = currency.GetCurrencyConverter().ToString(account.Balance); //, true); lines.Add($"{currency.InternalName} - {balance}"); } var pageCount = lines.PageCount(itemsPerPage); if (pageNumber < 1 || pageNumber > pageCount) { pageNumber = 1; } var page = lines.GetPage(pageNumber - 1, itemsPerPage); //we display based off of 1 client.SendMessage($"Page #{pageNumber} of {pageCount}.", Color.Green); foreach (var l in page) { client.SendInfoMessage(l); } client.SendMessage("Use /bank bal <page> or /bank bal <currency> to see more.", Color.Green); }
/// <summary> /// Show the RCoins for a given username /// </summary> /// <param name="player">TSPlayer player</param> public void Status(TSPlayer player, string name = "") { string playername = string.Empty; int playingtime = 0; double rcoins = 0; var user = TShock.Users.GetUserByName(player.Name); if (name != "") { using (var reader = database.QueryReader("SELECT * FROM Users WHERE LOWER (Username) = @0;", name.ToLower())) { if (reader.Read()) { playername = reader.Get<string>("Username"); playingtime = reader.Get<int>("PlayingTime"); rcoins = reader.Get<double>("RCoins"); player.SendMessage(string.Format("Player <{0}> have {1} RCoins. Total played time is {2} minutes.", playername, Math.Round(rcoins, 2), playingtime), Color.LightGreen); return; } else { player.SendMessage("No players found", Color.Red); return; } } } player.SendMessage("You have " + Math.Round(user.RCoins, 2) + " RCoins.", Color.LightPink); player.SendMessage("Your total played time is " + user.PlayingTime + " minutes.", Color.LightGreen); }
/// <summary> /// Show the top of players /// </summary> /// <param name="player">Tsplayer player</param> public void Top(TSPlayer player, bool rc = true) { string playername = string.Empty; int playingtime = 0; int count = 0; double rcoins = 0; var user = TShock.Users.GetUserByName(player.Name); try { if (rc == true) { using (var reader = database.QueryReader("SELECT * FROM Users ORDER BY RCoins DESC LIMIT 3")) while (reader.Read()) { count++; playername = reader.Get<string>("Username"); playingtime = reader.Get<int>("PlayingTime"); rcoins = reader.Get<double>("RCoins"); if (count == 1) player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightPink); if (count == 2) player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightGreen); if (count == 3) player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightBlue); } } else { using (var reader = database.QueryReader("SELECT * FROM Users ORDER BY PlayingTime DESC LIMIT 3")) while (reader.Read()) { count++; playername = reader.Get<string>("Username"); playingtime = reader.Get<int>("PlayingTime"); rcoins = reader.Get<double>("RCoins"); if (count == 1) player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightPink); if (count == 2) player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightGreen); if (count == 3) player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightBlue); } } } catch (Exception ex) { throw new UserManagerException("Top SQL returned an error", ex); } player.SendMessage("You have " + Math.Round(user.RCoins, 2) + " Rcoins. Total played time is " + user.PlayingTime + " minutes", Color.Yellow); }
public bool HasPermissionToBuildInRegion(TSPlayer ply) { if (!ply.IsLoggedIn) { if (!ply.HasBeenNaggedAboutLoggingIn) { ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red); ply.HasBeenNaggedAboutLoggingIn = true; } return false; } if (!DisableBuild) { return true; } for (int i = 0; i < AllowedIDs.Count; i++) { if (AllowedIDs[i] == ply.UserID) { return true; } } return false; }
/// <summary> /// Checks if a given player has permission to build in the region /// </summary> /// <param name="ply">Player to check permissions with</param> /// <returns>Whether the player has permission</returns> public bool HasPermissionToBuildInRegion(TSPlayer ply) { if (!DisableBuild) { return true; } if (!ply.IsLoggedIn) { if (!ply.HasBeenNaggedAboutLoggingIn) { ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red); ply.HasBeenNaggedAboutLoggingIn = true; } return false; } return ply.HasPermission(Permissions.editregion) || AllowedIDs.Contains(ply.User.ID) || AllowedGroups.Contains(ply.Group.Name) || Owner == ply.User.Name; }
public bool HasPermissionToBuildInRegion(TSPlayer ply, out string CoOwner) { CoOwner = string.Empty; if (!ply.IsLoggedIn) { ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red); return false; } if (!DisableBuild) { return true; } try { for (int i = 0; i < AllowedIDs.Count; i++) { CoOwner = string.Format("{0} {1}", CoOwner, TShock.Users.GetNameForID((int)AllowedIDs[i])); } CoOwner = CoOwner.Remove(0, 1); } catch { CoOwner = ""; return false; } for (int i = 0; i < AllowedIDs.Count; i++) { if (AllowedIDs[i] == ply.UserID) { return true; } } return false; }