プログラム名：th123_AI(仮)

用途：東方緋想天や東方非想天則で独自AI


使い方：
・StoryとVS Network以外のモードで1PをAIで使うキャラ、2Pを自分で使いたいキャラに設定します。
※ゲームパッド使いならば1Pと2Pはどちらでも構いません。
・AIスレなどでAIを入手します
・th123_ai.exeを起動します（管理者として）
・ファイル選択ダイアログで入手したaiを選択します。
・対戦を始めます

操作方法：
・F9	緋想天起動
・F10	非想天則(見つからなければ緋想天)起動
・F11	指定ファイルからスクリプト再読み込み
・F12	スクリプト再読み込み

インストール：
zip展開するだけ

アンインストール：
レジストリもテンポラリファイルも弄っておりません。
フォルダごと削除するだけですっきりさっぱりおさらばできます。

ファイル解説：
th123_ai.exe		プログラム本体です。
th123_ai.ini		設定ファイルです、設定必須ではないのでスルー可。
Readme.txt		今読んでいるこれ
History.txt		更新履歴です。
document.txt		AIを書くための超簡易リファレンスです。
motion.txt		上記リファレンスの付属物です。
card.txt		同上
skill.txt		同上
spell.txt		同上


Q&A：
	Q:このAI使ったら緋想天(非想天則)のデータ壊れる可能性ある？
	A:ありません。
	本アプリはキーボード入力以外で緋想天もしくは非想天則の動作に干渉することはありません。
	あくまでキーボード操作によってのみ動作するAIです。

	Q:キーボードプレイヤーなんだけど、キーがかぶって対戦できない
	A:プロファイルから使うキーを読み込んでいます。
	なので、AI用に使わないであろうキーを設定してあげればキーボーダーでも問題なく対戦できます。
	ただし、アルファベット以外を設定した場合に問題が起こることが多いので
	基本的にアルファベットのみで設定することをお勧めします。

	Q:キーコンフィグぐらいAI側で何とかしろよ
	A:キーコンフィグキーボード操作のみでは実現できません。
	ご了承ください。

	Q:対戦画面に入るたびにすぐ強制終了するんだけど
	A:一つ下と二つ下のQ&Aのほうをご覧ください。

	Q:PANIC: ほにゃらら～と表示されてすぐ終了してしまう
	A:AIの中でエラーしています。
	本プログラムがaiで想定されたものよりも古いと思われます。
	もし最新版でも同じエラーが出る場合、aiの作者さんまでご連絡を

	Q:認識はしているけど動きがメチャクチャ
	A:1P側がキーボードの設定になっていないか、指定されているキーが未対応のキーだと思われます。
	数字、記号、テンキー、その他特殊キーは認識しない可能性があります。
	qwertyuiopaなど、アルファベットを使ったキーコンフィグのプロファイルを用意してください。

	Q:「外部に通信しようとしています、許可しますか？」というダイアログ出るんだが
	A:th123_ai本体で致命的問題が起きた場合に自動でエラーを作者宛に送信するよう組まれています。
	そのため、一部セキュリティーソフトは起動時、もしくは送信時に上記のようなダイアログを出してユーザーに同意を求めてくる可能性があります。
	ブロックしても使用に問題はないので、デバッグなんてｼﾗﾈという方や作者信じられませんという方はブロックしてください。

	Q:スクリプトの読み直しが面倒
	A:F12を押せば再読み込みされます
	ただし反応が少々悪目なので、長めに押さないと反応しないかもしれません。
	またAIがアクティブでなくともリロード動作は可能です(エディタで編集後即リロードできるように)

	Q:いちいち別スクリプト読むためにini書き換えるの面倒
	A:F11キーからダイアログを開いて読み込めます。
	また、iniでdialogとしておけばデフォルトでダイアログ指定でき、exeファイルにドラッグ＆ドロップでも読み込ませることが可能です。

	Q:タイトルバーに色々表示されているけど何これ
	A:特に意味はありません、気にしたら負け。

	Q:黒窓は使い辛いし無駄にスペースとりすぎ
	A:仕様です。

	Q:aiの書き方まったくわからん
	A:一部変人以外寄せ付けないのは仕様です。
	改善計画はありますが、GUIによる開発環境が用意されることはおそらく10年待ってもありません。
	ご了承ください

	Q:黒窓に表示されている数値は何？
	A:AIスクリプトから出力されている何かです、本プログラムから出力しているものではありません。

	Q:AIスクリプト配布したいんだけど、exeも一緒に同梱していい
	A:構いません、むしろ推奨します。
	ただし下記ライセンスの項の小難しい英文を載せておかないと怒られるかもしれません。
	詳しくはライセンスの項をお読みください。

	Q:スクリプトの○○の動作おかしくね？
	A:緋想天ツールスレか作者メールアドレスまで連絡してもらえれば直るかもしれません。

	Q:AIが極稀に意図しない動作をする
	A:極稀であれば仕様です。
	緋想天もしくは非想天則に一切の害を与えないよう設計されているため同期が完全ではありません。
	なので、AIにもかかわらずキー入力失敗したり、射撃を見落としたりします。
	ただし、本当にバグの可能性もあるので作者に報告してくれてもかまいません。

	Q:AIで○○なことをしたいけど今のAPIだけでは実現できない
	A:作者の力不足です。
	ツールスレか作者メールアドレスまで要望を投げてもらえればいつか実装されるかもしれません。

	Q:set_key_delayとset_data_delayって何が違うの？
	A:set_key_delayはキー入力全てに影響しますが、set_data_delayは敵の状態取得のみが遅くなります。
	そのため、超反応を抑止したいならset_data_delayだけで十分でしょう。

	Q:非想天則に更新かかって使えなくなったんだけど
	A:対応したSWRSAddr.iniがあれば動作しますが、作者以外には理解不能だと思われるので
	作者が対応するのをお待ちください。

	Q:その他バグをみつけた or 動作しない or 要望がある
	A:緋想天ツールスレに書き込んでもらえれば、確認次第対応可能であれば対応します。
	どうしても直に伝えたい場合、公開しても問題が無いメールアドレスにて
	下部に記載されたアドレスまでメールをどうぞ。

	Q:てんこあいしてる？
	A:いや別に

	Q:ｼｬﾝﾊｰｲ？
	A:ｼｬﾝﾊｰｲ！ 


作者：sweetie
メールアドレス：ｂｎｒｙｘｘ３３２ａ（あっと）ｍａｉｌ.ｇｏｏ．ｎｅ．ｊｐ


ライセンス：
本プログラムはMITライセンスされたプログラムLuaを使用しています。
http://www.lua.org/license.html
{{{
	Copyright (c) 1994-2008 Lua.org, PUC-Rio.

	Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

	The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
}}}
それ以外の自作部分ライセンス：
・本ライセンスにおいて、全ての条項は「変更の有無を問わず、明示暗示を問わず、商業慈善を問わず、個人法人を問わず、保持使用を問わず、有料無料を問わず」と装飾されている物として扱う。
・著作権者は本ソフトウェアに関する一切の保障義務をもたない。
・上記条項唯一の例外として、本ライセンスに違反した場合を除いて著作権者から本ソフトウェアに関する一切の法的措置を受ける事が無い事のみ保証される。
・著作権者やその他保持者がこのライセンスの範囲で行う活動に支障が無い範囲であれば何を行っても構わない。
・上記条項の”何を行っても構わない”には本ソフトウェアの製作者を偽っての再配布も含まれる。
・全ての権利の行使において、著作権者への連絡、著作権者やライセンス条項の記載、適用ライセンスなどの制限は一切存在しない。
著作権者名：sweetie


面倒な人向けライセンス解説：
Luaのライセンスをどこかに書いておけば再配布出来ます。
自作部分のライセンスについては記載義務すらありません。
上記二つだけ説明書に放り込んでおくといいでしょう。


スペシャルサンクス：
freelight6	テストプレイ、モーション値の収集、その他色々
ツールスレ931	モーション値の収集および表の整形
同419,425	オブジェクト情報に関する技術提供
同447,448	Luaエンジン初期化に関する技術提供
同652		緋想天アクティブ判別方法
同948		アイコン画像の提供
その他、ツールスレおよびAIスレ住民全て


技術情報(と、どうでもいい話)：
SwrAddr.ini読込は緋行跡が非常に寛大なライセンスであり、作者が緋想天および非想天則が出るたびに更新したくないために実装されています、中の人が同じわけではありません。
ただ、AIの機能拡大に伴いSwrAddr.iniだけでは足らなくなり結局使いまわす事態は一度も来ないままとなりました。
キーボードエミュレート→keybd_event、情報の読み取り→ReadProcessMemory、スクリプト→Lua、ということでベース部分は技術も労力も大して注ぎ込まれていません、きっと誰でも作れます。
本プログラムは緋想天および非想天則の動作内容にキーボード操作を除いて一切影響を与えません、あくまで情報読み取りのみを行っています。
影響を与えうる動作一覧：
	ウィンドウをアクティブにする際に使うCreateRemoteThread
	AIスクリプトからのキーボード入力
	情報読み取りに使うOpenProcess、ReadProcessMemory
rep2prof、pn2cのコードを大量に使用しています、そのため一部意味がないコードが存在します。
コンパイル環境はVC++18.00.21005.1(VisualC++2013 Express)を使用しています。
