• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Проблема execute Передача данных

TTox421

Участник портала
23 Май 2021
65
19
65
Подскажите почему я не могу передать данные с клиентской стороны на Frontend

Я пробовал разные варианты и все равно у меня не выводит текст при ошибке. При этом я проверил функция на стороне клиента сто процентов получает сообщение.


Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute(`showError(errorMessage)`);
});

////////////////////////////////////////////////////////////

function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = `${message}`;
}

Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute(`showError(${errorMessage})`);
});

//////////////////////////////////////////////////////////////
function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = `${message}`;
}

Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute(`showError(${errorMessage})`);
});

/////////////////////////////////////////////////////////////

function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = message;
}

Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute('showError(`${errorMessage}`)');
});

///////////////////////////////////////////////////////////

function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = message;
}
 

TTox421

Участник портала
23 Май 2021
65
19
65
Нашел решение -
Код:
myBrowser.execute(`showError('${errorMessage}')`);
 

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
Нашел решение -
Код:
myBrowser.execute(`showError('${errorMessage}')`);
Ты нашёл решение методом тыка или понял причину ошибки очевидной?

P.S.
В 1.1 есть возможность регистрировать в CEF'е эвенты через mp.events.add и потом на клиенте, через Browser.call можно тригерить эвенты в CEF'е.
 

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
В рейдже весело передавать объекты в строке, а потом парсить их, мем
Да, так работает передача данных. Не поверишь, передавать данные в JSON формате нельзя. Ты можешь без проблем сделать обёртку и сам десерилизовать свои объекты. МЕМ человек не шарит за программирование и выписывает что-то про чужой продукт, сам не понимая что выписывает МЕМ

"high coder" выдают всем подряд или тут, весь внутренний грейд форума, это до интерна?
 
Реакции: evgee.kzmn

TTox421

Участник портала
23 Май 2021
65
19
65
Ты нашёл решение методом тыка или понял причину ошибки очевидной?

P.S.
В 1.1 есть возможность регистрировать в CEF'е эвенты через mp.events.add и потом на клиенте, через Browser.call можно тригерить эвенты в CEF'е.
Нет я нашел решение в интернете с объяснением
 

TTox421

Участник портала
23 Май 2021
65
19
65
Ты нашёл решение методом тыка или понял причину ошибки очевидной?

P.S.
В 1.1 есть возможность регистрировать в CEF'е эвенты через mp.events.add и потом на клиенте, через Browser.call можно тригерить эвенты в CEF'е.
Имеешь ввиду на прямую в JS файле отлавливать эвенты с клиентской стороны?
 

TTox421

Участник портала
23 Май 2021
65
19
65
Ты нашёл решение методом тыка или понял причину ошибки очевидной?

P.S.
В 1.1 есть возможность регистрировать в CEF'е эвенты через mp.events.add и потом на клиенте, через Browser.call можно тригерить эвенты в CEF'е.
Вроде как понял, надо будет попробовать.
 

TTox421

Участник портала
23 Май 2021
65
19
65
Ужас... давай попробую объяснить. execute это тоже самое что и eval. Ты эвалишь "showError(errorMessage)" и в области видимости нет переменной "errorMessage"
Так я имел ввиду, что я нашел решение где объяснено почему именно такой регистр записи. Я уже понял почему код не работал.
 

Moretti

Участник портала
19 Янв 2021
82
24
92
Да, так работает передача данных. Не поверишь, передавать данные в JSON формате нельзя. Ты можешь без проблем сделать обёртку и сам десерилизовать свои объекты. МЕМ человек не шарит за программирование и выписывает что-то про чужой продукт, сам не понимая что выписывает МЕМ

"high coder" выдают всем подряд или тут, весь внутренний грейд форума, это до интерна?
Начнем с того, что JSON ты и не передашь, ведь это не тип данных даже. А то что можно создавать ивенты, я знаю, но сейчас шла речь об execute, да и пишу я по большей части на альте.
 
  • Love
Реакции: IronPython

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
Начнем с того, что JSON ты и не передашь, ведь это не тип данных даже. А то что можно создавать ивенты, я знаю, но сейчас шла речь об execute, да и пишу я по большей части на альте.
"Начнем с того, что JSON ты и не передашь, ведь это не тип данных даже." Где я сказал что JSON это тип данных?
"но сейчас шла речь об execute" Раз идёт речь об execute, зачем ты вообще пишешь "В рейдже весело передавать объекты в строке, а потом парсить их, мем". Типо к чему вообще это.
"да и пишу я по большей части на альте." а ну тогда ясно.
 

Moretti

Участник портала
19 Янв 2021
82
24
92
"Начнем с того, что JSON ты и не передашь, ведь это не тип данных даже." Где я сказал что JSON это тип данных?
"но сейчас шла речь об execute" Раз идёт речь об execute, зачем ты вообще пишешь "В рейдже весело передавать объекты в строке, а потом парсить их, мем". Типо к чему вообще это.
"да и пишу я по большей части на альте." а ну тогда ясно.
1 - "Не поверишь, передавать данные в JSON формате нельзя. Ты можешь без проблем сделать обёртку и сам десерилизовать свои объекты."
2 - К тому что execute не может передать параметры в функцию нормально.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
1 - "Не поверишь, передавать данные в JSON формате нельзя. Ты можешь без проблем сделать обёртку и сам десерилизовать свои объекты."
2 - К тому что execute не может передать параметры в функцию нормально.
Почему execute не может передавать параметры в функцию нормально? Как и в любом другом месте? ' требуются в данном случае по той причине, что это текст, текст (как и json, ведь он является текстом) невозможно передать просто переменной. Цифры ты можешь передавать browser.execute("testfunc(4)");, но текст только через ', очевидно же, не?
 

Moretti

Участник портала
19 Янв 2021
82
24
92
Почему execute не может передавать параметры в функцию нормально? Как и в любом другом месте? ' требуются в данном случае по той причине, что это текст, текст (как и json, ведь он является текстом) невозможно передать просто переменной. Цифры ты можешь передавать browser.execute("testfunc(4)");, но текст только через ', очевидно же, не?
Очевидно конечно, но все же метод не лучший. Например, можно было бы принимать параметры после названия функции, execute(name, "string", 4, {data: "name"})
 

Moretti

Участник портала
19 Янв 2021
82
24
92
Все же ивенты стали лучшим решением для рейджа.
 

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
Очевидно конечно, но все же метод не лучший. Например, можно было бы принимать параметры после названия функции, execute(name, "string", 4, {data: "name"})
Очевидно ты не понимаешь что пишешь. Мне даже в падлу тебе аргументировать. Ты отвечаешь полный бред, потому что мало что понимаешь.

Попроси забрать "high coder", ты максимум интерн спустя пару месяцев, который скоро мб джуном станет.
 

Moretti

Участник портала
19 Янв 2021
82
24
92
Очевидно ты не понимаешь что пишешь. Мне даже в падлу тебе аргументировать. Ты отвечаешь полный бред, потому что мало что понимаешь.

Попроси забрать "high coder", ты максимум интерн спустя пару месяцев, который скоро мб джуном станет.

Что ты вообще несешь? Я привел пример, как рейдж мог бы сделать изначально, я знаю что делает функция execute, но реализация с ходу херня, со стороны рейджа.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Очевидно конечно, но все же метод не лучший. Например, можно было бы принимать параметры после названия функции, execute(name, "string", 4, {data: "name"})
Честно говоря, вообще не вижу смысла в этом. Зачем, если текущий execute работает прекрасно для всех нужных случаев?
В него можно передавать всё, что ты только можешь хотеть, и это удобно уже сейчас, зачем это менять на что-то более сложное, что не имеет смысла, если сейчас можно сделать всё то же самое с тем же успехом?

Как .execute может работать:
JavaScript:
browser.execute("func('test')");
browser.execute("var testvar = \"test\"; func(testvar)");
browser.execute("var testvar = 4; func(testvar)");
browser.execute("func(4)");

Как .execute НЕ может работать:
JavaScript:
browser.execute("func(testvar)");
Потому что 'testvar' в данном случае не находится в зоне досягаемости для того, что происходит внутри (внутри - это "func(testvar)"). Чтобы передать что-то как текст - нужно использовать ', а если это переменная - она должна быть оговорена внутри, как видно выше.
 
Последнее редактирование:

Moretti

Участник портала
19 Янв 2021
82
24
92
Кстати, нужно вот что проверить, если внутри execute сделать переменную с парсингом объекта и передать его