RunUO-FR
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
RunUO-FR

Forum de support pour RunUO en français.
 
AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

 

 Commande afin de vérifier si un joueur macrote ou non.

Aller en bas 
AuteurMessage
Scriptiz

Scriptiz


Messages : 102
Date d'inscription : 02/09/2008
Localisation : Belgium

Commande afin de vérifier si un joueur macrote ou non. Empty
MessageSujet: Commande afin de vérifier si un joueur macrote ou non.   Commande afin de vérifier si un joueur macrote ou non. Icon_minipostedDim 13 Sep - 17:04

Description :
Vérifie si un joueur macrote à l'aide de la commande [macro (fonctionne sous RunUO 2 RC2)
Si vous suspectez un joueur de macroter, vous entrez la commande macro (avec votre préfixe devant) et vous sélectionner le joueur, celui-ci verra ce joli petit Gump :

Commande afin de vérifier si un joueur macrote ou non. Macrotage

Sur ce formulaire existent plusieurs choix. Si le joueur choisis "Je suis là !", il ne lui arrivera rien. Par contre si le joueurs ne réponds pas dans un délai de 60 secondes ou qu'il réponds un autre choix, le joueur sera juste kické du serveur et il lui suffira de se reconnecter lorsqu'il reviendra.
L'utilité de ceci est de pouvoir vérifier lorsqu'un joueur macrote abusivement sans être devant son écran et ceci sans que le GM doive intervenir.

Bon codage à tous et à toutes Wink

Bugs connus :
- Le temps s'affiche mal au GM qui à envoyer le formulaire lorsque le joueur réponds après que l'intervalle du Timer ait changée. Rien de bien dérangeant et je corrigerais ça à l'occasion.


Sources
ZIP : http://demango.ovh.org/MacroCheck.cs

MacroCommand.cs
Code:
/**
 * MacroCheck's Command (adapted from RunUO1 version created by Hyel staff)
 * @author Scriptiz
 * @date 20090913
 */
using System;
using Server;
using Server.Targeting;
using Server.Mobiles;
using Server.Gumps;

namespace Server.Commands
{
    public class MacroCommand
    {
        public static void Initialize()
        {
            CommandSystem.Register("Macro", AccessLevel.Counselor, new CommandEventHandler(Macro_OnCommand));
        }

        [Usage("Macro [target]")]
        [Description("Envoie un avertissement au joueur pour déterminer s'il macrote ou non.")]
        private static void Macro_OnCommand(CommandEventArgs e)
        {
            Mobile from = e.Mobile;

            if (from != null)
            {
                from.SendMessage("Qui suspectez vous de macrotage ?");

                from.Target = new InternalTarget(e.Arguments);
            }
        }

        private class InternalTarget : Target
        {
            string[] m_parameter;

            public InternalTarget(params string[] parameter)
                : base(-1, true, TargetFlags.None)
            {
                m_parameter = parameter;
            }

            protected override void OnTarget(Mobile from, object targeted)
            {
                PlayerMobile pm = null;

                if (targeted is PlayerMobile)
                    pm = (PlayerMobile)targeted;

                if (pm != null && !pm.HasGump(typeof(MacroGump)))
                {
                    pm.SendGump(new MacroGump(from, pm));
                }
            }
        }
    }
}

MacroGump.cs
Code:
/**
 * MacroCheck's Gump
 * @author Scriptiz
 * @date 20090913
 */
using System;
using Server;
using Server.Network;
using Server.Accounting;

namespace Server.Gumps
{
    public class MacroGump : Gump
    {
        private Mobile jailor;
        private Mobile badBoy;
        DateTime issued = DateTime.Now;
        Timer response;
        int gButton = 2;

        public MacroGump(Mobile from, Mobile m) : base(70, 40)
        {
            jailor = from;
            badBoy = m;

            gButton = (new System.Random()).Next(6);
            if (gButton < 1) gButton = 1;
            if (gButton > 6) gButton = 6;

            ((Account)m.Account).Comments.Add(new AccountComment("-warning", jailor.Name + " a vérifié si " + badBoy.Name + " était entrain de macroter à : " + DateTime.Now));

            Closable = false;
            Dragable = true;
            AddPage(0);
            AddBackground(0, 0, 326, 320, 5054);
            AddImageTiled(9, 65, 308, 240, 2624);
            AddAlphaRegion(9, 65, 308, 240);
            //AddLabel( 16, 20, 200, string.Format("{0} is checking to see if you are macroing unattended", jailor.Name));
            this.AddHtml(16, 10, 250, 50, string.Format("{0} vérifie si vous êtes entrain de macroter.", jailor.Name), false, false);
            //let them show that they are there by selecting these buttons
            AddButton(20, 72, 2472, 2473, 5, GumpButtonType.Reply, 0);
            AddLabel(50, 75, 200, gButton == 5 ? "Je suis la !" : "Je confesse, je suis un vilain macroteur.");
            AddButton(20, 112, 2472, 2473, 1, GumpButtonType.Reply, 0);
            AddLabel(50, 115, 200, gButton == 1 ? "Je suis la !" : "Je confesse, je suis un vilain macroteur.");
            AddButton(20, 152, 2472, 2473, 2, GumpButtonType.Reply, 0);
            AddLabel(50, 155, 200, gButton == 2 ? "Je suis la !" : "Je confesse, je suis un vilain macroteur.");
            AddButton(20, 192, 2472, 2473, 3, GumpButtonType.Reply, 0);
            AddLabel(50, 195, 200, gButton == 3 ? "Je suis la !" : "Je confesse, je suis un vilain macroteur.");
            AddButton(20, 232, 2472, 2473, 4, GumpButtonType.Reply, 0);
            AddLabel(50, 235, 200, gButton == 4 ? "Je suis la !" : "Je confesse, je suis un vilain macroteur.");
            AddButton(20, 272, 2472, 2473, 6, GumpButtonType.Reply, 0);
            AddLabel(50, 275, 200, gButton == 6 ? "Je suis la !" : "Je confesse, je suis un vilain macroteur.");

            if (jailor != null && badBoy != null)
            {
                m.SendMessage("Vous êtes suspecté de macrotage, veuillez répondre s'il vous plait.");
                response = new MacroTimer(this);
            }
            else
                Closable = true;
        }

        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;
            if (response != null)
                response.Stop();

            if (gButton == info.ButtonID)
            {
                string mtemp = string.Format("{0} a répondu à la vérification en {1} secondes.", from.Name, ((TimeSpan)(DateTime.Now.Subtract(issued))).Seconds);
                ((Account)badBoy.Account).Comments.Add(new AccountComment("-warning", mtemp));
                jailor.SendMessage(mtemp);
            }
            else
            {
                caughtInTheAct(true);
            }
            from.CloseGump(typeof(MacroGump));
        }

        public void caughtInTheAct(bool confessed)
        {
            if (!confessed)
                jailor.SendMessage("{0} a été kické pour {1} suite au délai de votre avertissement.", badBoy.Name, "Macrotage");
            else
                jailor.SendMessage("{0} a été kické pour {1} en avouant ses crimes.", badBoy.Name, "Macrotage");

            NetState kicked = badBoy.NetState;

            if (kicked != null)
            {
                badBoy.SendMessage("Vous êtes kické pour cause de Macrotage.");
                kicked.Dispose();
            }

            if (response != null)
                response.Stop();
        }

        protected class MacroTimer : Timer
        {
            public MacroGump m_Gump;
            int counts = 60;

            public MacroTimer(MacroGump myGump)
                : base(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10))
            {
                m_Gump = myGump;
                this.Start();
            }

            protected override void OnTick()
            {
                counts -= this.Interval.Seconds;
                switch (counts)
                {
                    case 50:
                    case 40:
                    case 30:
                    case 20:
                        this.Interval = TimeSpan.FromSeconds(1);
                        goto case 10;
                    case 10:
                    case 9:
                    case 8:
                    case 7:
                    case 6:
                    case 5:
                    case 4:
                    case 3:
                    case 2:
                    case 1:
                        m_Gump.badBoy.SendMessage("Attention : fermeture dans {0} secondes.", counts);
                        break;
                    case 0:
                        m_Gump.caughtInTheAct(false);
                        m_Gump.badBoy.CloseGump(typeof(MacroGump));
                        this.Stop();
                        break;
                    default:
                        break;
                }
            }
        }
    }
}
Revenir en haut Aller en bas
http://uoclassic.free.fr/
 
Commande afin de vérifier si un joueur macrote ou non.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» créer une commande

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RunUO-FR :: Domaine public :: Vos créations-
Sauter vers: