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

Прошу помочь!

Soaw

Начинающий специалист
14 Мар 2025
195
61
40
Решил написать систему быстрых анимаций.
Проблема в том, что оно не открываеться (делал на сборке редаги)


Добавил в src_cef и прописал
Код:
index.svelte

<script>
    import { translateText } from 'lang'
    import { storeAnimBind } from 'store/animation'
    import { executeClient } from 'api/rage'
    
    export let viewData = false;
    
    const playAnimation = (animId) => {
        if (animId && animId !== 0) {
            executeClient("client.animation.play", animId);
            closeMenu();
        }
    };

    const stopAnimation = () => {
        executeClient("client.animation.stop");
        closeMenu();
    };
    
    const closeMenu = () => {
        executeClient("escape");
    };
</script>

{#if viewData}
<div style="position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,0.8); z-index: 9999; display: flex; align-items: center; justify-content: center;">
    <div style="background: #333; color: white; padding: 30px; border-radius: 10px; text-align: center;">
        <h2>Быстрые анимации</h2>
        
        <div style="margin: 20px 0;">
            {#each $storeAnimBind as animId, index}
                {@const keyNumber = index === 9 ? '0' : (index + 1).toString()}
                <div style="margin: 10px; padding: 10px; background: #555; border-radius: 5px; cursor: pointer;" on:click={() => playAnimation(animId)}>
                    <strong>{keyNumber}:</strong>
                    {#if animId && animId !== 0}
                        Анимация {animId}
                    {:else}
                        Пусто
                    {/if}
                </div>
            {/each}
        </div>
        
        <div style="margin: 20px 0;">
            <button style="padding: 10px 20px; background: #e74c3c; color: white; border: none; border-radius: 5px; cursor: pointer;" on:click={stopAnimation}>
                ОСТАНОВИТЬ АНИМАЦИЮ
            </button>
        </div>
        
        <div style="margin: 20px 0;">
            <button style="padding: 10px 20px; background: #666; color: white; border: none; border-radius: 5px; cursor: pointer;" on:click={closeMenu}>
                ЗАКРЫТЬ (ESC)
            </button>
        </div>
    </div>
</div>
{/if}

Теперь добавил в src_client/player/bind.js


Код:
{//64
        title: translateText("Быстрые анимации"),
        keyCode: global.Keys.VK_X,
        keyCodeDefault: global.Keys.VK_X,
        function: "o_xAnimations",
        type: binderType.onFoot,
        group: binderGroup.user,
        menu: menuType.all//+
    }

Потом добавил файл и подключил его xAnimations.js

Код:
let xAnimationsToggled = false;

global.binderFunctions.o_xAnimations = (isCef = false) => {
    console.log('o_xAnimations вызвана, isCef:', isCef);
    
    if (!isCef) return;
    
    if (!global.loggedin ||
        global.chatActive ||
        global.editing ||
        global.cuffed ||
        global.menuCheck() ||
        global.isDeath === true ||
        global.isDemorgan ||
        global.localplayer.isInAnyVehicle(false)) {
        console.log('Условия не выполнены для открытия X-меню');
        return;
    }
    
    console.log('Открываем X-меню анимаций');
    mp.gui.emmit(`window.router.setView('XAnimations', true);`);
    global.menuOpen(true);
    xAnimationsToggled = true;
};

global.binderFunctions.c_xAnimations = async () => {
    if (!xAnimationsToggled) return;
    
    mp.gui.emmit(`window.router.setHud();`);
    xAnimationsToggled = false;
    
    await global.wait(50);
    global.menuClose();
};

global.binderFunctions.fastAnim_1 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(0);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_2 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(1);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_3 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(2);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_4 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(3);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_5 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(4);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_6 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(5);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_7 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(6);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_8 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(7);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_9 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(8);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_0 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
    
    if (!global.antiFlood("fastAnim", 1000)) return;
    
    mp.gui.emmit(`window.animationStore.playFastAnimation(9);`);
    global.lastCheck = new Date().getTime();
};

gm.events.add('client.xAnimations.open', () => {
    global.binderFunctions.o_xAnimations(true);
});

gm.events.add('client.xAnimations.open', () => {
    global.binderFunctions.o_xAnimations(true);
    gm.discord("Открывает быстрые анимации");
});

gm.events.add('client.xAnimations.close', () => {
    global.binderFunctions.c_xAnimations();
});

gm.events.add('client.xAnimations.playFastAnimation', (slotIndex) => {
    try {
        if (!global.loggedin ||
            global.chatActive ||
            global.editing ||
            global.cuffed ||
            global.isDeath === true ||
            global.isDemorgan ||
            global.startedMining === true ||
            global.startedMafiaGame ||
            global.localplayer.isInAnyVehicle(false)) return;
        
        mp.gui.emmit(`window.animationStore.playAnimationFromSlot(${slotIndex});`);
    } catch (e) {
        mp.events.callRemote("client_trycatch", "player/xAnimations", "client.xAnimations.playFastAnimation", e.toString());
    }
});

Если сможете помочь буду благодарен!
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,612
256
100
Для того чтобы система быстрых анимаций работала корректно, убедитесь, что все пути к файлам и функциям указаны правильно. Проверьте консоль на наличие ошибок, которые могут указывать на проблемы с загрузкой или выполнением скриптов. Также убедитесь, что все необходимые зависимости подключены правильно и все файлы скриптов доступны из основного файла.

Если проблема остается, попробуйте по шагам пройтись по коду и проверить каждую часть на наличие ошибок. Возможно, где-то есть опечатки или неправильно указаны пути к файлам / функциям.

Если после всех проверок проблема не устранится, попробуйте задать более конкретный вопрос или привести более подробную информацию по поводу ошибки, чтобы я мог помочь вам более точно.
 

m0v1l3

Начинающий специалист
29 Сен 2020
544
70
95
Решил написать систему быстрых анимаций.
Проблема в том, что оно не открываеться (делал на сборке редаги)


Добавил в src_cef и прописал
Код:
index.svelte

<script>
    import { translateText } from 'lang'
    import { storeAnimBind } from 'store/animation'
    import { executeClient } from 'api/rage'
  
    export let viewData = false;
  
    const playAnimation = (animId) => {
        if (animId && animId !== 0) {
            executeClient("client.animation.play", animId);
            closeMenu();
        }
    };

    const stopAnimation = () => {
        executeClient("client.animation.stop");
        closeMenu();
    };
  
    const closeMenu = () => {
        executeClient("escape");
    };
</script>

{#if viewData}
<div style="position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,0.8); z-index: 9999; display: flex; align-items: center; justify-content: center;">
    <div style="background: #333; color: white; padding: 30px; border-radius: 10px; text-align: center;">
        <h2>Быстрые анимации</h2>
      
        <div style="margin: 20px 0;">
            {#each $storeAnimBind as animId, index}
                {@const keyNumber = index === 9 ? '0' : (index + 1).toString()}
                <div style="margin: 10px; padding: 10px; background: #555; border-radius: 5px; cursor: pointer;" on:click={() => playAnimation(animId)}>
                    <strong>{keyNumber}:</strong>
                    {#if animId && animId !== 0}
                        Анимация {animId}
                    {:else}
                        Пусто
                    {/if}
                </div>
            {/each}
        </div>
      
        <div style="margin: 20px 0;">
            <button style="padding: 10px 20px; background: #e74c3c; color: white; border: none; border-radius: 5px; cursor: pointer;" on:click={stopAnimation}>
                ОСТАНОВИТЬ АНИМАЦИЮ
            </button>
        </div>
      
        <div style="margin: 20px 0;">
            <button style="padding: 10px 20px; background: #666; color: white; border: none; border-radius: 5px; cursor: pointer;" on:click={closeMenu}>
                ЗАКРЫТЬ (ESC)
            </button>
        </div>
    </div>
</div>
{/if}

Теперь добавил в src_client/player/bind.js


Код:
{//64
        title: translateText("Быстрые анимации"),
        keyCode: global.Keys.VK_X,
        keyCodeDefault: global.Keys.VK_X,
        function: "o_xAnimations",
        type: binderType.onFoot,
        group: binderGroup.user,
        menu: menuType.all//+
    }

Потом добавил файл и подключил его xAnimations.js

Код:
let xAnimationsToggled = false;

global.binderFunctions.o_xAnimations = (isCef = false) => {
    console.log('o_xAnimations вызвана, isCef:', isCef);
  
    if (!isCef) return;
  
    if (!global.loggedin ||
        global.chatActive ||
        global.editing ||
        global.cuffed ||
        global.menuCheck() ||
        global.isDeath === true ||
        global.isDemorgan ||
        global.localplayer.isInAnyVehicle(false)) {
        console.log('Условия не выполнены для открытия X-меню');
        return;
    }
  
    console.log('Открываем X-меню анимаций');
    mp.gui.emmit(`window.router.setView('XAnimations', true);`);
    global.menuOpen(true);
    xAnimationsToggled = true;
};

global.binderFunctions.c_xAnimations = async () => {
    if (!xAnimationsToggled) return;
  
    mp.gui.emmit(`window.router.setHud();`);
    xAnimationsToggled = false;
  
    await global.wait(50);
    global.menuClose();
};

global.binderFunctions.fastAnim_1 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(0);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_2 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(1);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_3 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(2);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_4 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(3);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_5 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(4);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_6 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(5);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_7 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(6);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_8 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(7);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_9 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(8);`);
    global.lastCheck = new Date().getTime();
};

global.binderFunctions.fastAnim_0 = () => {
    if (!global.loggedin ||
        global.chatActive ||
        global.menuCheck() ||
        global.isDemorgan == true ||
        global.attachedtotrunk ||
        global.localplayer.isInAnyVehicle(false)) return;
  
    if (!global.antiFlood("fastAnim", 1000)) return;
  
    mp.gui.emmit(`window.animationStore.playFastAnimation(9);`);
    global.lastCheck = new Date().getTime();
};

gm.events.add('client.xAnimations.open', () => {
    global.binderFunctions.o_xAnimations(true);
});

gm.events.add('client.xAnimations.open', () => {
    global.binderFunctions.o_xAnimations(true);
    gm.discord("Открывает быстрые анимации");
});

gm.events.add('client.xAnimations.close', () => {
    global.binderFunctions.c_xAnimations();
});

gm.events.add('client.xAnimations.playFastAnimation', (slotIndex) => {
    try {
        if (!global.loggedin ||
            global.chatActive ||
            global.editing ||
            global.cuffed ||
            global.isDeath === true ||
            global.isDemorgan ||
            global.startedMining === true ||
            global.startedMafiaGame ||
            global.localplayer.isInAnyVehicle(false)) return;
      
        mp.gui.emmit(`window.animationStore.playAnimationFromSlot(${slotIndex});`);
    } catch (e) {
        mp.events.callRemote("client_trycatch", "player/xAnimations", "client.xAnimations.playFastAnimation", e.toString());
    }
});

Если сможете помочь буду благодарен!
не может быть такого, что ты чисто случайно забыл сделать билд cef части или client-части, а может и всё вместе?
 
Последнее редактирование:

Slash

Активный участник
BackEnd developer
10 Янв 2023
237
33
83
если чё на клиенте console.log не работает(ну или в cef дебагер кидает, я не проверял), юзай mp.console.logInfo

убедись что менюшка импортирована с нужным (XAnimations) названием в App.svelte. Ну и включай цеф дебаггер смотри что по ошибкам
 
Реакции: Touch

Soaw

Начинающий специалист
14 Мар 2025
195
61
40
если чё на клиенте console.log не работает(ну или в cef дебагер кидает, я не проверял), юзай mp.console.logInfo

убедись что менюшка импортирована с нужным (XAnimations) названием в App.svelte. Ну и включай цеф дебаггер смотри что по ошибкам
Спасибо, сейчас попробую
 

Soaw

Начинающий специалист
14 Мар 2025
195
61
40
По пхивает что делала аи так что думай сам.
ии не работает с файлами это первое

вряд ли аи шарит как работать с биндером редаги и за проверки редаги. Так что если агент только
Второе что агента ии у меня к сожелению нету. И с ним думаю тоже бы не получилось
 

Slash

Активный участник
BackEnd developer
10 Янв 2023
237
33
83
Второе что агента ии у меня к сожелению нету. И с ним думаю тоже бы не получилось
смог бы, если был бы норм агент по типу курсора про. Вопрос в том что ты сам должен понимать как это без аи написать, иначе твой потолок развития будет равен потолку развития ИИ, а зачем и кому это надо?
 
Реакции: Touch

m0v1l3

Начинающий специалист
29 Сен 2020
544
70
95
Не знаю в чём может быть проблема, но в игре всё работает
1760819489936.png