• Из-за обновления 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) последний раз были обновлены:

Проблема Краш сервера при реконнекте

dreamharakiri

Новый участник
25 Дек 2021
75
1
49
Распишу какие действия приводят к крашу:
Захожу на сервер, авторизуюсь, выбираю персонажа, переподключаюсь через ф1.

Все данные персонажей у меня хранятся в виде player.setVariable/getVariable. Жалуется он на таймер который обновляет те самые данные. Выглядит это так:
JavaScript:
                      setInterval(() => {
                            let nickname = player.getVariable('nickname')
                            let owner = player.getVariable('owner')

                            let hair = player.getVariable('hair')
                            let masks = player.getVariable('masks')
                            let torsos = player.getVariable('torsos')
                            let legs = player.getVariable('legs')
                            let bags = player.getVariable('bags')
                            let shoes = player.getVariable('shoes')
                            let accessories = player.getVariable('accessories')
                            let undershirts = player.getVariable('undershirts')
                            let armors = player.getVariable('armors')
                            let decals = player.getVariable('decals')
                            let tops = player.getVariable('tops')
                            let hats = player.getVariable('hats')
                            let glasses = player.getVariable('glasses')
                            let ears = player.getVariable('ears')
                            let watches = player.getVariable('watches')
                            let bracelets = player.getVariable('bracelets')
                            let sex = player.getVariable('sex')

                            let NoseWidth = player.getVariable('NoseWidth')
                            let NoseHeight = player.getVariable('NoseWidth')
                            let NoseLength = player.getVariable('NoseWidth')
                            let NoseBridge = player.getVariable('NoseWidth')
                            let NoseTip = player.getVariable('NoseWidth')
                            let NoseBridgeShift = player.getVariable('NoseWidth')
                            let BrowHeight = player.getVariable('NoseWidth')
                            let BrowWidth = player.getVariable('NoseWidth')
                            let CheekboneHeight = player.getVariable('NoseWidth')
                            let CheekboneWidth = player.getVariable('NoseWidth')
                            let CheeksWidth = player.getVariable('NoseWidth')
                            let Eyes = player.getVariable('NoseWidth')
                            let Lips = player.getVariable('NoseWidth')
                            let JawWidth = player.getVariable('NoseWidth')
                            let JawHeight = player.getVariable('NoseWidth')
                            let ChinLength = player.getVariable('NoseWidth')
                            let ChinPosition = player.getVariable('NoseWidth')
                            let ChinWidth = player.getVariable('NoseWidth')
                            let ChinShape = player.getVariable('NoseWidth')
                            let NeckWidth = player.getVariable('NoseWidth')

                            let level = player.getVariable('level')
                            let exp = player.getVariable('exp')
                            let maxexp = player.getVariable('maxexp')
                            let money = player.getVariable('money')
                            let bank = player.getVariable('bank')
                            let lastpos = player.getVariable('lastpos')
                            let fraction = player.getVariable('fraction')
                            let family = player.getVariable('family')
                            let dimension = player.getVariable('dimension')
                            
                            player.call('hudRender', [maxexp, exp, level, money, bank]);
                        }, 1000)

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

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Советую обходить SharedData как можно больше, потому что все данные, которые записаны туда - хранятся на пк всех игроков, что равняется использованию бОльшей оперативной памяти игрой, чем требуется. Использовать её лучше только для тех вещей, которые тебе нужно синхронизировать между всеми, но такие данные, как уровень, експ, деньги и прочее - явно не нужны всем игрокам на сервере, если смотреть от лица конкретного игрока. Настройки лица у тебя вообще все до единой берутся из 1 даты, кек.
Проблема данного кода (именно краш или ошибка) скорее всего связана именно с обращением к player, сущности, которая еще не существует, делай проверку внутри своего интервала
JavaScript:
if (player == null) return;
Ну и обновлять каждую секунду ВСЕ данные - это глупость. Либо у тебя каждую секунду меняется уровень, деньги и прочее - либо это плохое решение.
 
Последнее редактирование:

dreamharakiri

Новый участник
25 Дек 2021
75
1
49
Советую обходить SharedData как можно больше, потому что все данные, которые записаны туда - хранятся на пк всех игроков, что равняется использованию бОльшей оперативной памяти игрой, чем требуется. Использовать её лучше только для тех вещей, которые тебе нужно синхронизировать между всеми, но такие данные, как уровень, експ, деньги и прочее - явно не нужны всем игрокам на сервере, если смотреть от лица конкретного игрока. Настройки лица у тебя вообще все до единой берутся из 1 даты, кек.
Проблема данного кода (именно краш или ошибка) скорее всего связана именно с обращением к player, сущности, которая еще не существует, делай проверку внутри своего интервала
JavaScript:
if (player == null) return;
Ну и обновлять каждую секунду ВСЕ данные - это глупость. Либо у тебя каждую секунду меняется уровень, деньги и прочее - либо это плохое решение.
А каким образом тогда хранить данные?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
А каким образом тогда хранить данные?
У клиента храни переменные, которые нужны только ему самому (лвл, експ, деньги и прочее, что не нужно знать никому кроме него самого со стороны клиента), отправляй их через TriggerEvent.
 

dreamharakiri

Новый участник
25 Дек 2021
75
1
49
У клиента храни переменные, которые нужны только ему самому (лвл, експ, деньги и прочее, что не нужно знать никому кроме него самого со стороны клиента), отправляй их через TriggerEvent.
Все равно выдает это:
Снимок экрана 2022-01-24 002103.png
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
На счёт этого я тебе дал ответ в самом первом посте.
player у тебя не определён, ты не можешь обращаться по переменной, которая не является multiplayer object.
Делай проверку в самом начале своего плохого таймера на то, существует ли player. mp.players.exist, например
 

seaniwe

Новый участник
18 Сен 2020
20
1
60
Распишу какие действия приводят к крашу:
Захожу на сервер, авторизуюсь, выбираю персонажа, переподключаюсь через ф1.

Все данные персонажей у меня хранятся в виде player.setVariable/getVariable. Жалуется он на таймер который обновляет те самые данные. Выглядит это так:
JavaScript:
                      setInterval(() => {
                            let nickname = player.getVariable('nickname')
                            let owner = player.getVariable('owner')

                            let hair = player.getVariable('hair')
                            let masks = player.getVariable('masks')
                            let torsos = player.getVariable('torsos')
                            let legs = player.getVariable('legs')
                            let bags = player.getVariable('bags')
                            let shoes = player.getVariable('shoes')
                            let accessories = player.getVariable('accessories')
                            let undershirts = player.getVariable('undershirts')
                            let armors = player.getVariable('armors')
                            let decals = player.getVariable('decals')
                            let tops = player.getVariable('tops')
                            let hats = player.getVariable('hats')
                            let glasses = player.getVariable('glasses')
                            let ears = player.getVariable('ears')
                            let watches = player.getVariable('watches')
                            let bracelets = player.getVariable('bracelets')
                            let sex = player.getVariable('sex')

                            let NoseWidth = player.getVariable('NoseWidth')
                            let NoseHeight = player.getVariable('NoseWidth')
                            let NoseLength = player.getVariable('NoseWidth')
                            let NoseBridge = player.getVariable('NoseWidth')
                            let NoseTip = player.getVariable('NoseWidth')
                            let NoseBridgeShift = player.getVariable('NoseWidth')
                            let BrowHeight = player.getVariable('NoseWidth')
                            let BrowWidth = player.getVariable('NoseWidth')
                            let CheekboneHeight = player.getVariable('NoseWidth')
                            let CheekboneWidth = player.getVariable('NoseWidth')
                            let CheeksWidth = player.getVariable('NoseWidth')
                            let Eyes = player.getVariable('NoseWidth')
                            let Lips = player.getVariable('NoseWidth')
                            let JawWidth = player.getVariable('NoseWidth')
                            let JawHeight = player.getVariable('NoseWidth')
                            let ChinLength = player.getVariable('NoseWidth')
                            let ChinPosition = player.getVariable('NoseWidth')
                            let ChinWidth = player.getVariable('NoseWidth')
                            let ChinShape = player.getVariable('NoseWidth')
                            let NeckWidth = player.getVariable('NoseWidth')

                            let level = player.getVariable('level')
                            let exp = player.getVariable('exp')
                            let maxexp = player.getVariable('maxexp')
                            let money = player.getVariable('money')
                            let bank = player.getVariable('bank')
                            let lastpos = player.getVariable('lastpos')
                            let fraction = player.getVariable('fraction')
                            let family = player.getVariable('family')
                            let dimension = player.getVariable('dimension')
                           
                            player.call('hudRender', [maxexp, exp, level, money, bank]);
                        }, 1000)

Могу предположить что стоит сделать отдельный ивент с таймером который начинает работать после выбора персонажа, возможно, просто таймер начинает работу при подключении, но т.к. персонаж не выбран - данные ему взять неоткуда. На самом деле это очень сомнительные размышления. При краше ошибка указывает именно на первую строку в таймере. Решил для проверки ее убрать и она стала указывать на следующую строку. То есть по факту дело не в самих переменных
Скинь всю функцию, что понять где у тебя player и кто он такой.
 

dreamharakiri

Новый участник
25 Дек 2021
75
1
49
Скинь всю функцию, что понять где у тебя player и кто он такой.
JavaScript:
mp.events.add("AuthAccept", (player, data) =>{
    if (player == null) return;
    data = JSON.parse(data);
    //'SELECT * FROM characters WHERE binary owner = ?',[data.Login], function(error, results, fields
    var conlog = connection.query('SELECT * FROM accounts WHERE binary login = ? AND password = ?', [data.Login, data.Password], function (error, results, fields) {
        if(results.length == 0){
            ClearInput = "Неправильный логин или пароль";
            TextClearInput = "Вы ввели неправильные данные. Вы можете зарегистрировать новый аккаунт, либо восстановить старый"
            player.call('Notification', [ClearInput, TextClearInput])
        }
        if(results.length == 1){
            var loginAuth = data.Login;
            player.spawn(new mp.Vector3(-1289.03173828125, 441.0468200683594, 97.69454193115234), 130.69454193115234);
            player.dimension = Math.floor(Math.random() * 50000) + 20000;
           
            connection.query('SELECT * FROM characters WHERE binary owner = ?',[data.Login], function(error, results, fields){
                firstPersonName = results[0].name + ' ' +results[0].surname;
                if(results.length === 2){
                    firstPersonName = results[0].name + ' ' +results[0].surname;
                    secondPersonName = results[1].name + ' ' +results[1].surname;
                }
                if(results.length === 3){
                    firstPersonName = results[0].name + ' ' +results[0].surname;
                    secondPersonName = results[1].name + ' ' +results[1].surname;
                    threePersonName = results[2].name + ' ' +results[2].surname;
                }
               
                if(results[0].sex === 0){
                    player.model = mp.joaat('mp_m_freemode_01');
                }
                if(results[0].sex === 1){
                    player.model = mp.joaat('mp_f_freemode_01');
                }

                let Hair = results[0].hair;
                let Masks = results[0].Masks;
                let Torsos = results[0].Torsos;
                let Legs = results[0].Legs;
                let Bags = results[0].Bags;
                let Shoes = results[0].Shoes;
                let Accessories = results[0].Accessories;
                let Undershirts = results[0].Undershirts;
                let Armors = results[0].Armors;
                let Decals = results[0].Decals;
                let Tops = results[0].Tops;

                let NoseWidth = results[0].NoseWidth;
                let NoseHeight = results[0].NoseHeight;
                let NoseLength = results[0].NoseLength;
                let NoseBridge = results[0].NoseBridge;
                let NoseTip = results[0].NoseTip;
                let NoseBridgeShift = results[0].NoseBridgeShift;
                let BrowHeight = results[0].BrowHeight;
                let BrowWidth = results[0].BrowWidth;
                let CheekboneHeight = results[0].CheekboneHeight;
                let CheekboneWidth = results[0].CheekboneWidth;
                let CheeksWidth = results[0].CheeksWidth;
                let Eyes = results[0].Eyes;
                let Lips = results[0].Lips;
                let JawWidth = results[0].JawWidth;
                let JawHeight = results[0].JawHeight;
                let ChinLength = results[0].ChinLength;
                let ChinPosition = results[0].ChinPosition;
                let ChinWidth = results[0].ChinWidth;
                let ChinShape = results[0].ChinShape;
                let NeckWidth = results[0].NeckWidth;

                let Hats = results[0].Hats;
                let Glasses = results[0].Glasses;
                let Ears = results[0].Ears;
                let Watches = results[0].Watches;
                let Bracelets = results[0].Bracelets;

                player.setClothes(...Hair.split(",").map(el => Number(el)));
                player.setClothes(...Masks.split(",").map(el => Number(el)));
                player.setClothes(...Torsos.split(",").map(el => Number(el)));
                player.setClothes(...Legs.split(",").map(el => Number(el)));
                player.setClothes(...Bags.split(",").map(el => Number(el)));
                player.setClothes(...Shoes.split(",").map(el => Number(el)));
                player.setClothes(...Accessories.split(",").map(el => Number(el)));
                player.setClothes(...Undershirts.split(",").map(el => Number(el)));
                player.setClothes(...Armors.split(",").map(el => Number(el)));
                player.setClothes(...Decals.split(",").map(el => Number(el)));
                player.setClothes(...Tops.split(",").map(el => Number(el)));

                player.setFaceFeature(0, NoseWidth);
                player.setFaceFeature(1, NoseHeight);
                player.setFaceFeature(2, NoseLength);
                player.setFaceFeature(3, NoseBridge);
                player.setFaceFeature(4, NoseTip);
                player.setFaceFeature(5, NoseBridgeShift);
                player.setFaceFeature(6, BrowHeight);
                player.setFaceFeature(7, BrowWidth);
                player.setFaceFeature(8, CheekboneHeight);
                player.setFaceFeature(9, CheekboneWidth);
                player.setFaceFeature(10, CheeksWidth);
                player.setFaceFeature(11, Eyes);
                player.setFaceFeature(12, Lips);
                player.setFaceFeature(13, JawWidth);
                player.setFaceFeature(14, JawHeight);
                player.setFaceFeature(15, ChinLength);
                player.setFaceFeature(16, ChinPosition);
                player.setFaceFeature(17, ChinWidth);
                player.setFaceFeature(18, ChinShape);
                player.setFaceFeature(19, NeckWidth);

                if(Hats != "0"){
                    player.setProp(...Hats.split(",").map(el => Number(el)));
                }
                if(Glasses != "0"){
                    player.setProp(...Glasses.split(",").map(el => Number(el)));
                }
                if(Ears != "0"){
                    player.setProp(...Ears.split(",").map(el => Number(el)));
                }
                if(Watches != "0"){
                    player.setProp(...Watches.split(",").map(el => Number(el)));
                }
                if(Bracelets != "0"){
                    player.setProp(...Bracelets.split(",").map(el => Number(el)));
                }

                var firstPerson = [
                    firstPersonName,
                    results[0].level,
                    results[0].money,
                    results[0].bank
                ]

                if(results.length === 2){
                    var secondPerson = [
                        secondPersonName,
                        results[1].level,
                        results[1].money,
                        results[1].bank
                    ]
                }

                if(results.length === 3){
                    var secondPerson = [
                        secondPersonName,
                        results[1].level,
                        results[1].money,
                        results[1].bank
                    ]
   
                    var threePerson = [
                        threePersonName,
                        results[2].level,
                        results[2].money,
                        results[2].bank
                    ]
                }

                if(results.length === 1){
                    player.call('SelectPlayer', [firstPerson])

                }
                if(results.length === 2){
                    player.call('SelectPlayer',  [firstPerson, secondPerson]);

                }
                if(results.length === 3){
                    player.call('SelectPlayer',  [firstPerson, secondPerson, threePerson]);

                }

                mp.events.add("SelectFirstAccount", (player) =>{
                        if (player == null) return;
                        //let nicknameSure = results[0].name + ' ' +results[0].surname;
                        player.setVariable('nickname', firstPersonName)
                        player.setVariable('owner', results[0].owner)

                        player.setVariable('hair', results[0].hair)
                        player.setVariable('masks', results[0].Masks)
                        player.setVariable('torsos', results[0].Torsos)
                        player.setVariable('legs', results[0].Legs)
                        player.setVariable('bags', results[0].Bags)
                        player.setVariable('shoes', results[0].Shoes)
                        player.setVariable('accessories', results[0].Accessories)
                        player.setVariable('undershirts', results[0].Undershirts)
                        player.setVariable('armors', results[0].Armors)
                        player.setVariable('decals', results[0].Decals)
                        player.setVariable('tops', results[0].Tops)
                        player.setVariable('hats', results[0].Hats)
                        player.setVariable('glasses', results[0].Glasses)
                        player.setVariable('ears', results[0].Ears)
                        player.setVariable('watches', results[0].Watches)
                        player.setVariable('bracelets', results[0].Bracelets)
                        player.setVariable('sex', results[0].sex)

                        player.setVariable('NoseWidth', results[0].NoseWidth)
                        player.setVariable('NoseHeight', results[0].NoseHeight)
                        player.setVariable('NoseLength', results[0].NoseLength)
                        player.setVariable('NoseBridge', results[0].NoseBridge)
                        player.setVariable('NoseTip', results[0].NoseTip)
                        player.setVariable('NoseBridgeShift', results[0].NoseBridgeShift)
                        player.setVariable('BrowHeight', results[0].BrowHeight)
                        player.setVariable('BrowWidth', results[0].BrowWidth)
                        player.setVariable('CheekboneHeight', results[0].CheekboneHeight)
                        player.setVariable('CheekboneWidth', results[0].CheeksWidth)
                        player.setVariable('CheeksWidth', results[0].CheeksWidth)
                        player.setVariable('Eyes', results[0].Eyes)
                        player.setVariable('Lips', results[0].Lips)
                        player.setVariable('JawWidth', results[0].JawWidth)
                        player.setVariable('JawHeight', results[0].JawHeight)
                        player.setVariable('ChinLength', results[0].ChinLength)
                        player.setVariable('ChinPosition', results[0].ChinPosition)
                        player.setVariable('ChinWidth', results[0].ChinWidth)
                        player.setVariable('ChinShape', results[0].ChinShape)
                        player.setVariable('NeckWidth', results[0].NeckWidth)

                        player.setVariable('level', results[0].level)
                        player.setVariable('exp', results[0].exp)
                        player.setVariable('money', results[0].money)
                        player.setVariable('bank', results[0].bank)
                        player.setVariable('lastpos', results[0].lastpos)
                        //player.setVariable('house', results[0].House,)
                        player.setVariable('fraction', results[0].fraction)
                        player.setVariable('family', results[0].family)
                        player.setVariable('dimension', results[0].dimension)
                        setInterval(() => {
                            if (player == null) return;
                            let nickname = player.getVariable('nickname')
                            let owner = player.getVariable('owner')

                            let hair = player.getVariable('hair')
                            let masks = player.getVariable('masks')
                            let torsos = player.getVariable('torsos')
                            let legs = player.getVariable('legs')
                            let bags = player.getVariable('bags')
                            let shoes = player.getVariable('shoes')
                            let accessories = player.getVariable('accessories')
                            let undershirts = player.getVariable('undershirts')
                            let armors = player.getVariable('armors')
                            let decals = player.getVariable('decals')
                            let tops = player.getVariable('tops')
                            let hats = player.getVariable('hats')
                            let glasses = player.getVariable('glasses')
                            let ears = player.getVariable('ears')
                            let watches = player.getVariable('watches')
                            let bracelets = player.getVariable('bracelets')
                            let sex = player.getVariable('sex')

                            let NoseWidth = player.getVariable('NoseWidth')
                            let NoseHeight = player.getVariable('NoseWidth')
                            let NoseLength = player.getVariable('NoseWidth')
                            let NoseBridge = player.getVariable('NoseWidth')
                            let NoseTip = player.getVariable('NoseWidth')
                            let NoseBridgeShift = player.getVariable('NoseWidth')
                            let BrowHeight = player.getVariable('NoseWidth')
                            let BrowWidth = player.getVariable('NoseWidth')
                            let CheekboneHeight = player.getVariable('NoseWidth')
                            let CheekboneWidth = player.getVariable('NoseWidth')
                            let CheeksWidth = player.getVariable('NoseWidth')
                            let Eyes = player.getVariable('NoseWidth')
                            let Lips = player.getVariable('NoseWidth')
                            let JawWidth = player.getVariable('NoseWidth')
                            let JawHeight = player.getVariable('NoseWidth')
                            let ChinLength = player.getVariable('NoseWidth')
                            let ChinPosition = player.getVariable('NoseWidth')
                            let ChinWidth = player.getVariable('NoseWidth')
                            let ChinShape = player.getVariable('NoseWidth')
                            let NeckWidth = player.getVariable('NoseWidth')

                            let level = player.getVariable('level')
                            let exp = player.getVariable('exp')
                            let maxexp = player.getVariable('maxexp')
                            let money = player.getVariable('money')
                            let bank = player.getVariable('bank')
                            let lastpos = player.getVariable('lastpos')
                            let fraction = player.getVariable('fraction')
                            let family = player.getVariable('family')
                            let dimension = player.getVariable('dimension')
                           
                            player.call('hudRender', [maxexp, exp, level, money, bank]);
                        }, 1000)
                    let nickname = player.getVariable('nickname')
                    player.name = nickname;  
                    player.call('SpawnPlayer')

                    mp.events.call('TimerLevel', player)
                })

})
 

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
708
319
161
30
JavaScript:
if (player == null) return;
Замени на
JavaScript:
if (!mp.players.exists(player)) return;
 

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
708
319
161
30
И конкретно 273 строчку или где сейчас вылетает ошибка. Скинь
 

dreamharakiri

Новый участник
25 Дек 2021
75
1
49
И конкретно 273 строчку или где сейчас вылетает ошибка. Скинь
Заменил везде, ругается на таймер
JavaScript:
setInterval(() => {
                            if (!mp.players.exists(player)) return;
                            let nickname = player.getVariable('nickname')
                            let owner = player.getVariable('owner')

                            let hair = player.getVariable('hair')
                            let masks = player.getVariable('masks')
                            let torsos = player.getVariable('torsos')
                            let legs = player.getVariable('legs')
                            let bags = player.getVariable('bags')
                            let shoes = player.getVariable('shoes')
                            let accessories = player.getVariable('accessories')
                            let undershirts = player.getVariable('undershirts')
                            let armors = player.getVariable('armors')
                            let decals = player.getVariable('decals')
                            let tops = player.getVariable('tops')
                            let hats = player.getVariable('hats')
                            let glasses = player.getVariable('glasses')
                            let ears = player.getVariable('ears')
                            let watches = player.getVariable('watches')
                            let bracelets = player.getVariable('bracelets')
                            let sex = player.getVariable('sex')

                            let NoseWidth = player.getVariable('NoseWidth')
                            let NoseHeight = player.getVariable('NoseWidth')
                            let NoseLength = player.getVariable('NoseWidth')
                            let NoseBridge = player.getVariable('NoseWidth')
                            let NoseTip = player.getVariable('NoseWidth')
                            let NoseBridgeShift = player.getVariable('NoseWidth')
                            let BrowHeight = player.getVariable('NoseWidth')
                            let BrowWidth = player.getVariable('NoseWidth')
                            let CheekboneHeight = player.getVariable('NoseWidth')
                            let CheekboneWidth = player.getVariable('NoseWidth')
                            let CheeksWidth = player.getVariable('NoseWidth')
                            let Eyes = player.getVariable('NoseWidth')
                            let Lips = player.getVariable('NoseWidth')
                            let JawWidth = player.getVariable('NoseWidth')
                            let JawHeight = player.getVariable('NoseWidth')
                            let ChinLength = player.getVariable('NoseWidth')
                            let ChinPosition = player.getVariable('NoseWidth')
                            let ChinWidth = player.getVariable('NoseWidth')
                            let ChinShape = player.getVariable('NoseWidth')
                            let NeckWidth = player.getVariable('NoseWidth')

                            let level = player.getVariable('level')
                            let exp = player.getVariable('exp')
                            let maxexp = player.getVariable('maxexp')
                            let money = player.getVariable('money')
                            let bank = player.getVariable('bank')
                            let lastpos = player.getVariable('lastpos')
                            let fraction = player.getVariable('fraction')
                            let family = player.getVariable('family')
                            let dimension = player.getVariable('dimension')
                            //console.log(exp);
                            //player.call('hudRender', [JSON.stringify( nickname, owner, hair, masks, torsos, legs, bags, shoes, accessories, undershirts, armors, decals, tops, hats, glasses, ears, watches, bracelets, sex, level, exp, money, bank, lastpos, fraction, family, dimension )] )
                            player.call('hudRender', [maxexp, exp, level, money, bank]);
                        }, 1000)
а именно на
JavaScript:
player.setVariable('nickname', firstPersonName)
но если убрать эту строчку, он будет жаловаться на следующую