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

Проблема Не передаются данные с сервера на клиент

youngBeaver

Покинул форум.
BackEnd developer
24 Янв 2023
1,173
463
171
А давай ты продолжишь трогать js и не будешь лезть глубже? Я раскрою тебе прикол, что среда выполнения приложения может его закрыть по любой причине, которую ты не отловишь в блоке try
 

projectx

Участник портала
9 Май 2024
34
7
20
Ровно 15 минут гуглил, красавец
 

Fumarie

Участник портала
27 Июн 2024
81
21
40
24
К сожалению, это так не работает. Некому будет отслеживать экзит евенты и что-то с этим делать, когда, допустим, компьютер выключился. И даже если умрет только процесс сервера, массив аккаунтов умрет вместе с ним. Чтобы что-то с этим сделать, как минимум придется кешировать в условный редис, а это не так уж и сильно поможет с уменьшением нагрузки

В общем, имхо куда лучше базу данных шардировать, если есть проблемы с нагрузкой
 
Реакции: X-Clusiv и youngBeaver

denybmp

Новый участник
27 Июл 2024
7
0
3
Получилось исправить.
Как оказалось еще с момента ввода команды нужно было постоянно передавать player вплоть до onUpdateCash. Итоговый код выглядит так:


Команда для выдачи денег на серверной части

JavaScript:
mp.events.addCommand('givemoney', (player, fullText, amount) => {
        mp.events.call('getCash', player, amount)
});

Server-side

JavaScript:
mp.events.add('onUpdateCash', (player) => {
    pool.query('SELECT cash FROM accounts WHERE login = ?', [playerLogin], (err, results) => {
        player.call('updateCashEvent', [results[0].cash])
    })
})
mp.events.add('getCash', (player, amount) => {
    pool.query('UPDATE accounts SET cash = cash + ? WHERE login = ?', [amount, playerLogin], (err, results) => {
        mp.events.call('onUpdateCash', player)
    })
})

Client side

JavaScript:
mp.events.add('updateCashEvent', (cashAmount) => {
    mp.console.logInfo(`client ${cashAmount}`)
    hudBrowser.execute(`updateCash(${cashAmount})`)
})

CEF

JavaScript:
const updateCash = (cashAmount) => {
    moneyCashText.innerText = `${cashAmount}`;
}