IT ゲーム マインクラフト マウスマクロ

【マイクラ】マウスマクロで自動植え付け

投稿日:2019年11月22日 更新日:

Logicoolゲーミングマウスのマクロで特定の操作を繰り返し実行するコードを以前にご紹介させていただきました。それを応用してマインクラフトで自動で畑に植え付けを行うマクロを作ってみたいと思います。

マインクラフトでの栽培について

マイクラではジャガイモやニンジンなど様々な作物を耕地ブロックに植えて、成長後に収穫することができます。収穫した作物はそのまま食べたり、調理したり、村人と交換したりできます。

用途によっては大量に必要となるため、数十から百以上のブロックにかけて作物を植えていくのですが、1ブロックずつ右クリックで植えていくのは大変です。

右クリックを押しっぱなしにして、耕地ブロックに視点を合わせながら移動すると連続で植えてくれるのですが、それでもまだ細かく移動を制御しなければならないので面倒ですし、指が疲れてしまいます。

そこで、今回は田植えの動作を自動で行うマウスマクロを作ってみたいと思います。

実行中の様子

4面の畑があり、ニンジンを 2面、ジャガイモを 2面に植えています。

1面ごとにマクロで植え付けを行っており、次の畑への移動やアイテムの切り替えは手動による操作です。

最後の 4面ではスタート時に視点方向がずれてしまったため、ターゲットがかなり際どくなっています。

サンプルの動作

サンプルの大体の動作は以下の図のようになります。

茶色の四角が耕地ブロック、赤や青の線がキャラクターの動きを示しています。1 マス先の耕地ブロックに作物を植えていくため、耕地ブロックの 1 ブロック前からキャラクターはスタートしています。

スタート地点で右クリックしたままの状態をキープし、手に持った作物を使い続ける状態にします。その状態で図の線のようにキャラクターを動かすことで作物を植えていき、最後に右クリックを解除しています。

上の図から以下の 4 つの動作が必要なことが分かります。

  1. マウスの右ボタンを押す(右クリック維持)
  2. 縦に移動する(①)
  3. 横に移動する(②)
  4. マウスの右ボタンを離す(右クリック解除)

今回のサンプルでは 1. → (2., 3.)の繰り返し → 4. の順番で処理を行うマクロを作成します。

サンプルコード

function OnEvent(event, arg)
	--OutputLogMessage("event = %s, arg = %s\n", event, arg);

	-- イベントが発生したボタン番号をチェックする
	if arg == 4 and event == "MOUSE_BUTTON_PRESSED" then

		-- 右ボタンを押した状態にする
		PressMouseButton( 3 )
		-- 横方向の繰り返しカウント
		nHorizontalCnt = 0	
		while nHorizontalCnt < 4 do

			-- 進む方向を決定する
			if nHorizontalCnt % 2 == 0 then
				-- 偶数回なら前進するために wキーをセットする
				strVerticalKey = "w"

			else
				-- 奇数回なら後退するために sキーをセットする
				strVerticalKey = "s"

			end

			-- 縦方向の繰り返しカウント
			PressKey( strVerticalKey )
			Sleep( 2100 )
			ReleaseKey( strVerticalKey )
			
			
			-- 横方向に移動する
			PressKey( "a" )
			Sleep( 230 )
			ReleaseKey( "a" )
			Sleep( 100 )

			nHorizontalCnt = nHorizontalCnt + 1

		end

		-- 右ボタンを離した状態にする
		ReleaseMouseButton( 3 )

	end

end

コード解説

マクロの起動に使いたいボタンが押されたかチェックする

対象行 : 4 ~ 5 行目

-- イベントが発生したボタン番号をチェックする
if arg == 4 and event == "MOUSE_BUTTON_PRESSED" then

マクロを起動したいマウスボタンでボタン押下イベントが発生したかをチェックしています。サンプルでは番号4 のマウスボタンを押した時にマクロの処理を行うようにしています。

右クリックを維持する

対象行 : 7 ~ 8 行目

-- 右ボタンを押した状態にする
PressMouseButton( 3 )

手に持ったアイテム(作物)を使い続けるように、マウスの右ボタンを押した状態にしています。

横方向の繰り返し処理

対象行 : 9 ~ 38 行目

-- 横方向の繰り返しカウント
nHorizontalCnt = 0
while nHorizontalCnt < 4 do

    ~
    <2.縦方向の移動(①)と3.横方向の移動(②)>

    nHorizontalCnt = nHorizontalCnt + 1

end

11行目の while と 38行目の end の間に記述されている処理が「2.縦方向の移動(①)」と「3.横方向の移動(②)」になり、nHorizontalCnt 変数の値が 4 より小さい間はこれらの処理を繰り返します。

今回のサンプルでは 4列に作物を植えていきます。nHorizontalCnt という変数を 0 で初期化し、1列植えるたびにカウントアップします。4列植え終わったタイミングで nHorizontalCnt が 4 となり、「nHorizontalCnt < 4」の条件を満たさなくなりますので、繰り返し処理を終了します。

進行方向に合わせて押すキーを設定する

対象行 : 13 ~ 22 行目

-- 進む方向を決定する
if nHorizontalCnt % 2 == 0 then
    -- 偶数回なら前進するために wキーをセットする
    strVerticalKey = "w"

else
    -- 奇数回なら後退するために sキーをセットする
    strVerticalKey = "s"

end

縦の移動については前進するパターンと後退するパターンがあり、前進するには wキー、後退するには sキーを押す必要があります。
次の移動でどのキーを押すかを strVerticalKey 変数にセットしています。

1回目と3回目の移動では前進する必要があります。nHorizontalCnt は 0 からカウントアップを始めていますので、nHorizontalCnt が偶数である 0 と 2 の時は前進を行います
一方で 2回目と4回目の処理、つまり nHorizontalCnt が奇数である 1 と 3 の時は後退が必要です

「nHorizontalCnt % 2」は nHorizontalCnt を 2 で割った余りを計算しており、nHorizontalCnt が偶数の場合は 0、奇数の場合は 1 となります。
そこで、「nHorizontalCnt % 2」が 0(偶数)の場合は wキー(前進)を、 1(奇数)の場合は sキー(後退)を strVerticalKey にセットしています

縦方向に移動する

対象行 : 24 ~ 27 行目

-- 縦方向の繰り返しカウント
PressKey( strVerticalKey )
Sleep( 2100 )
ReleaseKey( strVerticalKey )

移動方向に合わせて前の処理で strVerticalKey にセットしたキー(w or s) を押し、縦方向に移動しています。

w または sキーを押した後、Sleep関数で 2100ミリ秒待機した後でキーを離すことで、縦1列に作物を植えたタイミングで移動が止まるようにしています。待機時間は 1列のブロック数や PC環境によって変わると思いますので、行き過ぎたり移動が足りない場合は Sleep の時間を調整してください。

横方向に移動する

対象行 : 30 ~ 34 行目

-- 横方向に移動する
PressKey( "a" )
Sleep( 230 )
ReleaseKey( "a" )
Sleep( 100 )

縦方向に植え終わったタイミングで、左の列に移動するために aキーを押しています。右の列に移動するように処理したい場合は dキーを押すように変更してください。

また、行き過ぎたり移動が足りない場合は Sleep の時間を調整してください。

右クリックを解除する

対象行 : 40 ~ 41 行目

-- 右ボタンを離した状態にする
PressKey( "a" )
ReleaseMouseButton( 3 )

マウスの右ボタンの押下状態を最後に解除して、アイテム(作物)を使い続ける状態を解除しています。

最後に

自動で植え付けを行うマクロはいかがでしたでしょうか。キーやマウスボタンの繰り返し処理について、マイクラ以外でも何かの時に自動化の参考になりましたら幸いです。

また、1つのアイテムスロットに 64個までしかアイテムをセットできないため、64ブロック以上の畑に植え付けを行う場合は、マウススクロールなどでアイテムスロットを切り替える処理を入れると良さそうです。

その他のマクロ(スクリプト)関連ページはこちら

Logicoolゲーミングマウスのマクロ(スクリプト)関連ページ一覧

ディスプレイやキーボード・マウス・スマホ 汚れていませんか?

皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。

エレコム クリーナー ウェットティッシュ 液晶用

  • 拭き跡が残りにくい
  • 帯電防止効果で拭いた後にホコリがつきにくい
  • ディスプレイの表面加工を傷めないノンアルコールタイプ

液晶用と書いてありますが、キーボードやマウス、タブレット、スマホなどにも使えます。
大容量なので 1つ置いておくだけでも、気付いた時にすぐ掃除ができて便利です。

おすすめのゲーミングマウス

Logicool ロジクール ゲーミング マウス G402

  • 500IPSを超えるトラッキング速度
  • 8個のプログラム可能なボタン
  • ボタンによるDPIの素早い切り替え
  • 1msのレポートレート
  • 高速なクリック(連打)を実現

Logicool ロジクール ゲーミング マウス G502 HERO

  • 400IPSを超えるトラッキング速度
  • 11個のプログラム可能なボタン
  • 100~16,000の全DPIでゼロスムージング、ゼロフィルタリング、ゼロアクセラレーションを達成
  • 1msのレポートレート
  • マウスの重さを調整可能

Logicool G ゲーミングマウス ワイヤレス G604

  • 400IPSを超えるトラッキング速度
  • 15個のプログラム可能なボタン
  • 100~16,000の全DPIでゼロスムージング、ゼロフィルタリング、ゼロアクセラレーションを達成
  • 1msのレポートレート
  • ワイヤレス

Logicool ロジクール ゲーミング マウス G600t

  • MMO に最適な 20個のプログラム可能なボタン
  • 親指だけで 12個のボタンを瞬時に押せるサムパネル
  • 1msのレポートレート


スポンサーリンク

毎日の飲料は箱買いで年間数千円もお得に (Amazon)




おすすめ記事

1
Logicool(ロジクール)のゲーミングマウスではマクロを作って自動的な操作を実現することができます。 ボタン 1 つ押すだけで複雑な操作が自動で行えるようになり、定型的な操作を効率良く楽に行えるよ ...
2
バウヒュッテ(Bauhutte)のゲーミングチェア : RS-950RR の使用感などをレポートさせていただきたいと思います。一般的なオフィスチェアよりも断然座り心地が良く、私には合っていました。オス ...
3
キーボード・マウスでの操作に慣れているのに、PS4 や Xbox のコントローラで FPS/TPSゲームをプレイするとうまく操作できず、歯がゆい思いをされていないでしょうか。ゲームソフト側が対応してい ...
4
「なろう系」作品の中で、定期的に読み返したくなるオススメの作品をご紹介させていただきます。 ありがちな俺TUEEEチート系の作品はなく、これだけは読んでほしいという面白い作品を厳選しています。 「なろ ...

-IT, ゲーム, マインクラフト, マウスマクロ

Copyright© ArekoReport , 2023 All Rights Reserved.