#I need a help with fake role sync

1 messages · Page 1 of 1 (latest)

naive surge
#

i made this fake role sync for my custom plugin the problem is its makes player sometimes unable to reload guns for some reason they arent faked role sync other player is, are there any fix for this?

#
namespace SCP457LabApi
{
    public class FakeRoleSync : CustomEventsHandler
    {
        private static Dictionary<uint, RoleTypeId> FakeSyncedPlayers = new Dictionary<uint, RoleTypeId> { };


        public void AddFakeSyncedPlayer(Player player, RoleTypeId role)
        {
        
            FakeSyncedPlayers[player.NetworkId] = role;
            foreach (var receiver in Player.ReadyList)
            {
                NetworkWriter writer = new NetworkWriter();
                if (receiver == Player.Host || receiver == player) continue;
                receiver.Connection.Send(new RoleSyncInfo(player.ReferenceHub, RoleTypeId.Scp106, receiver.ReferenceHub,writer));
            }
        }
        public void RemoveFakeSyncedPlayer(Player player)
        {

           
            foreach (var receiver in Player.ReadyList)
            {
                NetworkWriter writer = new NetworkWriter();
                if (receiver == Player.Host || receiver == player) continue;
                receiver.Connection.Send(new RoleSyncInfo(player.ReferenceHub, player.Role, receiver.ReferenceHub,writer));
            }
            FakeSyncedPlayers.Remove(player.NetworkId   );
        }

        public override void OnServerWaitingForPlayers()
        {
            FpcServerPositionDistributor.RoleSyncEvent += RoleSyncEvent;
        }

        public override void OnServerRoundRestarted()
        {
            
            FpcServerPositionDistributor.RoleSyncEvent -= RoleSyncEvent;
        }

        public static RoleTypeId RoleSyncEvent(ReferenceHub target, ReferenceHub receiver, RoleTypeId role, NetworkWriter writer)
        {
            if (FakeSyncedPlayers.TryGetValue(target.characterClassManager.netId, out var fakeRole))
                return fakeRole;
            return role;
        }
    }
}
rose herald
naive surge
#

For some reason

steep hinge
naive surge
# steep hinge You shouldn't send a RoleSyncInfoPack Rather, subscribe to `FpcServerPositionDis...

u mean something like that?

namespace SCP457LabApi
{
    public class FakeRoleSync : CustomEventsHandler
    {
        private static readonly Dictionary<uint, RoleTypeId> FakeSyncedPlayers = new Dictionary<uint, RoleTypeId>();

        public void AddFakeSyncedPlayer(Player player, RoleTypeId role)
        {
            FakeSyncedPlayers[player.NetworkId] = role;
        }

        public void RemoveFakeSyncedPlayer(Player player)
        {
            FakeSyncedPlayers.Remove(player.NetworkId);
        }

        public override void OnServerWaitingForPlayers()
        {
            FpcServerPositionDistributor.RoleSyncEvent += RoleSyncEvent;
        }

        public override void OnServerRoundRestarted()
        {
            FpcServerPositionDistributor.RoleSyncEvent -= RoleSyncEvent;
            FakeSyncedPlayers.Clear();
        }

        private static RoleTypeId RoleSyncEvent(ReferenceHub target, ReferenceHub receiver, RoleTypeId role, NetworkWriter writer)
        {
           
            if (FakeSyncedPlayers.TryGetValue(target.characterClassManager.netId, out var fakeRole))
                return fakeRole;

           
            return role;
        }
    }
}
steep hinge
#

Yep that should be good

naive surge
# steep hinge Yep that should be good

almost i only see that if person with this fake role sync gets role change from admin panel there is like huge bug that disconnect players but i think i will be able to fix this

rose herald