當個創世神 (Minecraft) 傷害判定研究

31 7 月

廣告

來源:我的世界中文論壇

作者:殘憶

 

  暫態補血對於不死族有負面的傷害作用

  而暫態傷害對於不死族則是正面的補血作用

  因此通過透支暫態補血,可以一次性殺死一群僵屍豬人

  當然,這個肯定不是最重要的內容

  這麼多豬人,如果不用lootingIII[掠奪3]的劍感覺就是浪費

  但是畢竟劍還是有耐久的,用經驗換金子值不值得呢?

關於MC中的傷害判定:

  其實我們來研究一下MC的RPG元素

  MC裡面對於傷害的判斷其實是很鬆懈的

  只要是被傷害對象在指定時間內死亡,死亡都是算在造成傷害的人身上

  很經典的一個應用就是,把怪打下懸崖

  雖然摔落傷害不是我們造成的

  但是由於我們最後一擊和怪物摔死的時間差在傷害時效範圍內

  所以說怪物雖然是摔死的但是還是算在我們頭上

  因此我們這樣殺死怪物也可以得到經驗物品等

  可以說是出於程式設計的方便,一個攻擊並沒有帶上資訊

  因此也就是說,一個怪物被攻擊了,怪物的代碼只知道是被某個玩家攻擊了

  而不知道被什麼武器攻擊的

  武器有沒有sharpness?有沒有knockback?有沒有looting?

  這些代碼都是無從而知的”

  因此為了要判斷武器的屬性,MC的代碼做了一件很巧妙的事

  在傷害造成的時候檢查造成傷害玩家手裡的武器

  這個是很巧妙的辦法,對於劍等的攻擊來說,傷害造成的時候手裡肯定就是造成傷害所用的劍

  所以說檢查玩家手中的武器就可以知道所帶的特殊附魔效果了

  這樣做,每次攻擊代碼不需要帶上額外資料存入遊戲中”

  ”但是考慮一下遠端攻擊的情況

  如果說我射了一支箭,在箭擊中怪物之前把手中的武器換成劍,會怎麼樣呢?

  怪物收到傷害了,自然代碼就會用所謂巧妙的辦法檢查玩家手中的武器

  然後發現玩家手中的是劍,就按照劍的附魔等特殊效果進行處理

  這個時候就是應該利用這個代碼的漏洞

  如果你有一把lootingIII附魔的劍

  先用弓射一個怪物,在箭擊中怪物之前把手中的武器切換成劍

  擊中時,代碼就會判斷你手中的武器,就會認為傷害是被這把lootingIII的劍造成的

  因此物品掉落就會有lootingIII的效果

  儘管玩家根本沒有用劍攻擊怪物!”

  在這裡我們也做相同的事情

  利用可投擲的暫態補血藥水進行大範圍攻擊

  在藥水擊中他們之前,利用鍵盤的1-9將武器切換成lootingIII的劍

  擊中之後,傷害就會認為是被這把劍造成的

  因此所有30個豬人掉落都會有lootingIII的效果

  儘管我根本沒有使用劍,也不會消耗劍的耐久”

簡單來說就是:

  我先用弓射你一箭 然後在箭沒射到你的時候換成劍 這樣射到你身上的傷害就是劍的傷害·

 


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。