Исходник Magnit to Head Player.

Статус
В этой теме нельзя размещать новые ответы.
Начинающий
Статус
Оффлайн
Регистрация
9 Фев 2021
Сообщения
90
Реакции[?]
24
Поинты[?]
1K
Принцип работы прост, работает в основе везде. Это магнит на голову игрока, были проверены так же моменты когда игрок плавает, когда прыгает, поднимается по лестнице и тд, и работает без каких либо не удобств игроку и вам. Вас не кикнет за FlyHack если конечно сам игрок не читер, и не взлетит :)). Думаю если вы не пастер и нормальный разработчик или хотя бы понимаете своё дело. То не составит труда переписать в ваш софт на плюсы. Не проверял как работает на новой версии раст, но думаю что ничего не поменялось.

C#:
            public static bool _pressOff = false;
            if (input.IsDown(BUTTON.FORWARD) || input.IsDown(BUTTON.BACKWARD) || input.IsDown(BUTTON.LEFT) || input.IsDown(BUTTON.RIGHT) || input.IsDown(BUTTON.JUMP))//Стандартыне проверки на ходьму, магнит отключает, когда вы собираетесь открепится от человека и пойти своим путём.
                _pressOff = false;
            if (UnityEngine.Input.GetKeyDown(KeyCode.F)//Key Bind
                && IsOpen())//Проверка на то, открыт ли инвентарь, консоль, чат, или esc. Для того, что бы когда вы печатали то функция не сработала.
                _pressOff = true;
                GetComponent<PlayerWalkMovement>().body.constraints = _pressOff ? RigidbodyConstraints.FreezePositionY : RigidbodyConstraints.FreezeRotation;//Заморозить движение по оси Y, когда срабатывает магнит.
                foreach (var basePlayer in BasePlayer.VisiblePlayerList)
                {
                    if (basePlayer != null && (int)Vector3.Distance(LocalPlayer.Entity.transform.position, basePlayer.transform.position) <= 3.5f //Магнит на ближайшего человека в радиусе 3.5 метра. Можно так же переписать проверки и сделать с проверкой на друга или на одного человека по близости.
&& !basePlayer.IsLocalPlayer() && !basePlayer.IsSleeping() && !basePlayer.IsDead() && !basePlayer.IsWounded())
                    {
                        var position = basePlayer.playerModel.headBone.transform.position;
                        var position2 = new Vector3(position.x, position.y + 0.28f, position.z);
                        GetComponent<PlayerWalkMovement>().groundAngleNew = 0f;
                        GetComponent<PlayerWalkMovement>().grounded = true;
                        GetComponent<PlayerWalkMovement>().groundAngle = 0f;
                        GetComponent<PlayerWalkMovement>().body.velocity = new Vector3(0f, 0f, 0f);
                        GetComponent<PlayerWalkMovement>().transform.position = position2;
                    }
                }
Простым решением я хукнул class(PlayerWalkMovement), method (ClientInput) инаписал в него код.
 
Начинающий
Статус
Оффлайн
Регистрация
9 Фев 2021
Сообщения
90
Реакции[?]
24
Поинты[?]
1K
Простите, так же забыл добавить что нужно так же активировать флаг для себя спринт. Тк как вас будет откидывать проверки сервера на Sprinting если вы без него передвигаетесь с выше 3-4м в секунду.
C#:
LocalPlayer.Entity.modelState.SetFlag(ModelState.Flag.Sprinting, true);
смену флага Sprinting я хукал в классе BasePlayer метод ClientInput.
 
Чайний гриб
Пользователь
Статус
Онлайн
Регистрация
28 Окт 2021
Сообщения
328
Реакции[?]
31
Поинты[?]
23K
Принцип работы прост, работает в основе везде. Это магнит на голову игрока, были проверены так же моменты когда игрок плавает, когда прыгает, поднимается по лестнице и тд, и работает без каких либо не удобств игроку и вам. Вас не кикнет за FlyHack если конечно сам игрок не читер, и не взлетит :)). Думаю если вы не пастер и нормальный разработчик или хотя бы понимаете своё дело. То не составит труда переписать в ваш софт на плюсы. Не проверял как работает на новой версии раст, но думаю что ничего не поменялось.

C#:
            public static bool _pressOff = false;
            if (input.IsDown(BUTTON.FORWARD) || input.IsDown(BUTTON.BACKWARD) || input.IsDown(BUTTON.LEFT) || input.IsDown(BUTTON.RIGHT) || input.IsDown(BUTTON.JUMP))//Стандартыне проверки на ходьму, магнит отключает, когда вы собираетесь открепится от человека и пойти своим путём.
                _pressOff = false;
            if (UnityEngine.Input.GetKeyDown(KeyCode.F)//Key Bind
                && IsOpen())//Проверка на то, открыт ли инвентарь, консоль, чат, или esc. Для того, что бы когда вы печатали то функция не сработала.
                _pressOff = true;
                GetComponent<PlayerWalkMovement>().body.constraints = _pressOff ? RigidbodyConstraints.FreezePositionY : RigidbodyConstraints.FreezeRotation;//Заморозить движение по оси Y, когда срабатывает магнит.
                foreach (var basePlayer in BasePlayer.VisiblePlayerList)
                {
                    if (basePlayer != null && (int)Vector3.Distance(LocalPlayer.Entity.transform.position, basePlayer.transform.position) <= 3.5f //Магнит на ближайшего человека в радиусе 3.5 метра. Можно так же переписать проверки и сделать с проверкой на друга или на одного человека по близости.
&& !basePlayer.IsLocalPlayer() && !basePlayer.IsSleeping() && !basePlayer.IsDead() && !basePlayer.IsWounded())
                    {
                        var position = basePlayer.playerModel.headBone.transform.position;
                        var position2 = new Vector3(position.x, position.y + 0.28f, position.z);
                        GetComponent<PlayerWalkMovement>().groundAngleNew = 0f;
                        GetComponent<PlayerWalkMovement>().grounded = true;
                        GetComponent<PlayerWalkMovement>().groundAngle = 0f;
                        GetComponent<PlayerWalkMovement>().body.velocity = new Vector3(0f, 0f, 0f);
                        GetComponent<PlayerWalkMovement>().transform.position = position2;
                    }
                }
Простым решением я хукнул class(PlayerWalkMovement), method (ClientInput) инаписал в него код.
использовать метод притягивания через set transform position такая себе идея
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,052
Реакции[?]
183
Поинты[?]
72K
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу