Exemplo n.º 1
0
        public Inviter()
        {
            name2CID = new Dictionary <string, long> {
            };
            Config   = Interface.GetPluginConfig() as Configuration ?? new Configuration();
            Config.Initialize(Interface);
            var easierProcessInvitePtr       = SigScanner.ScanText("E8 ?? ?? ?? ?? EB 3E 44 0F B7 83 ?? ?? ?? ??");
            var easierProcessEurekaInvitePtr = SigScanner.ScanText("E8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 48 8B 83 ?? ?? ?? ?? 48 85 C0 74 62");
            var easierProcessCIDPtr          = SigScanner.ScanText("40 53 48 83 EC 20 48 8B DA 48 8D 0D ?? ?? ?? ?? 8B 52 08");

            getUIModulePtr = SigScanner.ScanText("E8 ?? ?? ?? ?? 48 83 7F ?? 00 48 8B F0");
            uiModulePtr    = SigScanner.GetStaticAddressFromSig("48 8B 0D ?? ?? ?? ?? 48 8D 54 24 ?? 48 83 C1 10 E8 ?? ?? ?? ??");
            InitUi();
            groupManagerAddress = SigScanner.GetStaticAddressFromSig("48 8D 0D ?? ?? ?? ?? 44 8B E7");
            PluginLog.Log("===== I N V I T E R =====");
            PluginLog.Log("Process Invite address {Address}", easierProcessInvitePtr);
            PluginLog.Log("Process CID address {Address}", easierProcessCIDPtr);
            PluginLog.Log("uiModule address {Address}", uiModule);
            PluginLog.Log("uiInvite address {Address}", uiInvite);
            PluginLog.Log("groupManager address {Address}", groupManagerAddress);


            //Log($"EurekaInvite:{easierProcessEurekaInvitePtr}");
            //Interface.Framework.Gui.Chat.OnChatMessageRaw += Chat_OnChatMessageRaw;
            _EasierProcessInvite       = Marshal.GetDelegateForFunctionPointer <EasierProcessInviteDelegate>(easierProcessInvitePtr);
            _EasierProcessEurekaInvite = Marshal.GetDelegateForFunctionPointer <EasierProcessEurekaInviteDelegate>(easierProcessEurekaInvitePtr);

            /*
             * easierProcessEurekaInviteHook = new Hook<EasierProcessEurekaInviteDelegate>(easierProcessEurekaInvitePtr,
             *                                                                 new EasierProcessEurekaInviteDelegate(EasierProcessEurekaInviteDetour),
             *                                                                 this);
             */
            easierProcessCIDHook = new Hook <EasierProcessCIDDelegate>(easierProcessCIDPtr, new EasierProcessCIDDelegate(EasierProcessCIDDetour));
            easierProcessCIDHook.Enable();
            //easierProcessEurekaInviteHook.Enable();

            CmdManager.AddHandler("/xinvite", new CommandInfo(CommandHandler)
            {
                HelpMessage = "/xinvite - open the inviter panel.\n" +
                              "/xinvite <on/off> - turn the auto invite on/off.\n" +
                              "/xinvite <minutes> - enable temporary auto invite for certain amount of time in minutes.\n" +
                              "/xinvite <minutes> <attempts> - enable temporary auto invite for certain amount of time in minutes and finish it after certain amount of invite attempts.\n"
            });
            Gui = new PluginUi(this);
            ChatGui.ChatMessage += Chat_OnChatMessage;
            // Interface.Framework.Network.OnNetworkMessage += Chat_OnNetworkMessage;
            ClientState.TerritoryChanged += TerritoryChanged;
            timedRecruitment              = new TimedEnable(this);
        }