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

改造・制作スレ part9

943名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/05/31(土) 17:48:03 ID:???
なぜ新規仕様をななあし神に作ってもらっておいて、情報をwikiに残していないのか?
これが分からない

944名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/05/31(土) 18:15:28 ID:???
もう編集履歴からも見れないけど最新版の更新詳細ページに解説載ってた時期があったはず
消す時シナリオ製作講座ページに移すとかは「たぶんななあし氏がやってくれるやろ…」(むしろ勝手にやる方がまずそう)とかみんな思ってたらなんかいつの間にか消えてた

945名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/05/31(土) 18:47:57 ID:???
そんなことあったんだ
当時の関係者で仕様知ってる人、追記してくれんかねぇ

946名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/05/31(土) 19:13:10 ID:???
WIKIのバックアップ見たら最も古いバックアップで0.685だけは残ってた
全体から見るとほんのわずかとはいえ、ここだけでも回収しといたら?

947名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/02(月) 07:03:41 ID:tMpx3x.6
>>938です。
>>942
見てみましたが、確かに参考にさせていただくのは難しい感じでした。
ご返答ありがとうございます。
敵/味方の死者数を数えるのがこんなに大変だとは思いませんでした。
getRedCount()
getBlueCount()
はif文の中でしか使えないんですもんね。
妙案あったら教えてください。

948名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/02(月) 10:40:12 ID:???
>>947
Ver7使うならdeadeventが使えるから

1)戦闘開始時にプレイヤーが攻撃側か防御側かを記憶
2)ユニットが戦闘不能になったとき、そのユニットが自陣側かを判断
3)自陣側の場合、死亡カウント数に+1する
だけでできる気はする。

ただ注意、問題点として
・召喚ユニットをカウントしたくない場合、召喚ユニットは別の召喚用ユニット構造体を設ける必要がある
・クラス構造体にdeadeventは使えない可能性がある
っていうのがあるかもしれない。

949名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/02(月) 11:01:02 ID:???
戦闘開始前と戦闘開始後の駐留数も参考にするのも、ありかもと思う。

戦闘開始前に自勢力全領土のユニット数をカウント、保存しておいて
戦闘終了後に、また自勢力内の全領土のユニットをカウントし
保存しておいたものとの差を求めるのが一番軽くて効率的で、システムも小さいから楽でいい。

物によっては多少の誤差が出るとは思うが、許容範囲だろう。
これならNPC勢力の方も気軽にカウントできるから、NPCにも適用できるな。

▼システム全般と流れ
1)戦闘開始前に、カウントする勢力の勢力名を文字変数Aに格納
2)確保した勢力が持つすべての領土を文字変数配列Aに格納
3)確保した領土のすべてのユニットを文字変数配列Bに格納
4)文字変数配列Bの要素数を数値変数Aに格納
5)戦闘を行う
6)戦闘終了後、該当する勢力に対し1〜3を繰り返す
7)戦闘終了後に更新した文字変数配列Bの要素数を数値変数Bに格納
8)数値変数AとBの差を求める。
9)その差を死亡カウント用の変数に加算

メソッド15行もいかんなこれなら。

950名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/05(木) 21:55:00 ID:???
なんなら戦闘前と後にstoreUnitOfPowerしてsubvで引くくらい簡略化してよくない?と思ったけど
元のユニットが死んだ後ユニットが入った文字変数がどうなるかようわからんのでやっぱ一旦数値変数に代入した方が無難そう

951名無しさん@穀雨 (*´∀`)【平成 → 令和】(´∀`*):2025/06/07(土) 14:26:43 ID:rIG5oHqM
>>949さん、ありがとうございます。
文面通りにやってみたのですが、不慣れで理解が追い付いていない部分があります。
問題点等ご指摘いただければ幸いです。
event battle_deadcount
{
1)勢力の勢力名を文字変数Aに格納
storePlayerPower(@base_power)
2)領土を文字変数配列Aに格納
storeSpotOfPower(@base_power, @base_area)
3)ユニットを文字変数配列Bに格納
storeUnitOfSpot(@base_area, @base_unit)
4)文字変数配列Bの要素数を数値変数Aに格納
pushv(@base_unit, base_unit_numA)
5)戦闘を行う&6)戦闘終了後、該当する勢力に対し1〜3を繰り返す(ここからが不明瞭)
while(inBattle(@base_power)){
storePlayerPower(@base_power)
storeSpotOfPower(@base_power, @base_area)
storeUnitOfSpot(@base_area, @base_unit)
pushv(@base_unit, base_unit_numA)  
}
7)戦闘終了後に更新した文字変数配列Bの要素数を数値変数Bに格納
pushv(@base_unit, base_unit_numB)
8)数値変数AとBの差を求める。
  sub(base_unit_numA, base_unit_numB)
set(base_unit_numA, dead_num)
}

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(省略可)

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

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

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

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