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

Передача статистики игрока

Статус
В этой теме нельзя размещать новые ответы.

LexaST

Новый участник
29 Июн 2025
97
4
24
Привет, нужна ваша помощь!
Как с сервера в CEF передавать статистику игрока?
На сервере у меня есть такие параметры:

List<object> data = new List<object>
{
acc.LVL, //0
acc.EXP, //1
number, //2
status, //3
acc.Warns,//4
lic,//5
acc.CreateDate.ToString("dd.MM.yyyy"),//6
work,//7
fraction,//8
acc.FractionLVL,//9
acc.FirstName,//10
acc.LastName,//11
acc.UUID,//12
acc.Bank,//13
acc.Eat, //15
acc.Water, //16
acc.Money, //17
Main.Accounts[player].VipLvl > 0 ? Main.Accounts[player].VipDate.ToString("dd.MM.yyyy") : null,
};
Как мне их все предать? Буду рад вашей помощи, желательно с примером ибо перепробовал разные варианты но статистика так и не отображаеться в меню игрока
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,612
256
100
Привет! Для передачи статистики игрока с сервера на CEF (Chromium Embedded Framework) вам нужно воспользоваться JavaScript. Вам нужно создать функцию на стороне CEF, которая будет вызываться из сервера и принимать данные статистики игрока.

Пример функции на стороне CEF:

JavaScript:
function updatePlayerStats(level, exp, number, status, warns, lic, createDate, work, fraction, fracLevel, firstName, lastName, uuid, bank, eat, water, money, vipDate) {
    // Дальнейшая обработка данных статистики игрока
    // Например, обновление DOM элементов с помощью полученных значений
}

На стороне сервера вам нужно вызвать эту функцию и передать параметры статистики игрока. В вашем случае, это может выглядеть примерно так:

C#:
// Вызов функции на стороне CEF
ExecuteJavaScript($"updatePlayerStats({data[0]}, {data[1]}, {data[2]}, '{data[3]}', {data[4]}, '{data[5]}', '{data[6]}', '{data[7]}', '{data[8]}', {data[9]}, '{data[10]}', '{data[11]}', '{data[12]}', {data[13]}, {data[15]}, {data[16]}, {data[17]}, {data[18]})");

Где ExecuteJavaScript - это метод для выполнения JavaScript на стороне CEF.

Таким образом, вы передаете данные статистики игрока с сервера на CEF и обновляете соответствующие элементы в интерфейсе игры. Надеюсь, этот пример поможет вам решить проблему!
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,444
2,179
208
36
что ты перепробовал то покажи
с сервера ты передаешь на клиент, с клиента уже обновляешь компоненты-состояния в своём цеф-браузере

цепочка не сервер-клиент, а сервер-клиент-цеф

 
Реакции: Vermilion

LexaST

Новый участник
29 Июн 2025
97
4
24
Изначально по статистике игрока было так(прикрепил скрин ситаиты фридома):

List<object> data = new List<object>
{
acc.LVL,
acc.EXP,
Convert.ToInt32(3 + acc.LVL * 3),
acc.CreateDate.ToString("dd.MM.yyyy"),
acc.Money,
bank,
24,//Age,
house,
work,
"Не женат",
fractionRank,
fraction,
status,
Main.Accounts[player].VipLvl > 0 ? Main.Accounts[player].VipDate.ToString("dd.MM.yyyy") : null,
};
Я немного изменил параметры под новое меню:

List<object> data = new List<object>
{
acc.LVL, //0
acc.EXP, //1
number, //2
status, //3
acc.Warns,//4
lic,//5
acc.CreateDate.ToString("dd.MM.yyyy"),//6
work,//7
fraction,//8
acc.FractionLVL,//9
acc.FirstName,//10
acc.LastName,//11
acc.UUID,//12
acc.Bank,//13
acc.Eat, //15
acc.Water, //16
acc.Money, //17
Main.Accounts[player].VipLvl > 0 ? Main.Accounts[player].VipDate.ToString("dd.MM.yyyy") : null,
};
В JS цефки прописаны эти параметры, но они не подтягиваются с сервера, просто отображается заранее написанный текст. Я пробовало прописывать параметры в html как они прописаны в JS, за тем как пронумерованы на сервере({{stats[0]}})
В сборке големо работает корректо, в сборке Freedom нифига не работает. Вот и пытаюсь понять как мне предать с сервера инфу об условном имени игрока в цефку. Потому что я уже тупо условный Dashbord перетянул в freedom и статистика игрока как не показывалась так и не показывается. Чисто то что прописали в js файле то и есть, а не инфа с сервера.
 

Вложения

  • 12.jpg
    44.4 KB · Просмотры: 49

Dmitry_V

Гений
23 Июн 2023
2,766
494
131
28
Так у тебя же жпт есть, у него и спроси
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,444
2,179
208
36
честно говоря понятнее нихуя не стало
нужно видеть полную цепочку, как ты принимаешь и передаешь дальше

советую везде логгировать то что ты делаешь - так проще всего найти ошибку
например на клиенте делать буквально chat.push данных которые ты получаешь с сервера перед тем как отправлять дальше
 
Реакции: LexaST

LexaST

Новый участник
29 Июн 2025
97
4
24
Так у тебя же жпт есть, у него и спроси
В этом случае он не может помочь, выдаёт рандом который вообще не помогает. Хотя..... Если ему скормить файлы сервера, клиента может и одуплит, со второго раза. Писать новые системы одно, а вот работать с костылём эт другое
 

Dmitry_V

Гений
23 Июн 2023
2,766
494
131
28
Это инструмент, если уметь обращаться и понимать процесс, то он одинаково будет работать и с новым, и со старым кодом.
 

Slash

Активный участник
BackEnd developer
10 Янв 2023
237
33
83
предположим ты на cef имеешь такой store:

JavaScript:
export default {
  state: {
    Id: 1,
    Name: "Test",
    LastName: "Testovich"
  }
}


тогда на сервере ты создаёшь класс который будет копировать твой store(для маленьких объектов можешь и словарь условный юзать)

C#:
public class UserUI
{
    public UserUI(int id, string name, string lastName)
    {
        Id = id;
        Name = name;
        LastName = lastName;
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
}


и через какое либо событие(RemoteEvent, на заход игрока и тд) отдаёшь эти данные клиенту(если ты на клиент отдаёшь класс или любой другой объект, который храниться в виде ссылки, а не самой переменной, то нужно этот объект конвертировать в JSON)

C#:
[RemoteEvent("server.getPlayerInfo")]
public void GetPlayerInfo(Player player)
{
    UserUI userInfo = new UserUI(player.id, player.name, player.lastName);
    Trigger.ClientEvent(player, "client.setPlayerInfo", JsonConvert.SerializeObject(userInfo));
}

далее принимаешь данные на клиенте(и соответственно парсишь из JSON обратно в объект) и передаёшь их в браузер. Если у тебя уже готовая сборка то чекай как передача данных у тебя реализована


JavaScript:
mp.events.add("client.setPlayerInfo", (player, JsonString) => {
    const info = JSON.parse(JsonString);
    global.browser.execute(`setPlayerInfo(${info.Id}, "${info.Name}", "${info.LastName}");`);
});
 
Реакции: LexaST

johndoe

Начинающий специалист
10 Май 2025
131
48
40

Какой store, не смеши нахуй) Я почти уверен что там в дом дереве вывод статик текста, а-ля: "Уровень: 0"
 
Реакции: Inoi и Slash

Slash

Активный участник
BackEnd developer
10 Янв 2023
237
33
83
кстати для менюшек который запрашивают данные при каждом открытии(и эти данные не изменяются особо сильно в течении работы с меню) store можно не юзать, обычного объекта класса или словаря в script с головой хватит
 

johndoe

Начинающий специалист
10 Май 2025
131
48
40

Или если данных не сильно много можно пропы кидать, тож тема. Но "словарь", "пропы", "стор" - слишком сложные слова, увы.
 
Реакции: Slash

LexaST

Новый участник
29 Июн 2025
97
4
24
Тут ты прав, в случае с статистикой сложновато вышло, но посидев немного покопавшись, откатил на дефолтный код, и начал вызывать своё меню вместо того что отключил, по сути ничего конкретного я не переделывал, кроме чистки клиенсткой части которая выводила инфу в меню игрока. Всем спасибо за помощь.




@Inoi Тему можно закрывать
 
Реакции: Inoi
Статус
В этой теме нельзя размещать новые ответы.