概要
- 文字変数
- 1個~複数個の「文字列」を代入する変数です。文字列とはpower, spot, unit, class構造体の名前(識別子)の事です。
- 決められた関数の引数欄でのみ使えます。文字変数はセーブされませんので一時的なデータとして用います。
- 文字変数を用いる時は先頭に@を記してください。
- 数値変数
- 「数値」を代入する変数です。
- if文の条件式内で使えます。決められた関数の引数欄でも使えます。
- 数値変数はセーブされますので各種のゲームフラグとして使えます。
例:プレイヤー勢力の全ユニットを3レベル上げる
storePlayerPower(@aaa)
storeUnitOfPower(@aaa, @bbb)
addLevel(@bbb, 3) もしくは levelup(@bbb, 3)
例:領地s5にいる全ユニットを所属勢力の他領へ移動させて新勢力p9を登場させる
storeLeaderOfSpot(s5, @uuu)
storePowerOfSpot(s5, @ppp)
addUnit(@uuu, @ppp) s5にいたユニットを現勢力のどこかの領地に移す
removeSpot(s5) s5を中立領地に戻す
addPower(p9) 勢力p9を追加する。この時のp9は領地ゼロ
addSpot(s5, p9) 勢力p9に領地s5を追加する
addUnit(p9master, s5) p9のマスターとするユニットp9masterを追加(又は他領から移動)する
changeMaster(p9, p9master_unit) マスターを変える
例:最強国に対抗して他の諸国が互いに同盟する(合従)
storePowerOfForce(0, @aaa) 第一引数をゼロにすると全勢力を代入する
storePowerOfForce(1, @bbb) 総戦力値が1番の勢力を代入する
subv(@aaa, @bbb) 変数aaaからbbbの要素を削除する
setLeague(@aaa, -1) 変数aaaに代入されてる全勢力が互いに無期限同盟する
例:最強国と他の諸国がそれぞれ同盟する(連衡)
storeAllPower(@allp) 全勢力をallpに代入する
storePowerOfForce(1, @topp) 戦力首位の勢力をtoppに代入する
subv(@allp, @topp) allpからtoppを削除する
set(idx, 0) インデックス値となるidxを0にする
while (idx < count(@allp)) {
index(@allp, idx, @pow) allpのidx番目の要素勢力をpowに代入する
setLeague(@topp, @pow, -1) toppとpowを無期限同盟する
add(idx, 1) idxを+1する
}
例:指定した領地に隣接する中立地帯を取り出す
storeNextSpot(領地, @a)
storeNextSpot(領地, @b) @a,@bに指定した領地と隣接する領地を代入する
storeNeutralSpot(@c) 中立地帯を@cに代入する
subv(@b, @c) @bから@cを引いて、隣接する中立でない領地にする
subv(@a, @b) 元となる@aから@bを引いて、領地に隣接する中立地帯を出す
引数についての注意
計算関数では対象変数を引数欄の「左側」に書きますが、
pushとstoreが接頭辞の代入関数では対象変数を引数欄の「右側」に書きます。
混同されないように御注意ください。分かり難くなってしまい大変申し訳ありません。
以下のリファレンスで青色の引数には文字変数が使えます(先頭に@を付けると文字変数と見なされます)
紫色の引数には数値変数が使えます(数値変数はそのまま記述します)
数値変数の計算(代入対象変数は引数欄の左側)
- set(数値変数, 数値)
- 数値変数に数値を代入します。
- add(数値変数, 数値)
- 数値変数を加算します。
- sub(数値変数, 数値)
- 数値変数を減算します。
- mul(数値変数, 数値)
- 数値変数を乗算します。
- div(数値変数, 数値)
- 数値変数を除算します(余りは切り捨て)。0で除算するとエラー落ちします。
- mod(数値変数, 数値)
- 数値変数を剰余算します(割った余りを求める)。
- per(数値変数, 数値)
- 数値変数を百分率変換します。per(var, 75) だと変数varの75%の数値にします。
- ただし答えが負数となる場合は、計算結果が+1多くなります(ver7.01時点)。
文字変数の計算(要素の追加削除)(代入対象変数は引数欄の左側)
一部の関数を除き、引数欄の「左側」において内包要素が複数の文字変数も全要素が利用可能です。
- setv(文字変数, 文字列要素)
- 文字変数に、2番目の要素を代入します。
- (現在有効な別名:setVar)
- addv(文字変数, 文字列要素)
- 1番目の文字変数の要素の末尾に、2番目の要素を加えます。
- 2番目の要素が複数個の「文字列」からなる文字変数のとき、末尾にそのまま連結されます。
- (現在有効な別名:addVar)
- subv(文字変数, 文字列要素)
- 1番目の文字変数の要素から、2番目の要素を全て削除します。
- 2番目の要素が複数個の文字列からなる文字変数のとき、
- 1番目の文字変数の要素内の「文字列」のうち2番目の要素にもあるものを全て削除します。
- (現在有効な別名:subVar)
- clear(文字変数)
- 文字変数の要素を全部消去します。
- (現在有効な別名:clearVar)
- shuffle(文字変数)
- 文字変数の要素をシャッフルして順序をバラバラにします。
- (現在有効な別名:shuffleVar)
- addstr(文字変数, 文字列) ※各引数の変数内:複数無効
- 文字変数内の文字列に、第二引数の文字列をつなげます。
- (例)
- set(aaa, mark@)
- storePlayerUnit(@bbb) ※ゴート3世がプレイヤー。文字変数bbbの中身は「goto」となる。
- addstr(aaa, @bbb) 文字変数aaaの中身は「mark@goto」となる。
- gwrite(@aaa, 1, nextmsg.png) こうするとゴート3世のキャラ選択アイコンにマークが付く。
グローバル変数
- gread(任意のグローバル変数名, 数値変数名)
- gread(任意のグローバル変数名, 数値変数名, 文字変数名)
- グローバル変数(全ゲームプレイで使える共通データ)をそれぞれの変数に読み込みます。
- gwrite(任意のグローバル変数名, 数値)
- gwrite(任意のグローバル変数名, 数値, 文字列)
- グローバル変数(全ゲームプレイで使える共通データ)を書き込みます。
- グローバル変数の文字列は英数字だけです。全角文字は使えません。
グローバル変数の使用注意
gwrite(aaa, 5) と gwrite(@aaa, 5) では意味が異なります。
前者は「aaa」という識別名で5の数値が保存されますが、後者は空の識別名で保存されます。
事前にsetv(@aaa, bbb)としてると gwrite(@aaa, 5)は「bbb」という識別名で5の数値が保存されます。
gread(aaa, var) と gread(@aaa, var) も同様です。この二つも意味が異なります。
引数の「任意のグローバル変数名」を青文字にしてるのはその為です。
また、一度作成したグローバル変数はゲーム内では完全には消去できません。
gwrite(aaa, 0, @)等としても、値こそ空にはなりますが、
本体ファイル「global.sav」のファイルサイズは作る以前の大きさには戻らないので、記述するときは注意が必要です。
完全に消去するにはglobal.savを手動で削除します。
グローバルデータに、
「show@シナリオ」「show@勢力」「show@ユニット」を1で書き込むと、
enable_select = off 指定が外れて表示されるようになります。(0で非表示になる)
(例) gwrite(show@goto, 1) gwrite(show@scenario8, 1) gwrite(show@kingdom, 1)
「mark@ユニット」「mark@勢力」を1で書き込むと、
開始時のキャラ選択時にimageフォルダにある文字列名の画像をマークとして付ける事が出来ます。
(例) gwrite(mark@goto, 1, nextmsg.png) gwrite(mark@p1, 1, nextmsg.png)
数値変数への代入(代入対象変数は引数欄の右側)
pushv関数を除き、内包要素が複数の文字変数はその先頭要素のみが利用されます。
- pushv(文字変数, 数値変数)
- pushVar(文字変数, 数値変数)
- 文字列配列変数が持つ全要素数を数値変数に代入します。
- pushv(文字変数, 文字列, 数値変数)
- pushVar(文字変数, 文字列, 数値変数)
- 文字変数が持つ文字列の数を数値変数に代入します。
- 第1引数は当然文字列配列変数使用可能です。第2引数も文字列配列変数使用可能です。
- pushRand(数値変数)
- 数値変数に乱数(0~99)を代入します。
- pushRand2(数値変数)
- 数値変数に乱数(0~2147483646)を代入します。
- pushTurn(数値変数)
- 数値変数に現在のターン数を代入します。
- pushCountPower(数値変数)
- 数値変数に現在生存中の勢力の数を代入します。
- pushForce(勢力/ユニット, 数値変数)
- 勢力の識別子なら勢力の総戦力値が、ユニットの識別子ならユニットの戦闘力が代入されます。
- pushDiplo(勢力A, 勢力B, 数値変数)
- 数値変数に勢力ABの友好値を代入します。
- pushSpot(勢力, 数値変数)
- 数値変数に勢力の領地数を代入します。
- pushBaseLevel(勢力, 数値変数)
- 数値変数に勢力の一般ユニットの底上げレベルを代入します。
- pushTrain(勢力, 数値変数)
- 数値変数に勢力の訓練限界値(0~100)を代入します(全人材の平均レベルの百分比率)。
- シナリオ初期値のまま変更がない場合は“0”が代入されます。
- pushTrainUp(勢力, 数値変数)
- 数値変数に勢力の訓練上昇値を代入します。シナリオ初期値のまま変更がない場合は“0”が代入されます。
- pushGain(勢力/領地, 数値変数)
- 数値変数に勢力の総収入(財政値適用前)、又は領地の経済値を代入します。
- pushCastle(領地, 数値変数)
- 数値変数に城壁値を代入します。
- pushCapa(領地, 数値変数)
- 数値変数に駐留数を代入します。
- pushCon(領地, 基底クラス/ユニット名, 数値変数)
- 数値変数に領地にいる指定ユニットの個数を代入します。
- ただし基底クラスで指定した場合は、非人材ユニットのみが対象となります。
- pushSpotPos(領地, x座標用の数値変数, y座標用の数値変数)
- 領地のワールドマップ上の座標を代入します。
- pushLevel(ユニット, 数値変数)
- 数値変数にユニットのレベルを代入します。
- pushMoney(勢力/ユニット, 数値変数)
- 数値変数に所持金を代入します。
- pushLoyal(ユニット, 数値変数)
- 数値変数にユニットの忠誠度を代入します。
- pushMerits(ユニット, 数値変数)
- 数値変数にユニットの戦功値を代入します。
- pushTrust(ユニット/勢力, 数値変数)
- 数値変数にユニット/勢力のマスターの信用度を代入します。
- pushSex(ユニット, 数値変数)
- 数値変数にユニットの性別を代入します。無性=0、男性=1、女性=2
- pushRank(ユニット, 数値変数)
- 数値変数にユニットの身分を代入します。その他=0、上士=1、重臣=2、宿将=3、マスター=4
- pushStatus(ユニット, 文字列, 数値変数)
- 数値変数にユニットのステータス(スキル適用前)を代入します。
- 文字列は、hp, mp, attack, defense, magic, magdef, dext, speed, move, hprec, mprec, のどれかです。
- pushItem(アイテム名, 数値変数)
- 数値変数に所持アイテム数を代入します。
- pushBattleHome(x座標用の数値変数, y座標用の数値変数)
- 現在の戦場シーン(簡易可)の防衛側位置の座標が代入されます。
- pushBattleRect(横サイズ用の数値変数, 縦サイズ用の数値変数)
- 現在の戦場シーン(簡易可)のエリアサイズが代入されます。
- pushLimit(数値変数)
- 数値変数に戦場シーン(簡易可)の残り時間(左上の数値)を代入します。
文字変数への代入(代入対象変数は引数欄の右側)
一部の関数を除き、引数欄の「左側」において内包要素が複数の文字変数も全要素が利用可能です。
- index(文字変数A, index値, 文字変数B)
- 文字変数Aのindex番目の要素を文字変数Bに代入します。先頭要素のindexは 0 です。
- index値を要素数より大きな値をいれると末尾の要素を取り出せます。
- (現在有効な別名:storeIndexVar)
-
+
|
... |
- おまけ。
- 逆に文字変数Aのindex番目に文字変数Bの要素を代入したい場合は少し手間が必要。
例:※文字変数Bは単一要素を持つとする
clear(@C)
set(i, 0)
while (i < count(@A)) {
index(@A, i, @D)
if (i == n) {
addv(@C, @B)
} else {
addv(@C, @D)
}
add(i, 1)
}
setv(@A, @C)
-
|
- storePlayerUnit(文字変数)
- 「プレイヤーユニットの識別子」を文字変数に代入します。
- storePlayerPower(文字変数)
- 「プレイヤーがマスターについている勢力の識別子」を文字変数に代入します。
- storeAllPower(文字変数)
- 生存する「全ての勢力の識別子」を文字変数に代入します。
- storeComPower(文字変数)
- 生存する「全てのCOM勢力の識別子」を文字変数に代入します。
- storeAllSpot(文字変数)
- 「全ての領地の識別子」を文字変数に代入します。
- 内政/非表示に設定された領地が除かれて代入は行われます。
- storeNeutralSpot(文字変数)
- 「全ての中立領地の識別子」を文字変数に代入します。
- 内政/非表示に設定された領地が除かれて代入は行われます。
- storeNextSpot(領地, 文字変数) ※左引数の変数内:複数無効
- 指定領地に「隣接する全領地」を文字変数に代入します。
- storeAllTalent(文字変数)
- 「全ての人材ユニットの識別子」を文字変数に代入します。
- 非表示設定にされた領地のユニットも代入されます。
- storeNowPower(文字変数)
- 現在戦略思考中の「COM勢力の識別子」を文字変数に代入します。
- storeTalentPower(ユニット, 文字変数)
- ユニットの「旗上げした勢力の識別子」を文字変数に代入します。
- ただし代入が空欄となるときは、“ユニット@np”が代入されます。
- storePowerOfForce(数値, 文字変数)
- 総戦力値順位が数値の「勢力の識別子」を文字変数に代入します。
- 数値が全勢力数を超えてる場合は自動的に切り詰められます(最下位の数値に変換される)
- 数値を 0 にすると「全ての勢力の識別子」を代入します。
- storePowerOfSpot(領地, 文字変数)
- 引数の領地が所属する「勢力の識別子」を文字変数に代入します。
- storePowerOfUnit(ユニット, 文字変数)
- 引数のユニットが所属する「勢力の識別子」を文字変数に代入します。
- storeSpotOfPower(勢力, 文字変数)
- 引数の勢力が持つ「全ての領地の識別子」を文字変数に代入します。
- storeSpotOfUnit(ユニット, 文字変数)
- 引数のユニット(放浪可)が存在する「領地の識別子」を文字変数に代入します。
- storeLeaderOfPower(勢力, 文字変数)
- 引数の勢力が持つ「全ての部隊長の識別子」を文字変数に代入します。
- storeLeaderOfSpot(領地, 文字変数)
- 引数の領地に所属する「全ての部隊長の識別子」を文字変数に代入します。
- storeRoamUnitOfSpot(領地, 文字変数)
- 引数の領地に放浪する「全ての部隊長の識別子」を文字変数に代入します。
- storeUnitOfPower(勢力, 文字変数)
- 引数の勢力が持つ「全てのユニットの識別子」を文字変数に代入します。
- storeUnitOfSpot(領地, 文字変数)
- 引数の領地に所属する「全てのユニットの識別子」を文字変数に代入します。
- storeMemberOfUnit(ユニット, 文字変数)
- 引数のリーダーユニットが持つ「全ての部下ユニットの識別子」を文字変数に代入します。
- storeMasterOfPower(勢力, 文字変数) ※左引数の変数内:複数無効
- 引数の勢力の「マスターの識別子」を文字変数に代入します。
- storeBattleSpot(文字変数)
- 直前に侵攻された「領地の識別子」を文字変数に代入します。
- 簡易戦闘後でも正確に代入されるようになりました。
- storeAttackPower(文字変数)
- 直前の侵攻先の攻撃側ホストの「勢力の識別子」を文字変数に代入します。
- 簡易戦闘に関しても代入されます。
- storeDefensePower(文字変数)
- 直前の侵攻先の防衛側ホストの「勢力の識別子」を文字変数に代入します。
- 簡易戦闘に関しても代入されます。
- clearBattleRecord()
- 直前の戦闘の記録データ(上記の3関数で得られるデータ)をリセットします。
- storeAliveUnit(基底クラス/ユニット名, 文字変数) ※左引数の変数内:複数無効
- 現在の戦闘シーン(簡易可)で引数の基底クラス/ユニットの識別子を持つ生存ユニットを全て文字変数に代入します。
- ただし基底クラスで指定した場合は、非人材ユニットのみが対象となります。
- storeTodoUnit(基底クラス/ユニット名, 文字変数) ※左引数の変数内:複数無効
- 現在の戦闘シーン(簡易可)で引数の基底クラス/ユニットの識別子を持つユニットを全て文字変数に代入します。
- ただし基底クラスで指定した場合は、非人材ユニットのみが対象となります。
- 死亡したユニットも代入されます。
- storeRectUnit((red/blue), left, top, right, bottom, 文字変数)
- 現在の戦闘シーン(簡易不可)で四角領域にいる赤or青陣営の生存ユニットを全て文字変数に代入します。
- MapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
- storeSkillOfUnit(ユニット, 文字変数)
- 引数のユニットが持つ「全てのスキルの識別子」を文字変数に代入します。
- storeClassOfUnit(ユニット, 文字変数)
- 引数のユニットが持つ「クラスの識別子」を文字変数に代入します。
- storeBaseClassOfUnit(ユニット, 文字変数)
- 引数のユニットが持つ「基底クラスの識別子」を文字変数に代入します。
- storeRaceOfUnit(ユニット, 文字変数)
- 引数のユニットが持つ「種族の識別子」を文字変数に代入します。
- storeSkillset(スキルセット名, 文字変数)
- 引数のスキルセットが持つ「全てのスキル」を文字変数に代入します。
内政ユニットの雇用関連
引数欄の「左側」において、内包要素が複数の文字変数はその先頭要素のみが利用されます。
- setPM(内政ユニット名, merceデータ)
- ※「merceデータ」=addv等を用いて内政用のunit等を代入した文字変数(複数個の文字列可)。
- 指定した内政ユニットの merce に、雇用できるユニットを追加・上書きします。
- 追加されたユニットは初期に設定した merce とは別の部分(独立部分)として追加されます。
- なので、一度setPMを用いた内政ユニットに、再度setPMを用いて雇用欄にユニットを追加した
- 場合、前回追加した merce データが上書きされる形で削除されます。
- (削除せずに追加したい場合は下記のstorePMを用いて、一度追加したmerceデータを文字変数に
- 代入し、その文字変数に雇用したいユニットを追加したうえで、再度それをsetPMで上書きする)
- また識別子順の本来の部分とは異なり、雇用表示欄の末尾から merceデータ 内の並び順で追加
- されます。
- storePM(内政ユニット名, 文字変数)
- 指定した内政ユニットにおいて、setPM関数で追加した merce データのみを、文字変数へと
- 代入します。(初期設定されている雇用可能ユニットは代入されない)
- 追加されている雇用可能ユニットの参照の他、setPMを用いて再度雇用できるユニットを追加
- する際、それ以前にsetPMで追加した要素を、上書きによって消去されるのを防ぐ場合等に活用
- します。
※現在内政の雇用ユニットに関し、上記二つを用いて増減を行えるのは、setPMを用いて追加した
データのみとなっています。(ゲーム内で初期設定されている雇用可能ユニットの削除はできない)
文字変数の保存
- setud(保存識別子, 文字列)
- 文字列を「保存識別子」に代入します。この文字列はセーブファイルへ保存されます。
- 文字変数に複数の文字列が代入されてても全部保存されます。
- storeud(保存識別子, 文字変数)
- 「保存識別子」に代入された文字列を文字変数に代入します。
- .
最終更新:2023年10月25日 09:08