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

Проблема ReferenceError: TogglePlayerCameraSide функция не определена

XFlawless

Активный участник
Автор темы
31 Мар 2022
26
2
38
JavaScript:
var camera_hand_player = null;
var camera_hand_player_active;
var last_camer_change = new Date().getTime();
global.at_fire_pushed = false;

global.TogglePlayerCameraSide = function () {
    //if (!loggedin || chatActive /* || new Date().getTime() - lastCheck < 250*/) return;
    if (!camera_hand_player_active) {
        //if (GlobalCheck() == true && !at_small_timer_event && !at_famwar && !at_duel_location) return;
        if (mp.game.invoke('0x8D4D46230B2C353A') == 4 || mp.game.invoke('0x2E397FD2ECD37C87', mp.players.local) == 0) return;
        if (new Date().getTime() - last_camer_change < 200) return;
        if (at_fire_pushed == true || playerincapture == true || localplayer.isAimingFromCover()) return;
        last_camer_change = new Date().getTime();
        if (camera_hand_player != null) {
            camera_hand_player.setActive(false);
            camera_hand_player.destroy();
            camera_hand_player = null;
        }
        camera_hand_player = mp.cameras.new("DEFAULT_SCRIPTED_CAMERA", new mp.Vector3(0, 0, 0), new mp.Vector3(0.0, 0, 0.0), 0);
        camera_hand_player.setActive(true);
        mp.game.cam.renderScriptCams(true, true, 100, false, false);
        if (camera_hand_player == null) return DisableWeaponCamera();

        camera_hand_player_active = 1;
        SetCameraLook();
    } else {
        if (camera_hand_player_active != 1) return;
        //camera_hand_player.setAffectsAiming(true);
        DisableWeaponCamera();
    }
};

var gameplay_cam = null;
function SetCameraLook() {
    if (gameplay_cam) {
        gameplay_cam.destroy();
        gameplay_cam = undefined;
    }
    gameplay_cam = mp.cameras.new("gameplay");
    var cameraCoords = gameplay_cam.getCoord();

    var cameraRotation = gameplay_cam.getRot(2);
    var gameplayCamFov = mp.game.invoke('0x65019750A0324133');

    var coordsRelativeToPlayer = mp.players.local.getOffsetFromGivenWorldCoords(cameraCoords.x, cameraCoords.y, cameraCoords.z);

    //let xOffset = (coordsRelativeToPlayer.x * 2) * 0.75;

    var leftShoulderCoords = mp.players.local.getOffsetFromInWorldCoords(coordsRelativeToPlayer.x, coordsRelativeToPlayer.y, coordsRelativeToPlayer.z);

    camera_hand_player.setCoord(leftShoulderCoords.x, leftShoulderCoords.y, leftShoulderCoords.z);
    camera_hand_player.setRot(cameraRotation.x, cameraRotation.y, cameraRotation.z, 0);
    camera_hand_player.attachTo(mp.players.local.handle, coordsRelativeToPlayer.x - 0.75, coordsRelativeToPlayer.y, coordsRelativeToPlayer.z, true);
    camera_hand_player.setFov(int32ToFloat(gameplayCamFov));

    mp.game.ui.showHudComponentThisFrame(14);
}

global.int32ToFloat = function (number) {

    var buffer = new ArrayBuffer(16);
    var view = new DataView(buffer);

    view.setInt32(1, number);
    return view.getFloat32(1);
};

function DisableWeaponCamera() {
    mp.game.cam.renderScriptCams(false, true, 100, false, false);
    setTimeout(function () {
        if (camera_hand_player != null && camera_hand_player_active != 1) {
            camera_hand_player.setActive(false);
            camera_hand_player.destroy();
            camera_hand_player = null;
        }
    }, 200);
    camera_hand_player_active = 0;
    if (gameplay_cam) {
        gameplay_cam.destroy();
        gameplay_cam = undefined;
    }
}

gm.events.add("render", () => {
    if (!global.loggedin) return;
    mp.game.controls.disableControlAction(0, 48, true); // map Z control
    mp.game.controls.disableControlAction(2, 45, true); // reload control
    //localplayer.setCanSwitchWeapon(false);

    //     weapon switch controls       //
    mp.game.controls.disableControlAction(1, 243, true); // CCPanelDisable
    if (!camera_hand_player_active) return;
    if (mp.game.invoke('0x8D4D46230B2C353A') == 4 || mp.game.invoke('0x2E397FD2ECD37C87', mp.players.local) == 0) {
        TogglePlayerCameraSide();
        return;
    }
    SetCameraLook();
});
1711572920558.png


У меня есть много похожих вызовов функций но это не работает.
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
861
1,158
5
The code you shared defines a function named TogglePlayerCameraSide that toggles the player's camera side between left and right shoulder. It also contains functions to handle camera setup and disable weapon camera.
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Что за тупая привычка делать методы с помощью global?
Это же редага (видно по gm.events), там есть вебпак, так почему бы не использовать export и import? А тут так вообще - метод внутри одного и того же файла, тогда вообще global не нужен, если он нигде из других файлов не вызывается.
Ну и если ты создаёшь global.Method, то и вызывать его нужно через global.Method(), разве нет?
 
  • Like
Реакции: XFlawless

XFlawless

Активный участник
Автор темы
31 Мар 2022
26
2
38
Что за тупая привычка делать методы с помощью global?
Это же редага (видно по gm.events), там есть вебпак, так почему бы не использовать export и import? А тут так вообще - метод внутри одного и того же файла, тогда вообще global не нужен, если он нигде из других файлов не вызывается.
Ну и если ты создаёшь global.Method, то и вызывать его нужно через global.Method(), разве нет?
JavaScript:
mp.keys.bind(mp.storage.data.bind_controls['leftcam'], false, TogglePlayerCameraSide);
Я пробовал как global, так и normal (function), но он выдает ту же ошибку
 

Wair

Специалист
26 Ноя 2020
153
27
95
Что за тупая привычка делать методы с помощью global?
Это же редага (видно по gm.events), там есть вебпак, так почему бы не использовать export и import? А тут так вообще - метод внутри одного и того же файла, тогда вообще global не нужен, если он нигде из других файлов не вызывается.
Ну и если ты создаёшь global.Method, то и вызывать его нужно через global.Method(), разве нет?
так ещё и юзает устаревший Var, который сейчас считается плохим тоном ;)
Юзайте let и жизнь будет проще...
 
  • Like
Реакции: XFlawless

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
JavaScript:
mp.keys.bind(mp.storage.data.bind_controls['leftcam'], false, TogglePlayerCameraSide);
Я пробовал как global, так и normal (function), но он выдает ту же ошибку
Судя по этому сообщению я понимаю, что ты просто пытаешься "рандомно" решить проблему.
Создавая метод - по стандарту он будет виден и доступен только внутри того же файла.
Если ты хочешь иметь доступ к методу извне этого файла, в котором он написан, то используй export и import.
 
  • Like
Реакции: XFlawless

XFlawless

Активный участник
Автор темы
31 Мар 2022
26
2
38
Все тот же

render.js
JavaScript:
import { TogglePlayerCameraSide, SetCameraLook, camera_hand_player_active } from './lefthandpeek.js';
gm.events.add("render", () => {
    if (!global.loggedin) return;
    //else if (!global.showhud) return;

    if (markerToPlayer)
        markerToPlayer.destroy(),
        markerToPlayer = null;

    if (global.entity && (!global.entity.doesExist() || global.entity['INVISIBLE'] || mp.game.gameplay.getDistanceBetweenCoords(global.entity.position.x, global.entity.position.y, global.entity.position.z, localplayer.position.x, localplayer.position.y, localplayer.position.z, true) > 6.0)) {
        //global.entity = null;

        GetLooking ();
        return;
    }

    if (!camera_hand_player_active) return;
    mp.console.logInfo('render: ' +  camera_hand_player_active);
    if (mp.game.invoke('0x8D4D46230B2C353A') == 4 || mp.game.invoke('0x2E397FD2ECD37C87', mp.players.local) == 0) {
        TogglePlayerCameraSide();
        mp.console.logInfo('render if');
        return;
    }
    SetCameraLook();

lefthandpeek.js
JavaScript:
let camera_hand_player = null;
let camera_hand_player_active;
let last_camer_change = new Date().getTime();
global.at_fire_pushed = false;
let playerincapture = false;

function TogglePlayerCameraSide() {
    if (!loggedin || chatActive /* || new Date().getTime() - lastCheck < 250*/) return;
    mp.console.logInfo("TogglePlayerCameraSide: called");
    mp.console.logInfo("TogglePlayerCameraSide: camera_hand_player_active: " + camera_hand_player_active);
    if (!camera_hand_player_active) {
        //if (GlobalCheck() == true && !at_small_timer_event && !at_famwar && !at_duel_location) return;
        if (mp.game.invoke('0x8D4D46230B2C353A') == 4 || mp.game.invoke('0x2E397FD2ECD37C87', mp.players.local) == 0) return;
        if (new Date().getTime() - last_camer_change < 200) return;
        if (at_fire_pushed == true || playerincapture == true || localplayer.isAimingFromCover()) return;
        last_camer_change = new Date().getTime();
        if (camera_hand_player != null) {
            camera_hand_player.setActive(false);
            camera_hand_player.destroy();
            camera_hand_player = null;
        }
        camera_hand_player = mp.cameras.new("DEFAULT_SCRIPTED_CAMERA", new mp.Vector3(0, 0, 0), new mp.Vector3(0.0, 0, 0.0), 0);
        camera_hand_player.setActive(true);
        mp.game.cam.renderScriptCams(true, true, 100, false, false);
        if (camera_hand_player == null) return DisableWeaponCamera();

        camera_hand_player_active = 1;
        SetCameraLook();
       
    } else {
        if (camera_hand_player_active != 1) return;
        //camera_hand_player.setAffectsAiming(true);
        DisableWeaponCamera();
    }
};

let gameplay_cam = null;
function SetCameraLook() {
    //mp.console.logInfo("SetCameraLook: called");
    if (gameplay_cam) {
        gameplay_cam.destroy();
        gameplay_cam = undefined;
    }
    gameplay_cam = mp.cameras.new("gameplay");
    let cameraCoords = gameplay_cam.getCoord();

    let cameraRotation = gameplay_cam.getRot(2);
    let gameplayCamFov = mp.game.invoke('0x65019750A0324133');

    let coordsRelativeToPlayer = mp.players.local.getOffsetFromGivenWorldCoords(cameraCoords.x, cameraCoords.y, cameraCoords.z);

    //let xOffset = (coordsRelativeToPlayer.x * 2) * 0.75;

    let leftShoulderCoords = mp.players.local.getOffsetFromInWorldCoords(coordsRelativeToPlayer.x, coordsRelativeToPlayer.y, coordsRelativeToPlayer.z);

    camera_hand_player.setCoord(leftShoulderCoords.x, leftShoulderCoords.y, leftShoulderCoords.z);
    camera_hand_player.setRot(cameraRotation.x, cameraRotation.y, cameraRotation.z, 0);
    camera_hand_player.attachTo(mp.players.local.handle, coordsRelativeToPlayer.x - 0.75, coordsRelativeToPlayer.y, coordsRelativeToPlayer.z, true);
    camera_hand_player.setFov(int32ToFloat(gameplayCamFov));
    mp.game.ui.showHudComponentThisFrame(14);
}

global.int32ToFloat = function (number) {

    let buffer = new ArrayBuffer(16);
    let view = new DataView(buffer);

    view.setInt32(1, number);
    return view.getFloat32(1);
};

function DisableWeaponCamera() {
    mp.game.cam.renderScriptCams(false, true, 100, false, false);
    setTimeout(function () {
        if (camera_hand_player != null && camera_hand_player_active != 1) {
            camera_hand_player.setActive(false);
            camera_hand_player.destroy();
            camera_hand_player = null;
        }
    }, 200);
    camera_hand_player_active = 0;
    if (gameplay_cam) {
        gameplay_cam.destroy();
        gameplay_cam = undefined;
    }
}

module.exports = {
    TogglePlayerCameraSide,
    SetCameraLook,
    camera_hand_player_active,
  };
1711572920558-png.13365
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Все тот же

render.js
JavaScript:
import { TogglePlayerCameraSide, SetCameraLook, camera_hand_player_active } from './lefthandpeek.js';
gm.events.add("render", () => {
    if (!global.loggedin) return;
    //else if (!global.showhud) return;

    if (markerToPlayer)
        markerToPlayer.destroy(),
        markerToPlayer = null;

    if (global.entity && (!global.entity.doesExist() || global.entity['INVISIBLE'] || mp.game.gameplay.getDistanceBetweenCoords(global.entity.position.x, global.entity.position.y, global.entity.position.z, localplayer.position.x, localplayer.position.y, localplayer.position.z, true) > 6.0)) {
        //global.entity = null;

        GetLooking ();
        return;
    }

    if (!camera_hand_player_active) return;
    mp.console.logInfo('render: ' +  camera_hand_player_active);
    if (mp.game.invoke('0x8D4D46230B2C353A') == 4 || mp.game.invoke('0x2E397FD2ECD37C87', mp.players.local) == 0) {
        TogglePlayerCameraSide();
        mp.console.logInfo('render if');
        return;
    }
    SetCameraLook();

lefthandpeek.js
JavaScript:
let camera_hand_player = null;
let camera_hand_player_active;
let last_camer_change = new Date().getTime();
global.at_fire_pushed = false;
let playerincapture = false;

function TogglePlayerCameraSide() {
    if (!loggedin || chatActive /* || new Date().getTime() - lastCheck < 250*/) return;
    mp.console.logInfo("TogglePlayerCameraSide: called");
    mp.console.logInfo("TogglePlayerCameraSide: camera_hand_player_active: " + camera_hand_player_active);
    if (!camera_hand_player_active) {
        //if (GlobalCheck() == true && !at_small_timer_event && !at_famwar && !at_duel_location) return;
        if (mp.game.invoke('0x8D4D46230B2C353A') == 4 || mp.game.invoke('0x2E397FD2ECD37C87', mp.players.local) == 0) return;
        if (new Date().getTime() - last_camer_change < 200) return;
        if (at_fire_pushed == true || playerincapture == true || localplayer.isAimingFromCover()) return;
        last_camer_change = new Date().getTime();
        if (camera_hand_player != null) {
            camera_hand_player.setActive(false);
            camera_hand_player.destroy();
            camera_hand_player = null;
        }
        camera_hand_player = mp.cameras.new("DEFAULT_SCRIPTED_CAMERA", new mp.Vector3(0, 0, 0), new mp.Vector3(0.0, 0, 0.0), 0);
        camera_hand_player.setActive(true);
        mp.game.cam.renderScriptCams(true, true, 100, false, false);
        if (camera_hand_player == null) return DisableWeaponCamera();

        camera_hand_player_active = 1;
        SetCameraLook();
      
    } else {
        if (camera_hand_player_active != 1) return;
        //camera_hand_player.setAffectsAiming(true);
        DisableWeaponCamera();
    }
};

let gameplay_cam = null;
function SetCameraLook() {
    //mp.console.logInfo("SetCameraLook: called");
    if (gameplay_cam) {
        gameplay_cam.destroy();
        gameplay_cam = undefined;
    }
    gameplay_cam = mp.cameras.new("gameplay");
    let cameraCoords = gameplay_cam.getCoord();

    let cameraRotation = gameplay_cam.getRot(2);
    let gameplayCamFov = mp.game.invoke('0x65019750A0324133');

    let coordsRelativeToPlayer = mp.players.local.getOffsetFromGivenWorldCoords(cameraCoords.x, cameraCoords.y, cameraCoords.z);

    //let xOffset = (coordsRelativeToPlayer.x * 2) * 0.75;

    let leftShoulderCoords = mp.players.local.getOffsetFromInWorldCoords(coordsRelativeToPlayer.x, coordsRelativeToPlayer.y, coordsRelativeToPlayer.z);

    camera_hand_player.setCoord(leftShoulderCoords.x, leftShoulderCoords.y, leftShoulderCoords.z);
    camera_hand_player.setRot(cameraRotation.x, cameraRotation.y, cameraRotation.z, 0);
    camera_hand_player.attachTo(mp.players.local.handle, coordsRelativeToPlayer.x - 0.75, coordsRelativeToPlayer.y, coordsRelativeToPlayer.z, true);
    camera_hand_player.setFov(int32ToFloat(gameplayCamFov));
    mp.game.ui.showHudComponentThisFrame(14);
}

global.int32ToFloat = function (number) {

    let buffer = new ArrayBuffer(16);
    let view = new DataView(buffer);

    view.setInt32(1, number);
    return view.getFloat32(1);
};

function DisableWeaponCamera() {
    mp.game.cam.renderScriptCams(false, true, 100, false, false);
    setTimeout(function () {
        if (camera_hand_player != null && camera_hand_player_active != 1) {
            camera_hand_player.setActive(false);
            camera_hand_player.destroy();
            camera_hand_player = null;
        }
    }, 200);
    camera_hand_player_active = 0;
    if (gameplay_cam) {
        gameplay_cam.destroy();
        gameplay_cam = undefined;
    }
}

module.exports = {
    TogglePlayerCameraSide,
    SetCameraLook,
    camera_hand_player_active,
  };
1711572920558-png.13365
А где export у TogglePlayerCameraSide, SetCameraLook, camera_hand_player_active ?
 

XFlawless

Активный участник
Автор темы
31 Мар 2022
26
2
38
А где export у TogglePlayerCameraSide, SetCameraLook, camera_hand_player_active ?
lefthandpeek.js последняя строка кода
также код работает нормально function TogglePlayerCameraSide() когда вызывается, но когда он переходит в block «render», он выдает ошибку
 
Последнее редактирование:

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
lefthandpeek.js последняя строка кода
также код работает нормально function TogglePlayerCameraSide() когда вызывается, но когда он переходит в block «render», он выдает ошибку
JavaScript:
export function TogglePlayerCameraSide()

1711724065089.png

1711724080288.png

1711724088682.png


Не знаю в этом ли у тебя проблема, но у меня вот так работает всё, как нужно.
 
  • Like
Реакции: XFlawless

XFlawless

Активный участник
Автор темы
31 Мар 2022
26
2
38
render.js
lefthandpeek.js
1711730264076.png

1711730279794.png