Compare commits

..

No commits in common. "f2b74a259752a8a27bc51f8d1448be37593fcfdb" and "b2b0eab546cf054d6d3f1213082b786f8ae565ce" have entirely different histories.

View File

@ -1,7 +1,6 @@
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 {
@ -609,18 +608,19 @@ function PlayerCard({ player, isMe, isFriend, isPending, onAddFriend }) {
let avatarUrl = null;
let isSkin = false;
if (player.skin && typeof player.skin === 'string') {
// ВАЛИДАЦИЯ: 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 isLegacy = LEGACY_SKINS.has(player.skin);
if (!isLegacy && player.skin.startsWith('skin_')) {
// Mixamo: PNG на rublox-site (на проде rublox.pro,
// локально localhost:3000) рядом с GLB.
const base = (typeof window !== 'undefined'
&& window.location.hostname === 'localhost')
? 'http://localhost:3000'
: 'https://rublox.pro';
avatarUrl = `${base}/character-assets/skins/${skinId}.png?v=20260614`;
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`;
}
isSkin = true;
} else if (player.photo_thumb_b64) {
avatarUrl = player.photo_thumb_b64.startsWith('data:')