Есть клиентский код, однако тот пишет, что setCustomization is not a function
JavaScript:
let CharacterWindow;
var camera;
const LocalPlayer1 = mp.players.local;
var fathers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 42, 43, 44];
var mothers = [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 45];
global.hairIDList = [
// male
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31, 32, 33, 34, 73, 76, 77, 78, 79, 80, 81, 82, 84, 85],
// female
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 31, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 91]
];
var validTorsoIDs = [
// male
[0, 0, 2, 14, 14, 5, 14, 14, 8, 0, 14, 15, 12],
// female
[0, 5, 2, 3, 4, 4, 5, 5, 5, 0]
];
var outClothes = 1;
var pants = 0;
var shoes = 1;
var gender = 1;
var father = 0;
var mother = 21;
var similarity = 0.5;
var skin = 0.5;
var features = [];
for (var i = 0; i < 20; i++) features[i] = 0.0;
var MotherBlend = 0;
var FatherBlend = 0;
var hair = 0;
var hairColor = 0;
var eyeColor = 0;
var appearance = [];
for (var i = 0; i < 11; i++) appearance[i] = 255;
mp.events.add("showCharacter", () =>
{
mp.gui.cursor.show(true, true);
camera = mp.cameras.new('default', new mp.Vector3(-75.55048, -819.6527, 326.8687), new mp.Vector3(0, 0, -21.989697), 70);
camera.setActive(true);
mp.gui.chat.activate(false);
mp.game.cam.renderScriptCams(true, false, 0, true, false);
LocalPlayer1.taskPlayAnim("amb@world_human_guard_patrol@male@base", "base", 8.0, 1, -1, 1, 0.0, false, false, false);
CharacterWindow = mp.browsers.new("package://web/character/Character/character.html");
});
mp.events.add("characterGender", (value) =>
{
mp.players.local.model = value === 1 ? mp.game.joaat('mp_m_freemode_01') : mp.game.joaat('mp_f_freemode_01')
});
mp.events.add('editorList', (param, value) => {
var hairParam = (gender) ? "hairM" : "hairF";
var browParam = (gender) ? "eyebrowsM" : "eyebrowsF";
var lvl = parseFloat(value);
//mp.gui.chat.push(lvl);
switch (param) {
case "similar":
similarity = lvl;
updateCharacterParents();
return;
case "skin":
skin = lvl;
updateCharacterParents();
return;
case "noseWidth": LocalPlayer1.setFaceFeature(0, lvl); features[0] = lvl; return;
case "noseHeight": LocalPlayer1.setFaceFeature(1, lvl); features[1] = lvl; return;
case "noseTipLength": LocalPlayer1.setFaceFeature(2, lvl); features[2] = lvl; return;
case "noseDepth": LocalPlayer1.setFaceFeature(3, lvl); features[3] = lvl; return;
case "noseTipHeight": LocalPlayer1.setFaceFeature(4, lvl); features[4] = lvl; return;
case "noseBroke": LocalPlayer1.setFaceFeature(5, lvl); features[5] = lvl; return;
case "eyebrowHeight": LocalPlayer1.setFaceFeature(6, lvl); features[6] = lvl; return;
case "eyebrowDepth": LocalPlayer1.setFaceFeature(7, lvl); features[7] = lvl; return;
case "cheekboneHeight": LocalPlayer1.setFaceFeature(8, lvl); features[8] = lvl; return;
case "cheekboneWidth": LocalPlayer1.setFaceFeature(9, lvl); features[9] = lvl; return;
case "cheekDepth": LocalPlayer1.setFaceFeature(10, lvl); features[10] = lvl; return;
case "eyeScale": LocalPlayer1.setFaceFeature(11, lvl); features[11] = lvl; return;
case "lipThickness": LocalPlayer1.setFaceFeature(12, lvl); features[12] = lvl; return;
case "jawWidth": LocalPlayer1.setFaceFeature(13, lvl); features[13] = lvl; return;
case "jawShape": LocalPlayer1.setFaceFeature(14, lvl); features[14] = lvl; return;
case "chinHeight": LocalPlayer1.setFaceFeature(15, lvl); features[15] = lvl; return;
case "chinDepth": LocalPlayer1.setFaceFeature(16, lvl); features[16] = lvl; return;
case "chinWidth": LocalPlayer1.setFaceFeature(17, lvl); features[17] = lvl; return;
case "chinIndent": LocalPlayer1.setFaceFeature(18, lvl); features[18] = lvl; return;
case "neck": LocalPlayer1.setFaceFeature(19, lvl); features[19] = lvl; return;
case "father":
father = fathers[value];
updateCharacterParents();
return;
case "mother":
mother = mothers[value];
updateCharacterParents();
return;
case `${hairParam}`:
hair = value;
updateCharacterHairAndColors();
return;
case `${browParam}`:
appearance[2] = value;
updateAppearance();
return;
case "beard":
var overlay = (value == 0) ? 255 : value - 1;
appearance[1] = overlay;
updateAppearance();
return;
case "hairColor":
hairColor = value;
updateCharacterHairAndColors();
return;
case "eyeColor":
eyeColor = value;
updateCharacterHairAndColors();
return;
}
});
function updateCharacterParents() {
LocalPlayer1.setHeadBlendData(
mother,
father,
0,
mother,
father,
0,
similarity,
skin,
0.0,
true
);
}
function updateCharacterHairAndColors() {
let currentGender = (gender) ? 0 : 1;
// hair
LocalPlayer1.setComponentVariation(2, hairIDList[currentGender][hair], 0, 0);
LocalPlayer1.setHairColor(hairColor, 0);
// appearance colors
LocalPlayer1.setHeadOverlayColor(2, 1, hairColor, 100); // eyebrow
LocalPlayer1.setHeadOverlayColor(1, 1, hairColor, 100); // beard
LocalPlayer1.setHeadOverlayColor(10, 1, hairColor, 100); // chesthair
// eye color
LocalPlayer1.setEyeColor(eyeColor);
}
function updateAppearance() {
for (var i = 0; i < 11; i++) {
LocalPlayer1.setHeadOverlay(i, appearance[i], 100, 0, 0);
}
}
//mp.events.add("characterLoad", () => {
//});
mp.events.add("characterSave", () =>
{
camera.setActive(false);
mp.gui.chat.activate(true);
mp.game.cam.renderScriptCams(false, false, 0, false, false);
mp.gui.cursor.show(false, false);
mp.game.ui.displayHud(true);
mp.game.ui.displayRadar(true);
mp.gui.chat.show(true);
if (CharacterWindow != null) {
CharacterWindow.destroy();
CharacterWindow = null;
}
LocalPlayer1.stopAnim("amb@world_human_guard_patrol@male@base", "base", 0.0);
let currentGender = (gender) ? false : true;
var appearance_values = [];
for (var i = 0; i < 11; i++) appearance_values.push({ Value: appearance[i], Opacity: 100 });
var hair_or_colors = [];
hair_or_colors.push(hairIDList[gender][hair]);
hair_or_colors.push(hairColor);
hair_or_colors.push(0);
hair_or_colors.push(hairColor);
hair_or_colors.push(hairColor);
hair_or_colors.push(eyeColor);
hair_or_colors.push(0);
hair_or_colors.push(0);
hair_or_colors.push(hairColor);
mp.events.callRemote("CharacterSave", gender, mother, father, similarity, skin, hairColor, hair_or_colors[2], features[0],
features[1], features[2], features[3], features[4], features[5], features[6], features[7], features[8], features[9], features[10],
features[11], features[12], features[13], features[14], features[15], features[16], features[17], features[18], features[19]);
LocalPlayer1.setCustomization(currentGender, mother, father, 0, mother, father, 0, similarity, skin, 0, eyeColor, hairColor, hair_or_colors[2],
[
features[0], features[1], features[2], features[3], features[4], features[5], features[6], features[7], features[8], features[9], features[10],
features[11], features[12], features[13], features[14], features[15], features[16], features[17], features[18], features[19]
]
);
});