2016年11月29日火曜日

RPGツクールMV アクティブなウィンドウの背景色を変更できるプラグイン

正直RPGツクールのデフォ UI はちょっと分かりにくくて UX がフンガァァァな感じなので、せめて今操作できるアクティブウインドウだけでも見て分かるようにしようと思い作りましたふんぬらば。

ダウンロードはこちら
ライセンスは MIT だよ。


このプラグインは、アクティブ(操作対象)となっているウィンドウ背景の不透明度やカラーを変更することができます。
上の画像は通常のウィンドウをより薄くして、アクティブウィンドウの不透明度を上げています。
ちなみに、初期のウィンドウ背景は、画像(img/system/Window.png)の時点で多少透過されているため、それ以上は不透明化できないことに気が付かず2時間くらい無駄にしてしまわないようにご注意ください。しくしく。

不透明度だけでなくRGBでのカラー成分変更にも対応しています↓


他のレイアウト変更プラグインとも共存できます。たぶん。
特にスマホでのタッチ操作を考慮したプラグインと組み合わせるといい感じになると思うよ!

なお、不透明度だけの変更であれば問題ないのですが、ウィンドウカラーも変更する場合は以下の点にご注意ください。

「システム」の「ウィンドウカラー」の設定と、本プラグインの「アクティブなウィンドウカラー(赤緑青)」が異なる値になっているとウィンドウの開閉時にちょいと負荷が増えます。

これは、そもそも「システム」の「ウィンドウカラー」で色を変更すると、その分負荷が増えるのに、さらにそこからアクティブなウィンドウのカラーを変更する処理が追加されるためです。

赤緑青すべてが 0 だと負荷は発生しません。

負荷の軽い順の設定は以下のとおりです。

【軽】不透明度だけ変更する(ウィンドウカラーは変更しない)
システムのウィンドウカラー  :すべて0
アクティブなウィンドウカラー :すべて0
⇒負荷はほとんど増えません。

【並】システムのウィンドウカラーを変更する
システムのウィンドウカラー  :変更
アクティブなウィンドウカラー :すべて0
⇒ウィンドウの開閉時の負荷がちょっと増えます。

【並】アクティブなウィンドウカラーを変更する
システムのウィンドウカラー  :すべて0
アクティブなウィンドウカラー :変更
⇒ウィンドウの開閉時の負荷がちょっと増えます。

【普】本プラグインなしでシステムのウィンドウカラーを変更する
システムのウィンドウカラー  :変更
⇒全てのウィンドウが変更対象になるため開閉時の負荷がやや増えます。

【普】どちらも同じ値にする(すべて0でもない)
システムのウィンドウカラー  :↓と同じ
アクティブなウィンドウカラー :↑と同じ
⇒全てのウィンドウが変更対象になるため開閉時の負荷がやや増えます。

【重】両方を異なる値にする(すべて0でもない)
システムのウィンドウカラー  :↓と異なる
アクティブなウィンドウカラー :↑と異なる
⇒全てのウィンドウが変更対象な上にアクティブの処理が追加されるため開閉時の負荷がまあまあ増えます。

PC 向けならば特に問題ないですが、スマホも考慮する場合は、カラー変更は避けたほうがいいかもしれません。
また、そもそもツクールMVの v1.3.4 現在はウィンドウ関連のメモリリーク問題があるので、liply様作の liply_GC.js などの対策プラグインと合わせて利用ことをおすすめします。

2016年11月24日木曜日

Blogger に初めて投稿

もし使いやすかったら、こっちに移設しようかな。🐧
うわ、絵文字かわいくないなw🐇

これ以前の記事は PALog(http://blog.pandako.com)やパンダコメモ(http://memo.pandako.com)からの移植です。

2016年11月10日木曜日

RPGツクールMV アイテムなどの所持できる数を重量制にするプラグイン

武器とか99個も持って移動できるとか意味分からん!ってことでこんなプラグインを作りました。

このプラグインを有効にすると、個々のアイテムや武器・防具に重さが設定できるようになり、パーティーは決められた総重量までしかアイテムを所持できなくなります。

ローグライクなゲームやダンジョン系のゲームなどでは、所持品の吟味も楽しみの1つかと思うので、こいつを使ったらいいと思うよ。


変数による最大積載量(?)のコントロールや単位の変更なども可能です。
詳しくはプラグインのヘルプを読んでね。

★サンプルゲームはこちら

なお、メニューのレイアウトを変更するプラグインとかをいれてると崩れちゃうかと思いますが、そのへんは個々に対応するしか無いと思うのでガンバレ。

総重量ウィンドウの位置と不透明度を変更できるようにしました。 これによりメニューやショップのレイアウトを変更するプラグイン(例えば神無月サスケさん、Yoji Ojimaさん作の AltMenuScreen など)にも対応できるようになりました。



なお、例によって例のごとく理想的な Javascript の書き方ってのがよく分かってないので変なコードかもしれないけど我慢してくださいw

★最新の PNDK_LuggageCapacitySampleのダウンロードはこちら。(ツクマテ)


ライセンスは MIT だよ。どうぞご自由にお使いください。

2016年10月28日金曜日

RPGツクールMV かんたんにデータの送受信ができるプラグイン

とてもかんたんにサーバーへデータを送信したり受信したりできるようになります。
工夫次第でランキングや掲示板、1日1回のログインボーナス配布などなど色々なことに利用できるプラグインです。

例えば単純なランキングへのデータ送受信なら↓のように数行で作れちゃいます。



※もちろん別途ランキングを処理する PHP や CGI などが必要ですガ(^皿^)

サンプルゲームはこちら(PC・スマホ)
IE 用音無しサンプルゲームはこちら

PNDK_HttpRequest プラグインのダウンロードはこちら

■サンプルコードによる使い方説明

以下は PHP に name と score というデータを送り、ランキングの結果を表示するサンプルです。

◆文章:なし, ウィンドウ, 下
:文章:得点を送信するよ☆
◆変数の操作:#0001 受信データ = 0 ←(1)
◆プラグインコマンド:PNDK_HR clear ←(2)
◆プラグインコマンド:PNDK_HR add name \V[10] ←(3)
◆プラグインコマンド:PNDK_HR add score \V[11] ←(4)
◆プラグインコマンド:PNDK_HR send http://sample.jp/sample.php ←(5)
◆文章(S):速度 2 ←(6)
:文章(S):送受信中♪
◆文章:なし, ウィンドウ, 下
:文章:それではランキングの発表です!
◆文章:なし, ウィンドウ, 下 ←(7)
:文章:\V[1]

(1)まず、受信したデータが格納されるツクールの変数を初期化しています。
※必ずしも 0 である必要はありません。
受信したデータが格納されるツクールの変数はパラメータで設定できます。



(2)次に、このプラグインには送信データ専用の変数が予め用意されています。
前回の送信データが残っているとマズイので PNDK_HR clear で、その変数をキレイにしています。

(3)PNDK_HR add で送信データ専用の変数にデータを追加します。
PNDK_HR add name \V[10]
↑この場合、name というデータ名でツクールの変数ID 10番の値を送信データ専用の変数に追加しています。

(4)同様にツクールの変数ID 11番の値を score というデータ名で追加しています。
データはいくつでも追加できます。

(5)PNDK_HR send でデータを送信しています。
この例では http://sample.jp/sample.php に送信しています。
無事に通信が成功すればパラメータで設定した変数にサーバーより返信されたデータが格納されます。
(テキストデータの受信を想定しています。)

なお、エラーが発生した場合も、その変数にエラーメッセージが格納されます。
エラーメッセージとその意味は以下のとおりです。
ERROR TIMEOUT (タイムアウト)
ERROR ABORT (中止)
ERROR (なんやかんやエラー)
ERROR RESPONSE (サーバー側エラー)

(6)単なる時間稼ぎですw
送受信は一瞬では終わりません。
通信環境とデータ量によっては数秒かかることもあるでしょう。
そのため、受信が終わる前に受信用の変数を参照しても値は 0 です。
逆にそれを利用して受信が終わっているかを判断することもできますが、上記の例では割愛しています。

(7)受信したデータを文章として表示します。
このサンプルでは PHP がランキング結果のテキストを返信してくれることを想定しています。
万一、エラーが発生していたり受信が終わっていなければ、0 や ERROR なんたら、という文字列が表示されることになります。
そんなかっこ悪いことしたくない方は、いい感じに条件分岐してくださいw

■プラグインコマンドの説明

PNDK_HR clear
送信データ専用の変数を初期化します。

PNDK_HR add [データ名] [値]
送信データ専用の変数へデータを追加します。
[値]には制御文字が利用できます。

PNDK_HR send [URL]
送信データ専用の変数を[URL]へ POST メソッドで送信するとともに、パラメータで設定したツクールの変数にサーバーより返信されたデータが格納されます。

■注意点

通信はセキュリティで保護されません。
簡単に傍受できるので秘匿性の高い情報の通信には利用しないでください。
(クレカ番号とかパスワードとか個人情報とか)
このプラグインの利用により利用者または第三者に生じたいかなる損害や不利益も、このプラグインの開発者はその責任を負いません。

■使いみち

要はサーバー側の処理次第なのですが、これだけでも色々できるようになります。
以下はその一例です。
サーバー側のプログラムは別途根性で用意してください。
ただ、必ずしもデータを送信する必要はありませんし、プログラムではなくただのテキストファイルを読むだけにも利用できます。
  1. バージョン判定(古いバージョンで遊ばれるのを防ぐ)
  2. カウンター…というかプレイヤー動向分析(ゲームアナリティクス)
  3. UNIX タイムの取得(ズルされにくい日時の取得ができる)
    1. 毎日ボーナス
    2. 季節イベントとか
  4. プレイヤー間での情報共有
    1. ランキング
    2. 掲示板
    3. チャット(負荷かかりすぎかも)
    4. その他いろいろな情報
とはいえ仕様上、あまりリアルタイム性を求められるものには向きません。
他にもなにか面白い使いみちがありましたら教えて下さいませ。

2016年10月26日水曜日

RPGツクールMV 変数に小数を代入できるようにするプラグイン

なぜかツクールの変数には小数を代入できないようになっていたので、それを可能にするプラグインを作りました。
小数点以下第何位で四捨五入するかの設定も可能です。

ただ何故わざわざ小数を代入できないようにしていたのかが謎なので、その点ご留意ください。
一応、セーブしても問題ないことは確認済みです。

ちなみに、イベントコマンド「変数の操作」で小数を利用したい場合は、「オペランド」の「スクリプト」欄に小数を入力する方法がらくちんです。

↓ダウンロードはこちら
PNDK_FloatingPointVariables

2016年10月24日月曜日

RPGツクールMV ショプの価格変更プラグイン

たとえば魔王城近くの村は物価が高いとかできます。
まぁそれ自体はプラグイン使わなくてもできますが、総じて1.5倍とかできるので、個々に設定するより楽です。
また、買取価格(売却レート)も変更できます。
半額買い取りではなく等価買い取りとか、逆に引き取り手数料取ったりできます。

【2016/10/27追記】
小数ではなく整数の%で設定できるように仕様変更。


【2016/10/26追記】
新たに制御文字に対応しました。
これによりレートを変数で管理することができるようになり、例えばプレイヤーの選択によって世界の物価が変動する、などということも可能になります。
また変数なのでレートもセーブされることになります。

ただしツクールの変数には小数を代入できないので、変数を用いてレートをコントロールする場合は、小数を代入できるようにするプラグインを利用することをおすすめします。(パラメータやプラグインコマンドでの小数の利用は可能です)
サンプルゲームでは自前の「PNDK_FloatingPointVariables」プラグインを使用しています。


プラグインのコードもお作法にのっとった形に修正して、ファイル名も他とかぶりにくいように修正しました。

サンプルゲームはこちら(IE不可)
IE用サンプルゲームはこちら(音無し)

■ プラグインコマンドの使い方例

PNDK_ShopPriceChanger buy 50      #購入価格を半額(50%)にする
PNDK_ShopPriceChanger sell 100    #売却価格を購入価格と同じ(100%)にする
PNDK_ShopPriceChanger sell \V[n]  #売却価格を変数n番のレートにする
PNDK_ShopPriceChanger reset       #パラメータで設定した値にリセット

初めて作ったプラグインなので、やらかしてたらご指摘頂けると助かります。
PNDK_ShopPriceChangerのダウンロードはこちら

2016年4月6日水曜日

Adobe AIR で作った Android アプリの OpenSSL 脆弱性アラート解決法

先日 Google Play から 「Google Play warning: You are using a vulnerable version of OpenSSL」 ってメールが来て、デベロッパーコンソールへ見に行ったら「セキュリティ アラート アプリで使用中の OpenSSL のバージョンにセキュリティの脆弱性があります。」的なアラートが出ていてオイオイどないしたらえーねん状態だったのですが、解決できたのでメモります。

まず対象のアプリは Adobe AIR for Android で作ったものだったので、そのあたりでググったら、どうやら Adobe AIR SDK を 最新(この時は AIR21.0 以上)にアップすれば解決するってことらしいので、以下 Animate CC にそいつをぶっこむ手順です。

1.最新の Adobe AIR SDK をダウンロードする

↓から入手する。
Download Adobe AIR SDK

2.解凍した Adobe AIR SDK の内容一式をどっかにコピーする

Animate CC のメニュー「ヘルプ(H)」に「Adobe AIR SDK を管理(R)」ってのがあって、AIR20.0 が入ってる場所が確認できたので、そのとなりに AIR21.0 ってフォルダ作ってコピーしました。
具体的には
C:\Program Files\Adobe\Adobe Animate CC 2015\AIR21.0\
です。え?Mac?知るかっ!

3.コピーした SDK を選択できるようにする

Animate CC のメニュー「ヘルプ(H)」に「Adobe AIR SDK を管理(R)」を選択すると出てくるウィンドウで、さっきのフォルダを追加する。

4.ターゲットでコピーした SDK のバージョンを選択してパブリッシュ!

これで無事 OpenSSL 1.0.2f になりました!ヽ(=´▽`=)ノ
放置されてる ANEs に原因があったら終わるので、SDK の問題でほんと良かったと思いました。ε-(´∀`*)

おまけ

Google 先生のヘルプ「How to address OpenSSL vulnerabilities in your apps」では、「$ unzip -p YourApp.apk | strings | grep “OpenSSL”」ってやれば調べられるよイエイ!とか書いてありますがオイオイこちとら安定の Windows なんですけど!ってことで、私は以下のようにしてアプリ内で使われている OpenSSL のバージョンを調べました。

まず対象の apk ファイルを解凍します。
そのままだと解凍できないなら拡張子を .zip にしちゃってください。
んでコマンド プロンプト立ち上げて解凍したフォルダまで移動する。(dir とか cd コマンドだ!)
一番簡単なのは「cd[半角スペース]」って入力した後、コマンド プロンプトウィンドウに解凍したフォルダをドロップしちゃう方法です。
それで「cd C:\なんたらかんたら」と勝手に記述されるはずなので enter キーをッターーンて押せば移動できます。

そしたら「findstr」コマンドでファイル内検索します。
具体的には「findstr /s /m “OpenSSL” *.*」としました。
オプションの意味とかこのコマンドの使い方を知りたい時は「findstr /?」で、ッターーンだ!
UTF-8 には対応してないらしいけど、まぁ英字だしヒットはします。

今回の場合は「\lib\armeabi-v7a\libCore.so」がヒットしました。
それをエディターで開いて「OpenSSL」って検索したらたくさんヒットして、そのなかに「OpenSSL 1.0.0」とか書かれていたりしたので、こいつが悪いんだと思います。
上記の SDK アップ後はこれが「OpenSSL 1.0.2f」になりました。

これでめでたしめでたしです。