Пример #1
0
    // Update is called once per frame
    void Update()
    {
        switch (state)
        {
        case GlueState.DEACTIVATED:
            break;

        case GlueState.WARMUP:
            if (activatedTime + glueWarmUp < Time.time)
            {
                fixedJoint.enabled = true;
                startUseTime       = Time.time;
                state = GlueState.IN_USE;
            }
            break;

        case GlueState.IN_USE:
            if (startUseTime + glueDuration < Time.time)
            {
                fixedJoint.enabled = false;
                state = GlueState.DEACTIVATED;
            }
            break;
        }
    }
Пример #2
0
 public void GlueRecursive(GlueState nextGlueState)
 {
     Glue(nextGlueState);
     if (childPart != null)
     {
         childPart.GlueRecursive(nextGlueState);
     }
 }
Пример #3
0
        private void EnterCredentialsASAP()
        {
            var counter = 300;

            while (counter > 0)
            {
                try
                {
                    process.Refresh();
                    if (process.MainWindowHandle != (IntPtr)0)
                    {
                        if (WoWProcessManager.Processes.TryGetValue(process.Id, out WowProcess wowProcess) && wowProcess.Memory != null)
                        {
                            bool okay;
                            if (wowProcess.IsValidBuild)
                            {
                                GlueState glueState     = wowProcess.Memory.Read <GlueState>(wowProcess.Memory.ImageBase + WowBuildInfoX64.GlueState);
                                var       focusedWidget = wowProcess.Memory.Read <IntPtr>(wowProcess.Memory.ImageBase + WowBuildInfoX64.FocusedWidget);
                                okay = glueState == GlueState.Disconnected && focusedWidget != (IntPtr)0;
                            }
                            else
                            {
                                Thread.Sleep(3000);
                                okay = true;
                            }
                            if (okay)
                            {
                                foreach (char ch in wowAccount.GetLogin())
                                {
                                    NativeMethods.PostMessage(wowProcess.MainWindowHandle, Win32Consts.WM_CHAR, (IntPtr)ch, IntPtr.Zero);
                                    Thread.Sleep(5);
                                }
                                var tabCode = new IntPtr(0x09);
                                NativeMethods.PostMessage(wowProcess.MainWindowHandle, Win32Consts.WM_KEYDOWN, tabCode, IntPtr.Zero);
                                NativeMethods.PostMessage(wowProcess.MainWindowHandle, Win32Consts.WM_KEYUP, tabCode, IntPtr.Zero);
                                Thread.Sleep(5);
                                foreach (char ch in wowAccount.GetPassword())
                                {
                                    NativeMethods.PostMessage(wowProcess.MainWindowHandle, Win32Consts.WM_CHAR, (IntPtr)ch, IntPtr.Zero);
                                    Thread.Sleep(5);
                                }
                                var enterCode = new IntPtr(0x0D);
                                NativeMethods.PostMessage(wowProcess.MainWindowHandle, Win32Consts.WM_KEYDOWN, enterCode, IntPtr.Zero);
                                NativeMethods.PostMessage(wowProcess.MainWindowHandle, Win32Consts.WM_KEYUP, enterCode, IntPtr.Zero);
                                log.Info($"{wowProcess} Credendials have been entered [{Utils.SecureString(wowAccount.GetLogin())}]");
                                break;
                            }
                        }
                    }
                    Thread.Sleep(100);
                    counter--;
                }
                catch (Exception ex)
                {
                    log.Error($"[{process.ProcessName}:{process.Id}] Internal error: {ex.Message}");
                }
            }
        }
Пример #4
0
    public void Glue(GlueState nextGlueState)
    {
        if (glueState == nextGlueState)
        {
            return;
        }
        glueState = nextGlueState;

        switch (glueState)
        {
        case GlueState.HOME: SetParent(bodyParent); break;

        case GlueState.SKELETON:
            SetParent(thisBody.skeleton.transform);
            break;

        case GlueState.HAND: SetParent(handParent); break;

        case GlueState.LIMB: SetParent(limbParent); break;

        case GlueState.FREE:
            SetParent(null);
            break;
        }
        if (glueState == GlueState.FREE)
        {
            thisRigidbody.isKinematic = false;
            PhysicsChange(PhysicsState.FLYINGOFF);
            waitingForProjectile = true;
        }
        else
        {
            thisRigidbody.isKinematic = true;
            PhysicsChange(PhysicsState.NORMAL);
        }
    }
Пример #5
0
 public override void Activated()
 {
     base.Activated();
     state = GlueState.WARMUP;
 }
Пример #6
0
        private void LoginWoW()
        {
            // throttle lua calls.
            if (DateTime.Now - _luaThrottleTimeStamp >= TimeSpan.FromSeconds(HbRelogManager.Settings.LoginDelay))
            {
                bool serverIsOnline = !HbRelogManager.Settings.CheckRealmStatus ||
                                      (HbRelogManager.Settings.CheckRealmStatus &&
                                       HbRelogManager.WowRealmStatus.RealmIsOnline(Settings.ServerName, Settings.Region));
                // if we are checking for wow server status and the wow server is offline then return
                if (serverIsOnline)
                {
                    GlueState glueStatus = GlueStatus;
                    // check if at server selection for tooo long.
                    if (glueStatus == _lastGlueStatus)
                    {
                        if (!_serverSelectionSw.IsRunning)
                        {
                            _serverSelectionSw.Start();
                        }
                        WowRealmStatus.WowRealmStatusEntry status =
                            HbRelogManager.WowRealmStatus[Settings.ServerName, Settings.Region];
                        bool serverHasQueue = HbRelogManager.Settings.CheckRealmStatus && status != null &&
                                              status.InQueue;
                        // check once every 40 seconds
                        if (_serverSelectionSw.ElapsedMilliseconds > 40000 && !serverHasQueue)
                        {
                            Profile.Log("Failed to login wow, lets restart");
                            GameProcess.Kill();
                            StartWoW();
                            // set to 'None' to prevent an infinite loop if set to 'Disconnected'
                            _lastGlueStatus = GlueState.None;
                            return;
                        }
                    }
                    else if (_serverSelectionSw.IsRunning)
                    {
                        _serverSelectionSw.Reset();
                    }

                    AntiAfk();
                    switch (glueStatus)
                    {
                    case GlueState.Disconnected:
                        Profile.Status = "Logging in";
                        Lua.DoString(_loginLua);
                        break;

                    case GlueState.CharacterSelection:
                        Profile.Status = "At Character Selection";
                        Lua.DoString(_charSelectLua);
                        break;

                    case GlueState.ServerSelection:
                        Profile.Status = "At Server Selection";
                        Lua.DoString(_realmSelectLua);
                        break;

                    case GlueState.CharacterCreation:
                        Lua.DoString(
                            "CharacterCreate_Back()");
                        break;

                    case GlueState.Updater:
                        Profile.Pause();
                        Profile.Log("Wow is updating. pausing.");
                        break;
                    }
                    Profile.Log("GlueStatus: {0}", GlueStatus);
                    _lastGlueStatus = glueStatus;
                }
                else
                {
                    Profile.Status = "Waiting for server to come back online";
                }
                _luaThrottleTimeStamp = DateTime.Now;
            }
        }