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
2,414
238
100
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

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,931
1,675
211
28
Что за тупая привычка делать методы с помощью 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
289
45
95
так ещё и юзает устаревший Var, который сейчас считается плохим тоном
Юзайте let и жизнь будет проще...
 
Реакции: XFlawless

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,931
1,675
211
28
Судя по этому сообщению я понимаю, что ты просто пытаешься "рандомно" решить проблему.
Создавая метод - по стандарту он будет виден и доступен только внутри того же файла.
Если ты хочешь иметь доступ к методу извне этого файла, в котором он написан, то используй 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

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,931
1,675
211
28
А где 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

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,931
1,675
211
28
JavaScript:
export function TogglePlayerCameraSide()





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

XFlawless

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

 

Similar threads