This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Изменение персонажа на стороне сервера при входе

ilhmjv

Новый участник
18 Июл 2021
75
2
45
Всем привет. Вопрос, каким образом можно изменить пользователю внешность уже после того как он залогинился?
Данные что приходят у меня из БД:
JavaScript:
{
  hair: { style: 43, color: 61 },
  face: {
    mother: 12,
    father: 21,
    resemblance: 0,
    data: [
      -10, -10, -10,
      1,   1,   null,
      0
    ]
  },
  clothes: { top: 4, top2: 4, pants: 4, shoes: 10 },
  gender: 'male',
  brows: 12,
  beard: 10,
  skinColor: 46,
  eyeColor: 6
}
Нашёл функцию setCustomization:
пробовал так:

JavaScript:
player.setCustomization({
    gender: 1, // 0 для мужчин, 1 для женщин
    headBlend: [10, 5, 15], // настройки лица [морфология, костяная структура, микро-детали]
    hair: { style: 2, color: 4 }, // настройки волос [стиль, цвет]
    eyeColor: 2, // цвет глаз
    eyebrows: 3, // настройки бровей
    eyebrowsColor: 7, // цвет бровей
    beard: { style: 6, color: 8 }, // настройки бороды [стиль, цвет]
    torso: 4, // настройки торса
    torsoColor: 1, // цвет торса
    legs: 2, // настройки ног
    legsColor: 3, // цвет ног
    foot: 5, // настройки обуви
    footColor: 2 // цвет обуви
});
И так:

JavaScript:
player.setCustomization(
    1, // gender: 0 для мужчин, 1 для женщин
    [10, 5, 15], // headBlend: настройки лица [морфология, костяная структура, микро-детали]
    { style: 2, color: 4 }, // hair: настройки волос [стиль, цвет]
    2, // eyeColor: цвет глаз
    3, // eyebrows: настройки бровей
    7, // eyebrowsColor: цвет бровей
    { style: 6, color: 8 }, // beard: настройки бороды [стиль, цвет]
    4, // torso: настройки торса
    1, // torsoColor: цвет торса
    2, // legs: настройки ног
    3, // legsColor: цвет ног
    5, // foot: настройки обуви
    2 // footColor: цвет обуви
);
Результат одинаковый:
лысый чел и Error: argument count does not match function definition(да, знаю что проблема в "количестве" аргументов. но хоть бы хны, хоть так поставь хоть так результат один и тот же)
Может кто знает более крутой способ?(хотя если бы эта функция работала это было бы кайф, так как она очень удобная, но судя по всему не вариант...)
 

koltr

Гуру
BackEnd developer
14 Сен 2020
157
108
121
Для этого тебе нужно через entity.setVariable хранить информацию о кастомизации персонажа. Например player.setVariable("player.customization", JSON.stringify({ top: 0, pants: 5 })); Дальше тебе нужно на стороне клиента уже принимать эти данные. Сделать это можно через вызов эвента "entityStreamIn" и в дабавок для синхронизации сразу в кругу стрима метод mp.events.addHandlerData, вроде так. В них ты получаешь данные через player.getVariable(...) И обрабатываешь как тебе нужно.
 

ilhmjv

Новый участник
18 Июл 2021
75
2
45
то есть я создаю переменную, обрабатываю событие на клиенте entitySteamIn и addHandlerData, получаю эту переменную с помощью getVariable, "выдаю" внешность игроку на клиенте и это все синхронизируется с другими пользователями?
 

koltr

Гуру
BackEnd developer
14 Сен 2020
157
108
121
Верно, понял все правильно. Так создается базовая синхронизация
 

koltr

Гуру
BackEnd developer
14 Сен 2020
157
108
121
Да ты можешь изменить и модельку персонажа. Условно все игроки вокруг тебя это простые Ped(-ы) которые синхронизируются при помощи задач (Task).
 
Реакции: ilhmjv

Mr.Scalise

Специалист
7 Окт 2021
447
88
90
А что, на серверке на ноде нет установки внешности? У меня серверка на c# и там просто устанавливаю внешность