社畜とは程遠い労働環境
by mamedocoti
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


【2010年3月20日修正】MapleStoryで使えるボット/BOT/マクロを作ろう!

これが、私どこかのが使っていましたマクロです^^;

e0016536_10483894.jpg


2週間ちょっとで81の置きプリ・HS人形を作りました。
もうぼくはゲームをしていないので、晒しスレへ載せたり、NEXON社へ通報したり
何でも行っていただいて構いません。


ここから先は、こいつを作る過程を説明しています。
はんだ付けの経験とプログラムの経験がないとしんどいです。
はんだ付けの経験もプログラムの経験もない!という方は、
このページを閉じた方が時間が無駄にならずに済みます。
やる気があれば、是非勉強してみて下さい。


このマクロでは、マイコンを使っています。

Q.マイコンってなに?
 A.マイクロ・コントローラの略です。

詳しく知りたい方は、google先生で調べてください。
単純に言ってみれば、小さいコンピュータです。 (まんまじゃん^^;)

1個100~400円程度、単3電池の半分という大きさなくせに
非常に処理が高速、更にメモリや入出力ポートを備え
型によればアナログ信号をデジタル信号へ変換、その逆もできます。
外部液晶ディスプレイへ出力して文字を表示させたり
Xportという電子部品へ繋げばインターネットとも繋げるという代物。
ほんとに色々な使い方ができます。

例えば
温度センサやガス検知器なんかを繋いで火山の火口にぶちこんで
定期的に温度・湿度・ガス濃度をメールで指定のアドレスへ送信させる
なんてこともできるそうです。
奥が深いですよ!



これより後、今回作る道具のことを「ツール」と呼ぶことにします。
まず、ツールを作るに当たり、用意するものがいくつかあります。


導入にあたり
・秋月 PICプログラマ ver3.5
・秋月 PICプログラマ ver4.0バージョンアップキット

上の二つで約¥7,000します。マクロ組むためだけに出費するには結構しんどいです。

私は元々電子工作に興味があり、水温安定装置を作りたかったので購入しました。
誰でもできない、というのはこのマイコンが障害になっているからです^^;

他、すぐ手に入るもの
・キーボード ¥1,000円くらい (USB接続がよい。壊して構わない・キーが効かないでのいい)
・基盤 ¥100程度
・トランジスタ 東芝2SC1815あたりが有名 20個で¥100ほど 
・カーボン皮膜抵抗 10kΩ 100個パックで¥200~300ほど
・電池 5V出力できればおk 9V電池に抵抗をいくつか噛ませてもおk
その他、導線、はんだ、はんだごてなどの道具を用意しましょう。


まず、設計です。マクロを実行するには、
「キーボードに、指定した順番・指定した時間通りに自動でキーを押させること」

詳しく説明すると
1.マイコンにプログラムしておく
2.プログラム通りにマイコンがスイッチ(ここではトランジスタ)をON/OFFし、
 キーボードがコンピュータへ入力をする
3.メイプルストーリーがキーボードの入力によりキャラを動かす





早速作っていきましょう。
まず、キーボードの基盤がほしいです。ガワは要りません^^;
今回はコイツに犠牲になってもらいましょう。

e0016536_1047957.jpg


e0016536_10471615.jpg


安物のキーボード、1つ1,000円です。キータッチは悪いです。
私は高くてもうるさくてもメカニカル式がいい。

e0016536_10492175.jpg


早速ドライバーくんの出番です

e0016536_10503742.jpg


ネジを全部外しちゃいます。別に中身が飛び出たりはしません。

e0016536_10512189.jpg


開けるとこんな感じになってます。

e0016536_10514135.jpg


これこれ、この基盤がほしいんです。

e0016536_10521956.jpg


基盤以外は、もったいないけどイラナイんです。 プラスチックゴミとして出しましょう。

e0016536_1053032.jpg


さて、中にこんなシートが2枚・3枚入ってるんですが、こいつを入っていた元の通りに
置いてみると、表面の線と点がキーボードのキー配列と同じ位置に走り、位置しているんです。

e0016536_10544996.jpg


上の画像を見れば、キーボードの構造はお解かりでしょう。

この基盤、今私が2箇所繋いでいますが、こんな端子が26箇所あるんです。
このうち2箇所を導通させると、とあるキーが押されたと認識します。
2箇所のうち、どことどこを導通させるかでキーの種類が変わります。
このうち、+側が16、-側が8箇所ありますので
計算上16×8=128キーも使えることになります。

ためしに上の通りに導通させると

e0016536_111197.jpg


「q」が押されました^^; あんまり使わないですね。
順番にどのキーがどの端子で入力されるかを判断するんですが
上のほうに載せた画像のうち、線と点が走るシートを観察すると
どのキーがどのあたりに集中しているかが分かります。

今回の基盤では、運がいいことに普段ゲーム内で良く使う
「Insert」「Delete」「Home」「End」「PageUp」「PageDown」の6つ
これが全て近い位置にありました。
どことどこを繋ぐとどのキーが押されるか、
適当に基盤の端子に左から番号を割り振ってリストにします。

「Delete」キー周辺や←→キーは必須です。
意地でも見つけて下さい。
あとはスキルをかけるのに使うキーを4つ5つも使えれば十分です。



ここではプリースト・HS人形を育てることを目標とします。
ペットの装備を使ってHP・MPは自動回復、アイテムも自動収集を前提にすると
必要になるキーは

・→
・←
・テレポ
・ヒール
・スキルマクロ(HS・ブレスなど)
・ペットのえさ
(必要に応じて・ジャンプ)

これです。これに使っているキーを捜します。
メイプル側のキー設定を変更してもおkです^^;

e0016536_1173548.jpg


今回は、基板の左から番号を振って、1番~24番まで番号をつけました
キーボードの入力を調べる細かい作業ですが、
注意しなければならないことがあります。

Home、End、→←キーは、行の中途半端な位置じゃないと判別しにくいこと
 (1文字目の後にカーソルがあると、行の先頭にカーソルが移動した場合、
  Homeキーなのか「←」キーなのかが分かりません)
またAltキーがほしい場合も、F10キーと紛らわしい動作をしてくれます。
こいつはメイポ内でジャンプをAltに設定したりして試すのが手っ取り早いでしょうか。


普段使うキーが、どこの端子を導通させれば入力されるのか分かったら、次に進みます
ここでは、マクロ用にゲーム側の設定を変えてもおkです。


ぼくの場合、マイナス側が2 3 5 番、プラス側が21 22 23 24番、を利用します。
配線イメージは

e0016536_11405192.jpg


・・・分からないですね。回路図だとこんな感じ

e0016536_23154319.jpg



イコンの出力端子がOFFのままだと、ベースに電流が流れず、キーボードのキーはOFFです。
マイコンの出力をONにすると、微弱電流がベースに流れ、
キーボードのキーが押下されたのと同じ状態になります。


配線してはんだ付けします

e0016536_11583472.jpg


e0016536_11581550.jpg


トランジスタのベース手前に10kΩの抵抗を噛ませましょう。
さもないと、マイコンか、キーボード基板の内部が焼き切れます、たぶん。

あとはマイコンのどの端子をどのキーに割り当てるかを決め
マイコンのプログラム、電源の接続だけです。
電源には単3電池4本を使いましたが、5Vならば何でもいいです。
単三4本なら、ちゃんと抵抗や定電圧回路を組んで5Vにしましょう。
さもないと、マイコンが焼き切れますw


私のキー配置は
ポート番号
0番:→ 移動
1番:← 移動
2番:Space ヒール
3番:Alt テレポ
4番:Home ペットのエサ
5番:スキルマクロ(ブレス、ガード)

として使っていました。
全部で16個のキーを使えるのですが、配線が面倒でやりませんでした。
ジャンプは使わず、これだけで、レベ1から18日で81の置きプリを作れました。



そしてプログラムですが、ここでは省略します。
コンパイラの配布場所から書き込みの方法まで、
PICマイコン入門書に全部書いてありますので、そちらで勉強してください。

一番下に私が提灯で使っていたソースコードを置いておきます。
変なところで区切りまくってますが、手直しが面倒で直していないのです。




キャラの動きを解析して、どのようにプログラムするか考えます。
提灯であれば、私は左右に集めて狩る「集め狩り」をしていました。

私の動きを解析すると
テレポ&ヒールで集め、左右の端でヒール5秒、また集める、ヒール5秒、の繰り返しです。

では集める工程です。
何回もテストをし、提灯のマップではヒール+テレポを15回すれば
端から端まで辿りつけることが分かりました。

ここで必要なキー入力を考え、次に具体的にプログラムへおとしこみます
・左右どちらかのキーは15回繰り返すまで押しっぱなし
・端ではブレスやホーリーシンボルなどのスキルマクロをかけ、MP回復薬を使う
 【A】・ヒールをする
 ・テレポを2回してヒールした場所から逃げ、端の方へ提灯をおびき寄せる
 ・端まで来たら(大体ヒール&2回テレポを1回とすると15回分)、ヒール5秒押しで狩り尽くす。
  押しっぱなしの左右キーを入れ替える。
 ・もしもこの時に1往復していたら、スキルマクロをかける。
 ・【A】に戻る。以下は無限ループ。

ぼくはMP回復薬を使ってなかったので、端まで辿り着いたらMP回復薬を使っていました。
MP切れでスキルが使えなくなると全てが台無しになりますので
MP回復薬には、ちょっと回復しすぎなくらいの余裕をもちましょう。
提灯にもなれば、メル・アイテムの自動回収さえあれば
ヒール狩りはマクロでも十二分に黒字が出ますよ。大丈夫。

まず、キーを押す長さは0.1秒単位で区切りました。この長さが、プログラムをするにも
処理工程を考えるのも一番手間がかからなかったのです。

スキルマクロの入力 0.3秒
【定形処理】
 ←押しっぱなし
  ヒール0.5秒
  待機0.3秒 ※敵と接触すると、接触の瞬間はテレポができないためちょっと長め。
            この間も←か→は押しっぱなしなので、歩きます

【繰り返し処理A】
 テレポ0.2秒
 ヒール0.5秒
 待機0.7秒 ※歩く。0.7秒より短ければ、敵との接触により次のテレポができないことがある。
 テレポ0.2秒

  【繰り返し処理A】を15回やったか?
    やってない→15回やるまで【繰り返し処理Aを】やってこい!
    やった→ヒールを5秒して狩り尽くす、その後押しっぱなしの左右キーを入れ替える。
      行って戻ってと一往復していたら、スキルマクロをかける。
      片道だけの場合、スキルマクロをかけ終わった場合、
      また【繰り返し処理A】を15回行う。以下無限ループ。


一通りプログラムができたら、実際に動かして微調整です。
プログラムを調整してはマイコンを抜き、再度書き込んで、調整して…の繰り返しです。
慣れてしまえば、設計から調整まで、60分もあればきれいにできあがります。


こうしてマクロができたら、あとは運用するだけです。
PCの前で本を読みながら、モニタが見れる台所でご飯を作りながら
掃除をしながら、洗濯物を干しながら…etc
もうPCにかじりついてゲームする必要がなくなると、大分気が楽になります。

また、運営への信号は、きちんとキーボードから入力されたものですので区別がつきません。
マクロ探知機を使わないと、BOTかどうか判別するのは不可能です。

作成に結構手間のかかることですが、しかし無敵です。
はしごにつかまってる置きプリに定期的にHSさせたり、卵の安置で投げ続けたり
マガティアでサイティを狩り続けてレベルを上げてみたり…etc
特にプリと投げでやりたい放題をしました。


この記事が、あなた様のマクロ開発へ参考になればと思います。







以下提灯用ソースコード。分かりづらく読みづらいのはご勘弁を。

listp=16f628a
#include <p16f628a.inc>
;【HTMLタグと認識されてしまうので、「<」と「>」の部分は全角です、要訂正!半角にします】

__CONFIG_CP_OFF&_WDT_OFF&_BODEN_ON &_PWRTE_ON&_INTOSC_OSC_NOCLKOUT&_MCLRE_OFF&_LVP_OFF

w_temp EQU 0x70
status_temp EQU 0x71
CNT1 EQU 0x20
CNT2 EQU 0x21
atkk EQU 0x22
CNT3 EQU 0x23
muki EQU 0x24
kaisu EQU 0x25

;**********************
ORG 0x000
goto main

ORG 0x004
movwf w_temp
movf STATUS,w
movwf status_temp
;ISR Codes

movf status_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w
retfie

main
bcf STATUS,RP0
bcf STATUS,RP1

clrf INTCON
clrf PORTA
movlw 0x07
movwf CMCON

bsf STATUS,RP0

bsf PCON,OSCF
movlw 0x01
movwf TRISA
clrf TRISB

bcf STATUS,RP0

clrf PORTA
clrf PORTB

;***********************main loop open***************
bsf muki,0

main_loop1
bsf PORTB,4
movlw 0x0f
movwf kaisu
call delay_100
call delay_100
bcf PORTB,4
goto main_loop2

main_loop2
clrf PORTB
btfss muki,0
goto hidari
goto migi

migi
call delay_100
call delay_100
call delay_100
call delay_100
bsf PORTB,4
call delay_100
call delay_100
call delay_100
bcf PORTB,4

bcf muki,0
bcf PORTB,1
bsf PORTB,0
goto break1

hidari
bsf muki,0
bcf PORTB,0
bsf PORTB,1
goto break1

break1 ;真ん中へ補修をかけるルーチン
goto break

break
;bsf PORTB,4薬フェイズ
;call ;delay_100
;call ;delay_100
;bcf ;PORTB,4 ;薬フェイス終了


;攻撃フェイズ
btfss PORTA,0
goto atk612
goto atk918

atk918
movlw 0x0f
movwf atkk
goto atkloop

atk612
movlw 0x0f
movwf atkk

atkloop
decfsz atkk,f
goto atkmov
goto kaisucheck

atkmov
bsf PORTB,3
call delay_100
call delay_100
bsf PORTB,2
bcf PORTB,3
call delay_100
call delay_100
call delay_100
call delay_100
call delay_100
bcf PORTB,2
call delay_100
call delay_100
call delay_100
call delay_100
call delay_100
call delay_100
call delay_100
call delay_100
goto atkloop ;攻撃フェイズ終了

goto break

kaisucheck
bsf PORTB,2;decfsz_kaisu_f
call delay_2;goto_break
call delay_2
call delay_2
call delay_100
bcf PORTB,2
decfsz kaisu,f
goto main_loop2
goto main_loop1

;DelayRoutine

delay_2;2sec.
movlw 0x11
movwf CNT3
DLP3
call delay_100
decfsz CNT3,f
goto DLP3
return

delay_100;100mS
movlw 0x64
movwf CNT1
DLP1;1mS
movlw 0xf0
movwf CNT2
DLP2
nop
clrwdt
decfsz CNT2,f
goto DLP2
decfsz CNT1,f
goto DLP1
return

END


以上。






マクロが狩りをしています。

e0016536_11102475.jpg


e0016536_11244062.jpg


これは横殴りで奪った提灯MAPです。
提灯で横殴りなんてされたら、人間はコンピュータに勝てません。


考えてみてください。
どんな暴言を吐こうが、どんなに狩りつつある先の敵を先に倒してしまおうが
延々と同じMAPを往復して、延々と一定のペースで攻撃しつづけるんです。

マクロ探知機を使っても、私はPCの目の前にいるわけですからすぐに対応されてしまいます。
なかなか根負けしない人もいますが、いずれもっとマシな効率が出る狩場へ移行するでしょう。




私なりのルールですが、グループの招待をされる、もしくは勧誘のメッセージを受け取ったら
そこでは横殴りをやめて他に移ることにしていました。

世間一般に、横殴りは畜生扱いされてますが、
いきなり目の前の敵を狩りとっているのに、あえて一緒に狩りをしないかと言ってくれるなんて
そういう暖かい人から経験値を奪っていくほど私は冷酷ではないつもりです
・・・既に十二分に迷惑ですけどね^^;;;(笑)

数年前、せいぜい130lvがtップレベルの頃は狩場独占が酷かった。
当時100lvくらいだった私が横殴りを始めたのも独占に腹が立ったからだし
今でも、どのゲームしてても「高レベルUZEEEEEEEE!」な気持ちは変わりません。

香ばしいログが流れ続ける場所や、高レベルが援軍に来た場所には延々と居座ります^^;
援軍が来たって、どうせハンティングはマイコンがやってくれるので全く問題ありません
効率が悪いくらいですが、それは相手の援軍も同じこと。
援軍の高レベル(笑)達が、ザコばかりのMAPで赤字垂れ流し、
メテオやジェネ撃ちまくってるのを見るのは楽しいです。


こっちはヒールとテレポしかしないから、拾う薬とドレインで十分賄えるMP消費量ですからね^^;
いいぞいいぞ、もっと撃て!w ガハハハ。
[PR]
by mamedocoti | 2008-04-25 00:26 | MapleStory・マクロの作り方
<< キャブ取付 プロフィール >>