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

Проблема Не отображаются иконка когда говоришь

aBobA228

Новый участник
23 Ноя 2021
58
1
13
не знаю в чем проблема вот код gamertag.js

JavaScript:
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();

mp.nametags.enabled = false;

var showGamertags = true;
var reupdateTagLabel = [];
var tagLabelPool = [];

var playerPos = void 0;
var playerTarget = void 0;
var playerAimAt = void 0;
var width = 0.025;
var height = 0.004;
var border = 0.001;

mp.keys.bind(global.Keys.VK_5, false, function () {
    // Включить / Выключить.

    if (!global.loggedin || global.chatActive || global.editing || global.menuCheck()) return;
    showGamertags = !showGamertags;
});

function calculateDistance(v1, v2) {
    var dx = v1.x - v2.x;
    var dy = v1.y - v2.y;
    var dz = v1.z - v2.z;

    return Math.sqrt(dx * dx + dy * dy + dz * dz);
}

mp.events.add('render', function (nametags) {

    if (!global.loggedin) return;

    // Pre draw
    playerPos = mp.players.local.position;
    playerAimAt = mp.game.player.getEntityIsFreeAimingAt();
    playerTarget = mp.players.local;

    // Get variables
    var isAdmin = global.localplayer.getVariable('IS_ADMIN');

    // Admin get target info
    if (isAdmin == true) {
        var player = playerTarget;
        if (player === undefined || player.handle === undefined || !player.handle) player = playerAimAt;
        if (player === undefined || player.handle === undefined || !player.handle) {} else {
            if (player.getType() === 4 && player != global.localplayer) {
                mp.game.graphics.drawText(player.name + ' (' + player.remoteId + ')', [0.46, 0.4], { font: 4, color: [255, 255, 255, 235], scale: [2, 0.35], outline: true });
            }
        }
    }

    // Player gamertags
    if (showGamertags) {

        nametags.forEach(function (nametag) {
            try {
                var _nametag = _slicedToArray(nametag, 4),
                    _player = _nametag[0],
                    x = _nametag[1],
                    y = _nametag[2],
                    distance = _nametag[3];

                    var split = _player.name.split("_");
                    var _playerName = split[0] + " " + split[1];

                if (calculateDistance(playerPos, _player.position) < 15.0) {
                    if (_player.getVariable('INVISIBLE') != true && _player.getVariable('HideNick') != true) {
                        var passportText = '';
                        if (global.passports[_player.name] !== undefined) passportText = ' | ' + global.passports[_player.name];
                        if (tagLabelPool[_player.remoteId] === undefined || reupdateTagLabel[_player.remoteId] === undefined || new Date().getTime() - reupdateTagLabel[_player.remoteId] > 500) {

                            reupdateTagLabel[_player.remoteId] = new Date().getTime();

                            var text = void 0;
                            if (_player.getVariable('IS_MASK') == true) {
                                if (isAdmin === true) text = '\u0418\u0433\u0440\u043E\u043A \u0432 \u043C\u0430\u0441\u043A\u0435: ' + _playerName + ' (' + _player.remoteId + passportText + ')';else text = 'ID: ' + _player.remoteId;
                            } else {
                                if (isAdmin === true || mp.storage.data.friends[_player.name] !== undefined || global.passports[_player.name] !== undefined) text = _playerName + ' (' + _player.remoteId + passportText + ')';else text = 'ID: ' + _player.remoteId;;
                            }
                            var localFraction = global.localplayer.getVariable('fraction');
                            var playerFraction = _player.getVariable('fraction');
                            if (localFraction != null && playerFraction != null && localFraction === playerFraction && localFraction != 0 && playerFraction != 0)
                                //text = _playerName + ' (' + _player.remoteId + passportText + ')';
                            text = `[${_player.getVariable('fractionRankName')}] ${_playerName} (${_player.getVariable('REMOTE_ID')}${passportText}) `;

                            var color = _player.getVariable('REDNAME') === true ? [230, 230, 250, 250] : [255, 255, 255, 255];
                            tagLabelPool[_player.remoteId] = { text, color };
                        }
                        if (_player.vehicle) y += 0.065;
                        var label = tagLabelPool[_player.remoteId];
                        if (label !== undefined) {
                            drawPlayerTag(_player, x, y, label.text, label.color);
                            drawPlayerTag(_player, x, y, '\n #' + _player.getVariable('PERSON_ID'), [200,200,200,200]);
                            drawPlayerVoiceIcon(_player, x, y);
                            if (_player.getVariable('IS_DYING'))
                            {
                                drawPlayerTag(_player, x, y - 0.06, "Гражданин в коме", [255, 0, 0, 255]);
                            }
                            
                            if (_player.getVariable('IS_ADMIN') === true)
                            {
                                drawPlayercrown(_player, x, y );
                            }
                        }
                    }
                }
            } catch (e) {}
        });
    }
});
function drawPlayerTag(player, x, y, displayname, color) {
    //var position = player.getBoneCoords(12844, 0.6, 0, 0); //player.position;
    //position.z += 1.5;
    //var frameTime = lastFrameTime;
    //const frameRate = 1.0 / (mp.game.invoke("0x15C40837039FFAF7") / );

    // draw user name
    mp.game.graphics.drawText(displayname, [x, y], { font: 4, color: color, scale: [0.35, 0.35], outline: true });

    // draw health & ammo bar
    if (playerTarget != undefined && player.handle == playerTarget.handle || playerAimAt != undefined && player.handle == playerAimAt.handle || global.spectating) {
        y += 0.04;
        var health = player.getHealth();
        health = health <= 100 ? health / 100 : (health - 100) / 100;

        var armour = player.getArmour() / 100;
        if (armour > 0) {

            mp.game.graphics.drawRect(x, y, width + border * 2, height + border * 2, 0, 0, 0, 200);
            mp.game.graphics.drawRect(x, y, width, height, 150, 150, 150, 255);
            mp.game.graphics.drawRect(x - width / 2 * (1 - health), y, width * health, height, 255, 255, 255, 200);

            y -= 0.007;

            mp.game.graphics.drawRect(x, y, width + border * 2, height + border * 2, 0, 0, 0, 200);
            mp.game.graphics.drawRect(x, y, width, height, 41, 66, 78, 255);
            mp.game.graphics.drawRect(x - width / 2 * (1 - armour), y, width * armour, height, 48, 108, 135, 200);
        } else {

            mp.game.graphics.drawRect(x, y, width + border * 2, height + border * 2, 0, 0, 0, 200);
            mp.game.graphics.drawRect(x, y, width, height, 150, 150, 150, 255);
            mp.game.graphics.drawRect(x - width / 2 * (1 - health), y, width * health, height, 255, 255, 255, 200);
        }
    }
}

function drawPlayerVoiceIcon(player, x, y) {
    if (player.isVoiceActive) drawVoiceSprite("mpleaderboard", 'leaderboard_audio_3', [0.7, 0.7], 0, [255, 255, 255, 255], x, y - 0.02 * 0.7);else if (player.getVariable('voice.muted') == true) drawVoiceSprite("mpleaderboard", 'leaderboard_audio_mute', [0.7, 0.7], 0, [255, 0, 0, 255], x, y - 0.02 * 0.7);
}


function drawVoiceSprite(dist, name, scale, heading, colour, x, y, layer) {
    var resolution = mp.game.graphics.getScreenActiveResolution(0, 0),
        textureResolution = mp.game.graphics.getTextureResolution(dist, name),
        textureScale = [scale[0] * textureResolution.x / resolution.x, scale[1] * textureResolution.y / resolution.y];

    if (mp.game.graphics.hasStreamedTextureDictLoaded(dist) === 1) {
        if (typeof layer === 'number') mp.game.graphics.set2dLayer(layer);
        mp.game.graphics.drawSprite(dist, name, x, y, textureScale[0], textureScale[1], heading, colour[0], colour[1], colour[2], colour[3]);
    } else mp.game.graphics.requestStreamedTextureDict(dist, true);
}
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
JavaScript:
        var player = playerTarget;
        if (player === undefined || player.handle === undefined || !player.handle) player = playerAimAt;
        if (player === undefined || player.handle === undefined || !player.handle) {} else {

Стало страшно.Зачем дважды проверять на одно и то же? Убери второй if и оставь else.

JavaScript:
var split = _player.name.split("_");
Если вдруг в зону рендера попадёт персонаж, у которого никнейм еще не имеет "_" - получишь exception и сломанный ивент render (именно в этом файле).
Такое может случиться, например, если человек только зашел на сервер и у него в нике не то, что установил ты сервером, а тот стандартный ник из лаунчера мультиплеера.
 
Последнее редактирование:

aBobA228

Новый участник
23 Ноя 2021
58
1
13
Так проблема не в стандартном нике, а в иконке голоса когда говоришь она не отображается, никаких ошибок вроде нет а она не отображается
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Я показал самые очевиднейшие моменты в коде. Честно говоря лень разбирать js код, поэтому не помогу, но вот эти два момента лучше поправить.
 

aBobA228

Новый участник
23 Ноя 2021
58
1
13
я поправил уже но проблема осталось проблемой не отображения иконок голоса
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Попробуй заменить
JavaScript:
textureScale = [scale[0] * textureResolution.x / resolution.x, scale[1] * textureResolution.y / resolution.y];
На
JavaScript:
textureScale = [(scale[0] * textureResolution.x) / resolution.x, (scale[1] * textureResolution.y) / resolution.y];

И еще я не уверен в
JavaScript:
drawVoiceSprite("mpleaderboard", 'leaderboard_audio_3', [0.7, 0.7], 0, [255, 255, 255, 255], x, y - 0.02 * 0.7);
На
JavaScript:
drawVoiceSprite("mpleaderboard", "leaderboard_audio_3", [0.7, 0.7], 0, [255, 255, 255, 255], x, y - 0.02 * 0.7);

Не уверен, просто предположения. На JSе не работаю в основном, это первое, что я бы попробовал поменять по поводу этой ошибки.
 
Последнее редактирование:

JJIGolem

Старожил
High developer
BackEnd developer
19 Окт 2020
239
288
142
JavaScript:
// найди данную строку в gamertag.js
if (mp.game.graphics.hasStreamedTextureDictLoaded(dist) === 1) {
// и замени на эту
if (mp.game.graphics.hasStreamedTextureDictLoaded(dist)) {
 
Реакции: Gastello

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Первая строчка будет работать ровно так же.


Return value​

  • Boolean
=== 1 будет означать то же самое, что без него, потому что ты проверяешь на === true. 1 === true.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28

JJIGolem

Старожил
High developer
BackEnd developer
19 Окт 2020
239
288
142
Вы, конечно, извините, но строгое сравнение TRUE и 1 выдаст = False
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28

JJIGolem

Старожил
High developer
BackEnd developer
19 Окт 2020
239
288
142
Данная функция возвращает либо true, либо false. А как мы уже убедились true !== 1
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Спасибо за информацию, я это видел и сам, и даже скинул выше.
На RedAge работает до сих пор === 1. Ни в коем случае не говорю, что значит, что так нужно, просто констатирую факт, что это может работать даже так и является проверенным вариантом, а потому проблема не в этом участке кода.
 

JJIGolem

Старожил
High developer
BackEnd developer
19 Окт 2020
239
288
142
у меня не работало пока не убрал === 1
Я ведь тоже не спроста написал
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
у меня не работало пока не убрал === 1
Я ведь тоже не спроста написал
Хз, я на жабе не пишу, поэтому не могу ничего сказать, кроме того, что у нас, в своё время, работало.


Мои догадки по этому коду я уже скидывал выше, думаю, что проблема там, а конкретно недоверие к кавычкам ' в месте, где должны быть ", по логике вещей.
 

JJIGolem

Старожил
High developer
BackEnd developer
19 Окт 2020
239
288
142
"в свое время" - тогда оно работало, согласен. Но в один момент после обновлений рейджа, перестало.
 

UchihaMadara

Старожил
FrontEnd developer
27 Окт 2020
572
212
121
Хайкодер вертится как может. "Проверено, Абсолютно рабочий, Это я и сам знаю". Оно всегда возвращало Boolean
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
А ты не перестаешь черкаши с трусов снюхивать? Всегда проходил мимо твоих комментариев, но тут даже немного улыбнуло, как ты пытаешься задеть меня при первой удобной возможности, продолжай держать в курсе и следить, диванный критик.
Не понимаю твоего негатива от слова совсем. Я написал, что так работало на RA и работает, скорее всего, ровно до сих пор, при том подчёркивая, что я в душе не ебу должно ли так работать и правильно ли это, факт работоспособности остаётся для меня фактом. Wiki заполняет не разраб и там может быть написано что угодно, поэтому верить этому "как последней инстанции" - дело твоё. Продолжай пукать, успехов, потешно наблюдать за размером твоего эго, ибо я со своим "хайкодер" для помощи на этом форуме, ты - для получения оценки и признаний, ибо не вижу, чтобы ты хоть кому-то безвозмездно помог. Ты - яркий пример русского токсичного комьюнити, не удавись.
 
Последнее редактирование: