Example #1
0
        public NPChat(Mobile owner, Mobile speaker, int x, int y)
            : base(x, y)
        {
            this.m_Owner   = owner;
            this.m_Speaker = speaker;
            int hue = this.m_Speaker.SpeechHue;

            this.Closable   = true;
            this.Disposable = true;
            this.Dragable   = true;
            this.Resizable  = false;

            AddPage(0);
            AddBackground(0, 0, 290, 90, 9400);
            AddLabel(13, 35, hue, this.m_Speaker.Name);               // @"[MobileName]"
            AddImage(8, 8, 1143);
            AddButton(215, 35, 247, 248, 1, GumpButtonType.Reply, 0); // Send chat

            if (m_Speaker is BaseCreature)
            {
                AddButton(220, 63, 1209, 1210, 2, GumpButtonType.Reply, 0);   // Move button
                AddLabel(237, 60, hue, "Move");
            }

            AddButton(15, 63, 1209, 1210, 3, GumpButtonType.Reply, 0);
            AddLabel(32, 60, hue, "Goto");
            AddButton(120, 63, 1209, 1210, 4, GumpButtonType.Reply, 0);
            AddLabel(137, 60, hue, "Props");

            AddTextEntry(18, 10, 254, 20, hue, 0, @"");

            // On ajoute le mobile à la liste des mobiles écoutés
            NPListener.AddListenedMobile(m_Owner, m_Speaker);
        }
Example #2
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (m_Speaker == null || m_Speaker.Deleted)
            {
                from.SendMessage("Le Mobile que vous controlliez à disparu.");
                return;
            }

            switch (info.ButtonID)
            {
            case 0:
            {
                // Si le gump est fermé on retire le Mobile de la liste des mobiles écoutés
                NPListener.RemoveListenedMobile(m_Owner, m_Speaker);
                if (m_Speaker != null && m_Speaker is BaseCreature)
                {
                    BaseCreature b = (BaseCreature)m_Speaker;
                    b.CurrentSpeed = b.PassiveSpeed;

                    if (b.CurrentWayPoint != null && b.CurrentWayPoint.Name == "TmpPoint")
                    {
                        b.CurrentWayPoint.Delete();
                        b.CurrentWayPoint = null;
                        b.AI = AIType.AI_Use_Default;
                    }
                }
                break;
            }

            case 1:
            {
                TextRelay entry0 = info.GetTextEntry(0);
                string    text0  = (entry0 == null ? "" : entry0.Text.Trim());
                if (m_Speaker != null && m_Speaker is Mobile && text0 != "")
                {
                    this.m_Speaker.PublicOverheadMessage(MessageType.Regular, this.m_Speaker.SpeechHue, false, text0);

                    if (this.m_Owner.GetDistanceToSqrt(this.m_Speaker) >= 10)
                    {
                        this.m_Owner.SendMessage(this.m_Speaker.SpeechHue, this.m_Speaker.Name + " : " + text0);
                    }

                    from.SendGump(new NPChat(from, m_Speaker, this.X, this.Y));
                }
                break;
            }

            case 2:
            {
                if (m_Speaker != null && m_Speaker is Mobile)
                {
                    m_Owner.Target = new DeplacerTarget(m_Speaker);
                    from.SendGump(new NPChat(from, m_Speaker, this.X, this.Y));
                }
                break;
            }

            case 3:
            {
                m_Owner.Hidden = true;
                m_Owner.MoveToWorld(m_Speaker.Location, m_Speaker.Map);
                from.SendGump(new NPChat(from, m_Speaker, this.X, this.Y));
                break;
            }

            case 4:
            {
                from.SendGump(new NPChat(from, m_Speaker, this.X, this.Y));
                m_Owner.SendGump(new PropertiesGump(m_Owner, m_Speaker));
                break;
            }
            }
        }