• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в 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/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


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

Мануал FAQ [Script] список пользователей [RAGE:MP] Playerlist (С #) 1.0.0

nettkom

Специалист
Автор темы
14 Сен 2020
58
42
82
PalatableBrownGrouse-small.gif


Этот ресурс добавляет на ваш сервер список игроков, похожих на GTA Online.

Создаем папку в \client_packages\

называем её playerlis

путь должен получится \client_packages\playerlis\

создаем в папке фаил Scaleform.js

и вставляем туда код


Код:
exports = class Scaleform {
    // Constructor
    constructor(handle) {
        this.handle = handle;
    }

    // Properties
    get isLoaded() {
        return mp.game.graphics.hasScaleformMovieLoaded(this.handle);
    }

    // Functions
    callFunction(functionName, ...args) {
        mp.game.graphics.pushScaleformMovieFunction(this.handle, functionName);

        args.forEach(arg => {
            switch (typeof arg) {
                case "string": {
                    mp.game.graphics.pushScaleformMovieFunctionParameterString(arg);
                    break;
                }

                case "boolean": {
                    mp.game.graphics.pushScaleformMovieFunctionParameterBool(arg);
                    break;
                }

                case "number": {
                    if(Number(arg) === arg && arg % 1 !== 0) {
                        mp.game.graphics.pushScaleformMovieFunctionParameterFloat(arg);
                    } else {
                        mp.game.graphics.pushScaleformMovieFunctionParameterInt(arg);
                    }
                }
            }
        });

        mp.game.graphics.popScaleformMovieFunctionVoid();
    }

    render(x, y, width, height) {
        mp.game.graphics.drawScaleformMovie(this.handle, x, y, width, height, 255, 255, 255, 255, 0);
    }

    dispose() {
        mp.game.graphics.setScaleformMovieAsNoLongerNeeded(this.handle);
    }

    // Static functions
    static async request(scaleformName) {
        const inst = new Scaleform(mp.game.graphics.requestScaleformMovie(scaleformName));

        while (!inst.isLoaded) {
            await mp.game.waitAsync(0);
        }

        return inst;
    }
};

создаем в ' папку фаил index.js

вставляем туда вот этот код

Код:
exports = class Scaleform {
    // Constructor
    constructor(handle) {
        this.handle = handle;
    }

    // Properties
    get isLoaded() {
        return mp.game.graphics.hasScaleformMovieLoaded(this.handle);
    }

    // Functions
    callFunction(functionName, ...args) {
        mp.game.graphics.pushScaleformMovieFunction(this.handle, functionName);

        args.forEach(arg => {
            switch (typeof arg) {
                case "string": {
                    mp.game.graphics.pushScaleformMovieFunctionParameterString(arg);
                    break;
                }

                case "boolean": {
                    mp.game.graphics.pushScaleformMovieFunctionParameterBool(arg);
                    break;
                }

                case "number": {
                    if(Number(arg) === arg && arg % 1 !== 0) {
                        mp.game.graphics.pushScaleformMovieFunctionParameterFloat(arg);
                    } else {
                        mp.game.graphics.pushScaleformMovieFunctionParameterInt(arg);
                    }
                }
            }
        });

        mp.game.graphics.popScaleformMovieFunctionVoid();
    }

    render(x, y, width, height) {
        mp.game.graphics.drawScaleformMovie(this.handle, x, y, width, height, 255, 255, 255, 255, 0);
    }

    dispose() {
        mp.game.graphics.setScaleformMovieAsNoLongerNeeded(this.handle);
    }

    // Static functions
    static async request(scaleformName) {
        const inst = new Scaleform(mp.game.graphics.requestScaleformMovie(scaleformName));

        while (!inst.isLoaded) {
            await mp.game.waitAsync(0);
        }

        return inst;
    }
};

Установка

последний шаг

Поместите список игроков в каталог client_packages вашего сервера, затем добавьте
Код:
require ('playerlist');

в client_packages / index.js.

Управление
Z = Переключить видимость списка игроков.
PageUp = Перейти на следующую страницу.
PageDown = Перейти на предыдущую страницу.


Настройка



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



PlayerListColor = Эта общая переменная используется, чтобы указать, какой цвет фона у игрока будет в списке. Использует целое число (идентификатор цвета HUD), так что загляните в вики.тут



PlayerListTag = Эта общая переменная используется для присвоения игрокам тега экипажа / клана рядом с их именем в списке. Не рекомендуется устанавливать для этого значения более 5 символов, поскольку на шкале отображается до 5 символов.

Исходный код доступен на GitHub, если вы хотите скачивать: тут

Автор: rootcause
архив для скачивания тут (этот архив)

обновления на С# тут (этот архив)
 
Последнее редактирование:
  • Like
Реакции: Agressor и shaz3ro

shaz3ro

Участник портала
15 Сен 2020
10
0
20
Спасибо !, как заменит кнопку показа ?
 

filecore

Специалист
high coder
6 Окт 2020
227
87
82
Спасибо !, как заменит кнопку показа ?
в гите в index
Код:
mp.keys.bind(KEYCODE_Z, false, async () => {
    if (mp.players.local.isTypingInTextChat) {
        return;
    }

    playerListCurPage = DEFAULT_PAGE;

    if (playerListOpen) {
        if (cardScaleform) {
            cardScaleform.dispose();
            cardScaleform = null;
        }

        mp.gui.chat.show(true);
        mp.game.audio.playSoundFrontend(-1, CLOSE_SOUND_NAME, CARD_SOUNDSET_NAME, true);
    } else {
        mp.gui.chat.show(false);

        playerList = mp.players.toArray();
        playerList.sort((a, b) => a.remoteId - b.remoteId); // Not even sure if needed, just in case
        playerListMaxPage = Math.ceil(playerList.length / PLAYERS_PER_PAGE);

        // Load the scaleform
        cardScaleform = await Scaleform.request("mp_mm_card_freemode");

        // Update scaleform
        updateTitle();
        updateCard();

        // Play sound effect
        mp.game.audio.playSoundFrontend(-1, OPEN_SOUND_NAME, CARD_SOUNDSET_NAME, true);
    }

    playerListOpen = !playerListOpen;
});

ТС исправь ты два раза по факту один и тот же скрипт в тег code взял(=
 

nettkom

Специалист
Автор темы
14 Сен 2020
58
42
82

shaz3ro

Участник портала
15 Сен 2020
10
0
20
Код:
mp.keys.bind(KEYCODE_Z, false, async () => {
    if (mp.players.local.isTypingInTextChat) {
        return;
кнопка Z по умалчиванию можно поменять на свою . все коды Virtual-Key Codes

Написал вот так:
mp.keys.bind(KEYCODE_Tab, false, async () => {
if (mp.players.local.isTypingInTextChat) {
return;

Как написно вот тут: click
Потому что с этом не сроботало: VK_TAB