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); }
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; } } }