예제 #1
0
        // 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;
        }
예제 #2
0
파일: Item.cs 프로젝트: DomGrieco/server
 public void Invoke(User trigger)
 {
     /*
     try
     {
         World.ScriptMethod(ScriptName, this, trigger);
     }
     catch
     {
         trigger.SendMessage("It doesn't work.", 3);
     }
      * */
     trigger.SendMessage("Not implemented.", 3);
 }
예제 #3
0
 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);
     }
 }
예제 #4
0
        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]);
            }
        }
예제 #5
0
파일: Item.cs 프로젝트: saroque/server
 public void Invoke(User trigger)
 {
     try
     {
         World.ScriptMethod(ScriptName, this, trigger);
     }
     catch
     {
         trigger.SendMessage("It doesn't work.", 3);
     }
 }