0

所以我为电脑游戏 Counter Strike: Global Offensive 写了一个脚本,它改变了玩家在游戏中的十字准线。游戏引擎使用的语言称为 Vscript。Vscript 没有很好的文档记录,我唯一可以罚款的文档是一长串函数。但是在尝试了一个错误之后,我发现语法几乎与 JavaScript 相同,唯一真正的区别是语言中有特定的函数,例如 SetHealth 或 GetTeam,它们是特定于游戏的,而 JavaScript 中不存在。

class crosshair_generator {
    // Initialize
    crosshair_hidden = false;

    function hideCrosshair() {
        if (crosshair_hidden == true) {
            // Hide the crosshair 
            SendToConsole("crosshair 0");
            printl("crosshair hidden!");
            self.crosshair_hidden = false;

        } else if (crosshair_hidden == false) {
            // Show the crosshair
            SendToConsole("crosshair 1");
            printl("crosshair shown!")
            crosshair_hidden = true;

        }
    }

    function CrosshairAlpha(Add) {
        // cl_crosshairalpha
    }
} 

当我打开游戏并运行脚本时,在游戏控制台内它说

AN ERROR HAS OCCURED [the index 'crosshair_generator' does not exist]

CALLSTACK
*FUNCTION [main()] InputRunScript line [1]

LOCALS
[this] TABLE
 Entity script_crosshair encountered an error in RunScript()

如果我在 hideCrosshair() 函数中定义 crosshair_hidden 变量, crosshair_hidden = false; 那么每次我调用该函数时,它的值都会为 false。我需要在函数外部定义它,以便变量可以被其他函数访问CrosshairAlpha(),因此每次调用函数时变量值都不完全相同。

那么如何在 JavaScript 的类中定义一个变量,然后将该变量传递给一个函数呢?

4

1 回答 1

1

您可以在构造方法中初始化properties并稍后使用this

class crosshair_generator {
    // Initialize
    constructor(crosshair_hidden = false) {
        this.crosshair_hidden = crosshair_hidden;
    }

    hideCrosshair() {
        if (this.crosshair_hidden == true) {
            // Hide the crosshair 
            SendToConsole("crosshair 0");
            printl("crosshair hidden!");
            this.crosshair_hidden = false;

        } else if(this.crosshair_hidden == false) {
            // Show the crosshair
            SendToConsole("crosshair 1");
            printl("crosshair shown!")
            this.crosshair_hidden = true;

        }
    }

    CrosshairAlpha(Add) {
        // cl_crosshairalpha
    }
} 
于 2019-09-23T13:12:24.663 回答