|
1 | 1 | using Exiled.API.Features; |
2 | | -using Mirror; |
3 | 2 | using PlayerRoles; |
4 | | -using System; |
5 | | -using System.Collections.Generic; |
6 | 3 | using UnityEngine; |
7 | | -using MEC; |
8 | | -using Exiled.Events.EventArgs.Player; |
9 | 4 |
|
10 | 5 | namespace TestingDummies.SpawningHandler |
11 | 6 | { |
12 | 7 | public class Spawn : MonoBehaviour |
13 | 8 | { |
14 | | - readonly int IDs = 1000; |
15 | | - public Dictionary<Player, GameObject> PlayerPrefabs = new(); |
16 | | - public Dictionary<Player, FakeConnection> PlayerConnIDs = new(); |
17 | | - public Dictionary<ReferenceHub, Player> DumPlayerHubs = new(); |
18 | | - |
19 | | - public IEnumerator<float> SpawnDum(string Name, RoleTypeId Role, Player target) |
| 9 | + public void SpawnDummy(string Name, RoleTypeId Role, Player Target) |
20 | 10 | { |
21 | | - GameObject newPlayer = Instantiate(NetworkManager.singleton.playerPrefab); |
22 | | - Player NewPlayer = new(newPlayer); |
23 | | - try |
24 | | - { |
25 | | - NewPlayer.Role.Set(RoleTypeId.None); |
26 | | - } |
27 | | - catch (Exception e) |
28 | | - { |
29 | | - Log.Debug($"Ignore: {e}"); |
30 | | - } |
31 | | - PlayerPrefabs.Add(NewPlayer, newPlayer); |
32 | | - var fakeConnection = new FakeConnection(IDs + Plugin.Instance.DumRef.Count); |
33 | | - ReferenceHub hubPlayer = NewPlayer.ReferenceHub; |
34 | | - Plugin.Instance.DumRef.Add(hubPlayer); |
35 | | - NetworkServer.AddPlayerForConnection(fakeConnection, newPlayer); |
36 | | - PlayerConnIDs.Add(NewPlayer, fakeConnection); |
37 | | - try |
38 | | - { |
39 | | - hubPlayer.characterClassManager.UserId = $"DevDummy{Plugin.Instance.DumRef.Count}@server"; |
40 | | - } |
41 | | - catch (Exception e) |
42 | | - { |
43 | | - Log.Debug(e); |
44 | | - } |
45 | | - hubPlayer.nicknameSync.Network_myNickSync = $"{Name}-{Plugin.Instance.DumRef.Count}"; |
46 | | - hubPlayer.serverRoles.DoNotTrack = true; |
47 | | - Player.Dictionary.Add(newPlayer, NewPlayer); |
| 11 | + Npc GeneratedNPC = Npc.Spawn(Name, Role, position: Target.Position); |
| 12 | + if (Plugin.Instance.Config.NPCAFKImmunity) GeneratedNPC.RemoteAdminPermissions = PlayerPermissions.AFKImmunity; |
48 | 13 | if (Plugin.Instance.Config.NPCBadgeEnabled) |
49 | 14 | { |
50 | | - NewPlayer.RankName = Plugin.Instance.Config.NPCBadgeName; |
51 | | - NewPlayer.RankColor = Plugin.Instance.Config.NPCBadgeColor; |
52 | | - } |
53 | | - hubPlayer.characterClassManager.GodMode = false; |
54 | | - if (Plugin.Instance.Config.NPCAFKImmunity) NewPlayer.RemoteAdminPermissions = PlayerPermissions.AFKImmunity; |
55 | | - yield return Timing.WaitForSeconds(0.3f); |
56 | | - NewPlayer.Role.Set(Role, Exiled.API.Enums.SpawnReason.ForceClass); |
57 | | - NewPlayer.Position = target.Position; |
58 | | - NewPlayer.SessionVariables.Add("npc", true); |
59 | | - VerifiedEventArgs newVerified = new(NewPlayer); |
60 | | - Exiled.Events.Handlers.Player.OnVerified(newVerified); |
61 | | - yield break; |
| 15 | + GeneratedNPC.RankName = Plugin.Instance.Config.NPCBadgeName; |
| 16 | + GeneratedNPC.RankColor = Plugin.Instance.Config.NPCBadgeColor; |
| 17 | + } |
62 | 18 | } |
63 | 19 | } |
64 | 20 | } |
0 commit comments