From 2ec32077bfbfdddc221c9f3b45adeb91bd9adaef Mon Sep 17 00:00:00 2001 From: Gregory519 Date: Sat, 30 May 2026 13:29:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D1=83=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=B5=D0=B9=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 10 +-- src/KubikonPlayer/KubikonPlayer.jsx | 69 +++++++++++++++++-- .../Loading script old.txt | 40 +++++++++++ 3 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 src/KubikonPlayer/kubikon player loading screen/Loading script old.txt diff --git a/package-lock.json b/package-lock.json index 870da93..4ce3ca0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -321,8 +320,7 @@ "version": "7.54.3", "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-7.54.3.tgz", "integrity": "sha512-P5ncXVd8GEUJLhwloP9V0oVwQYIrvZztguVeLlvd5Rx+9aQnenKjpV8auJ6SRsUlAmNZU4pFTKzwF6o2EUfhAw==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/@babylonjs/loaders": { "version": "7.54.3", @@ -1495,7 +1493,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1802,7 +1799,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -2466,7 +2462,6 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4278,7 +4273,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -4291,7 +4285,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -5151,7 +5144,6 @@ "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/src/KubikonPlayer/KubikonPlayer.jsx b/src/KubikonPlayer/KubikonPlayer.jsx index 9debc37..3129c5e 100644 --- a/src/KubikonPlayer/KubikonPlayer.jsx +++ b/src/KubikonPlayer/KubikonPlayer.jsx @@ -252,6 +252,8 @@ const KubikonPlayer = () => { // Появляется после submitLeaderboard если бэк выдал rating_award текущему юзеру. // null | { place: 1|2|3, amount: number } const [ratingToast, setRatingToast] = useState(null); + const [placeName, setPlaceName] = useState('Загрузка игры…'); + const [placeImage, setPlaceImage] = useState(null); const timerRafRef = useRef(null); /** Кэш загруженного project_data для soft-restart игры. */ const initialStateRef = useRef(null); @@ -686,6 +688,44 @@ const KubikonPlayer = () => { return () => { alive = false; clearInterval(t); }; }, [projectId, userId, sessionId, loading]); + // Загрузка названия и картинки плейса с сервера + useEffect(() => { + if (!projectId) return; + + async function loadPlaceData() { + try { + // Пробуем получить данные из meta (уже загружено в проекте) + if (meta?.title) { + setPlaceName(meta.title); + } + if (meta?.thumbnail) { + setPlaceImage(meta.thumbnail); + return; + } + + // Если нет — загружаем через API + const response = await Kubikon3DApi.getProjectForPlay(projectId, userId); + const title = response?.data?.title; + const thumbnail = response?.data?.thumbnail; + + if (title) { + setPlaceName(title); + } else { + setPlaceName(`Плейс ${projectId}`); + } + + if (thumbnail) { + setPlaceImage(thumbnail); + } + } catch (error) { + console.warn('[KubikonPlayer] Не удалось загрузить данные плейса:', error); + setPlaceName(`Плейс ${projectId}`); + } + } + + loadPlaceData(); + }, [projectId, userId, meta]); + // Хоткеи 1-5 для слотов инвентаря. // Babylon ловит ввод на canvas — слушаем в capture-phase на window // и не привязываемся к isPlaying (state-флаг может быть ещё false на старте). @@ -1134,13 +1174,16 @@ const KubikonPlayer = () => { }} /> {/* Loading-оверлей */} + {/*не меняйте пожалуйста загрузку, работаю над ней*/} + {/* Loading-оверлей */} + {/*ЗДЕСЬ БУДЕТ ТВОЙ СКРИПТ*/} {loading && (
{ borderRadius: 20, animation: 'hudPulseRing 1.6s ease-out infinite', }} /> - + {placeImage ? ( + {placeName} + ) : ( + + )}
{
- Загрузка игры… + {placeName || 'Загрузка игры…'}
Рублокс • 3D
)} + {/* Игровой UI (HUD, GUI, hotbar, прицел в первом лице) */} {/* Игровой UI (HUD, GUI, hotbar, прицел в первом лице) */} {!loading && ( diff --git a/src/KubikonPlayer/kubikon player loading screen/Loading script old.txt b/src/KubikonPlayer/kubikon player loading screen/Loading script old.txt new file mode 100644 index 0000000..a974ef6 --- /dev/null +++ b/src/KubikonPlayer/kubikon player loading screen/Loading script old.txt @@ -0,0 +1,40 @@ +{loading && ( +
+
+
+ +
+
+
+ Загрузка игры… +
+
+ Рублокс • 3D +
+
+)} \ No newline at end of file