コード例 #1
0
        public static void mount(Arg arg)
        {
            BasePlayer basePlayer = ArgEx.Player(arg);

            if (!basePlayer.IsAdmin && !basePlayer.IsDeveloper && !Server.cinematic)
            {
                return;
            }
            uint       uInt        = arg.GetUInt(0);
            BasePlayer basePlayer2 = BasePlayer.FindByID(uInt);

            if (basePlayer2 == null)
            {
                basePlayer2 = BasePlayer.FindBot(uInt);
            }
            RaycastHit hitInfo;

            if (!basePlayer2 || !UnityEngine.Physics.Raycast(basePlayer.eyes.position, basePlayer.eyes.HeadForward(), out hitInfo, 5f, 10496, QueryTriggerInteraction.Ignore))
            {
                return;
            }
            BaseEntity entity = RaycastHitEx.GetEntity(hitInfo);

            if (!entity)
            {
                return;
            }
            BaseMountable baseMountable = entity.GetComponent <BaseMountable>();

            if (!baseMountable)
            {
                BaseVehicle baseVehicle = entity.GetComponentInParent <BaseVehicle>();
                if ((bool)baseVehicle)
                {
                    if (!baseVehicle.isServer)
                    {
                        baseVehicle = BaseNetworkable.serverEntities.Find(baseVehicle.net.ID) as BaseVehicle;
                    }
                    baseVehicle.AttemptMount(basePlayer2);
                    return;
                }
            }
            if ((bool)baseMountable && !baseMountable.isServer)
            {
                baseMountable = BaseNetworkable.serverEntities.Find(baseMountable.net.ID) as BaseMountable;
            }
            if ((bool)baseMountable)
            {
                baseMountable.AttemptMount(basePlayer2);
            }
        }