예제 #1
0
        public static void ApplyCharacter(Client player)
        {
            if (!CustomPlayerData.ContainsKey(player.Handle))
            {
                return;
            }
            player.SetSkin((CustomPlayerData[player.Handle].Gender == 0) ? PedHash.FreemodeMale01 : PedHash.FreemodeFemale01);
            player.SetData("SkinC", (CustomPlayerData[player.Handle].Gender == 0) ? PedHash.FreemodeMale01 : PedHash.FreemodeFemale01);
            Clothes.LoadClothing(player);
            player.SetClothes(2, CustomPlayerData[player.Handle].Hair.Hair, 0);

            API.Shared.SendNativeToAllPlayers(
                Hash.SET_PED_HEAD_BLEND_DATA,
                player.Handle,

                CustomPlayerData[player.Handle].Parents.Mother,
                CustomPlayerData[player.Handle].Parents.Father,
                0,

                CustomPlayerData[player.Handle].Parents.Mother,
                CustomPlayerData[player.Handle].Parents.Father,
                0,

                CustomPlayerData[player.Handle].Parents.Similarity,
                CustomPlayerData[player.Handle].Parents.SkinSimilarity,
                0,

                false
                );

            for (int i = 0; i < CustomPlayerData[player.Handle].Features.Length; i++)
            {
                API.Shared.SendNativeToAllPlayers(Hash._SET_PED_FACE_FEATURE, player.Handle, i, CustomPlayerData[player.Handle].Features[i]);
            }
            for (int i = 0; i < CustomPlayerData[player.Handle].Appearance.Length; i++)
            {
                API.Shared.SendNativeToAllPlayers(Hash.SET_PED_HEAD_OVERLAY, player.Handle, i, CustomPlayerData[player.Handle].Appearance[i].Value, CustomPlayerData[player.Handle].Appearance[i].Opacity);
            }

            // apply colors
            API.Shared.SendNativeToAllPlayers(Hash._SET_PED_HAIR_COLOR, player.Handle, CustomPlayerData[player.Handle].Hair.Color, CustomPlayerData[player.Handle].Hair.HighlightColor);
            API.Shared.SendNativeToAllPlayers(Hash._SET_PED_EYE_COLOR, player.Handle, CustomPlayerData[player.Handle].EyeColor);

            API.Shared.SendNativeToAllPlayers(Hash._SET_PED_HEAD_OVERLAY_COLOR, player.Handle, 1, 1, CustomPlayerData[player.Handle].BeardColor, 0);
            API.Shared.SendNativeToAllPlayers(Hash._SET_PED_HEAD_OVERLAY_COLOR, player.Handle, 2, 1, CustomPlayerData[player.Handle].EyebrowColor, 0);
            API.Shared.SendNativeToAllPlayers(Hash._SET_PED_HEAD_OVERLAY_COLOR, player.Handle, 5, 2, CustomPlayerData[player.Handle].BlushColor, 0);
            API.Shared.SendNativeToAllPlayers(Hash._SET_PED_HEAD_OVERLAY_COLOR, player.Handle, 8, 2, CustomPlayerData[player.Handle].LipstickColor, 0);
            API.Shared.SendNativeToAllPlayers(Hash._SET_PED_HEAD_OVERLAY_COLOR, player.Handle, 10, 1, CustomPlayerData[player.Handle].ChestHairColor, 0);

            player.SetSyncedData("CustomCharacter", API.Shared.ToJson(CustomPlayerData[player.Handle]));
        }
예제 #2
0
        public void CharCreator_EventTrigger(Client player, string event_name, params object[] args)
        {
            switch (event_name)
            {
            case "SetGender":
            {
                if (args.Length < 1 || !CustomPlayerData.ContainsKey(player.Handle))
                {
                    return;
                }

                int gender = Convert.ToInt32(args[0]);
                player.SetSkin((gender == 0) ? PedHash.FreemodeMale01 : PedHash.FreemodeFemale01);
                player.SetData("ChangedGender", true);
                SetDefaultFeatures(player, gender, true);
                break;
            }

            case "SaveCharacter":
            {
                if (args.Length < 8 || !CustomPlayerData.ContainsKey(player.Handle))
                {
                    return;
                }

                Clothes.Load(player);

                // gender
                CustomPlayerData[player.Handle].Gender = Convert.ToInt32(args[0]);

                // parents
                CustomPlayerData[player.Handle].Parents.Father         = Convert.ToInt32(args[1]);
                CustomPlayerData[player.Handle].Parents.Mother         = Convert.ToInt32(args[2]);
                CustomPlayerData[player.Handle].Parents.Similarity     = (float)Convert.ToDouble(args[3]);
                CustomPlayerData[player.Handle].Parents.SkinSimilarity = (float)Convert.ToDouble(args[4]);

                // features
                float[] feature_data = JsonConvert.DeserializeObject <float[]>(args[5].ToString());
                CustomPlayerData[player.Handle].Features = feature_data;

                // appearance
                AppearanceItem[] appearance_data = JsonConvert.DeserializeObject <AppearanceItem[]>(args[6].ToString());
                CustomPlayerData[player.Handle].Appearance = appearance_data;

                // hair & colors
                int[] hair_and_color_data = JsonConvert.DeserializeObject <int[]>(args[7].ToString());
                for (int i = 0; i < hair_and_color_data.Length; i++)
                {
                    switch (i)
                    {
                    // Hair
                    case 0:
                    {
                        CustomPlayerData[player.Handle].Hair.Hair = hair_and_color_data[i];
                        break;
                    }

                    // Hair Color
                    case 1:
                    {
                        CustomPlayerData[player.Handle].Hair.Color = hair_and_color_data[i];
                        break;
                    }

                    // Hair Highlight Color
                    case 2:
                    {
                        CustomPlayerData[player.Handle].Hair.HighlightColor = hair_and_color_data[i];
                        break;
                    }

                    // Eyebrow Color
                    case 3:
                    {
                        CustomPlayerData[player.Handle].EyebrowColor = hair_and_color_data[i];
                        break;
                    }

                    // Beard Color
                    case 4:
                    {
                        CustomPlayerData[player.Handle].BeardColor = hair_and_color_data[i];
                        break;
                    }

                    // Eye Color
                    case 5:
                    {
                        CustomPlayerData[player.Handle].EyeColor = hair_and_color_data[i];
                        break;
                    }

                    // Blush Color
                    case 6:
                    {
                        CustomPlayerData[player.Handle].BlushColor = hair_and_color_data[i];
                        break;
                    }

                    // Lipstick Color
                    case 7:
                    {
                        CustomPlayerData[player.Handle].LipstickColor = hair_and_color_data[i];
                        break;
                    }

                    // Chest Hair Color
                    case 8:
                    {
                        CustomPlayerData[player.Handle].ChestHairColor = hair_and_color_data[i];
                        break;
                    }
                    }
                }

                if (player.HasData("ChangedGender"))
                {
                    player.ResetData("ChangedGender");
                }
                ApplyCharacter(player);
                SaveCharacter(player);
                SendBackToWorld(player);
                //ResetChar(player);
                break;
            }

            case "LeaveCreator":
            {
                if (!CustomPlayerData.ContainsKey(player.Handle))
                {
                    return;
                }
                string char_data = player.GetData("CHAR_DATA");
                // revert back to last save data
                if (player.HasData("ChangedGender"))
                {
                    if (char_data != null)
                    {
                        CustomPlayerData.Add(player.Handle, JsonConvert.DeserializeObject <PlayerCustomization>(char_data));
                    }
                    player.ResetData("ChangedGender");
                }

                ApplyCharacter(player);

                // bye
                SendBackToWorld(player);
                break;
            }
            }
        }