【问题标题】:Interact with Scripts from Console从控制台与脚本交互
【发布时间】:2015-01-20 08:51:29
【问题描述】:

有没有办法从控制台调用模块或函数?例如一个创建工人爬行的模块,从控制台调用 my_module.add_creep?

【问题讨论】:

    标签: screeps


    【解决方案1】:

    其他人已经提到了 require 和分配给游戏的使用,但您也可以通过分配给全局来创建新的顶级命令和对象。

    主循环:

    global.rebuildMemory = () => console.log('Memory rebuilt.');
    global.Commands = require('consoleCommands');
    

    然后从控制台:

    rebuildMemory();
    Commands.printRoomReport('W3N4');
    

    【讨论】:

      【解决方案2】:

      我今天才明白这一点。但是有一种很好的方法可以从控制台访问您的方法

      只需将您的方法导入游戏对象(在您的脚本中)

      Game.creepManager = require('CreepManager');
      

      您现在可以通过键入来使用控制台

      Game.creepManager.yourFunctionHere();
      

      【讨论】:

      • @Andrew 你应该在游戏循环中分配你想要从 Game 访问的东西(因为 Game 似乎会被新状态覆盖,所以你必须重新添加你的属性)跨度>
      【解决方案3】:

      对于给定的示例,使用require('my_module').add_creep(); require 函数返回分配给该模块中 module.exports 的任何内容。

      @cho: require 不必返回函数。它宁可返回一个函数,因为该模块包含一个函数。如果模块分配为follow module.export = {test: 'test'},follow sn -p require('that_module') 将返回{test: 'test'} 等...

      注意:不确定其他人是否有此问题,但有时控制台根本没有返回结果... 在这种情况下,请尝试重新加载页面。只需确保游戏是'在执行命令时不暂停...

      【讨论】:

        【解决方案4】:

        require 函数返回一个函数,因此您可以像这样在控制台中直接调用它:

        require('harvester')(Game.creeps.harvester1);
        

        【讨论】:

          【解决方案5】:

          我已经成功地从控制台调用了 lodash 模块,方法是像 require('lodash').pluck(characters, 'name') 这样调用它。不确定它是否适用于用户创建的模块。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-17
            • 1970-01-01
            • 2012-02-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-27
            • 2014-11-30
            相关资源
            最近更新 更多