问题标签 [screeps]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
133 浏览

javascript - 对所有可能的子属性的访问器进行原型设计

这是我开始goalCreep类中创建原型的代码:

现在假设我不想Creep.goal包含单个值,而是包含多个值,并让每个子属性Creep.goal都具有上述访问器。(所以我可以轻松地将多个游戏对象存储到cree的内存中)

这些属性是在运行时添加的,所以我知道会有多少,也不知道它们的名字,因此我不能简单地为我想要的每个属性复制粘贴一次这段代码。

为了定义对象的所有可能属性的访问器,我应该如何进行?

- - - 解决方案 - - -

所以有人建议我为此使用 a Proxy。这对我来说是一个全新的概念,我遇到了很多困难,但我得到了一些我想要的工作!

0 投票
1 回答
201 浏览

javascript - Game Screeps - 查找过滤器和静态类型语言 (Scala) - 如何正确外观?

我正在尝试将 JavaScript 教程代码移植到 Scala.js 并卡在过滤结构上 - 任何建议都将不胜感激。

原始代码:

Scala.js 中的代码:

问题是不是所有的结构类型都有.energy所以这不会编译,尽管过滤的那些有?

我试图定义一个特征 HasEnergy(类似于 JavaScript 接口)并像 FindFilter[Structure with HasEnergy] 一样使用它,它可以编译,但现在我在运行时遇到类型错误 -> TypeError: a.k is not a function

我的外墙看起来像这样:

0 投票
4 回答
1960 浏览

javascript - 如何让 Screeps 找到来源?

在 Screeps 中,我这段代码不起作用:

它是这样说的:

我一直在环顾四周,找不到任何其他方式来寻找资源。

此外,我注意到大多数其他人的代码都不起作用,甚至教程的代码在放入真实游戏时也不再起作用。

0 投票
1 回答
101 浏览

javascript - moveTo 是否考虑公共城墙可步行?

是否Creep.moveToRoom.findPath认为公共城墙适合步行?

0 投票
1 回答
459 浏览

screeps - 寻找最接近给定蠕变的蠕变

鉴于必须有一组特定的角色并且必须没有指定的合作伙伴,因此很难找到最接近小兵的小兵。

这是为了建立专门的矿工和专门的能源载体(它们必须找到最近的矿工或收割机并携带它们的能量)。

我试过(其中cree变量是运行脚本的cree):

但 findNearest() 似乎已被贬低。用 findClosestByPath() 和 findClosestByRange() 的变体替换它也不起作用。我能做的最好的就是通过这个获得一个cree的位置:

但由于需要转移能量,这是未经过滤且不够具体的。提前感谢您的帮助!

0 投票
2 回答
2110 浏览

screeps - 如何在相邻房间领取控制器?

使用带有一个或多个 CLAIM 身体部位的cree 来认领控制器时遇到问题。

我正在使用此功能获得房间中最近的控制器:

效果很好,我可以访问该对象并查看它的坐标是否正确。

然而,当我在每一个滴答声中运行它时(当小兵直接在它旁边时),控制器所有者仍然是“无”并且我没有看到任何事情发生,小兵不采取任何行动。

很确定上面对 claimController 的调用是不正确的,但不确定我缺少什么。

0 投票
1 回答
183 浏览

javascript - lookForAt 返回未定义

嗨,爬虫玩家,

当我尝试将 lookForAt 分配给变量时,它返回未定义。

即使在控制台中,如果我写

这将返回一个具有位于这些坐标中的不同结构的对象。相反,如果我使用将其分配给变量

它返回未定义。有什么建议么?

0 投票
1 回答
165 浏览

javascript - 修改子类实例中的变量

我最近对 ​​Screeps 上瘾了,我重构了一些代码来实现基于任务的实现。任务是诸如“步行到然后收获,直到你满负荷”之类的东西,并且基于编写为 ES6 样式类的单个基本任务模板。Creeps 可以通过加载相关任务文件并返回新任务实例的包装器 (tasks.js) 分配任务。

今天我遇到了一个奇怪的错误,让我觉得我没有完全理解 Javascript 的继承模型。下面是相关代码:

Task.js:(基础任务类)

task_harvest.js:(收获任务)

tasks.js:(通过函数调用生成新任务实例的包装器)

收割机.js:(收割机蠕变的行为模型)

当我分配一个从源中获取的cree 时,我从task_harvest.js 创建一个新任务,将其quiet属性设置为true,并将它和它的目标绑定到cree。一旦cree有一个任务,它就会被指示运行它,直到它变得无效(代码未包含在上面)。蠕变可以很好地执行任务,但它仍会将所有内容记录到控制台。

我认为在harvester.js 中,当我设置时taskHarvest.quiet = true;,从Task.js 导入的行为会this.quiet显示为true. 然而,似乎情况并非如此。在roleHarvester,运行console.log(creep.task.quiet)返回true,但在蠕变执行分配的任务时Task,运行给出。console.log(this.quiet)false

我可以将quiet作为可选参数添加到构造函数中,但这很复杂,我想知道为什么我正在做的事情不起作用。

0 投票
1 回答
282 浏览

screeps - 上传到 Screeps 的代码的许可证是什么?

Screeps 要求用户输入代码才能玩。然后将此代码的副本发送到 Screeps 服务器,以便他们可以提供游戏服务。

用户在什么条件下提供代码?仅仅是为了运行游戏吗?还是隐含的完全许可可以做任何事情?用户仍然是他提交的代码的唯一所有者吗?

Screeps 服务条款相当简洁,并没有具体说明此事。我们得到的最接近的是:

您承认并同意您对游戏中包含的任何功能或内容不感兴趣,无论是金钱上的还是其他方面的。

由于用户生成的内容仍然是内容,因此可以说通过玩 Screeps,您实际上丧失了您上传的所有内容的所有权。这种解释正确吗?

我知道他们需要一些权利来运行游戏。我也明白这个游戏鼓励开源你的代码。但大多数类似的服务都清楚地阐明了规则。Github TOS 关于用户生成内容的部分实际上比整个 Screeps 许可证还要长。我认为在这里要求澄清是公平的。

0 投票
1 回答
1345 浏览

javascript - Screeps - 按 1 范围内的来源过滤容器(容器挖掘)

实际上我想找到旁边没有资源的容器,这样我的卡车就可以更灵活地在基地周围传输能量,而不是拥有一个巨大的存储空间。(我的控制器很远)

这没有错误地完成,但我无法获得旁边没有源的容器 ID。

我相信我必须在过滤器中包含逻辑,最有可能遍历每个容器?

我还不够了解循环/迭代以使其正常工作。我尝试了很多东西,但现在我试图弄清楚这个谜题感到无助。