Esempio n. 1
0
            static void Prefix(NpcAppearModule __instance, ref Dictionary <int, NpcAppearDBData> ___m_NpcAppearDBDataDir)
            {
                return;

                if (!enabled)
                {
                    return;
                }

                NpcAppearDBData phyllisData   = ___m_NpcAppearDBDataDir[4000035];
                NpcAppear       phyllisAppear = ActorMgr.Self.Get(4000035).GetComponent <NpcAppear>();

                foreach (ClothesChanger cc in noClothes)
                {
                    continue;
                    ___m_NpcAppearDBDataDir.Add(cc.id, phyllisData);
                    Actor actor = ActorMgr.Self.Get(cc.id);
                    actor.gameObject.AddComponent <NpcAppear>();
                    NpcAppear component = actor.GetComponent <NpcAppear>();
                    AccessTools.FieldRefAccess <NpcAppear, Dictionary <int, AppearDBData> >(component, "m_DefaultAppearDBDatas") = AccessTools.FieldRefAccess <NpcAppear, Dictionary <int, AppearDBData> >(phyllisAppear, "m_DefaultAppearDBDatas");
                    AccessTools.FieldRefAccess <NpcAppear, int[]>(component, "defaultAppearIDs")       = AccessTools.FieldRefAccess <NpcAppear, int[]>(phyllisAppear, "defaultAppearIDs");
                    AccessTools.FieldRefAccess <NpcAppear, Transform>(component, "m_BoneRoot")         = AccessTools.FieldRefAccess <NpcAppear, Transform>(phyllisAppear, "m_BoneRoot");
                    AccessTools.FieldRefAccess <NpcAppear, SkinnedMeshRenderer[]>(component, "m_Smrs") = AccessTools.FieldRefAccess <NpcAppear, SkinnedMeshRenderer[]>(phyllisAppear, "m_Smrs");
                    //component.InitAppear(phyllisData, phyllisAppear.appearData, actor);
                    typeof(NpcAppearModule).GetMethod("InitNPCAppear", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { cc.id, phyllisAppear.appearData, phyllisAppear.npcAppearDBData });
                    //typeof(NpcAppear).GetProperty("appearData").SetValue(component, phyllisAppear.appearData, null);
                    //AccessTools.FieldRefAccess<NpcAppear, Dictionary<int, AppearDBData>>(component, "m_DefaultAppearDBDatas") = AccessTools.FieldRefAccess<NpcAppear, Dictionary<int, AppearDBData>>(phyllisAppear, "m_DefaultAppearDBDatas");
                    //AccessTools.FieldRefAccess<NpcAppear, Actor>(component, "m_Actor") = actor;
                }
            }
Esempio n. 2
0
            static void Postfix(NpcAppearDBData npcAppearDBData, NpcAppearData appearData, Actor actor)
            {
                if (!enabled)
                {
                    return;
                }

                for (int i = 0; i < clothesChangers.Count; i++)
                {
                    //Dbgl($"changing for {i} {clothesChangers[i].name}");
                    if (clothesChangers[i].id == actor.InstanceId)
                    {
                        Dbgl($"actor: {actor.ActorName}");
                        Dictionary <int, AppearDBData> appearDbDatas = AccessTools.FieldRefAccess <NpcAppearModule, Dictionary <int, AppearDBData> >(Module <NpcAppearModule> .Self, "m_AppearDBDataDic");
                        NpcAppear component = actor.GetComponent <NpcAppear>();
                        if (component == null)
                        {
                            Dbgl("actor does not have npcappear");
                            return;
                        }
                        Dbgl($"i {i} hair setting {settings.hairs[i]} actor hair: {hairs[settings.hairs[i]]}");
                        //if(settings.hairs[i] != 0)
                        component.SetPart(appearDbDatas[hairs[settings.hairs[i]]]);
                        Dbgl($"actor clothes: {clothes[settings.clothes[i]]}");
                        //if (settings.clothes[i] != 0)
                        component.SetPart(appearDbDatas[clothes[settings.clothes[i]]]);
                    }
                }
            }