Иконка ресурса

FREE MoveBuilding : 0.0.1 0.0.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using UnityEngine;
namespace Oxide.Plugins {
    [Info("MoveBuilding", "sdapro", "0.0.1")]
    public class MoveBuilding : RustPlugin {
        private const string PermissionMove = "Movebuilding.use";
        private BuildingBlock selectedBlock = null;
        private bool isMoving = false;
        private void Init() => permission.RegisterPermission(PermissionMove, this);
        private void OnPlayerInput(BasePlayer player, InputState input) {
            if (!permission.UserHasPermission(player.UserIDString, PermissionMove)) return;
            if (input.WasJustPressed(BUTTON.FIRE_SECONDARY)) {
                if (!isMoving) {
                    TrySelectBuildingObject(player);
                }
                else {
                    PlaceBuildingObject();
                }
            }
            if (isMoving && selectedBlock != null) {
                MoveSelectedBuilding(player);
            }
        }
        private void TrySelectBuildingObject(BasePlayer player) {
            Ray ray = player.eyes.HeadRay();
            if (Physics.Raycast(ray, out RaycastHit hit, 10f)) {
                BaseEntity entity = hit.GetEntity() as BaseEntity;
                if (entity is BuildingBlock buildingBlock) {
                    string blockName = buildingBlock.blockDefinition.info.name.english.ToLower();
                    if (blockName.Contains("foundation") || blockName.Contains("frame") || blockName.Contains("doorway") || blockName.Contains("low") || blockName.Contains("spiral") || blockName.Contains("stairs") || blockName.Contains("floor") || blockName.Contains("steps") || blockName.Contains("window") || blockName.Contains("half")) {
                        player.ChatMessage("Only Walls!");
                        return;
                    }
                    selectedBlock = buildingBlock;
                    selectedBlock.SetFlag(BaseEntity.Flags.Busy, true);
                    isMoving = true;
                }
            }
        }
        private void MoveSelectedBuilding(BasePlayer player) {
            if (selectedBlock == null) return;
            Vector3 newPosition = player.transform.position + player.eyes.BodyForward() * 3f;
            selectedBlock.transform.position = newPosition;
            selectedBlock.SetFlag(BaseEntity.Flags.Busy, true);
            selectedBlock.SendNetworkUpdateImmediate();
        }
        private void PlaceBuildingObject() {
            if (selectedBlock != null) {
                selectedBlock.SetFlag(BaseEntity.Flags.Busy, false);
                selectedBlock.SendNetworkUpdate();
                selectedBlock = null;
                isMoving = false;
            }
        }
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху