| 2008/11/12(Wed) 13:21:48 編集(投稿者) 2008/11/12(Wed) 13:18:23 編集(投稿者)
<pre><pre>記事タイトルは、「自作インクルードの記述を改善して欲しい」 …みたいな感じでしょうか、この場合。
内容に沿ったタイトルが望ましいです。
ユニット能力の >ブレイク値=非表示 15 ですが、 ダミー能力にもレベル指定できるので、個人的にはそっちを利用する方が好きです。
ということで勝手ながらここでは ブレイク値Lv15=非表示 を用いることにします。 とりあえずの利点としてはリスト関数を使う必要がなくなるぐらいで、 こちらの方を使うべきだ、とまで言うつもりはありませんが。
#ここから================
*攻撃 味方 敵:
#さっき使った武器[対象ユニットID] = 対象ユニット使用武器 //・「さっき使った武器[]」は攻撃前に一つだけSetされ、攻撃終了後にUnsetされます。 // また、「さっき使った武器[]」のインデックスは利用されていません。 // ですから、この場合は配列を使う必要はないでしょう。 //・…と言うか、「さっき使った武器」という変数自体必要無い気が… //カットで
#If Not BP Then # Set BP #EndIf // SRCの場合、配列を使う前にSetしておく必要は無いです。
#Incr BP[相手ユニット] (10 + Info(Unit(対象ユニットID),武器,さっき使った武器[対象ユニットID],属性レベル,ブ)) //・前回も指摘しましたが、「相手ユニット」ではなくて「相手ユニットID」か「相手パイロット」が正式です。 //・Info関数は、データ区分を指定するようにした方が確実です。基本的には大丈夫だとは思いますが。 //・>データにはデータの名称を指定します。(中略)ユニットの場合にはユニットIDも指定可能です。 // とヘルプにありますので、Unit関数は使わず対象ユニットIDをそのまま入れます。 //・ さっき使った武器[対象ユニットID]=対象ユニット使用武器 // なのですから、置き換えてしまいます。 Incr BP[相手ユニットID] (10 + Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性レベル,ブ)) ##配列の使いどころですね。
#If BP[相手ユニット] > LIndex(Info(Unit(相手ユニットID),特殊能力データ,ブレイク値),2) Then //・ブレイク値の設定方法を変えたので右辺が変わります。 //・ブレイク値=非表示 15 を用いるのなら右辺は // LIndex(Info(ユニット,相手ユニットID,特殊能力データ,ブレイク値),2) // となるかと。 If BP[相手ユニットID] > Info(ユニット,相手ユニットID,特殊能力レベル,ブレイク値) Then
SetSkill 対象パイロット アーツ発動 -1 SetSkill 相手パイロット ブレイク状態 -1 //対象パイロットで問題ないです。ヘルプのSetSkill項に書いてありますし。
#Else //何もしないならElseは不要です
EndIf Exit
#攻撃終了と同時にブレイクアーツを使ったキャラから #使用した武器と発動用特殊能力解除。
*攻撃後 味方 敵: #Unset さっき使った武器 //・この変数(配列)自体使わなくしたので削ります
ClearSkill 対象パイロット アーツ発動 Exit
*破壊 敵: If Party(相手ユニットID) = 味方 Then #Unset さっき使った武器 //ここも ClearSkill 相手パイロット アーツ発動 EndIf Exit
//・ClearSkill処理は味方が破壊されてしまった場合にも対応させておいたほうが良いでしょう。 // どこかで解除しないとインターミッションにまで残ってしまい、次のマップに影響が出てしまうかもしれません。 *破壊 味方: If Party(対象ユニットID) = 味方 Then ClearSkill 対象パイロット アーツ発動 EndIf Exit
#累積したブレイクポイントはターンチェンジと共に #リセットされる。
#*ターン 全 味方: //・味方ターン、敵ターン全く同じ処理なのでまとめてしまいましょう。 // *ターン 全 全 // // もしくは、横着ですが // *ターン 全 味方: // *ターン 全 敵: // ↑のようなラベルの使い方については、 // サンプルシナリオの「決戦!宇宙怪獣1話.eve」内にて、"横着なラベル"として紹介されています。 // どちらが良いかは…この場合は好みで良さそうな気がします。 *ターン 全 全:
UnSet BP #ForEach 味方 # ClearSkill 対象パイロット ブレイク状態 #Next //・味方は「アーツ発動」、ですよね? //・アーツ発動がSetSkillされるのは攻撃直前で、攻撃後には必ずClearSkillされるのですから // ターンが変わった時にSetSkillされていることは起こらないはずです。削れるでしょう // 念のため処理を入れておいたほうが安全かもしれませんが。 //・処理を入れる場合は、下のようにSkill関数でチェックしてから、必要な分だけClearSkillをする事を薦めます。
ForEach 敵
# ClearSkill 対象パイロット ブレイク状態 //・速度優先なら、SetSkillされているかどうかをSkill関数で調べてからClearSkillをした方が速くなります。 // *攻撃後ラベルのように、ClearSkillする回数があまり多くなければ大した影響は出ませんが、 // 陣営全員に行うなら、チェックした上で必要な場合のみClearSkill、としておいた方が良いでしょう。何体いるか分かりませんし If Skill(対象パイロット,ブレイク状態) <> 0 then ClearSkill 対象パイロット ブレイク状態 EndIf
Next Exit
#ここまで================
正直読み辛いので、上のコメント部分を削除すると
#ここから================ *攻撃 味方 敵: Incr BP[相手ユニットID] (10 + Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性レベル,ブ)) If BP[相手ユニットID] > Info(ユニット,相手ユニットID,特殊能力レベル,ブレイク値) Then SetSkill 対象パイロット アーツ発動 -1 SetSkill 相手パイロット ブレイク状態 -1 EndIf Exit
#攻撃終了と同時にブレイクアーツを使ったキャラから #使用した武器と発動用特殊能力解除。
*攻撃後 味方 敵: ClearSkill 対象パイロット アーツ発動 Exit
*破壊 敵: If Party(相手ユニットID) = 味方 Then ClearSkill 相手パイロット アーツ発動 EndIf Exit
*破壊 味方: If Party(対象ユニットID) = 味方 Then ClearSkill 対象パイロット アーツ発動 EndIf Exit
#累積したブレイクポイントはターンチェンジと共に #リセットされる。
*ターン 全 全: UnSet BP ForEach 敵 If Skill(対象パイロット,ブレイク状態) <> 0 then ClearSkill 対象パイロット ブレイク状態 EndIf Next Exit
#ここまで================
動作確認はしていませんが、私が弄るとすればこんな感じでしょうか。</pre></pre>
|