したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

改造・制作スレ part9

952名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/07(土) 18:20:59 ID:???
横からだけどまず死者カウントに同盟勢力の援軍を考慮するかどうかでスクリプトの難度が変わって来ると思う
自勢力限定ならそもそも繰り返しがいらないので一発でOK。しかし今回はいらなくなるとはいえwhile文の使い方が間違ってるのでそこはちょっと気になる
援軍を考慮する場合、援軍で戦闘に参加した勢力を代入する関数は存在しないのでそれを判定する処理を自力で組み上げる必要がある

953名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/07(土) 23:37:15 ID:???
どーも>>949です

>>952さんが既に書いていますが、自勢力の戦死者数だけでいいならループ処理は不要です
(ループを用いるのは、「生存している全勢力」の戦死者数を、それぞれ数える場合のみ)


◇個人的な修正案(正直合ってる自信はない)
▼戦闘前に呼び出すイベント
event battle_deadcount_get
{
・まず戦闘前に、自勢力の全てのユニット数をカウントし、数値変数Aに保持する。
 1)プレイヤーの勢力を文字変数Aに格納
  (※可能であれば自勢力の文字変数格納は、ゲーム開始時に済ませておくと良い。)
  storePlayerPower(@base_power)
 2)自勢力が持つ全ての領土を、文字変数配列Aに格納
  storeSpotOfPower(@base_power, @base_area)
 3)文字変数配列A内の領土に居る、全てのユニットを文字変数配列Bに格納
  storeUnitOfSpot(@base_area, @base_unit)
 4)文字変数配列Bの要素数を数値変数Aに格納
  pushv(@base_unit, base_unit_numA)
}

 5)戦闘を行う

▼戦闘後に呼び出すイベント
event battle_deadcount_set
{
・戦闘終了後に、自勢力内の全てのユニット数を改めてカウントし、数値変数Bに保持する。

 6.1)プレイヤーの勢力を文字変数Aに格納
  →すでに(1)で獲得しているので、そちらを利用
 6.2)改めて自勢力が持つ全ての領土を、文字変数配列Aに格納。
  (※戦闘結果により、自勢力の所持領地数が変更されている可能性がある為)
  storeSpotOfPower(@base_power, @base_area)
 6.3)文字変数配列A内の領土に居る、全てのユニットを文字変数配列Bに格納
  storeUnitOfSpot(@base_area, @base_unit)

 7)戦闘終了後に更新した文字変数配列Bの要素数を数値変数Bに格納
  pushv(@base_unit, base_unit_numB)

 8)数値変数Aと数値変数Bの差を求める。
  sub(base_unit_numA, base_unit_numB)
 9)その差を死亡カウント用の変数に加算
  add(dead_num, base_unit_numA)
}

自勢力だけ数えるならこんな感じでいい。


以下補足、無視していい。

他勢力も数えたいなら、storePlayerPowerをstoreAllPowerに変えて、加えindex用いて
それぞれの領土獲得とそこのユニット獲得をして、それぞれの差を求めればよい
但し処理が重くなるし、ゲーム上の勢力数が安定しないなら、その為の数値変数枠を
あらかじめ作っておく必要や、数値変数と勢力を照合する必要がある為、正直おすすめしない

954名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/14(土) 11:06:37 ID:???
この場合簡易戦闘は別に考える必要があるな
普通の戦闘終了ならisWorld()でイベントを起こせばいいけど、
簡易戦闘中が終わったときのアプローチが存在しないからね
銃魔はその辺どうクリアしてるんだろ

955名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/14(土) 11:50:00 ID:???
あーまじですかー
確かに今ざっと調べてみたら、簡易戦闘前後だとアプローチ・トリガーがないなぁ

となるとdead_event活用する感じかなぁ
でもdead_eventって簡易戦闘でも機能するんだろうか?

956名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/14(土) 13:48:51 ID:???
「今簡易戦闘終了後のタイミングか」を判定する条件式がないだけでワールドイベントは読み込まれるから
戦闘イベントのどこかに
set(sentoushita,1)

ワールドイベント直下に
if(sentoushita==1)
{
/*
戦闘後イベント諸々
*/
set(sentoushita,0)
}
で引っ掛かるくない?

957名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/14(土) 16:21:36 ID:.tiauSWU
>>949
>>956
質問者です。いろいろとありがとうございます。
battle_deadcount_setはif(sentoushita==1)の時、でいけそうですね。
銃魔のレザネーションのスクリプトを確認したらbattle_resultを似た方法で起こしていました。

国語の問題で恐縮なのですが、
▼戦闘前に呼び出すイベント(event battle_deadcount_get)
の「戦闘前」は、isPlayerTurn()とisComTurn()と、それぞれ開始時に起こせば良いということでしょうか?

958名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/14(土) 22:03:54 ID:???
>>956さん
自分もそれぱっと思いついて
例えばdead_eventとの組み合わせで(過剰にはなるんだけど)兵士が死んだら
set(sentoushita,1)すればできそうだなって思ったんですけど
「ワールドイベントって簡易戦闘が終わった直後に読み込まれるのか?」って不安がありまして

ただ、>>957さんのを見た感じ行けそうですね
ワールドイベントって簡易戦闘直後に読み込まれるんですね勉強になる〜
でしたらまぁ全てのマップに開幕時即死亡するユニットをマップチップで置いて
deat_eventでset(~)すればいけるかな?


>>957さん
とりあえずおつかれさまです
戦闘前というのは、「マジで全ての戦闘が始まる」直前をさします
すなわち、「○○が侵攻しました」のダイアログが出て
ダダダダッと「自分またはCPU問わず何らかの勢力」が「どこぞの領地」に攻め込むたびに
イベントを起こしてほしいです

戦闘は攻撃戦だけでなく、防御戦、援軍戦もあります
もし「自勢力が攻める直前だけイベントを起こす」となると、攻める時は死亡数カウントされますが
攻め込まれたときや援軍に行ったときに、死んだ兵士をカウントし損ねます
ですので「あらゆる戦闘が始まる直前」に必ず、当該イベントを起こしてください


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板