fix(skin): валидация скина в карточках игроков (legacy bacon → y-bot)
All checks were successful
All checks were successful
В меню «На сервере» аватарка бралась по player.skin. Если в БД legacy skin_bacon-hair (которого нет) — показывался бекон. Теперь невалидный скин (не в MIXAMO_SKINS) → аватар skin_y-bot, как и 3D-модель в игре. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
b2b0eab546
commit
3754ecf4a1
@ -1,6 +1,7 @@
|
||||
import React, { useEffect, useState, useRef, useCallback } from 'react';
|
||||
import Icon from '../editor-shared/Icon';
|
||||
import { STORYS_addres, USER_addres } from '../api/API';
|
||||
import { MIXAMO_SKINS } from '../engine/PlayerController';
|
||||
|
||||
const getToken = () => {
|
||||
try {
|
||||
@ -608,19 +609,18 @@ function PlayerCard({ player, isMe, isFriend, isPending, onAddFriend }) {
|
||||
let avatarUrl = null;
|
||||
let isSkin = false;
|
||||
if (player.skin && typeof player.skin === 'string') {
|
||||
const isLegacy = LEGACY_SKINS.has(player.skin);
|
||||
if (!isLegacy && player.skin.startsWith('skin_')) {
|
||||
// Mixamo: PNG на rublox-site (на проде rublox.pro,
|
||||
// локально localhost:3000) рядом с GLB.
|
||||
// ВАЛИДАЦИЯ: legacy R15-скины (bacon-hair и пр.) больше не существуют.
|
||||
// Если скин НЕ в наборе валидных Mixamo (80 шт) — показываем аватар
|
||||
// дефолтного skin_y-bot (как и в самой игре 3D-модель валидируется).
|
||||
let skinId = player.skin;
|
||||
if (!MIXAMO_SKINS.has(skinId) && !skinId.startsWith('customskin:')) {
|
||||
skinId = 'skin_y-bot';
|
||||
}
|
||||
const base = (typeof window !== 'undefined'
|
||||
&& window.location.hostname === 'localhost')
|
||||
? 'http://localhost:3000'
|
||||
: 'https://rublox.pro';
|
||||
avatarUrl = `${base}/character-assets/skins/${player.skin}.png?v=20260614`;
|
||||
} else {
|
||||
// Legacy R15: путь по старому шаблону.
|
||||
avatarUrl = `/kubikon-assets/characters/${player.skin}/avatar.png?v=2026_05_27`;
|
||||
}
|
||||
avatarUrl = `${base}/character-assets/skins/${skinId}.png?v=20260614`;
|
||||
isSkin = true;
|
||||
} else if (player.photo_thumb_b64) {
|
||||
avatarUrl = player.photo_thumb_b64.startsWith('data:')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user