[英]Javascript Function like Objects i.e. “$” can be used as a function e.g. $() as well as an object $
[英]Is it possible to assign function hooks to game objects, e.g. run function on init, death, etc?
我还没有找到任何方法来为任何东西分配钩子,如果可以的话,它会非常有用。 另外,如何检查游戏对象是否仍然存在? (即没有死于年龄,也没有被敌人摧毁。)
如果你的意思是通过API - 还不是。 但是您可以更改当前状态并将其与记忆的对象先前状态进行比较。 例如,如果Memory
一些蠕变名称仍然存在,但它在Game.creeps
消失了,那么就发生了一些事情。
for(var i in Game.creeps) {
var creep = Game.creeps[i];
creep.memory.lastSeenAt = {x: creep.pos.x, y: creep.pos.y};
}
for(var i in Memory.creeps) {
if(!Game.creeps[i]) {
console.log("Oops! Something happened with a creep "+creep.name+" at "+
Memory.creeps[i].lastSeenAt.x+","+Memory.creeps[i].lastSeenAt.y);
}
}
这是我的用例:
过了一会儿,当使用Room.find(Game.MY_CREEPS)
,我也会得到死警卫。 必须一直过滤它们真的很痛苦,全局Memory
继续列出它们。 有没有办法从全局Memory
对象中删除死亡的小兵?
[编辑]发现这一点,希望它会有所帮助。
for(var i in Memory.creeps) {
if(!Game.creeps[i]) {
delete Memory.creeps[i];
}
}
我在每个滴答开始时运行它
我分叉了脚本示例存储库并制作了我自己的事件处理代码 - https://github.com/pineapplemachine/script-samples/tree/master/hooks
使用该脚本,您可以为事件分配初始化,更新和销毁方法,而不必更加迟钝地处理事务。
我不这么认为。 API似乎专注于为主游戏循环开发代码,比如在一段while(true)
内编写代码while(true)
。 但是,例如,你可以让你的小兵在他们死之前做点什么。
我已经创建了一个防护模块(就像你在教程中创建的收割机模块一样)。 下面的代码应该有效:
module.exports = function (creep) {
if(creep.hits<=100) { Game.spawns.Spawn1.createCreep([Game.ATTACK, Game.ATTACK, Game.TOUGH, Game.TOUGH, Game.MOVE], "guard2", {role:"guard"}); }
var targets = creep.room.find(Game.HOSTILE_CREEPS);
if(targets.length) {
creep.moveTo(targets[0]);
creep.attack(targets[0]);
} else{
creep.moveTo(Game.spawns.Spawn1);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.