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])); }
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; } } }