2014-11-21 29 views
12

在玩screeps時,我無法弄清楚如何攻擊敵人。這是我的嘗試。我如何在斯克普斯攻擊敵人

我創造了我的攻擊蠕變:

Game.spawns.Spawn1.createCreep(['attack','move'],'Attacker1'); 

然後,當第一個敵人就在屏幕上我試圖運行這個命令,它會失敗。

Game.creeps.Attacker1.attack("Player 3"); 

什麼是對敵人正確的語法?

編輯: 添加訪問遊戲中的對象的文檔鏈接。 http://screeps.com/docs/Creep.php

「玩家3」是敵人的名字。我需要一些如何瞄準敵人並與他們作戰。

+6

如果你不知道遊戲不討厭的問題!這非常清楚!他想知道如何攻擊遊戲中的東西。我有同樣的問題,我花了很多時間通過文檔來挖掘它。我很困惑人們爲什麼認爲這是令人困惑,不清楚或其他問題。他提供了他嘗試並提出問題的示例代碼。我不確定他還能做些什麼來使這個更清楚。 – dlkulp 2014-11-21 07:13:10

+0

@dlkulp「我試着運行這個命令,它失敗了。」是一個相當蹩腳的錯誤描述,非常沒有幫助會是'幫手'...你不同意嗎? – 2017-07-18 10:29:54

+2

@PaulZahra不要!不是在預期行爲和示例代碼有明確描述時。我很快就能夠看到他在使用一個字符串時它應該是一個對象引用! – dlkulp 2017-07-18 19:01:19

回答

10

我不知道你爲什麼要投票太多,你已經把大量的信息放在這裏!看起來你已經接近了!如果您閱讀鏈接到您的文檔,您會看到它說attack(target)並且該目標是一個對象。目前您正在通過attack()一個字符串,"Player 3"。爲了使攻擊函數實際上將目標設爲某個東西,您需要給它一個對象。嘗試是這樣的:

Game.spawns.Spawn1.createCreep([Game.ATTACK, Game.MOVE],'Attacker1'); 
var attacker = Game.creeps.Attacker1; 
var enemies= attacker.room.find(Game.HOSTILE_CREEPS); 
attacker.moveTo(enemies[0]); 
attacker.attack(enemies[0]); 

此代碼:

  1. 創建一個名爲Attacker1蠕變和對象分配給一個名爲攻擊者
  2. 變種使用攻擊者的find()功能找到的所有敵人,並將它們分配到數組名爲敵人
  3. 移動你的攻擊者可以先敵陣列中(.attack()只能近距離)
  4. 攻擊敵人陣中的第一個敵人
+0

這工作。你怎麼知道使用HOSTILE_CREEPS?我沒有在文檔中看到。謝謝。在'find(type,[opts])'下找到[ – parkour86 2014-11-21 06:36:30

+0

[here](http://screeps.com/docs/Room.php))。花了一些搜索,並不確定爲什麼它在房間頁面上。 – dlkulp 2014-11-21 07:10:17