debug(g15): логи в shim fireTargetEvent + click — найти где обрывается

This commit is contained in:
min 2026-06-09 19:56:06 +03:00
parent 8abbde9d67
commit 12efef7ff5

View File

@ -2173,6 +2173,10 @@ export function registerRobloxShim(lua, opts) {
if (!p) return; if (!p) return;
const id = p.primId ?? p.target; const id = p.primId ?? p.target;
const part = partById.get(Number(id)); const part = partById.get(Number(id));
if (p.kind === 'click') {
// eslint-disable-next-line no-console
console.warn('[shim fireTargetEvent click] primId=', id, 'part=', !!part);
}
if (!part) return; if (!part) return;
if (p.kind === 'touch' || p.kind === 'touched') { if (p.kind === 'touch' || p.kind === 'touched') {
part.Touched.Fire(hrp); part.Touched.Fire(hrp);
@ -2180,13 +2184,16 @@ export function registerRobloxShim(lua, opts) {
part.TouchEnded.Fire(hrp); part.TouchEnded.Fire(hrp);
} else if (p.kind === 'click') { } else if (p.kind === 'click') {
// ClickDetector создаётся лениво — стрельба по 3D-объектам. // ClickDetector создаётся лениво — стрельба по 3D-объектам.
// Юзер делает: part.ClickDetector = Instance.new('ClickDetector', part) // Фейерим без аргумента (передача объектов в Lua через wasmoon
// + clickDet.MouseClick:Connect(fn). Здесь фейерим сигнал. // может крашить с null.then).
try { try {
const cd = part._clickDetector; const cd = part._clickDetector;
if (cd && cd.MouseClick) cd.MouseClick.Fire(localPlayer); // eslint-disable-next-line no-console
} catch (_) {} console.warn('[shim click]', 'partId=', id, 'cd=', !!cd, 'sig=', !!cd?.MouseClick, 'conns=', cd?.MouseClick?.connections?.length);
// Также фейерим Part.Clicked если есть (наш расширенный API). if (cd && cd.MouseClick) cd.MouseClick.Fire();
} catch (e) {
console.warn('[shim click err]', e?.message || e);
}
try { try {
if (part.Clicked) part.Clicked.Fire(); if (part.Clicked) part.Clicked.Fire();
} catch (_) {} } catch (_) {}