0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

アクツクMV:スクリプトでプレイヤーの体力をMAXにする

Last updated at Posted at 2023-01-20

前回は「データベース(オブジェクト用)」https://qiita.com/havin_nothin/items/b0c0695292bff7e9fdbd でした。
今回は、スクリプトの基本的な使い方を解説します。

スクリプトを使って、プレイヤーの体力を最大体力にしようと思います。

最初から体力が最大体力と同じだと、変化が見えないので、プレイヤーのオブジェクトの初期設定で、
体力を3、最大体力を10にしておきます。
Script01Hp.png

それからプレイヤーのアクションプログラムにアクションを追加して、「初期化」という名前をつけ、そこを初期アクションに設定します。(初期アクションはアクションを右クリックしてメニューを出すと出てきます/あと無条件に待機へつなげています)

ここまでは準備段階。

では本番です。
さっそく、「初期化」アクションに「スクリプトを実行」を追加して、以下のスクリプトをコピー&ペーストしてください。

(function(){
var self = Agtk.objectInstances.get(instanceId);
var maxhp = self.variables.get(self.variables.getIdByName("最大体力")).getValue();
self.variables.get(self.variables.getIdByName("体力")).setValue(maxhp);
})()

Script02Script2.png

実行して、体力が10になっていればOKです。(テキストで変数を表示しています→参照:https://qiita.com/havin_nothin/items/039d955d39fcedaa93bd
Script02Result.png

このプログラムを解説していきます。

1.最初の1行と最後1行は、お約束です。必ずこう書きます。
(function(){
 この間にプログラムを書く
})()
 というルールです。

2.var self = Agtk.objectInstances.get(instanceId);

 変数selfに、自分自身のオブジェクトを入れます。自分自身とはここでは「プレイヤー(のオブジェクト)」が入っています。instanceIdはアクツクMVがすでに用意している変数です。とりあえずAgtk.objectInstances.get(instanceId)と書けば、自分自身のオブジェクトを返してくれるという理解でいいです。それを変数をselfで受けて、selfで操作できるようにしています。先頭のvarは変数を定義しますという意味です。

3.var maxhp = self.variables.get(self.variables.getIdByName("最大体力")).getValue();
 変数maxhpに、自分自身の変数「最大体力」の値を入れます。"最大体力"を別の変数名にすればその値になります。(""は半角です)

4.self.variables.get(self.variables.getIdByName("体力")).setValue(maxhp);
自分自身の変数「体力」にmaxhpの値を入れます。やはり"体力"の部分を別の名前にすれば別の変数へ値をセットできます。

長々しいですが、簡単にまとめると、
1.スクリプト開始のお約束
2.自分自身をselfと定義し、
3.selfの「最大体力」をmaxhpに入れ、
4.selfの「体力」をmaxhpにする。
というプログラムになっています。

ではこれを応用してみます。
プレイヤーに変数「レベル」を作り、この「レベル」×10が最大体力になるというスクリプトです。

(function(){
var self = Agtk.objectInstances.get(instanceId);
var level = self.variables.get(self.variables.getIdByName("レベル")).getValue();
var maxhp = level * 10;
self.variables.get(self.variables.getIdByName("最大体力")).setValue(maxhp);
})()

Script03LevelResult.png

「レベル」の初期値をいろいろ変えて実行してみてください。

プログラムの文法はJavascriptなので、ネットを検索すれば山のように出てきます。
(たとえばこちら:JavaScript 基礎文法 https://qiita.com/Fendo181/items/cca476da99e8f09b6b97 シンプルにまとまってます;「昔はvarがあったが、今は使わない」って書いてあった;;)

とりあえず、自分自身の変数を参照、操作するスクリプトができるようになりました。

次回は、自分自身以外のオブジェクトの変数をスクリプトで扱ってみます。
https://qiita.com/havin_nothin/items/2a8bab1f72a325e784bb
ではまた。

(Thanks:今回のスクリプトは
Scripting Made Easy 作者: baz https://steamcommunity.com/sharedfiles/filedetails/?id=2566824894  のTargeting Switches & Variablesにあるコードをシンプルに書き換えたものです。
ただこちらのコードはなぜか「最大体力」を名前で取得すると、うまく動きませんでした)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?