<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>オンラインゲームのマクロ講座</title>
<link>https://ameblo.jp/makuboh/</link>
<atom:link href="https://rssblog.ameba.jp/makuboh/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>オンラインゲームのマクロを１から学びたい方向けの講座です。</description>
<language>ja</language>
<item>
<title>近況報告</title>
<description>
<![CDATA[ 　アクティブな敵に対処しようとすると複数ヶ所の修正が必要になったので面倒でしばらく放置。<br><br>　具体的には<br>HPやMP回復中（食べ物や飲み物使用時）に攻撃を受ける<br>↓<br>敵情報に攻撃中のアクティブ敵が表示<br>↓<br>回復中断して反撃<br><br>　「回復中敵情報を監視して表示されたら反撃」を組み込んだまでは良かったのだが、それに伴って複数のプログラムの修正が必要になった。<br><br>１）敵を討伐した後、ESCで敵の表示を切る<br>２）NPCに反復クエスト報告した後、ESCで敵の表示を切る<br>３）表示を切る→次の敵選択の間、敵のHPが0になったことを確認する関数を呼び出さない<br><br>　特に（３）が曲者で、関数を呼び出すと新しい敵にカーソルを合わせてしまうので今までのプログラムの関数を修正することにしました。<br><br>&gt;&gt;エンチャ売りもＢＯＴじゃなくて普通のマクロで大分楽に動かせるよ<br><br>エンチャ売りマクロ作ってみたいな
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10774152076.html</link>
<pubDate>Thu, 20 Jan 2011 15:22:46 +0900</pubDate>
</item>
<item>
<title>はじめに</title>
<description>
<![CDATA[ 　この講座で紹介するマクロは、<strong>純粋に技術を試す目的</strong>がメインであり、それ以外の目的（<strong>サーバーに負荷をかけ続ける行為</strong>・<strong>掲示板に金銭を対価にマクロを売りつける行為等</strong>）は一切関知しません。<br><br>　また、当講座で制作したマクロは個人作業の手助けとしての目的にのみ使いましょう。マクロを動かしている間目視でチェックするようにし、大規模オンラインゲームの規約のほとんどに挙げられる<strong>『他プレイヤの迷惑行為（横やり、狩場占拠）』</strong>に十分気をつけてください。<br><br><br><br><br><br><br><table><tbody><tr><td>目次</td></tr><tr><td>　はじめに<br>第一章<br>　UWSCのダウンロードとインストール方法<br>　UWSCの基本操作<br>　はじめての編集<br>　ループを作る<br>　はじめての編集 おさらい<br>第二章<br>　敵のHPを調べる - 画像を使う<br>　MOUSEORGとクライアント座標<br>　PEEKCOLORを使ってみよう<br>　組み込み - 敵の討伐確認<br>　敵選択 - メインループにて</td><td><br>第三章<br>　自分のHP/MPを調べる<br>　最適な回復アイテム使用タイミング<br>　表示してみよう - fukidasi<br>第四章<br>　マップ上の座標クリック<br>　障害物チェック<br>　ハッピータイム<br>　自分バフ<br>　アクティブMobの対処<br>第五章<br>　おまけ - 個人テリトリー操作<br></td></tr><tr><td>リンク集<br>　UWSC<br>　２ちゃんねる<br>　その他参考サイト</td></tr></tbody></table>
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10763657334.html</link>
<pubDate>Tue, 11 Jan 2011 20:46:55 +0900</pubDate>
</item>
<item>
<title>敵選択 - メインループにて</title>
<description>
<![CDATA[ 　２章のおさらいです。<br><br><div class="sourcecode">//**初期設定*********************************************//<br>//攻撃キー<br>public ATTACK1 = VK_1<br><br>//HP回復のタイミング<br>public hpkaifuku = 7<br><br>//MP回復のタイミング<br>public mpkaifuku = 10<br><br>//**プログラム開始***************************************//<br>//敵のHPのX座標とY座標<br>public hpx = 190//←パーティーメンバーのHPと誤認識を防止<br>public hpy = 0<br><br>//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br><br>//メインループ<br>count = 1<br>while 1<br>  //敵選択ループ<br>  while 1<br>    //TABキーを押す<br>    KBD2(VK_TAB)<br>  <br>    //0.3秒待つ<br>    sleep(0.3)<br>    <br>//まだ倒していないターゲットが表示されたら抜ける<br>if hpcheck() = 2 then break<br>  wend<br>  <br>  //攻撃ループ<br>  while 1<br>    //攻撃キーを押す<br>    KBD2(ATTACK1)<br><br>    //敵のHPが0か確認(1秒ごと)<br>    sleep(1)<br>    if hpcheck() = 0 then break<br>    sleep(1)<br>    if hpcheck() = 0 then break<br>    sleep(1)<br>    if hpcheck() = 0 then break<br>    sleep(1)<br>    if hpcheck() = 0 then break<br>  wend<br>  <br>  ifb count MOD hpkaifuku = 0 then<br>    //HP回復アイテムを使う<br>    KBD2(VK_6)<br>    sleep(15)<br>  endif<br>  <br>  ifb count MOD mpkaifuku = 0 then<br>    //MP回復アイテムを使う<br>    KBD2(VK_7)<br>    sleep(15)<br>  endif<br>  <br>  //カウント増加<br>  count = count + 1<br>wend<br><br>//敵のHPチェック<br>FUNCTION hpcheck()<br>  sw = STATUS(id, ST_WIDTH)<br>  sh = STATUS(id, ST_HEIGHT)<br>  <br>  //敵のHPバー認識<br>  ifb CHKIMG("HP.bmp", 1, hpx, hpy, sw, sh) then<br>    hpx = G_IMG_X<br>    hpy = G_IMG_Y<br>  else<br>    //↓プレイヤーがHPバーを動かした時に対応<br>    //座標の初期化<br>    hpx = 190<br>    hpy = 0<br>    //少し待ってTABキー押し直す、関数の再帰呼び出し<br>    sleep(0.3)<br>    KBD2(VK_TAB)<br>    RESULT = hpcheck()<br>    EXIT<br>  endif<br>  <br>  //HP最大値、最小値チェック<br>  c = PEEKCOLOR(hpx + 1, hpy + 4)//←指定座標の色を拾う<br>  cr = c and $FF//←R(赤)成分を抽出<br>  ifb cr &lt;= 205 then<br>    RESULT = 1<br>    c = PEEKCOLOR(hpx + 95, hpy + 4)<br>    cr = c and $FF<br>    if cr &lt;= 205 then RESULT = 2<br>  else<br>    RESULT = 0<br>  endif<br>FEND<br><br>//ボタンを押して話す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND</div><br><br>　メインループで敵を選択する部分も「敵選択ループ」としてループさせるよう改良しました。これは画面内に敵が沸いていない時に無意味に攻撃ボタンを押すのを防止するためです。敵を倒す→新しい敵を探す流れを続けていくと敵が居なくなる時もありえるためです。<br><br>　これで敵を探して倒すという単純なループを確実に行えるようマクロが組上がりました。<br>　次の章ではさらに自分のHPやMPを読み取って最適なタイミングでHPやMP回復が行えるようマクロを拡張していきます。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10765393846.html</link>
<pubDate>Tue, 11 Jan 2011 20:39:16 +0900</pubDate>
</item>
<item>
<title>組み込み - 敵の討伐確認</title>
<description>
<![CDATA[ 　前回作ったhpcheck()というのを組み込んで実際に動かせるようにしたものが次のプログラムです。<br><br>　第一章の最後に作ったマクロから少し変更しています。まず攻撃ボタンはプレイヤーごとに違うことが多いので、攻撃キーというのを新設しました。ここでは「public ATTACK1 = VK_1」というようにメインの攻撃キーは１キーとして指定しています。<br><br><div class="sourcecode">//**初期設定*********************************************//<br>//攻撃キー<br>public ATTACK1 = VK_1<br><br>//HP回復のタイミング<br>public hpkaifuku = 7<br><br>//MP回復のタイミング<br>public mpkaifuku = 10<br><br>//**プログラム開始***************************************//<br>//敵のHPのX座標とY座標<br>public hpx = 190//←パーティーメンバーのHPと誤認識を防止<br>public hpy = 0<br><br>//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br><br>//メインループ<br>count = 1<br>while 1<br>  //TABキーを押す<br>  KBD2(VK_TAB)<br>  <br>  //1秒待つ<br>  sleep(1)<br>  <br>  //攻撃ループ<br>  while 1<br>    //攻撃キーを押す<br>    KBD2(ATTACK1)<br>    <br>    //しばらく待つ<br>    sleep(4)<br>    <br>    //敵のHPが0か確認<br>    if hpcheck() = 0 then break<br>  wend<br>  <br>  ifb count MOD hpkaifuku = 0 then<br>    //HP回復アイテムを使う<br>    KBD2(VK_6)<br>    sleep(15)<br>  endif<br>  <br>  ifb count MOD mpkaifuku = 0 then<br>    //MP回復アイテムを使う<br>    KBD2(VK_7)<br>    sleep(15)<br>  endif<br>  <br>  //カウント増加<br>  count = count + 1<br>wend<br><br>//敵のHPチェック<br>FUNCTION hpcheck()<br>  sw = STATUS(id, ST_WIDTH)<br>  sh = STATUS(id, ST_HEIGHT)<br>  <br>  //敵のHPバー認識<br>  ifb CHKIMG("HP.bmp", 1, hpx, hpy, sw, sh) then<br>    hpx = G_IMG_X<br>    hpy = G_IMG_Y<br>  else<br>    //↓プレイヤーがHPバーを動かした時に対応<br>    //座標の初期化<br>    hpx = 190<br>    hpy = 0<br>    //少し待ってTABキー押し直す、関数の再帰呼び出し<br>    sleep(0.3)<br>    KBD2(VK_TAB)<br>    RESULT = hpcheck()<br>    EXIT<br>  endif<br>  <br>  //HP最大値、最小値チェック<br>  c = PEEKCOLOR(hpx + 1, hpy + 4)//←指定座標の色を拾う<br>  cr = c and $FF//←R(赤)成分を抽出<br>  ifb cr &lt;= 205 then<br>    RESULT = 1<br>    c = PEEKCOLOR(hpx + 95, hpy + 4)<br>    cr = c and $FF<br>    if cr &lt;= 205 then RESULT = 2<br>  else<br>    RESULT = 0<br>  endif<br>FEND<br><br>//ボタンを押して話す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND</div><br><br>　敵は攻撃キーを１回押しただけで倒しきれるとは限らないので、攻撃ループというのを設けました。これで敵のHPが0になるまで攻撃しつづけるようになりました。<br><br>　もう少し細かく敵のHPが0になるのをチェック出来るようにしてみましょう。<br><br><div class="sourcecode">    //敵のHPが0か確認(1秒ごと)<br>    sleep(1)<br>    if hpcheck() = 0 then break<br>    sleep(1)<br>    if hpcheck() = 0 then break<br>    sleep(1)<br>    if hpcheck() = 0 then break<br>    sleep(1)<br>    if hpcheck() = 0 then break</div><br><br>　単純に４秒待って敵のHPが0か確認する部分を4つに切り分けただけですが、２ループ目の最初に敵が倒された際３秒余分に待たされることが無い分見た目大分良くなったと思います。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10765383844.html</link>
<pubDate>Tue, 11 Jan 2011 20:24:15 +0900</pubDate>
</item>
<item>
<title>PEEKCOLORを使ってみよう</title>
<description>
<![CDATA[ 　次にHPバーの赤い部分(HP：ヒットポイント)を読み取るPEEKCOLOR関数を使います。<br><br>　UWSCヘルプのPEEKCOLORの(例)内に以下のプログラムが書かれています。<br><br><div class="sourcecode">//　カーソル位置の色を表示<br>x　=　G_MOUSE_X;　y　=　G_MOUSE_Y<br>c　=　PeekColor(x,　y)<br>PRINT　"赤="+G_赤(c)+",緑="+G_緑(c)+",青="+G_青(c)<br><br>～中略～<br><br>//　以下　関数<br>function　G_赤(c)<br>　　Result　=　c　and　$FF<br>fend<br>function G_緑(c)<br>　　Result　=　(c　and　$FF00)　/　$100<br>fend<br>function　G_青(c)<br>　　Result　=　(c　and　$FF0000)　/　$10000<br>fend</div><br><br>　これを元にして前回のプログラムからPEEKCOLOR以下の文を加えました。また、TABで敵を選択しつづけるよう改良も加えました。<br><br>マクロ講座5.UWS<br><div class="sourcecode">//敵のHPのX座標とY座標<br>public hpx = 190//←パーティーメンバーのHPと誤認識を防止<br>public hpy = 0<br><br>//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br>MOUSEORG(id)//←座標をクライアント座標に変更<br><br>//少し待つ<br>sleep(0.3)<br><br>//TABキーを押す<br>KBD2(VK_TAB)<br><br>//敵のHPチェック(動作確認)<br>PRINT hpcheck()<br><br>//敵のHPチェック<br>FUNCTION hpcheck()<br>  sw = STATUS(id, ST_WIDTH)<br>  sh = STATUS(id, ST_HEIGHT)<br>  <br>  //敵のHPバー認識<br>  ifb CHKIMG("HP.bmp", 1, hpx, hpy, sw, sh) then<br>    hpx = G_IMG_X<br>    hpy = G_IMG_Y<br>  else<br>    //↓プレイヤーがHPバーを動かした時に対応<br>    //座標の初期化<br>    hpx = 190<br>    hpy = 0<br>    //少し待ってTABキー押し直す、関数の再帰呼び出し<br>    sleep(0.3)<br>    KBD2(VK_TAB)<br>    RESULT = hpcheck()<br>    EXIT<br>  endif<br>  <br>  //HP最大値、最小値チェック<br>  c = PEEKCOLOR(hpx + 1, hpy + 4)//←指定座標の色を拾う<br>  cr = c and $FF//←R(赤)成分を抽出<br>  ifb cr &lt;= 205 then<br>    RESULT = 1<br>    c = PEEKCOLOR(hpx + 95, hpy + 4)<br>    cr = c and $FF<br>    if cr &lt;= 205 then RESULT = 2<br>  else<br>    RESULT = 0<br>  endif<br>FEND<br><br>//ボタンを押して話す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND</div><br><br>　R(赤)成分を取り出すのは「c and $FF」というのがわかります。$やandの意味を説明すると、それぞれで2ページ消費することになるのでここではPEEKCOLOR関数で取り出した色からR(赤)成分を取り出すのに「c and $FF」という「おまじない」を使うんだ、と思ってもらえるだけで結構です。<br><br>　UWSCのヘルプには関数一覧と使用例のセットが詳しく解説されているので、わからなくなったら辞書のようにチェックする癖を付けるようにしてください。<br><br>　プログラムを実行するとほとんどの結果に「2」が表示されると思います。これはHPバーの一番右の部分を調べた結果を返しています。HPが１ミリも減っていない場合右端が赤くなっているため「2」を表示します。<br><br>　ほかにHPが少しでも削れている場合右端が黒くなるため「1」が表示され、敵のHPが無くなって黒くなると「0」が表示されます。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10765366794.html</link>
<pubDate>Tue, 11 Jan 2011 20:08:58 +0900</pubDate>
</item>
<item>
<title>MOUSEORGとクライアント座標</title>
<description>
<![CDATA[ 前回の講座で切り出したファイルをUWSファイルと同じフォルダに置いて講座を進めます。まだ落としてない方は下記をクリックしてください。<br><br><a href="http://loda.jp/makuboh/?id=1" target="_blank">HP.bmpをダウンロード</a><br><br>マクロ講座4.UWS<br><div class="sourcecode">//敵のHPのX座標とY座標<br>public hpx = 190//←パーティーメンバーのHPと誤認識を防止<br>public hpy = 0<br><br>//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br>MOUSEORG(id)//←座標をクライアント座標に変更<br><br>//少し待つ<br>sleep(0.3)<br><br>//TABキーを押す<br>KBD2(VK_TAB)<br><br>//敵のHPバー認識(動作確認)<br>PRINT hpcheck()<br><br>//敵のHPチェック<br>FUNCTION hpcheck()<br>  sw = STATUS(id, ST_WIDTH)<br>  sh = STATUS(id, ST_HEIGHT)<br>  <br>  //敵のHPバー認識<br>  ifb CHKIMG("HP.bmp", 1, hpx, hpy, sw, sh) then<br>    hpx = G_IMG_X<br>    hpy = G_IMG_Y<br>    MMV(hpx, hpy)<br>    RESULT = "HPバー認識しました"<br>  else<br>    RESULT = "HPバー認識に失敗しました"<br>  endif<br>FEND<br><br>//ボタンを押して話す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND</div><br><br>　上のプログラムについて一つづつ解説します。<br><br>　2～3行目：敵のHPのX座標とY座標<br>　敵のHPバーそれぞれの座標をpublicという接頭辞を付けて初期化しています。publicを付けると下のFUNCTIONやPROCEDURE（関数）内で同じ変数を流用できます。意識せずプログラム内のさまざまな場所で変数の中身を取り出せるメリットがありますが、多様しすぎると名前を思い出せなかったり、プログラムの全体が把握しにくくなるデメリットがあることも気をつけてください。<br><br>　8行目：MOUSEORG関数（ここでは座標をid(ゲームウインドウ)内のクライアント座標に変更）<br>　今回学ぶCHKIMG関数、次回のPEEKCOLOR関数両方で使用するための座標をクライアント基準に変更する関数です。このMOUSEORGという「おまじない」を使うまでは、マウスの座標はグローバル（デスクトップ）を基準にして読み込まれます。関数を使った後はゲームウインドウ内の座標が基準になります。<br><br>　クライアント座標というのはゲームアプリ（ゲームクライアント）内の座標という意味です。<strong>ゲームウインドウを上部のバーをつまんで上下左右に動かしても中の座標が変わらないので今後のマクロ作りが楽になる</strong>、というメリットを受けるためにこの「おまじない」を使います。<br><br>　20行目：FUNCTION<br>　下(36行目)にPROCEDUREというのがありますが、これを単純にFUNCTIONに置き換えたもの、と理解してもらえれば大丈夫です。FUNCTIONは必ずRESULT = "結果"の行を付け加えなければエラーを起こします。ボタンを操作するだけの場合は結果を求める必要がないので付け加える必要はありませんが、ここでは結果を最後に表示するために使用します。<br><br>　28行目：MMV<br>　マウスを指定した座標に移します。ここではHP.bmpでHPバーを認識した後、画像認識の開始座標（左上）にマウスカーソルを動かすという意味です。<br><br>　17行目：PRINT<br>　UWSCが勝手に一つウインドウを開いて結果をウインドウ内に表示するものです。<br><br>　プログラムを実行するとウインドウが一つ開いて「HPバー認識しました」「HPバー認識に失敗しました」のいずれかの結果が出てくると思います。<strong><font color="#FF0000">失敗メッセージが出る場合はTABキーかF1キーを押してHPバーを画面上に表示させてください。</font></strong>また、HPバーが左端に置いている場合もエラーが出ますので、左端以外の場所に動かしてください。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10765167974.html</link>
<pubDate>Tue, 11 Jan 2011 16:53:54 +0900</pubDate>
</item>
<item>
<title>敵のHPを調べる - 画像を使う</title>
<description>
<![CDATA[ 　いよいよ新章です。第一章では指定したタイミングでボタンを押すだけの簡単なプログラミングでしたが、この章では画像認識や色認識といったさまざまなマクロにチャレンジしていきます。<br><br>　まずは画像を作成します。まずはゲーム画面をALT+PrintScreenキーでクリップボードに取り込みます。<br><br>画像：取り込まれたゲーム画面<br><br>　これをペイントに貼りつけ（ペースト）し、指定の部分を拡大や画面の大きさを変更しながら切りだしていきます。ここでは敵のHPを調べるために右上の一部分を切り出します。<br><br>画像：切り出された部分<br><br>　さらに、バケツツールを使い背景とかぶっている部分を適当な色で覆い隠し、完成形の画像へ持っていきます。<br><br>　ここからは「別名で保存」でHP.bmpという名前で扱っています。<br><br><a href="http://loda.jp/makuboh/?id=1" target="_blank">HP.bmpをダウンロード</a><br><br>　次は実際にこの画像を使ってマクロを作っていきます。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10764726900.html</link>
<pubDate>Tue, 11 Jan 2011 01:24:44 +0900</pubDate>
</item>
<item>
<title>はじめての編集 おさらい</title>
<description>
<![CDATA[ 　前回の講座で一定期間に1回HP回復を挟みましたが、これにMP回復を加えたものが下になります。<br><br>マクロ講座3.UWS<br><div class="sourcecode">//HP回復のタイミング<br>hpkaifuku = 7<br><br>//MP回復のタイミング<br>mpkaifuku = 10<br><br>//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br><br>//メインループ<br>count = 1<br>while 1<br>  //TABキーを押す<br>  KBD2(VK_TAB)<br>    <br>  //1秒待つ<br>  sleep(1)<br>    <br>  //1キーを押す<br>  KBD2(VK_1)<br>    <br>  //しばらく待つ<br>  sleep(4)<br>  <br>  ifb count MOD hpkaifuku = 0 then<br>    //HP回復アイテムを使う<br>    KBD2(VK_6)<br>    sleep(15)<br>  endif<br>  <br>  ifb count MOD mpkaifuku = 0 then<br>    //MP回復アイテムを使う<br>    KBD2(VK_7)<br>    sleep(15)<br>  endif<br>  <br>  //カウント増加<br>  count = count + 1<br>wend<br><br>//ボタンを押して離す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND<br></div><br><br>　hpkaifuku, mpkaifuku, countという名前とifb～endifというものが加わりました。それぞれを解説していきます。<br><br>　hpkaifuku, mpkaifuku, countというのは<strong>変数</strong>といって中に自由に内容を入れたり出したりできます。数学でいう<strong>x</strong>や<strong>y</strong>というのがそれに当たります。このプログラムでは最初にhpkaifuku, mpkaifukuという名前でプログラムをテキストエディタで開いて内容を自由に選べるようにしています。<br><br>　countというのは下のメインループが何回続いたか記録する<strong>変数</strong>です。forループでは一定の数を数えた後ループを抜けるようになるので、永遠と続かせるためにwhileループを使用しています。<br><br>　「ifb count MOD hpkaifuku = 0 then」という聞きなれない行が出ています。意味はcountがHP回復のタイミングで割り切れる数というものです。ここではhpkaifukuに7が入っているので、count MOD 7 = 0と同じ意味になります。countが7で割り切れる、つまり7や7の倍数のときのみifb～endifで囲まれた行を実行することになります。<br><br>　意味がさっぱり分からないという人は、しばらく攻撃したらHPやMP回復アイテムを使う便利な機能がここで組み込まれている、程度に理解してもらえば大丈夫です。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10763824961.html</link>
<pubDate>Mon, 10 Jan 2011 09:56:38 +0900</pubDate>
</item>
<item>
<title>ループを作る</title>
<description>
<![CDATA[ 　このままでは毎回動作するたびに動かさねければいけないので面倒です。TABで近くの目標を指定して、指定のボタンで動かすよう変更しましょう。<br><br>マクロ講座2.UWS<br><div class="sourcecode">//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br><br>//攻撃ループ<br>while 1<br>  //TABキーを押す<br>  KBD2(VK_TAB)<br>  <br>  //1秒待つ<br>  sleep(1)<br>  <br>  //1キーを押す<br>  KBD2(VK_1)<br>  <br>  //しばらく待つ<br>  sleep(4)<br>wend<br><br>//ボタンを押して離す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND</div><br><br>　前回のプログラムに加えてキーを押した動作の後しばらく待つのを加えました。他にもTABキーを押してから最後の部分までwhile～wendで囲みました。<br><br>　while 1というのは常にこのループを続けるという意味です。プログラムを終了するにはUWSC側の停止ボタンを押します。<br><br>～停止ボタン～<br><br>　このままではキャラクターのHPが0になるまでひたすら攻撃するだけなので途中にHP回復を挟みます。<br><br>マクロ講座2-2.UWS<br><div class="sourcecode">//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br><br>//メインループ<br>while 1<br>  //攻撃ループ<br>  for i = 1 to 7<br>    //TABキーを押す<br>    KBD2(VK_TAB)<br>    <br>    //1秒待つ<br>    sleep(1)<br>    <br>    //1キーを押す<br>    KBD2(VK_1)<br>    <br>    //しばらく待つ<br>    sleep(4)<br>  next<br>  <br>  //回復アイテムを使う<br>  KBD2(VK_6)<br>  sleep(15)<br>wend<br><br>//ボタンを押して離す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND</div><br><br>　whileのほかにfor～nextというのが増えましたが、これもループの一つで1から7の7回攻撃ループを続けるという意味です。この後のスクリプトは以上の「メインループ」を軸に拡張していきます。<br><br>　ほとんどのゲームプログラムはキャラクターや背景が動いたりHPやMPが上下したりする一連の動作を「メインループ」内で行っています。マクロも主な動作はそれにならってメインループ内でやり取りするのが理解しやすいです。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10763811456.html</link>
<pubDate>Mon, 10 Jan 2011 09:41:06 +0900</pubDate>
</item>
<item>
<title>はじめての編集</title>
<description>
<![CDATA[ 　前の講座「UWSCの基本操作」で作ったスクリプトを編集してみましょう。<br><br>～スクリプト～<br><br>　再生してみるとボタンを押したのに動作しない場合があります。これはPCゲームによくある「ボタンを押した状態をゲームが受け付ける」時間が一定の時間必要なため、押した状態を手続きすることにします。<br><br>　ついでにACWの部分も変更します。<br><br>マクロ講座1.UWS<br><div class="sourcecode">//ウインドウをアクティブ化<br>public id = GETID("DIVINA Ver. ")<br>ACW(id, STATUS(id, ST_X), STATUS(id, ST_Y))<br><br>//TABキーを押す<br>KBD2(VK_TAB)<br><br>//1秒待つ<br>sleep(1)<br><br>//1キーを押す<br>KBD2(VK_1)<br><br>//ボタンを押して離す<br>PROCEDURE KBD2(vk)<br>  KBD(vk,DOWN)<br>  sleep(0.067)<br>  KBD(vk,UP)<br>FEND</div><br><br>　ボタンを押して話す行動を手続きしてそれぞれの場所で呼び出します。一般的なプログラム言語では<strong>関数</strong>と呼ばれるものですが、今は読み込みして動くことだけ確認出来れば大丈夫です。<br><br>　スクリプトの書き方が間違っている場合、どこどこの行が間違っているという警告をUWSCが出すのでスクリプトの編集はメモ帳以外の行番号のわかるテキストエディタを使うようにしましょう。<br><br>～警告メッセージ～<br><br>この場合どこどこの行の書き方が間違っているのがわかります。
]]>
</description>
<link>https://ameblo.jp/makuboh/entry-10763800704.html</link>
<pubDate>Mon, 10 Jan 2011 09:20:38 +0900</pubDate>
</item>
</channel>
</rss>
