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

Проблема Проблемы с Gui.takeScreenshot

PercyBerkeley

Участник портала
16 Ноя 2024
103
23
35
Привет! Я разрабатываю телефонную систему с нуля и столкнулся с проблемой при создании приложения камеры. Чтобы сделать снимок, я пытаюсь использовать Gui.takeScreenshot, но по какой-то причине это не работает. Событие выполняется, но '.callback' для Gui.takeScreenshot не выполняется.


JavaScript:
mp.events.add('smartphone:captureScreenshotClient', (photoID) => {
    mp.gui.chat.push(`Intentando captura: ${photoID}`);
    
    try {
        mp.gui.takeScreenshot(
            `screenshot_${photoID}.png`,
            1, // tipo: 0 = full quality, 1 = compressed
            50, // calidad JPEG (0-100)
            (base64Data) => {
                mp.gui.chat.push(`Screenshot capturado, tamaño: ${base64Data.length}`);
                mp.events.callRemote('smartphone:receiveScreenshot', photoID, base64Data);
            }
        );
        
        mp.gui.chat.push(`Llamada a takeScreenshot ejecutada`);
        
    } catch (error) {
        mp.gui.chat.push(`Error: ${error.message}`);
        mp.events.callRemote('smartphone:screenshotFailed', photoID);
    }
});
    } catch (error) {
        mp.gui.chat.push(`Error: ${error.message}`);
        mp.events.callRemote('smartphone:screenshotFailed', photoID);
    }
});



Я следую всему синтаксису метода: https://wiki.rage.mp/wiki/Gui.takeScreenshot
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,626
257
100
Привет! Возможно, проблема заключается в неправильном вызове метода mp.gui.takeScreenshot. В вашем коде вызов метода должен быть mp.gui.takeScreenshot, а не mp.gui.takeScreenshot. Попробуйте исправить это и посмотреть, поможет ли это решить проблему.
 

Slash

Активный участник
BackEnd developer
10 Янв 2023
251
36
83

если я правильно понял, то тебе нужно конвертировать в base64 на cef, а не клиенте
 

PercyBerkeley

Участник портала
16 Ноя 2024
103
23
35
Если я понимаю, это работает, чтобы преобразовать изображение, которое уже существует в URL -базе64. Это не служит для захвата визуализации игры, что мне нужно.
 

Slash

Активный участник
BackEnd developer
10 Янв 2023
251
36
83
судя по твоему коду ты вроде как и хотел преобразовать изображение в base64. Или какая у тебя цель?
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,478
2,195
208
36
типичный ответ от нейросети кстати
неиронично буквально дня три назад такой получал

мне кажется ты немного неправильно просто понял, как это работает
у этой функции нет коллбека как такового вообще, она нихуя тебе и не отдаёт, ну и пятого аргумента нет
ты сам же пишешь как назвать файл, клиент кладёт его в screenshots и ты вытаскиваешь его потом сам по GET http://screenshots/filename

toDataUrl это в примере и делает превращая его в блоб

собственно это даж в описании написано

 
Реакции: PercyBerkeley

PercyBerkeley

Участник портала
16 Ноя 2024
103
23
35
Конечно, я конвертирую его на base64Data, чтобы передать его на сервер и сохранить фотографию в базе данных. Но этого не происходит, потому что mp.gui.takescreenshot не выполняется
 

Slash

Активный участник
BackEnd developer
10 Янв 2023
251
36
83
тебе выше всё описали. Ты сохраняешь скриншот на клиенте, а переводишь его в base64 на CEF и от туда отправляешь на сервер
 
Реакции: PercyBerkeley

PercyBerkeley

Участник портала
16 Ноя 2024
103
23
35
Я не буду отрицать, что это заставило меня смеяться.

У тебя есть право, я сам создал проблему Это было так же, как:
JavaScript:
mp.events.add('smartphone:captureScreenshotClient', (photoID) => {
    
    try {
        const filename = `screenshot_${photoID}.jpg`;
        
        mp.gui.takeScreenshot(filename, 1, 75);
        
        mp.gui.chat.push(`FUNCIONA`);
        
        // Esperar y notificar al CEF del smartphone para que lo procese
        setTimeout(() => {
            if (phoneBrowser) {
                phoneBrowser.execute(`
                    if (window.processScreenshot) {
                        window.processScreenshot('${photoID}', '${filename}');
                    }
                `);
            }
        }, 500);
        
    } catch (error) {
        mp.gui.chat.push(`NO FUNCIOOOONA ${error.message}`);
        mp.events.callRemote('smartphone:screenshotFailed', photoID);
    }
});


Кстати, Haaland должен реализовать возможность отправлять звезды, как на Facebook
 
Реакции: Inoi