- 締切済み
このソースの意味を教えてください。
あるゲームのHP回復を自動にするマクロなんですが、うまくいきません。 ifb peekColor(97,26) = $FFFFFF or peekColor(98,26) = $FFFFFF ←ここのFとは??ここのソースがイマイチ理解出来ません、どういう意味でしょうか? うまくいかない原因などはなにが考えられるでしょうか?色識別のマクロだそうですが、HPのゲージは赤なんですが、なにかヒントになりますでしょうか・・・ ACW(GETID("LAUNCHER","Launcher"),0,0,1024,768,0)Sleep(0.5) 色判定前に1テンポ時間を置きます ifb peekColor(97,26) = $FFFFFF or peekColor(98,26) = $FFFFFF 画面の座標97.26か98.26が白なら Print "まだHPイパーイありまつ" というメッセージを表示させます Else なければ KBD(VK_0,CLICK,150) ショートカット0に回復ポットが入っているので使います Print "HP少ないので回復しまつ" というメッセージを表示させます Endif もしも終わり Print 回数 1から100までをカウント表示します next ここまでを100回繰り返します Wend ここまでを永遠に繰り返します
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- 00PS
- ベストアンサー率28% (4/14)
PrintScreenで画像を拾っても若干色番号は 変化する場合が有ります。 例えばOKWeb内の”教えて?QNo.*****”の オレンジ部をPrintScreenで拾って何かに 貼り付けた時の色番号を見てみて下さい。 若干変わっていると思います。 (少なくとも私の環境では変わります) 色番号を取得するにはそのゲームプレー中の 表示画像から取得すべきなのでポーズが可能で あればゲーム中にポーズをかけて色番号の 取得をしてみるか、fukidasiを使ってゲーム中の 色番号を実際に取得してみてはどうでしょうか。 >HPが減れば(赤色が減れば)その減ったところの色は透明なんです。 ”透明”の意味が不明ですが背景が表示されている のであれば ifb (赤で無ければ) (回復する) else (回復しない) endif とすれば回避できそうですが。
- 00PS
- ベストアンサー率28% (4/14)
色情報の取得は下記の方法で行ってます。 MouseOrg(0) while true x=G_MOUSE_X y=G_MOUSE_Y c=peekcolor(x,y) fukidasi(x + " / " + y + " / " + c) sleep(0.5) wend これで座標値及び色番号が取得できます。 但し常に色番号が同じとは限らないので 一定の範囲で分岐をした方が良いかもしれません。
- 00PS
- ベストアンサー率28% (4/14)
たぶんずっと工事中のページさん記述通り RGBの形式です。(アドレスは下記参照) http://park14.wakwak.com/~simizu/uwsc/fruwsc.html 結論から言いますと$FFFFFFは白になります。 詳細は下記が分かりやすいと思います。 http://www.sfc.keio.ac.jp/mchtml/cns-guide/2002/10/2/1.html 但しTrueColorにしていないと駄目かも知れません。 経験的にですがPEEKCOLORで色情報を取得し そのデータを$FFFFFFの代わりに入れた方が 確実です。
補足
>経験的にですがPEEKCOLORで色情報を取得し そのデータを$FFFFFFの代わりに入れた方が 確実です。 申し訳ありません、うまくいかないんですが、出来れば色習得の方法を教えて頂けませんでしょうか? 宜しくお願い致します。
- keikan
- ベストアンサー率42% (75/176)
>ifb peekColor(97,26) = $FFFFFF or peekColor(98,26) = $FFFFFF 画面の座標97.26か98.26が白なら peekColor(97,26)この関数の解釈が違うと言うことかもしれません。 また、次のPrint文が実行されていると言うことは条件が成り立っているということになりますからどちらの条件が成り立っているのか確認してみるといいと思います。 式に条件を1つだけにしてみる。 またorの代わりにANDにしてみる。 $FFFFFFの代わりに$000000を使ってみる。 後は座標と思われているところを他の値にしてみる(0,0など) X,Yと思われる値を入れ替えてみる座標系によっては縦横の表記が違う場合もあります。 いろいろ試してみてください。
- sha-girl
- ベストアンサー率52% (430/816)
>$FFFFFF ←ここのFとは?? FFFFFF これは多分、色を表します。 FFFFFFは16進数で FF,FF,FFと区切っているのでは無いでしょうか。 FFは16進数で255を表します。 つまりFFFFFFは R(赤)=255 G(緑)=255 B(青)=255 の白色(White)。 RGBの順は逆の可能性もあります。(BGRというように)
補足
たしかに、上からのゲージがHPが赤でMPが青で経験値が緑です。 ではこういうことでしょうか? HPの赤色が減ると、減ったところに自然と空白ができますよね?ここでのソースの座標辺りが空白になると、HP回復するという仕組みということを想像しますが、空白の部分は白ではないんですよね・・・実際、HPが満タンでも、HPが少ないでつ回復しますという風になってしまいます。 なにかわかりませんか?;;
- Masochist
- ベストアンサー率33% (1/3)
なんのゲームなのかわからないので、 ソース全体の意味はさっぱりわかりませんが、 色が関係していることから、FFFFFFは白色を意味していると思われます。
補足
HPがある一定のところまで減ると、自動で回復アイテムを使うという仕様らしいんですが、機能しなくて・・・
お礼
うおおおおお!出来ました!伝わりましたでしょうか?^^;ほんとうに感謝です;; 答えがわかりました、言われたとおりにして、できなかったんですが、なんと・・・$←この記号をぬいて試すと・・・できたんです!!これが原因だったとは・・・こんな簡単なことだったとは・・・諦めようとしていた自分を思うと、成功するにはあと一歩だったりするんだと感激しました^^ これにきづくことができたのも、あなた様のおかげです。あなた様に祝福あれ!!(感動しているもので^^;)ほんとうに感謝致します。 出来たからいいんですが、一つ気になることがあるんです。 プリントした画面だと、上記のソースで機能していたものが、実際の画面でだと、$←これが原因だった。 どういうことでしょうか? 教えてもらったソースで、色習得、座標確認しましたが、$←これをつけていると、ちゃんと機能しなく、外すと機能しました。しかし、プリントしたものでは、$を外さなくても機能していました。 う~ん、わからない^^;
補足
付き合って頂きほんとうに有難うございます! だいたい問題の的が絞れてきました。 説明しますと、ゲーム画面はフルスクリーンの1024・768なんですが、ゲーム中にプリントスクリーンボタンでコピーし、それを付属ペイントにコピーし、ソースを使うと、HPが一杯ありまつという表記がでてきまして、ちゃんと機能するんですが、いざゲームを立ち上げ、実際のゲーム画面でソースを使うと、HPが一杯なのにも関わらず、HP少ないと表記され、正しく動作しません。要は、実際のゲーム画面とペイントにプリントしたものでは、目で見た感じではわかりませんが、違うということだと思います。でも、なぜこのようなことが起こるのか・・・ とりあえず、問題の解決として、上記の色判定で、実際の画面の色を習得し、それをソースに加えれば動作するという考えに至りますが、気になることがことがあるんです、HPのゲージは赤色なのになぜ白色なら、HPいっぱいありまつとなるんでしょうか・・・HPが減れば(赤色が減れば)その減ったところの色は透明なんです。意味が伝われば幸いですが・・・