void HandleLeave(Player p, string[] args) { string prefix = "%dParties> %S"; string noParty = prefix + "You are not in a party."; Team team = Team.GetData(p).Team; if (team == null) { p.Message(noParty); return; } // Handle '/party leave me alone', for example if (args.Length > 1) { team.Message(p, args.Join(" ")); return; } team.Action(p, "has left the party."); team.Remove(p.name); Team.GetData(p).Team = null; team.OwnerLeft(p); Team.SaveList(); }
public override void Use(Player p, string message, CommandData data) { p.lastCMD = "Party"; string prefix = "%dParties> %S"; string noParty = prefix + "You are not in a party."; if (message.Length == 0) { Help(p); return; } string[] args = message.SplitSpaces(2); switch (args[0].ToLower()) { case "owner": HandleOwner(p, args); return; case "kick": HandleKick(p, args); return; case "create": HandleCreate(p, args, data); return; case "join": HandleJoin(p, args); return; case "invite": HandleInvite(p, args); return; case "leave": HandleLeave(p, args); return; case "list": HandleMembers(p, args); return; } Team team = Team.GetData(p).Team; if (team == null) { p.Message(noParty); return; } team.Message(p, message); }
public void OwnerLeft(Player p) { Team team = Team.GetData(p).Team; if (Members.Count > 0) { // Choose a new owner at random team.Action(p, "has left the party (disconnected)."); team.Remove(p.name); Team.SaveList(); Team.GetData(p).Team = null; var random = new Random(); int index = random.Next(team.Members.Count); team.Message(p, "%dThe new party owner is %b" + team.Members[index]); team.Owner = team.Members[index]; Team.SaveList(); return; } Teams.Remove(this); // Remove empty }