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のダウンロードはこちら