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

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

XFlawless

Активный участник
Автор темы
31 Мар 2022
28
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();
});


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

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
928
1,176
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(), разве нет?
 
Реакции: XFlawless

XFlawless

Активный участник
Автор темы
31 Мар 2022
28
2
38
JavaScript:
mp.keys.bind(mp.storage.data.bind_controls['leftcam'], false, TogglePlayerCameraSide);
Я пробовал как global, так и normal (function), но он выдает ту же ошибку
 

Wair

Специалист
26 Ноя 2020
155
27
95
так ещё и юзает устаревший Var, который сейчас считается плохим тоном
Юзайте let и жизнь будет проще...
 
Реакции: XFlawless

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Судя по этому сообщению я понимаю, что ты просто пытаешься "рандомно" решить проблему.
Создавая метод - по стандарту он будет виден и доступен только внутри того же файла.
Если ты хочешь иметь доступ к методу извне этого файла, в котором он написан, то используй export и import.
 
Реакции: XFlawless

XFlawless

Активный участник
Автор темы
31 Мар 2022
28
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,
  };
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
А где export у TogglePlayerCameraSide, SetCameraLook, camera_hand_player_active ?
 

XFlawless

Активный участник
Автор темы
31 Мар 2022
28
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
JavaScript:
export function TogglePlayerCameraSide()





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

XFlawless

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