Пример #1
0
        private static bool Prefix(RagdollManager __instance, ref Vector3 pos, ref Quaternion rot, ref int classId, ref PlayerStats.HitInfo ragdollInfo, ref bool allowRecall, ref string ownerID, ref string ownerNick, ref int playerId)
        {
            var ev = new SpawningRagdollEventArgs(
                ragdollInfo.PlayerId == 0 ? null : API.Features.Player.Get(ragdollInfo.PlayerId),
                API.Features.Player.Get(__instance.gameObject),
                pos,
                rot,
                (RoleType)classId,
                ragdollInfo,
                allowRecall,
                ownerID,
                ownerNick,
                playerId);

            Player.OnSpawningRagdoll(ev);

            pos         = ev.Position;
            rot         = ev.Rotation;
            classId     = (int)ev.RoleType;
            ragdollInfo = ev.HitInformations;
            allowRecall = ev.IsRecallAllowed;
            ownerID     = ev.DissonanceId;
            ownerNick   = ev.PlayerNickname;
            playerId    = ev.PlayerId;

            return(ev.IsAllowed);
        }
Пример #2
0
 internal void OnSpawningRagdoll(SpawningRagdollEventArgs ev)
 {
     if (IsLobby)
     {
         ev.IsAllowed = false;
     }
 }
Пример #3
0
 public void OnSpawningRagdoll(SpawningRagdollEventArgs ev)
 {
     if (!Singleton.Config.IsEnabled)
     {
         return;
     }
     else
     {
         {
             RoomType[] _roomTypes = { RoomType.Hcz106, RoomType.Hcz939, RoomType.HczCrossing, RoomType.HczCurve, };
             if (ev.HitInformations.GetDamageType() == DamageTypes.Pocket)
             {
                 System.Random rnd    = new System.Random();
                 int           _value = rnd.Next(0, _roomTypes.Length);
                 foreach (Room room in Map.Rooms)
                 {
                     if (room.Type == _roomTypes[_value])
                     {
                         float posx = room.Position.x;
                         float posy = room.Position.y + 2;
                         float posz = room.Position.z;
                         ev.Position = new Vector3(posx, posy, posz);
                         Log.Debug($"{ev.PlayerNickname} as {ev.Owner.Role} died by 106 (nerd), Their corpse teleported to: {posx}, {posy}, {posz}", Singleton.Config.Debug);
                     }
                 }
             }
         }
     }
 }
Пример #4
0
 internal void OnSpawnRagdoll(SpawningRagdollEventArgs ev)
 {
     if (!config.Ragdoll.canCreateRagdollGlobal && !config.Ragdoll.canCreateRagdoll[ev.RoleType])
     {
         ev.IsAllowed = false;
     }
 }
Пример #5
0
        private static bool Prefix(RagdollManager __instance, ref Vector3 pos, ref Quaternion rot, ref Vector3 velocity, ref int classId, ref PlayerStats.HitInfo ragdollInfo, ref bool allowRecall, ref string ownerID, ref string ownerNick, ref int playerId)
        {
            try
            {
                var ev = new SpawningRagdollEventArgs(
                    ragdollInfo.PlayerId == 0 ? null : API.Features.Player.Get(ragdollInfo.PlayerId), API.Features.Player.Get(__instance.gameObject), pos, rot, velocity, (RoleType)classId, ragdollInfo, allowRecall, ownerID, ownerNick, playerId);

                Player.OnSpawningRagdoll(ev);

                pos         = ev.Position;
                rot         = ev.Rotation;
                velocity    = ev.Velocity;
                classId     = (int)ev.RoleType;
                ragdollInfo = ev.HitInformations;
                allowRecall = ev.IsRecallAllowed;
                ownerID     = ev.DissonanceId;
                ownerNick   = ev.PlayerNickname;
                playerId    = ev.PlayerId;

                return(ev.IsAllowed);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.SpawningRagdoll: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Пример #6
0
        public void OnSpawningRagdoll(SpawningRagdollEventArgs ev)
        {
            if (!API.IsSerpent(ev.Owner))
            {
                return;
            }

            ev.IsAllowed = false;

            RagdollInfo info = new RagdollInfo(Server.Host.ReferenceHub, ev.DamageHandlerBase, ev.Role, ev.Position, ev.Rotation, ev.Nickname, ev.CreationTime);

            new Exiled.API.Features.Ragdoll(info, true);
        }
Пример #7
0
        private static bool Prefix(RagdollManager __instance, ref Vector3 pos, ref Quaternion rot, ref Vector3 velocity, ref int classId, ref PlayerStats.HitInfo ragdollInfo, ref bool allowRecall, ref string ownerID, ref string ownerNick, ref int playerId)
        {
            try
            {
                var ev = new SpawningRagdollEventArgs(
                    ragdollInfo.PlayerId == 0 ? null : API.Features.Player.Get(ragdollInfo.PlayerId), API.Features.Player.Get(playerId), pos, rot, velocity, (RoleType)classId, ragdollInfo, allowRecall, ownerID, ownerNick, playerId);

                Player.OnSpawningRagdoll(ev);

                pos         = ev.Position;
                rot         = ev.Rotation;
                velocity    = ev.Velocity;
                classId     = (int)ev.RoleType;
                ragdollInfo = ev.HitInformations;
                allowRecall = ev.IsRecallAllowed;
                ownerID     = ev.DissonanceId;
                ownerNick   = ev.PlayerNickname;
                playerId    = ev.PlayerId;

                if (!ev.IsAllowed)
                {
                    return(false);
                }

                Role role = __instance.hub.characterClassManager.Classes.SafeGet(classId);
                if (role.model_ragdoll == null)
                {
                    return(false);
                }
                GameObject gameObject = UnityEngine.Object.Instantiate(role.model_ragdoll, pos + role.ragdoll_offset.position, Quaternion.Euler(rot.eulerAngles + role.ragdoll_offset.rotation));
                Ragdoll    component  = gameObject.GetComponent <Ragdoll>();
                component.Networkowner       = new Ragdoll.Info(ownerID, ownerNick, ragdollInfo, role, playerId);
                component.NetworkallowRecall = allowRecall;
                component.NetworkPlayerVelo  = velocity;
                Exiled.API.Features.Ragdoll ragdoll = new Exiled.API.Features.Ragdoll(component);
                Mirror.NetworkServer.Spawn(ragdoll.GameObject);
                Exiled.API.Features.Map.RagdollsValue.Add(ragdoll);

                return(false);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.SpawningRagdoll: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Пример #8
0
 public void OnSpawningRagdoll(SpawningRagdollEventArgs ev)
 {
     //This is made to help TypicalIllusion for his plugin.
     //This does not actually executes.
     RoomType[] _roomTypes = { RoomType.Hcz106, RoomType.Hcz939, RoomType.HczChkpA, RoomType.HczChkpB, RoomType.HczCrossing, RoomType.HczCurve, RoomType.HczEzCheckpoint };
     if (ev.HitInformations.GetDamageType() == DamageTypes.Pocket)
     {
         System.Random rnd    = new System.Random();
         int           _value = rnd.Next(0, _roomTypes.Length);
         foreach (Room room in Map.Rooms)
         {
             if (room.Type == _roomTypes[_value])
             {
                 float posx = room.Position.x;
                 float posy = room.Position.y + 2;
                 float posz = room.Position.z;
                 ev.Position = new Vector3(posx, posy, posz);
                 Exiled.API.Features.Log.Debug($"{ev.PlayerNickname} as {ev.Owner.Role} died by 106, Corpse teleported to: {posx}, {posy}, {posz}");
             }
         }
     }
 }
Пример #9
0
 /// <summary>
 /// Invoked before spawning a player's ragdoll.
 /// </summary>
 /// <param name="ev">The <see cref="SpawningRagdollEventArgs"/> instance.</param>
 public static void OnSpawningRagdoll(SpawningRagdollEventArgs ev) => SpawningRagdoll.InvokeSafely(ev);