// Group-related functions and accessors public bool Add(User user) { // You can only join a group if you're not already a member in another group. // Check this condition and notify the invitee and existing group members if // there's an issue. if (user.Grouped) { user.SendMessage("You're already in a group.", MessageTypes.SYSTEM); foreach (var member in Members) { member.SendMessage(String.Format("{0} is in another group.", user.Name), MessageTypes.SYSTEM); } // If this fails when the group only contains one other person, the group should be abandoned. if (Count == 1) { Remove(Members[0]); } return false; } // Send a message to notify everyone else that someone's joined. foreach (var member in Members) { member.SendMessage(user.Name + " has joined your group.", MessageTypes.SYSTEM); } Members.Add(user); user.Group = this; ClassCount[user.Class]++; MaxMembers = (uint)Math.Max(MaxMembers, Members.Count); // Send a distinct message to the new user. user.SendMessage("You've joined a group.", MessageTypes.SYSTEM); return true; }
public void Invoke(User trigger) { /* try { World.ScriptMethod(ScriptName, this, trigger); } catch { trigger.SendMessage("It doesn't work.", 3); } * */ trigger.SendMessage("Not implemented.", 3); }
public override void OnClick(User invoker) { Logger.DebugFormat("Signpost was clicked"); if (!IsMessageboard) { if (Message.Length < 1024) invoker.SendMessage(Message, Hybrasyl.MessageTypes.SLATE); else invoker.SendMessage(Message, Hybrasyl.MessageTypes.SLATE_WITH_SCROLLBAR); } }
public void Remove(User user) { Members.Remove(user); user.Group = null; ClassCount[user.Class]--; // If this has ever been a true group from a user's perspective, talk about it. Otherwise // don't send user-facing messages. if (MaxMembers > 1) { // User has already been removed from Members so no need to exclude. foreach (var member in Members) { member.SendMessage(user.Name + " has left your group.", MessageTypes.SYSTEM); } user.SendMessage("You've left a group.", MessageTypes.SYSTEM); } // If there's only one person left, disband the group. if (Count == 1) { Remove(Members[0]); } }
public void Invoke(User trigger) { try { World.ScriptMethod(ScriptName, this, trigger); } catch { trigger.SendMessage("It doesn't work.", 3); } }