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

Вопрос Как добавить свойства к объекту player? [JS]

Novip

Участник портала
Автор темы
2 Янв 2021
4
1
13
Всем привет!
Такой вопрос: как добавить свойства к объекту player? Например player.sID, player.money
Должно получиться как то вот так:
JavaScript:
mp.events.add('playerReady', (player) => {

  let player.money = // database request

  let player.sId = // database request

})
Мне нужно это, чтобы использовать например для админ команд для сравнения player.adminLevel
 

Moretti

Специалист
high coder
19 Янв 2021
83
31
92
Если тебе не нужно передавать на клиента это - просто player.adminLevel, везде он будет доступен.
Если нужно передать на клиента - player.setVariable("name", "data")
А на самом клиенте уже player.getVariable("name") // вернет data
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
583
276
161
29
Приветствую на нашем форуме! Сам код сверху некорректен. Вы пытаетесь объявить уже созданный объект player который передается в этот эвент при его вызове.

player в данном случае является так сказать персонажем который вызвал это событие.
И вы можете к примеру переместить его в какую-то позицию:
JavaScript:
mp.events.add('playerReady', (player) => {
   player.position = new.Vector3(100,100,3000);//заставим персонажа немного полетать
})

Если вы хотите взять из базы данных и привязать их к пользователю. Вам нужно сначала вытянуть их из бд. А затем присвоить игроку.
 
Последнее редактирование:

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
583
276
161
29
JavaScript:
mp.events.add('playerReady', (player) => {
    DB.Handle.query(`SELECT money,sId FROM players WHERE socialClub=?`, [player.socialClub], (e, result) => {
        if(e)return console.warn(e)
        else{
            if(request.length==0){/* Код для регистрации персонажа так как в бд нет соцклаба*/}
            let req = request[0]
             player.money = req.money;
             player.sId = req.sId;
        }
    })
})
Примерно таким должен быть код.
НО, DB это обьект который хранит подключение к БД вам нужно будет это инициализировать самостоятельно, так как для каждого проекта это индивидуально.
Почему идентификация пользователя идет по его социал-клабу? Вы указали событие playerReady. Оно срабатывает сразу после того как пользователь загрузил все файлы к себе, и так сказать подключился к серверу. Т.е. не успел еще ни ввести логина ни пароля. Поэтому данных о логине и пароля в этом случае быть не может.
 
Последнее редактирование:

Novip

Участник портала
Автор темы
2 Янв 2021
4
1
13
Спасибо за ответ, но у меня почему то так не работает.
Сделал такой код для примера:
JavaScript:
mp.events.add('playerReady', (player) => {
    player.money = 1000
})



mp.events.addCommand('money', (player) => {
    player.notify(player.money)
})
Выдает такую ошибку:

Error: expected String
player.notify(player.money)
 

Novip

Участник портала
Автор темы
2 Янв 2021
4
1
13
Подскажите пожалуйста по поводу сообщения выше
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
583
276
161
29
Чтобы понять ошибку достаточно перевести ее, по крайней мере в этом конкретном случае.
Ошибка: ожидаемая строка
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
583
276
161
29
можно так
JavaScript:
mp.events.add('playerReady', (player) => {
    player.money = 1000
})
mp.events.addCommand('money', (player) => {
    player.notify(`${player.money}`)
})
Либо так
JavaScript:
mp.events.add('playerReady', (player) => {
    player.money = 1000
})
mp.events.addCommand('money', (player) => {
    player.notify('У персонажа, '+player.name+' в кармане '+player.money+'$')
})
 
Реакции: Novip

Novip

Участник портала
Автор темы
2 Янв 2021
4
1
13
Спасибо большое, очень Вам благодарен!
 
Реакции: X-Clusiv

Moretti

Специалист
high coder
19 Янв 2021
83
31
92
Хватило бы просто String(player.money)