Beispiel #1
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (from.Deleted || !from.Alive)
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 0: return;

            case 1: from.SendGump(new CompetenceSmallGump(m_From, m_Comp, m_ShowCaps)); break;

            case 2: from.SendGump(new CompetenceSmallGump(m_From, m_Comp, m_ShowCaps)); break;

            case 3:
                if (m_ShowCaps)
                {
                    from.SendGump(new CompetenceGump(m_From, m_Comp, false)); break;
                }
                else
                {
                    from.SendGump(new CompetenceGump(m_From, m_Comp, true)); break;
                }

            default:
                try
                {
                    int       oldValue = 0;
                    SkillName comp;

                    if (info.ButtonID >= 300)
                    {
                        int i = info.ButtonID - 300;
                        comp = (SkillName)i;
                        if (i >= SkillInfo.Table.Length)
                        {
                            from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                            return;
                        }
                        if (from.NextSkillTime < Core.TickCount)
                        {
                            TimeSpan span = SkillInfo.Table[i].Callback(from);
                            from.NextSkillTime = Core.TickCount + Core.GetTicks(span);
                        }
                        else
                        {
                            from.SendMessage("Il est trop tot pour utiliser une competence a nouveau.");
                        }
                    }
                    if (info.ButtonID >= 200)
                    {
                        comp = (SkillName)(info.ButtonID - 200);
                        if ((int)comp >= SkillInfo.Table.Length)
                        {
                            from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                            return;
                        }
                        oldValue = Competences.GetValue(m_From, comp);

                        if (Competences.CanLower(m_From, comp))
                        {
                            Competences.Lower(m_From, comp, oldValue - 1);
                            if (comp == SkillName.Langues)
                            {
                                m_From.Langues.FixLangues();
                            }
                            //m_From.Skills.(comp, oldValue - 1);
                        }
                        from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                    }
                    else if (info.ButtonID >= 100)
                    {
                        comp     = (SkillName)(info.ButtonID - 100);
                        oldValue = Competences.GetValue(m_From, comp);

                        if (Competences.CanRaise(m_From, comp))
                        {
                            //m_From.CompetencesLibres -= 1;
                            Competences.Raise(m_From, comp, oldValue + 1);
                        }
                        from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                    }
                    else
                    {
                        if (m_Comp != SkillCategory.Aucun)
                        {
                            from.SendGump(new CompetenceGump(m_From, SkillCategory.Aucun, m_ShowCaps));
                        }
                        else
                        {
                            from.SendGump(new CompetenceGump(m_From, (SkillCategory)(info.ButtonID - 3), m_ShowCaps));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Misc.ExceptionLogging.WriteLine(ex, "buttonID : {0}, from : {1}", info.ButtonID, from.NetState);
                }
                break;
            }
        }
Beispiel #2
0
        public CompetenceGump(PlayerMobile from, SkillCategory Comp, bool ShowCaps) : base(0, 0)
        {
            m_From     = from;
            m_Comp     = Comp;
            m_ShowCaps = ShowCaps;

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

            AddPage(0);

            //Restore
            AddButton(242, 55, 2093, 2093, 1, GumpButtonType.Reply, 0);

            //Titre
            if (m_Comp == SkillCategory.Aucun)
            {
                AddBackground(80, 72, 345, 215, 5170);
            }
            else if (m_Comp == SkillCategory.Magie)
            {
                AddBackground(80, 72, 345, 475, 5170);
            }
            else if (m_Comp == SkillCategory.Combat)
            {
                AddBackground(80, 72, 345, 515, 5170);
            }
            else if (m_Comp == SkillCategory.Roublardise)
            {
                AddBackground(80, 72, 345, 475, 5170);
            }
            else if (m_Comp == SkillCategory.Artisanat)
            {
                AddBackground(80, 72, 345, 395, 5170);
            }

            AddHtml(215, 78, 200, 20, "<h3><basefont color=#025a>Compétences<basefont></h3>", false, false);

            //Ligne
            AddImage(150, 105, 2091);

            int ybase = 120;
            int ypos  = 0;

            //Categories
            SkillCategory[] cds = (SkillCategory[])Enum.GetValues(typeof(SkillCategory));
            SkillName[]     sns = SkillInfo.CatTable;
            foreach (SkillCategory cd in cds)
            {
                if (cd == SkillCategory.Aucun)
                {
                    continue;
                }
                if (m_Comp == cd)
                {
                    AddButton(100, (ybase + ypos + 2), 2086, 2086, 3 + (int)cd, GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(100, ybase + ypos, 2087, 2087, 3 + (int)cd, GumpButtonType.Reply, 0);
                }
                AddHtml(115, ybase + ypos, 200, 20, String.Format("<h3><basefont color=#025a>{0}<basefont></h3>", cd.ToString()), false, false);
                int textoffset = 0;
                switch (cd)
                {
                case SkillCategory.Artisanat: textoffset = 70; break;

                case SkillCategory.Combat: textoffset = 50; break;

                case SkillCategory.Magie: textoffset = 48; break;

                case SkillCategory.Roublardise: textoffset = 82; break;
                }
                AddImageTiled(115 + textoffset, ybase + ypos + 7, 250 - textoffset, 5, 2101);
                ypos += 20;

                if (m_Comp == cd)
                {
                    foreach (SkillName sn in sns)
                    {
                        int       i  = (int)sn;
                        SkillInfo si = null;

                        si = SkillInfo.Table[i];
                        if (si.Category != cd)
                        {
                            continue;
                        }

                        if (si.Callback != null)
                        {
                            AddButton(110, (ybase + ypos + 3), 2103, 2104, 300 + (int)sn, GumpButtonType.Reply, 0);
                        }
                        AddHtml(125, (ybase + ypos), 200, 20, String.Format("<h3><basefont color=#5A4A31>{0}<basefont></h3>", si.Name), false, false);
                        AddTooltip(3006369 + i); //TODO: Fix those.

                        if (m_ShowCaps)
                        {
                            AddHtml(m_From.Skills[sn].Cap > 99 ? 327 : 332, (ybase + ypos), 200, 20, "<h3><basefont color=#5A4A31>" + m_From.Skills[sn].Cap + "<basefont></h3>", false, false);
                        }
                        else
                        {
                            AddHtml(m_From.Skills[sn].Value > 99 ? 327 : 332, (ybase + ypos), 200, 20, "<h3><basefont color=#5A4A31>" + m_From.Skills[sn].Value + "<basefont></h3>", false, false);
                        }
                        if (Competences.CanRaise(from, m_From.Skills[sn]))
                        {
                            AddButton(353, (ybase + ypos + 3), 2089, 2089, 100 + i, GumpButtonType.Reply, 0);
                        }
                        if (Competences.CanLower(from, m_From.Skills[sn]))
                        {
                            AddButton(368, (ybase + ypos + 3), 2086, 2086, 200 + i, GumpButtonType.Reply, 0);
                        }
                        ypos += 20;
                    }
                }
            }


            //Ligne
            AddImage(150, (ybase + ypos + 2), 2091);

            //PC
            if (m_From is PlayerMobile)
            {
                AddImage(105, (ybase + ypos + 20), 5411);
                AddTooltip(3006366);
                //AddHtml(128, (ybase + ypos + 20), 200, 20, "<h3><basefont color=#025a>" + Competences.GetDisponibleComp(((PlayerMobile)m_From)) + " | " + (Competences.GetRemainingComp(((PlayerMobile)m_From)) - Competences.GetDisponibleComp(((PlayerMobile)m_From))) + "<basefont></h3>", false, false);
            }

            //Cap Total
            AddImage(370, (ybase + ypos + 20), 2092);
            AddTooltip(3006367);
            AddHtml(290, (ybase + ypos + 20), 200, 20, "<h3><basefont color=#025a>" + (m_From.SkillsTotal / 10) + " | " + (m_From.SkillsCap / 10) + "<basefont></h3>", false, false);

            //Cap Individuel
            if (m_ShowCaps)
            {
                AddButton(390, (ybase + ypos + 45), 2223, 2223, 3, GumpButtonType.Reply, 0);
                AddTooltip(3006368);
                AddHtml(242, (ybase + ypos + 43), 200, 20, "<h3><basefont color=#025a>Montrer les Valeurs<basefont></h3>", false, false);
                AddTooltip(3006368);
            }
            else
            {
                AddButton(390, (ybase + ypos + 45), 2224, 2224, 3, GumpButtonType.Reply, 0);
                AddTooltip(3006368);
                AddHtml(265, (ybase + ypos + 43), 200, 20, "<h3><basefont color=#025a>Montrer les Caps<basefont></h3>", false, false);
                AddTooltip(3006368);
            }
            //Scroll
            AddImage(385, 100, 2089);
            AddImage(385, 115, 2088);
            AddImage(385, (ybase + ypos + 25), 2086);

            //AddButton(242, (ybase + ypos + 59), 2094, 2095, 2, GumpButtonType.Reply, 0);

            //Ligne
            //AddImage(150, (222 + ypos), 2091);

            //Libre
            //AddImage(365, (240 + ypos), 5411);
            //AddHtml(320, (240 + ypos), 200, 20, "<h3><basefont color=#025a>" + (m_From.SkillsTotal / 10).ToString("N1") + "<basefont></h3>", false, false);

            //Cap
            //AddImage(105, (240 + ypos), 2092);
            //AddHtml(120, (240 + ypos), 200, 20, "<h3><basefont color=#025a>" + (m_From.SkillsCap / 10).ToString("N1") + "<basefont></h3>", false, false);

            //Scroll
            //AddImage(385, (100 + ypos), 2089);
            //AddImage(385, (115 + ypos), 2088);
            //AddImage(385, (245 + ypos), 2086);

            //AddButton(242, (279 + ypos), 2094, 2095, 2, GumpButtonType.Reply, 0);
        }