[JavaScript] 自動在 Habitica 中施放魔法累積經驗值,直到升級為止

[JavaScript] 自動在 Habitica 中施放魔法累積經驗值,直到升級為止

Habitica 也超過半年了,目前還是持續有在玩這個習慣養成遊戲,

雖然覺得遊戲性是不太足夠 (期待有像真的 RPG 那樣可以冒險),

不過現在已經習慣每天看一下,把可以做的習慣做一點做一點,

像是看一下書、把零錢用掉、寫網誌等等~

 

因為有在打怪的關係,每天 HP 都會下降,通常就是買回復藥水來回復,

但如果有足夠多的 MP 讓我施展火焰魔法,得到的經驗值又可以讓我升級的話,

我就會選擇一直發火焰魔法直到升級,HP 自然就補滿了~

只是這個動作很麻煩,得一直去點火焰魔法、接著點一個待辦事項/習慣,

增加了一些經驗值,再持續點魔法、點待辦事項這個流程,有點累人…

Screen Shot 2017-04-05 at 1.35.30 PM

 

工程師就是懶… 想看看有沒有好一點的做法,像是用程式自動完成呢?

查了一下,Habitica 本身是有 API 可以呼叫的 (Habitica V3 API Documentation),

只不過光看文件沒有範例,比較不容易懂,

最簡單的方式,是到 Chrome 的開發者工具 > Network 分頁,

接著點一下火焰魔法、再點待辦事項,看看究竟發出了什麼樣的 HTTP 請求:

Screen Shot 2017-04-05 at 12.58.51 PM  

 

從上面可以看到,發火焰魔法的話,會呼叫到 https://habitica.com/api/v3/user/class/cast/fireball,

後面要帶參數 targetId 代表特定的待辦事項,

同時還要在 HTTP request header 中帶上 x-api-key 和 x-api-user~

x-api-key 和 x-api-user 同樣在這個 HTTP request 的 header 裡就可以看到,

或者是可以在 Habitica > 設定 > API 頁面找到:

Screen Shot 2017-04-08 at 12.19.47 AM  

 

有了這個 fireball 的 API,我們就可以發火球了,

但程式還需要知道目前的 HP 和 MP,

如果 HP 滿了、或者是 MP 已經低於 10 無法再發火焰魔法的話,那就該收手了~

這些資訊可以從 https://habitica.com/export/userdata.json 這個 API 取得~

 

來看一下實際的程式吧,這個程式的流程是:

1. 取得目前的 HP 和 MP。

2. 如果 HP < 45 且 MP >= 10 的時候,就會發一次火焰魔法,否則就結束程式。

3. 點一下重新整理,好讓最新的 HP/MP/EXP 可以顯示出來。

4. 重覆 1~3

// Fill your api user and key
var api_key_headers = {
"x-api-user": "00000000-0000-0000-0000-000000000000",
"x-api-key":  "00000000-0000-0000-0000-000000000000"
};
// Fill target id
var target_id = "e242c138-7769-4410-8dc3-98da9ac26dac";
function queryUserData()
{
$.ajax({
url: "https://habitica.com/export/userdata.json",
})
.done(function(data)
{
if (data.stats.hp < 45 && data.stats.mp >= 10)
{
$.ajax({
url: "https://habitica.com/api/v3/user/class/cast/fireball?targetId=" + target_id + "&t=" + Date.now(),
method: "POST",
headers: api_key_headers
})
.done(function()
{
$("a[popover=Sync]").click();
});
queryUserData();
}
});
}
queryUserData();

 

要執行的時候,在 Chrome > 開發者工具 > Console 裡面,

把程式碼貼上去按 Enter,就可以看到 MP 逐漸減少、經驗值逐漸增加,

直到 MP 低於 10 或 HP 超過 45 為止~

之後就不用再傻傻的一直去點施發魔法到手抽筋啦~^^

 

PS: 如果要拿去用的話,記得把 api_key_headers 裡的值,和 target_id 都改成自己適用的值。

 

(本頁面已被瀏覽過 211 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料