信長の野望 天翔記 改造綜合スレ4

このエントリーをはてなブックマークに追加
594名無し曰く、:2014/06/27(金) 23:59:23.05 ID:GODr5ZoR
退却コマンドの公開乙
今回は使用例のサンプルとか無いの?
595.jp:2014/06/29(日) 14:22:44.69 ID:S4KZ0W2C
>>594
武将番号【配】 を引数として渡すだけなので、特になし。

使用シーン例としては、

■メソッド
 On_残りターン変更《戦争画面》

■発動条件
とある武将が
・高貴
・戦才値が低い
・戦闘値が低い
・青色ユニット
を満たし、

周囲3ヘックスマス間隔以内に

・戦才が極めて高い
 (身分に応じて、必要な戦才を変えた方が良いかな)
・赤色ユニット武将

がいれば、一定確率で「ビビッて」退却する。

とかなんじゃなかろうか。
596名無し曰く、:2014/06/30(月) 23:59:35.74 ID:BCbBrSSE
残りターン変更《戦争画面》 時に「戦死」状態(前ターンまでに戦死してる)の武将の
「戦死」状態をクリアすると同時に退却させて戦争後も生き延びさせるとか可能ですか
597.jp:2014/07/01(火) 01:38:58.02 ID:y93mlaI1
>>596
ScenarioModの現在のAPIだけでは、その処理順は、上手く機能しないです。
(多分、退却コマンド実行時にフリーズか、必ず退却が失敗するか、もしくは、退却コマンドが無視されるか、どれかかな?)

「戦死」状態になるということは、実際には、
・戦死フラグが1本立つというだけではなく、
・ユニットが持つ「座標」が消滅(0xFFFF)し、
・マップ上のヘックス位置情報が消滅(こっちは純粋に消滅)し、
・他、2、3個の値が無効になります。

一方、退却コマンドを実行し、成功させるには、少なくとも
・「現在のユニットの座標」
が必要です。
(周りのユニットとの関係などから、退却成功率を計算するためです。又、どこに逃げるのか、の判断基準にもなります。)


ScenarioModの「戦場情報型.cpp」がなんとなくご自身でわかるようであれば、実装出来ると思いますが、
そうでなければ、現段階では、ちょっと難しいでしょう。

手法としては、戦場情報型.cpp内にある
「GAMEDATASTRUCT_WAR_HEX_UNIT_INFO_ADDRESS」(=0x4D5D58)のアドレスから
「NB6BUSHOU_HEX_UNIT_INFO」型のデータサイズを72個分、毎ターン記録すれば、
武将が死んでいない状態まで巻き戻すことが出来るので、
誰かが戦死したとしても、死んでいない状態まで巻き戻した後、(同じ場所にユニット居たら、少しだけ座標をずらして)
おもむろに退却といった器用なマネは可能であろうと思います。
598覚 ◆Obgk/5.joU :2014/07/05(土) 01:00:13.50 ID:KYX8d3K9
>ゲーム業界が今取り組んでいるのが「愛おしいAI」であり、
>その上の、最上級が人が「切なくなるAI」とされている。

これは例えるならどういった内容のゲームにあたるんですか?
天翔記のような登場人物が多数出てくるようなゲームにも適用可能なAIなんでしょうか?
599.jp:2014/07/05(土) 02:15:30.37 ID:hGHCQnR/
>>598
どういった既存のゲームもあたらないです。
まだ1つも無いからです。

あと10年ほど経過すると、ポロポロとトップ級(AAA級)のゲームから
そのようなものが出始めます。


SLG/RTS のワラワラ系に、個に対する豪華なAIが組み込まれる日は、かなり遠いと私は思いますね。
(30年〜半世紀近く後だろうという印象)

SLG/RTSのプレイヤ層はそのようなものを求めておらず、
ユニットや情勢に対する「評価関数」系のAIを望んでいる傾向があるので、
SLG/RTSが化けるのは「全ユーザーのプレイデータはセンターに送られるのが当たる前」
といった時代以降ですね。

これらは、評価関数が絞りやすい「カーレース系」や「格闘系」にて先に実践されて、
後に、手が拡げられてゆくはず。
(理由は、Aの人のプレイをセンターに送って、そのプレイのどこからでも他の人が再開できる、
といったシステムで先行するのが、それらの分野とおもわれるため)
600.jp:2014/07/05(土) 02:16:40.24 ID:hGHCQnR/
×:当たる前
○:当たり前
601覚 ◆Obgk/5.joU :2014/07/05(土) 11:46:30.94 ID:KYX8d3K9
ということはAIの究極(理想?)の形というのは統計学の延長にあると……。
光栄ゲームでは士気が落ちて脱落兵が出ますが、それも将来は個々のAIで決められて行くのかな??
そうなるとSLGとしてはプレイヤーが指揮官みたいな立場でAIの部下に方針(指示ではない)を
出すようなものにフォーカスされて行く気がしますね。
格闘系だと同じ○ボタンでも状況によって技が変わるとか。

説明を読んで私が思うのは「AIは人間や社会らしさの再表現」なんだろうなと。
AIというと判断能力、判定能力(=頭脳)であって、これは確かに統計です。
でもそられの数値の根底にあるのが民族性とか地域性とか世代であって(酷いときには心理状況も)、
こういうのまで表現するとなるとまだまだ先のことなんでしょうね。
602名無し曰く、:2014/07/07(月) 23:59:48.23 ID:WrZIR93w
気付いたらいろいろ武将のマスクデータが増えてるんだな
見えないからどこがどうなってるのか全然わからんけど
603.jp:2014/07/10(木) 22:03:14.17 ID:9s7oARxG
TSMod 更新。

既存の設定ファイルフォーマット(TSMod.txt TSModEx.txt)を捨てて、
新しいフォーマットにしました。

洋ゲーや日本各種ゲームで採用されているスクリプトであるLUAを採用。
(スクリプト系では、Perl, Pythonに続いて私がわかる言語ってのもあるので)

意味がわからない「FFFFFF」と「無駄なダミー値」が全て消えてすっきりしました。

LUAなので、適当にスイッチフラグ等を用意すれば、
スイッチフラグ1つの変更で

・「バリバリ超級難しい版」
・「ずっと終わらないぬる版」
・「オリジナルに近い版」
・「BGMランダム版」
・「携帯専用」

など多数の値の切替を自身で実現できるので、
設定ファイルとしては、極めて柔軟性が高くなった、と言えますね。
604.jp:2014/07/10(木) 22:06:30.48 ID:9s7oARxG
TSMod.ini とは:
 http://天翔記.jp/?page=nobu_mod_the_tsmod_ini

あと、
 http://天翔記.jp/?page=nobu_mod_the_tsmod
のサクラエディタ
も新しいものに替わったので、
天翔記フォルダのsakura.iniを削除して、sakura.exeを新しいものに差し替えれば、
強調表示カラーが適切なものとなります。
605名無し曰く、:2014/07/11(金) 23:21:58.26 ID:fMdWxlso
TSMod.iniがダウンロード出来ないのはなぜでしょう
606.jp:2014/07/11(金) 23:26:04.32 ID:U8FV4+7a
>>605
構成ファイルが変化した際には、ModUpdaterは2回実行する必要があります〜

1回目で、ModUpdater.iniが更新されて、構成ファイルが変わったということを知りためです。

ModUpdaterをもう1回実行してもTSMod.iniがダウンロードされませんか?
607名無し曰く、:2014/07/11(金) 23:36:36.54 ID:fMdWxlso
どういうわけかされないです。。。
608.jp:2014/07/11(金) 23:44:10.81 ID:U8FV4+7a
>>607
むむむ?

手動で、ModUpdater.ini の TSMod.txt と書いてある所を、
TSMod.ini と書き換えるとどうなりますか?

キャッシュはされない設定になっているはずなのに、
キャッシュでも残っちゃっているのかな??
609.jp:2014/07/11(金) 23:50:48.43 ID:U8FV4+7a
一応確認となりますが、Program Files のような ユーザー権限制限のあるフォルダに
天翔記をインストールしている、といったことはないですか?

(こういった場合は、ModUpdater自体動作しません。)
610名無し曰く、:2014/07/11(金) 23:56:17.69 ID:fMdWxlso
>>608
これでOKでした
お手間取らせました
611名無し曰く、:2014/07/12(土) 08:09:41.28 ID:R+jLGKxH
なんか超久しぶりにうpろだ覗いたら人数制限突破へのヒントとかあったけどどう使えばいいのだろう
612.jp:2014/07/12(土) 20:31:56.79 ID:YcfHKS/c
>>611
残りのC部分を自分で完成させて、
シナリオも755(にしたっけかな?) に分に変更して(シナリオエディタは使えない)
そして、PluginModとして動かす(もしくはPluginMod相当のもの自体も自分で作る。)

TSModの1%にも満たないような少量の物量なので気合で頑張れ。
613名無し曰く、:2014/07/12(土) 23:59:49.78 ID:ytaxMXZs
人数制限突破してもそんなに変わるもんかね
614名無し曰く、:2014/07/13(日) 01:01:00.48 ID:XD10VHmz
死亡頻度を上げたり斬首・暗殺で殺しまくるのはイヤだけど
シナリオ開始から7〜8年後あたりに出てくるはずの武将には
ちゃんと登場してもらいたいっていう感じかなあ

要はダラダラ進めていって教育で鍛え上げた贔屓の武将を
並べてニヤニヤしたいっていうプレイスタイルを好む人向けの話かと
615名無し曰く、:2014/07/13(日) 05:11:18.03 ID:ZQvYgIpO
そりゃ変わるんじゃない。
ただでさえ城の数が多くて、一城当たりの武将数が少ない上に
補給線があったり奥の城にも攻め込めるシステムだから
守るべき城数が点じゃなく面で増えて、どうしても守りや内政にまわす武将が足りなくなる。

それで今までは守るより空いてる城を攻めて落とす方が早いから、とにかく戦争一択になっちゃってたけど
一城当たりの武将数が増えれば、技能や鉄砲持ちがいなくても一斉攻撃とかで守りやすくなるし
守りやすくなればひたすら攻め込む以外の内政や調略とかがより有効に使えるようになって、プレイスタイルの自由度が上がると思うよ。
616名無し曰く、:2014/07/13(日) 23:00:40.17 ID:hRWhdF6n
すみません最近天翔記の改造を始めた者です。
義理が15で忠誠が100である武将は内応に絶対に応じないというmodはどうしたら良いのでしょうか
自分が内応をかける分にはできるのですが、他家の武将もとなると詰まってしまいます。
天翔記.jpを見てもあまり理解できていないのか、思いつきませんでした。
お手数ですがどなたか助けていただけないでしょうか
617.jp:2014/07/14(月) 10:54:31.66 ID:QbIwcPUE
ScenarioModで記述するという意味ですか?
それとも、PluginModで作るんですか?
それとも、一から自作するんですか?
618.jp:2014/07/14(月) 23:13:43.92 ID:zranh6x2
>>616
ScenarioMod での例。
最新のTSModが必要です。

http://u7.getuploader.com/nobu6/download/375/naiou_coef_custom.cpp
619.jp:2014/07/14(月) 23:18:51.59 ID:zranh6x2
>>618
上のソース間違ってる箇所

誤: int iCurResult = パラメタ.整数3 -1; // 現在内応が成功するか否かの結果

正: int iCurResult = パラメタ.整数3; // 現在内応が成功するか否かの結果
620名無し曰く、:2014/07/14(月) 23:23:01.90 ID:MSYLK98D
>>617
すみません。scenariomodです。
理想としては、義理が15で忠誠が100の武将を忠臣化したいです。そのために、
@内応に絶対に応じない
A捕縛後の登用に絶対に応じない
としたいです。
最初に質問した他にも、Aは戦争終了後にある義理15忠誠100の武将の所属と勲功と忠誠を開始前に戻す、で良いのでしょうか。これだと捕縛されなくても勲功リセットになってしまいますよね?
ヒントで構いません。どうかよろしくお願いします。
621名無し曰く、:2014/07/14(月) 23:25:45.33 ID:MSYLK98D
>>618
>>619
ありがとうございます!早速試してみます。
受け身ですみませんでした。いつか自分で組んだものをうp出来るように研究しでみます。
622.jp:2014/07/15(火) 00:15:08.95 ID:mYPhZx4o
>>620

Aの「戦後処理登用結果可否」も「カスタム条件」として、
ScenarioModに加えた方が、自然にプログラム記述できていいでしょうねぇ。

「捕縛処理を受け入れた後で、元の所属や身分へと戻す」というのは
結構大変かと思います。(─※)

捕縛されたものの、季節が経過すると、戻ってくるといった処理なら、
今のScenarioModでも比較的平易に出来るでしょうか。



※─ 捕縛後に元へと戻すのが大変な理由 ─

 ・城は「武将のリンクリスト」を、
 ・軍団は「城のリンクリスト」を、
 ・大名は「軍団のリンクリスト」を、
 といったように、
 各々の層は各種 『連絡網経路』 のようなものを持っています。

 このため、大名や軍団の所属だけ「元の値」に戻しても上手くはいきません。

この『連絡網』の再構築を「完全に正しく」行う必要があり、
 少しでも間違うと、武将や軍団が2重になったり、消滅したり、突然死亡したりします。
623名無し曰く、:2014/07/15(火) 02:52:49.69 ID:E/TBRjxb
うんこ
624名無し曰く、:2014/07/15(火) 06:58:25.76 ID:1+yiuowB
>>622
回答ありがとうございました。現在のscenariomodでは難しいということでしょうかね。pluginmodなどでなら出来るのかもしれませんが…
あまり長々と質問するのもあれなので、あとは個人で頑張って見ます。ありがとうございました。
625名無し曰く、:2014/07/17(木) 01:04:35.81 ID:sZfN/8ei
カスタム条件ってどこで定義されてるの?
もうすでに>>622の戦後処理登用結果可否とかも使えるの?
今知ってるのが突撃死亡、鉄砲死亡、雨鉄砲、退却ぐらいなんだが他にはどんなのがあるんだろう
626.jp:2014/07/17(木) 02:17:22.41 ID:+X1zNxkw
>>625
今のところ
http://天翔記.jp/
のトップページの「カスタム条件」のツリー以下の分だけ。

ScenarioMod側では、具体的な定義は存在せず、
TSMod側から、該当のタイミングで
メソッドを呼び出してるだけです。

個別に用意してないのは、メソッド数を増やし過ぎないため〜
627 ◆dF/TZIT8Xw :2014/07/17(木) 21:15:22.42 ID:2nmwjzNT
ttp://天翔記.jp/?page=nobu_mod_the_snmod_methodref_on_turn_change_in_castle_battle
このページの(例A) の部分ですが、
「Get_攻城戦中の城番号();」の部分で自分の居城番号を引っ張り出そうとしています。
あとは、自分の勢力下でも「陥落せぬか…」と言ってしまいます。
628名無し曰く、:2014/07/18(金) 00:21:45.12 ID:7Az/Pqys
scの方にも書き込んでしまってすいません。
>>676です。
int 武将所属大名番号リスト[最大数::武将情報::配列数];
int 武将仕官年数値リスト[最大数::武将情報::配列数];
int 武将忠誠値リスト[最大数::武将情報::配列数];
int 武将勲功値リスト[最大数::武将情報::配列数];
int 武将所属軍団番号リスト[最大数::武将情報::配列数];
int 大名家紋番号リスト[最大数::大名情報::配列数];

void カスタム::On_戦争開始(戦争開始パラメタ型 パラメタ) {
for ( int iBushouID=0; iBushouID < 最大数::武将情報::配列数; iBushouID++ ) {
武将所属大名番号リスト[iBushouID] = p武将情報[iBushouID].所属大名【大名番号】;
武将仕官年数値リスト[iBushouID] = p武将情報[iBushouID].仕官年数;
武将忠誠値リスト[iBushouID] = p武将情報[iBushouID].忠誠;
武将勲功値リスト[iBushouID] = p武将情報[iBushouID].勲功;
武将所属軍団番号リスト[iBushouID] = p武将情報[iBushouID].所属軍団【軍団番号】;
for(int iDaimyouID=0; iDaimyouID<最大数::大名情報::配列数;iDaimyouID++){
大名家紋番号リスト[iDaimyouID] = p大名情報[iDaimyouID].家紋;
デバッグ出力("リスト作った");
}
}

}

void カスタム::On_戦争終了() {
デバッグ出力("忠臣化起動した");
for(int iBID = 0;iBID< 最大数::武将情報::配列数;iBID++){
if(p武将情報[iBID].義理 == 15 && p武将情報[iBID].所属大名【大名番号】!= 武将所属大名番号リスト[iBID] && p武将戸籍情報[iBID].状態 == 2 && 武将忠誠値リスト[iBID] == 100){
デバッグ出力("条件1クリアだ");
int iCastleID = p武将情報[iBID].所属居城【城番号】;
if(p城情報[iCastleID].城主【武将番号】!= iBID){
デバッグ出力("条件2クリアだ");
int iDID = 武将所属大名番号リスト[iBID];
if(p大名情報[iDID].家紋 == 大名家紋番号リスト[iDID]){
デバッグ出力("条件3クリアだ");
p武将情報[iBID].所属大名【大名番号】= 武将所属大名番号リスト[iBID];
p武将情報[iBID].所属軍団【軍団番号】= 武将所属軍団番号リスト[iBID];
p武将情報[iBID].仕官年数 = 武将仕官年数値リスト[iBID];
p武将情報[iBID].勲功 = 武将勲功値リスト[iBID];
p武将情報[iBID].忠誠 = 100;
int iDID = 武将所属大名番号リスト[iBID];
int iCID = p大名情報[iDID].所属居城【城番号】;
bool Set_武将転居(int iBID,int iCID);
デバッグ出力("忠臣化介入した");
}
}
}
}
}

として忠臣化を図ったのですが、どうしても武将が城移動をしてくれず、その結果天翔記によって死亡処理をされてしまいます。
何か致命的な欠陥があったのでしょうか?一応連絡網で齟齬が出ないような書き方をしたと思ったのですが・・・
太閤立志伝のイベコンをやったことがある程度の超初心者なのでありえない初歩ミスをしているかもしれません。
どなたかご指導いただけないでしょうか。
(デバッグは確認用なので気にしないでください。)
629.jp:2014/07/18(金) 01:09:00.34 ID:z5lVW7wj
>>627

■Get_攻城戦中の城番号()
の関数は、いわば、「今現在まさに開いている城」の番号を取得する関数ですね。

このサンプルを完全にするためには、
今まさに画面に映っている城が、「どの軍団に属するのか」を求める必要があるでしょう。
( それはp城情報[i].所属軍団【軍団番号】でわかります。 )


一方で、戦争に参加している全ての軍団は、
■Get_参戦の軍団番号リスト【配列用】
でわかります。

各軍団が、敵なのか、味方なのか、中立なのかは、
■Get_軍団の参戦立場
でわかります。

以上の道具があれば、
「戦争に参加した全ての軍団の立場」と
「今画面に映っている城の所属する軍団」
がわかるため、
結果として、「今画面に映っている城が味方の城か、敵の城か」がわかります。
630.jp:2014/07/18(金) 02:34:45.62 ID:z5lVW7wj
>>628
http://u7.getuploader.com/nobu6/search?q=girigatai_busyou_moto_modoru.cpp
が例となります。

配列用にアクセスする際のリファレンスが天翔記.jpにちょうどいないので、やむをえないのですが、

注意点としては、p****[ix].○○○○【○○番号】
などは、配列や関数の引数より1つ大きい番号になっています。

例題などで「-1」してる箇所が多いのはそのためです。
(ちょっと使いづらいですが、深いところまで踏み込んだ際に、メモリの値と取り扱ってる値が異なって混乱しないよう、天翔記のまんまのデータ値を踏襲しています。)

セーブエディタなどで、各タブの一番左の『index』という値が、p武将情報[ix]やp城情報[ix]などの[ix]に相当する値ですね。
通常、関数の引数に渡す値も、このindex値です。これを【配列用】などと呼称しています。

p武将情報[index].居城番号【城番号】
とあるとすると、この城番号は、セーブエディタの城タブの一番左の『index』より1つ大きい値が格納されている。
なので、該当の城の情報にアクセスする際には、

int iCastleID = p武将情報[index].居城番号【城番号】-1; // というように-1するんです。
if ( 0 <= iCastleID && iCastleID < 〜〜最大数 ) {
p城情報[iCastleID].xxxx;
}
みたいにしているんです。
631.jp:2014/07/18(金) 02:41:34.55 ID:z5lVW7wj
追記

Set_武将転居()

は関連するリンクリスト絡みは全て行っていくれるので、
大名番号や軍団番号を自前で安易に変更してはいけません。

武将の状態や大名変更を関数を通さず自前で行うには、
実は結構なソースを記述する必要があります。
632 ◆dF/TZIT8Xw :2014/07/18(金) 22:48:56.51 ID:YRgm0SUV
>>629
ありがとうございます。
この2つを使うところまでは、わかりませんでした。。。
作ってみたところ、以下のような感じになりまだ状況は改善されず・・・

(略)
ヘックス位置型 posA;
posA = Get_武将の攻城戦ヘックス位置(iAttackBushouID);
int iCastleID = Get_攻城戦中の城番号()-1;
番号リスト型 glist = Get_参戦の軍団番号リスト【配列用】();
for each ( int iGundanID in glist ) {

if ( 0 <= iCastleID && iCastleID < 最大数::城情報::配列数 ) {
if ( Get_軍団の参戦立場(iGundanID) == 参戦立場::攻撃軍 ) { //軍団の立場は攻撃側
if ( p城情報[iCastleID].所属軍団【軍団番号】!= iGundanID ) { //恐らくここで城の所属が攻撃側かハッキリさせる?


//string message = "むむ…\x0A未だ"+Get_城名(iCastleID)+Get_城称(iCastleID)+"は\x0A陥落せぬか…";
if ( posA.Y <= 攻城戦ヘックス::中心Y ) {
噴出ダイアログ《通常・左上》開始( iAttackBushouID, message );
噴出ダイアログ《通常・左上》終了();
// それ以外は攻撃側が右下を使う
} else {
噴出ダイアログ《通常・右下》開始( iAttackBushouID, message );
噴出ダイアログ《通常・右下》終了();
633.jp:2014/07/18(金) 22:55:46.62 ID:z5lVW7wj
>>632
取得してきた値を「デバッグ出力」して確認していますか?

デバッグ出力を使わないと、自分みたいな30年ぐらいプログラムしている人間でも
20行正確にかくのすら難しいですよ。

デバッグ力を使えば、1行ずつ確実に正しくしていけるので、時間の問題です。
634.jp:2014/07/18(金) 23:47:22.15 ID:z5lVW7wj
>>632
http://u7.getuploader.com/nobu6/search?q=oshiro_to_sansen_tachiba.cpp

戦時中にいろいろと会話するのであれば、「参戦立場」の使い分けは必須になります。
635名無し曰く、:2014/07/18(金) 23:54:44.30 ID:7Az/Pqys
本当に何度もすみません
>>630を試して見たのですが、武将がほぼ全員(戦闘に参加していないのや大名までまで)大移動して、結果全員に死亡処理がかかってフリーズしてしまいます。
お手数ですが確認していただけないでしょうか。
636.jp:2014/07/19(土) 01:09:56.32 ID:DhvoIw3e
>>635
特に問題ないように思えますが、ソースはまるまる張りましか?

(余暇の要因で勝手に軍団番号や大名番号書き換えたりはしていませんね?
あるいはコピペせず、手で入力して判定が逆になっているなど)
637名無し曰く、:2014/07/19(土) 10:37:40.04 ID:sZPTMTyP
>>636
void カスタム::On_軍団ターン変更《メイン画面》(int 軍団番号) {
for ( int iBID = 0; iBID < 最大数::武将情報::配列数; iBID++) {
if(p武将戸籍情報[iBID].状態!= 2){
if(p武将戸籍情報[iBID].状態 = 1){
int iDBID = p大名情報[p武将情報[iBID].所属大名【大名番号】-1].大名【武将番号】-1;
int aisyousa = Get_武将相性差(iBID, iDBID) * 10;
int giri = p武将情報[iBID].義理 * 4;
int sikan = p武将情報[iBID].仕官年数 * 5;
int kunkou = p武将情報[iBID].勲功 / 100;
int kihon = 100+(giri)+(sikan)+(kunkou)-(aisyousa);
int chusei = p武将情報[iBID].忠誠;

if((kihon<100) &amp;&amp; (kihon>= chusei)){
continue;
}
if((kihon<100) &amp;&amp; (kihon < chusei)){
p武将情報[iBID].忠誠 = kihon;
}
if((kihon>=100) &amp;&amp; (chusei<100)){
p武将情報[iBID].忠誠 = 100;
}
if((kihon>=100) &amp;&amp; (chusei=100)){
continue;
}
}
else{
continue;
}
}

int iGTID = p軍団情報[p武将情報[iBID].所属軍団【軍団番号】-1].軍団長【武将番号】-1;
int aisyousa = Get_武将相性差(iBID, iGTID) * 11;
int giri = p武将情報[iBID].義理 * 5;
int sikan = p武将情報[iBID].仕官年数 * 4;
int kunkou = p武将情報[iBID].勲功 / 100;
int kihon = 100+(giri)+(sikan)+(kunkou)-(aisyousa);
int chusei = p武将情報[iBID].忠誠;

if((kihon<100) &amp;&amp; (kihon>= chusei)){
continue;
}
if((kihon<100) &amp;&amp; (kihon < chusei)){
p武将情報[iBID].忠誠 = kihon;
}
if((kihon>=100) &amp;&amp; (chusei<100)){
p武将情報[iBID].忠誠 = 100;
}
if((kihon>=100) &amp;&amp; (chusei=100)){
continue;
}
}
}
というコードのおかげで狂ってしまったことが分かりました。
ただ忠誠を変えようと思っただけなのに、何がいけなかったんでしょうか?
638.jp:2014/07/19(土) 12:35:13.17 ID:DhvoIw3e
>>637
3行目で、if(p武将戸籍情報[iBID].状態 = 1){

というように、、比較ではなく、代入をしているためと思います。
コンパイル時に警告がでていませんか?
639.jp:2014/07/19(土) 13:07:06.14 ID:DhvoIw3e
warning レベル4になってて出ないのかぃ。

「カスタム駆動関数.h」の2行目、

「#define _CRT_SECURE_NO_WARNINGS」 のすぐ下に

#pragma warning ( error : 4706 )

を追加してください。

それでエラーとなるようになります。

比較演算子が使われるはずのところに、代入演算子が使われている時の警告レベル4をエラーへと引き上げます。
次回ScenarioModで、同じ場所に追加しておきます。
640.jp:2014/07/19(土) 17:03:37.05 ID:DhvoIw3e
p大名情報[ p武将情報[iBID].所属大名【大名番号】-1 ].大名【武将番号】-1;

この記述も結構危ないですね。
p大名情報は 最大数::大名情報::配列数 までしかないわけですが、
「浪人」や「死者」は大名番号が255番になります。

p大名情報に 入れる際には、p武将情報[iBID].所属大名【大名番号】-1 が 最大数::大名情報::配列数 以下であるという確信が必要です。
(そうでなければ、ArrayOfBoundErrorで当然フリーズする可能性がかなり高いです。)
641.jp:2014/07/19(土) 17:07:56.53 ID:DhvoIw3e
ここも同様の危うさがあります。

p軍団情報[p武将情報[iBID].所属軍団【軍団番号】-1].軍団長【武将番号】-1;
642名無し曰く、:2014/07/19(土) 23:44:31.40 ID:h/1CVJgH
城製作の人、ひとつのマップでどれくらい時間をかけてますか?
ある程度増えたらZIPでまとめてくれると嬉しいです
643名無し曰く、
>>641
ありがとうございます!おかげでどちらも正常に稼働しました!