信長の野望 天翔記 改造綜合スレ6 [無断転載禁止]©2ch.net
>>52
ありがとうございます。名前の変更ができました
(戦闘時・メイン画面ともに確認)
外交戦の一環としては面白いかもしれませんが
確かに割譲や移動は手間がかかりそうな感じもします…
(友好を高めるメッセージを差し替えて、何かを要求・提案させるメッセージに変更
外交画面終了後に何かを実行する。時には無茶な要求ばかりするNPCも…) そう言えば三國志Vのフルカラーパッチも作られてますが
当てるとCD入れなくても起動するようになりますよね
天翔記でも出来ないだろうか 多分どこかのスレに誤爆した気がする...
>>54
■三国志5
http://天翔記.jp/?page=nobu_mod_the_san5pk_installer
「なんの話?」って人はこれとの比較の話です。
三国志5の方は、特に中心軸を担うようなMod文化が形成されていない状態だったので、
自由に出来たので、CDレスで起動するようになっています。
(BGMも鳴る。ムービーもコピーしておけば再生される)
■天翔記
天翔記の方ですが、ムービーをローカルにコピーっておけば、
「TSMod」もしくは「金パッチ」が当たっていれば、
「CDが無い状態」でも起動します。
※但し、BGMは鳴りません。
三国志5と違って
・普通にCD
・_inmm
・TSModでローカルから
・ScnearioModでリアルタイムに曲変更
・Vista以降、BGMがループしないのを直した処理がが思ったより複雑だった。
・Windows7とWindows8以降では、この辺の挙動が再度変わっている。
など奇怪なので、 互換維持のため諦めた感じです。
■金パッチは普通の定番シリーズに充てるのも可
TSModは導入したくないが、
「CDが入っていなくてもとりあえずは起動する状態にはしたい」という場合、
特に記載はないですが、金パッチを定番シリーズに当てることで、
そのような状態に出来ます。
(上述しましたが、CDが入っていないとBGMは鳴らなくなるが、プレイは可能。効果音などは鳴る)
この場合は、CDの「MOVIEフォルダそのもの」を、天翔記フォルダへとコピーしてください。
(天翔記フォルダのサブフォルダとしてmovieフォルダが来るようにする) 三國志5も色々改造してくれたら嬉しいなぁ
忙しそうだし無理そうだが
フルカラーパッチはありがたかった 誰か大航海時代3をフルカラー起動するようにしてくれんかな。
って、スレ違いすまそ。 >>61
奴隷発見やライバルを一騎打ちで行動遅らせれる初期ロット版を
フルカラーでやりたいだよ・・・。 スレチだけど三國志5のフルカラーパッチありがとう
天翔記並みに弄ってくれたらいいのになw 三國志Xは2ちゃんのスレ民にデバッグさせてエディタを
シェアウェア販売してる馬鹿が沸いてマジドン引きだわ
その点.Jpさんとかは良心的だよ >スレ民にデバッグさせてエディタをシェアウェア販売してる馬鹿
クソすぎるww シェアウェアっていうのがいけないのが、あのスレを見ていて思った感想
せめて無料であれこれ、というのが
それはともかく、鉄砲攻撃にさらにメリハリが欲しいと云う気持ちも
射撃準備にターンが必要とか、他部隊もろとも即死させるとか、
魔術師(好きなもので良し)にだけ効能のある銃弾とか
jpさんの方で、現在温めてるアイディアとか、実現できそうなものは
ありませんでしょうか? >>67
今のところ、別プロジェクトの方に注力しているので、天翔記系はあまり考えていません。
■鉄砲ではないですが、射撃がらみだと、
「大砲を自分自身に打つ」ということを使えないか、ということは考えていました。
本来の天翔記で0距離射撃をすると、0除算でエラーになるのですが、
その1行だけアセンブラをするーさせると、自分自身に大砲が打てます。
当初考えていたのは、回復専用ユニット(キャラ)系なら、
戦場ユニット配置が特定の条件を満たすと、
「大砲」の項目に「回復弾」とか「超回復」的な意味の項目へと変化し、
自分自身も含めたユニット選択が可能となり、
対象のユニットを中心とした「範囲回復効果」を得るということを想定していました。
(自分自身が一番回復し、周囲のユニットも準効果で回復する)
■他
ScenarioModは、C#ベースに変更にして、マルチスロット可能にしたほうがいいのでは…
ぐらいです。 >>67
ありがとうございます。
>当初考えていたのは、回復専用ユニット(キャラ)系なら、
>戦場ユニット配置が特定の条件を満たすと、
>「大砲」の項目に「回復弾」とか「超回復」的な意味の項目へと変化し、
>自分自身も含めたユニット選択が可能となり、
>対象のユニットを中心とした「範囲回復効果」を得るということを想定していました。
>(自分自身が一番回復し、周囲のユニットも準効果で回復する)
自分も、範囲回復の部分は何度も作り出していますが
任意での発動まではできていませんでした(現状ではNPC限定。ターン変更時に行われる自動発動)
回復以外にも、一定ターンの暗殺無効化などもどうでしょうか?
鉄砲を自信に射撃できる(アセンブラを通さないことが出来るかわかりませんが)
ことはscenariomodでもできそうでしょうか?内容部分は色々と自分で書いてみます 自分が以前、練っていた範囲回復の変形は以下の感じです
@範囲回復(職業/血筋/相性値などを参照。混乱回復などもあり)
@範囲攻撃/防御up(数ターンのみダメージを一定カットor増加。ターンごとにカウントを入れて0になったら無効)
@暗殺無効化付与(上記の変形。暗殺以外のコマンドでも可能)
@火炎地形を消す、消火剤(時代に合致するか別として。)
防御upとは違いますが、耐性をもたせるというのは何処かでやってみたいところ
「効能のある銃弾」の変形みたいな感じですが、「ネコ科の攻撃を68%減衰させる
耐性」がある人物が自信へ射撃した場合、青いネコロボットでもサーバルでも、井伊直「虎」でも、
ジャガー戦士部隊も、「獅子」心王という異名のリチャード1世の攻撃すらも減衰させる感じです。
上記の例えはエスカレートしすぎた例ですが、忍術で魔術師からの攻撃を守る手立てもありかも…? >>68
>今のところ、別プロジェクトの方に注力しているので
何やってるんだろう気になる こっちのスレで良いのかな
三國志vのフルカラーキットありがとうございました そういえば、
昨日、藤井将棋棋士の試合をぼ〜っと見ている間に、
フルカラーキットの顔グラを、HD版の追加顔グラとして、
全部入れたのを朝サイトにアップしたのを忘れてましたー。
(自動化しても2時間ぐらいかかった。オリジナルより2つ顔グラが増えてるので「あれれ?と手動が必要になったのが…」)
http://天翔記.jp/HD.ver?page=HD_nobu_image_hdsdk_change_fullcolor_face
HD版の顔グラはちょっとバストアップになっていてインパクトや統一感に欠ける。
かといって、95版そのままの顔グラってのも「う〜ん、全体がフルカラーになった分浮いてるねぇ」という感じ。
そこで、「ちょうどいい塩梅のものはないものか」って人にオススメ。
該当ページから、
あ) 「version.dll」「HD.version.dll」「User.version.dll」 → 天翔記フォルダに
い) それ以外の「*.N6やtxt」など ⇒ C:\Users\%USERNAME%\Documents\KoeiTecmo\NOBU6HD\GRP へと上書き
該当ページに画像があるので、概ね雰囲気は掴めるかと。
フルカラーキットにあるのと同じ、
・1300人の武将
・歴氏姫・架空姫全て
・商人・朝廷・伴天連・披露にやってくる人・農民
が入れ替わっています。
・元の天翔記HDに内包されている顔グラデータを壊しているわけではないので、
Steamとかで、「ローカルと同期」とかやっても
「顔グラ戻った」やり直さなきゃとかになりません。
・どの顔グラが何番なおのかは、HD版の付属ツールである、顔グラ追加ツールで全部見れます。
(そのデータを差し替えれば、ちゃんとそれに変わるー) 今更、というか自分でしなくてはいけない事なのかも知れませんが
通常攻撃後で兵数0→そのまま戦死処理というのはできそうでしょうか
(それこそ、On_被ダメージ時の時に行うべきかも知れませんが)
兵数0になった段階で指揮官だけ何があっても死なないのに違和感を感じたり
どのシリーズでも大抵はそうだったかも知れませんが 以下の「攻撃された側が兵数0になった時に退却する処理」
00432020 |> 56 PUSH ESI
00432021 |. 57 PUSH EDI
00432022 |> E8 71F5FFFF CALL TENSHOU.00431598
00432027 |. 83C4 08 ADD ESP, 8
のところを、
以下のように手動で書き換えると、
ちゃんとセリフ付きで死ぬので、機能やタイミング的にはいけるでしょう。
00432020 |> 56 PUSH ESI
00432021 |. 57 PUSH EDI
00432022 E8 91F6FFFF CALL TENSHOU.004316B8
00432027 |. 83C4 08 ADD ESP, 8
ただし、ゲーム的には差別化されているからこそ、
死ななくしてあるハズです。
最悪死んでもいい → 突撃や鉄砲で蹴散らす
死んでは困る→通常攻撃で捕縛トライ
というように使い分けるようになっているわけなんですが、
とはいえ、5%でも10%でも死亡してしまうとなると、
捕縛トライに緊張感が出るのは事実かも。 ありがとうございます。
>>75の内容はどの辺に入れればいいのか、Tsmod内に書き足したほうが良いのでしょうか…
確率的には常時ではなく、5〜10%程度でNPCの架空武将は30%程度と考えていたりします
参考になりそうだと感じたのは以下のレスでした
http://kohada.2ch.net/test/read.cgi/gamehis/1338641149/666-670 >>76
TSMod で実装し、デフォルトでゲームを崩さない範囲で死亡するようにしました。
あと、ScenarioModでは、極端にコントロール可能です。
TSMod →
「通常」「一斉」「その跳ね返り」での兵数0時に〇〇%ぐらい死亡します。
・極端に差がある武将(戦闘力200級と戦闘力50級)だと、25%ぐらい。
・互角の武将だと、6%ぐらい。
ScenarioMod →
今までのバージョンで編集可能。
http://天翔記.jp/?page=nobu_mod_the_snmod_methodref_on_custom_normal_attack_heisuu_zero_sibou
(攻撃者、非攻撃者、死亡予定、普通攻撃or一斉攻撃) の情報を元に、死亡率を制御できます。
攻撃者の戦闘力、所持兵数、地形高差、非攻撃者の隣接ユニット状況、海面かどうか、などまで
考慮すると、結構丁寧に処理できるように思います。
突撃死亡可否、鉄砲死亡可否、弓死亡可否、を高めに設定しているのだれば、
これも高めに設定すれば、武将の入れ替えが早い天翔記にすることも出来るでしょう。
今のところ、戦場を「見ていない」状況では、この処理には流していません。
(見ていない時は、通常攻撃と一斉攻撃と突撃とかの差がないので。
見ていない戦場において、「死亡はしなかったが退却・捕縛になった」際に、この死亡判定に流すことは可能だけども…) う〜む、「死亡頻度」が多い、に設定されている時限定にしようかねぇ。
設定と相反する機能になってしまってるから。 >>78-79
ありがとうございます。
自分の環境下では、顔グラ数を増やして登録していますので
GitHubからTsModのソースコードをダウンロードしなくてはならないのですが
そちらの方にはないみたいです。何度もすみません…
(Tsmodを更新しないと、ScenarioModでも編集できなさそうなので…) >>82
Gitにあげておきました。
プラットフォームセットが VS2013相当( v12 ) でない
場合は、
onigurumaのプロジェクトの方を先にコンパイルして、
出来上がったoniguruma.libを、
TSMod/oniguruma/oniguruma.lib の位置に上書きしておく必要がありそう。
boostライブラリはすでに使ってないと思います。
(VS2013にあげたときに、BOOSTは不要になった) >>83
ありがとうございます。ダウンロードしてから
Tsmod・ScenarioModともに動作を確認できました すみません。初歩的な質問です。
TSModを導入し様々な改造をしてとても便利に進歩したのですが
セーブが出来ません。
他の事はなんとか解決したのですがセーブが出来ません。
過去ログや天翔記jpなどは目を通しました。
助言を頂けないでしょうか? すみません。自己解決しました。
ヘルプのあるバーが上の端をドラッグする事で、でてきました。
終了のコマンドもそこにありました。
セーブは機能から選択できる事にやっと気ずきました。
スレ汚し失礼しました。 >>86
2日連続で同じことするなよ。
お前本当に馬鹿だな。 >>85
メニューが自動的に隠れることについては、
http://天翔記.jp/?page=nobu_mod_the_tsmod_detail_env
の2番目、
「タイトルバー」と「メニューバー」を隠す機能
のことです。
若干該当ページ、該当部分の説明に誤りがありますが、
・ウィンドウの上部境界付近あたりを「クリック」することで出てきます。
(普通ならタイトルバーとかキャプションバーとか言われる部分)
・もしくは、「メニュー」というかしら文字Mということで、「CTRL+M」を押すことでも、
出したり消したりできます。
他には、
・TSMod.iniの「environment_no_titlebar_and_menubar」の項目の「1」を「0」にすると、
そもそも隠れなくなります。(天翔記の本来の挙動) 他の終了方法
@ ALT+F4 ← 他のソフトと共通。
A ゲーム内で機能→終了→(セーブ選択)→ゲームを終了する を選択 >>88
>>89
遅くなりました。ありがとうございました!!!
それです!!!
天翔記jpには大変お世話になりました。
様々な改造をしてプレイ中です。素晴らしいです。
ただただ感謝です。 通りすがりで失礼いたします。ScenarioModを用いた際、挙動が意図しない物ではないかと疑わしき個所を見つけましたので
報告いたします。当方で愚行した結果改変したソースコードも記載します。元のソースコードはコメントアウトした部分です。
@武将情報型.cpp 216行目
// 鉄砲の適性を数値で設定する。(0=E,1=D,2=C,3=B,4=A,5=S 鉄砲適性::S 〜 鉄砲適性::E で設定すると良い)
void Set_鉄砲適性( int 武将番号【配列用】, int 鉄砲適性値 ) {
// 範囲チェック
if ( 0 <= 武将番号【配列用】 && 武将番号【配列用】 < 最大数::武将情報::配列数 ) {
// 範囲チェック
ココ→ if (鉄砲適性::E <= 鉄砲適性値 && 鉄砲適性値 <= 鉄砲適性::S) { //if ( 鉄砲適性::E <= 鉄砲適性値 && 鉄砲適性値 && 鉄砲適性::S) { ←2017.2.19記述ミスなので修正
// 鉄砲は2つのフィットフィールドに分かれてしまっているので、計算
p武将情報[武将番号【配列用】]._鉄砲適性_hi = 鉄砲適性値 & 0x0003; // 0b000000HH
p武将情報[武将番号【配列用】]._鉄砲適性_lo = 鉄砲適性値 >> 2; // 0b00000L00
} else {
デバッグ出力("鉄砲適性値は範囲外");
}
} else {
デバッグ出力("武将番号【配列用】は範囲外");
}
}
症状:武将の鉄砲適性値だけはSet_鉄砲適性を用いても反映されませんでした。 Aダイアログ情報.cpp 1128、1134、1136、1137行目
void _SelectBushouDialogAsm() {
__asm {
push 0
push 0
push 0xFFFF
push 0xFFFF
push 0
push iFilterExOptionOfSelectBushouDialog // 33bit目以降の拡張オプション
push iFilterOptionOfSelectBushouDialog // フィルター値
push 1 // 選択可能数(但し武将を複数選択する要件はないはず)
push 0x4DBD40 // WORDで武将の番号の配列を格納してる場所。最後0xFFFF
call pCallFromFuncSelectBushouDialog
add esp, 0x24
cmp eax, 1
ココ→ //jnz labelEndOfFuncSelectBushouDialogAsm //2017.3.19戻り値が初期化されないのでgoto削除
push 0
push 0x4DBD40
call pCallFromFuncSelectBushouDialog2
mov iReturnOfSelectBushouDialog, eax // これが実際の選択武将番号
ココ→ add esp, 0x08//0x8 //2017.3.19戻り値が初期化されないので念のため変更
ココ→//labelEndOfFuncSelectBushouDialogAsm: //2017.3.19戻り値が初期化されないのでgoto削除
ココ→// ;
}
}
症状:「選択武将ダイアログ表示」の
/// <para> 選択した「武将番号【配列用】」が返ってくる。</para>
/// <para> 何も選択しなかった場合、0xFFFFが返ってくる。</para>
の戻り値が不正でした。(例:どの武将を選択しても織田信長の武将番号が返ってくる) 最後に要望を載せさせていただきます。
1.戦場での残りターン数は変更できるようにできないでしょうか?
一度の戦争に時間がかかるので、戦争は10ターンくらいにしてプレイヤーの負担を軽くしたいと思っております。
2.挑発や混乱などの技能や、大筒などの発生処理をプログラム側から任意に呼び出せるようにできないでしょうか?
大阪城に大筒を打ち込むイベントを実装できればと考えております。
3.鼓舞や暗殺を戦略画面や戦場画面でCOMを含め使用不能にすることはできませんでしょうか?
兵糧が尽きているのに籠城しているCOMが鼓舞連打するのは少し違和感があります。
4.新規武将を大量に追加する場合、プレイヤーが任意で登場させる武将を選べるようなUIは実装が難しいでしょうか?
現状複数の武将を選択できるUIは「選択武将ダイアログ表示」のみで、ゲームに登場していない武将は
「番号リスト型 武将番号【配列用】リスト」に載せられないため、最近の信長の野望にあるようなゲームに登場させる
追加武将の個別選択機能を実装することが難しいです。
以上駄文失礼しました。 Win10 Home 64bitで久々にプレイしようとしたのですがBGMが鳴りません
所持しているのは定番シリーズ「天翔記 with PK for Windows95」。
「DEAMON Tools」のサイトに行きDL、インストール。
イメージ化した「天翔記 with PK for Windows95」をマウント。
「天翔記.jp」さんの「天翔記のインストーラー」の項目にて「Ten95PK_installer」をDL、実行してインストール。
作成された「_Tenshouki95」フォルダをDドライブに移動。
「ModUpdater.zip」を解凍し、「ModUpdater.exe」「ModUpdater.ini」を「_Tenshouki95」フォルダにコピー。
「フル効果音キット」の項目にて「n6pwav.zip」をDLし、「n6pwav.dll, n6pwav1.dll, n6pwav2.dll, n6pwav3.dll」をコピー。
「ModUpdater.exe」を起動し、「更新」。
「TENSHOU.EXE」を実行し、起動するもBGMが鳴らず。
という感じです。ノートンの警告で削除された場合は復元してスキャンの除外をしました。
一年前は同じこのPCでプレイしていたのですが‥何か見落としがあるのでしょうか。
どなたか知恵を貸してください m(_ _)m 一回アンマウントして左下のクイックマウントからマウントしてみ >>95
クイックマウントですね。やってみます
通常マウントとは違うんですかね 音が出ない系は、音声ドライバがお亡くなりになってたりするのはよくある話。
また、BT スピーカー(またはイヤホン)や、USB DACとかを使うと、設定のメインのドライバが変わってたりする。
こちらもよく陥りがち。 結局鳴らなかったのでドライバ関連かもしれませんね
同じWin10とはいえ、WindowsUpdateで環境変わるのでそれが原因かもしれません
ありあがとうございました >>91
バグ報告ありがとうございます。
91の鉄砲の範囲チェックの記述ミスについては、修正しました。
92については、
「武将を1人も選択しなかった際の返り値」が不正というのは確認出来たのですが、
(過去一度もこのダイアログ関数で選択したことがなければ0、
選択したことがあれば、その過去の結果値が返ってました)
武将を選択した際の値も常に特定値というのは確認出来ませんでした。
とりあえず、不具合が確認出来た範囲については修正しました。
(武将ダイアログについては、これでもダメなようなら、jmpしてる部分をカットせざるをえないかも) >>93
戦争のターン数については、天翔記、TSModともに、30あることを一応想定した作りになっているので、
maxが少ないことは、今のところは、前提としていません。
(数か所書き換えていけば、綺麗に10ターンになったりはするとは思います。)
どうしても少なくしたいということであれば、ScenarioModの層であれば、
「残りターン30」というのは、天翔記もTSModもいろいろやるので、29ターン目
で一気にワープさせるような感じにする
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
if (15 < 残りターン数 && 残りターン数 < 30) {
BYTE *pUsedTurn = (BYTE *)0x4BB4D2;
*pUsedTurn = 22;
}
}
とかにすれば、残り29ターンになった時に、22ターン一気に消費されるので、
戦争全体が10ターンぐらいになろうかとは思います。 >>93
4.については、基本的にダイアログは、
「既定のメモリ位置に、既定の情報」として構築されていないと、
天翔記本体のUIとして表示するのが困難となってしまうので、
やはり、
「武将に関する情報を一旦退避」
「仮で武将を多数誕生」
「ユーザー選択」
「退避してあった情報を戻す」
「ユーザーが選択した武将情報を元に本当に生み出す」
といった手順しかなかろうと思います。
以下は全部組んでるわけではないですが、
「一旦武将関連退避」「多くの新武将達から選択するUI」「結果を控え」「武将情報を元へと戻す」を
実装したもの。
https://dl1.getuploader.com/g/5994231e-e340-40ce-95b2-6b3ea010e467/7%7Cnobu6/499/カスタム駆動関数.cpp >>101
157行目のの「 p武将戸籍情報[i].状態 」は 「p武将戸籍情報[i].状態 == 状態::死亡」 の間違い >>93
「3」の暗殺については、丁寧にTSModでやるなら、別として
・ScenarioModでやるなら、p武将情報[i].暗殺
のフラグをこまめに降ろすしかなかろうと思います。(軍団ターン変更時とか)
(AI的にもこれがベスト)
・暗殺自体が発動しても、効かないようにするなら、On_カスタム条件でやってください。
・暗殺は技能としては有効なまま、一切発動しないようにしたい
TSMod層では可能ですが、ScenarioMod層では難しいかと思います。
鼓舞については、命令をPC/NPCから(条件を付けて)取り上げてしまうことは可能ですが、
AIの修正が多分無理です。
(鼓舞する代わりに、多分その時、何もしないことになってしまう) 「2」挑発や混乱などの技能(鼓舞も含む)、
(行動済みユニットも含め)、その命令をプログラム側からある程度任意に呼び出すことは、
多分可能です。
しかし、TSMod層でも正しくは把握していません。
PCの場合は、TSModのOnSelectingAbilityInBattle.cpp あたりから追っていくと多分追えます。
NPCの場合も似たようなところがあるハズですが、そこから調査からする必要があります。 >>98
まず、TSModではなく、「普通の天翔記wPK」で音が鳴るかどうかチェックするのをお勧めします。
・「DEAMON Tools」のサイトに行きDL、インストール。
・イメージ化した「天翔記 with PK for Windows95」をマウント。
・「天翔記.jp」さんの「天翔記のインストーラー」の項目にて「Ten95PK_installer」をDL、実行してインストール。
(この方法は、いくつ天翔記をインストールしても問題ないです)
これで該当の「C:\_Tenshouki95」フォルダの天翔記は、音がなるのか、鳴らないのか、
鳴らないのであれば、TSModのCD経由オプションでは音が鳴らないです。 >>.jp様
迅速な対応ありがとうございました。
92について選択した武将の戻り値が返ってこないというのは当方の勘違いで.jp様のおっしゃる通り
>>(過去一度もこのダイアログ関数で選択したことがなければ0、
>>選択したことがあれば、その過去の結果値が返ってました)
が確認した症状でした。面目次第もござりませぬ。
要望についても丁寧にご回答いただきありがとうございました。
当方では皆目見当もつかない状況でしたので助言に従い処理の該当部分を探ってみようと思います。
>>101様
「武将に関する情報を一旦退避」という発想自体がなかったです。
手順を示して頂いた上、わざわざソースコードまで上げていただいてありがとうございました。
有難く参考にさせていただきます。 新武将作成のとき、槍や弓を持ってる武将を作れないですか?ランダムで決まるのかな? 史実武将については、1300人分のデータを持っていて、
対象武将が史実を超えたカスタムがされていない限り、
値がセッティングされます。
(顔番号が一致して、史実範囲内とおぼしき姓名の修正に留まっていれば)
一方、ゲーム内での「新規武将」については、槍・弓の類はセッティングしてないので、
常に「両方E」ですね。
@ScenarioModなどに出している武将作成関数と似たような感じで、
セッティングされるようにした方が良さげですねぇ。
Aゲーム内UIで編集出来ればいいけど、どうかなぁ、
パラメータを気楽に増やしにくくなるかも。
@は近々に実装しようと思います。
Aは出来るかどうか、ゲーム内UIそのものをそのまま利用したボタンを加え、
呼び出し機能をくっつける必要などもあるので、やってみないとわからないレベル。
ちょっと検討してみます。 20年も前のゲームなのに未だに遊べているのは
神パッチとTsModのお陰だ
いまは将星録から顔グラひっぱって来て遊んでいる。
将星の顔グラは将星オリジナル、天翔記、覇王伝の顔グラが程よく分散していて
この時代の顔グラ好きにはたまらん
登場人物の少なさが欠点だけどね >>108さん
「両方E」ってどういうことでしょうか? 足軽〜鉄砲の各兵態にS〜Eがあるように、
槍と弓もS〜Eをもたせてあります。
ちょっと出先で確認出来ないですか、
B以上で初めて弓が打てる〈足軽兵態の時、弓隊になる〉と記憶してます。 義に殉じて死んだ人(三成、長政)とか義輝とかが 智謀Cなのが嫌なので
毎回ゲーム開始時に能力いじってるんですが常に変更するようにいじることできるんですか? 現在、作業環境消失のため詳しくかけないけど
>>111は
http://xn--rssu31gj1g.jp/?page=nobu_mod_the_snmod_methodref_on_startmaingame
void カスタム::On_メインゲーム開始()のタイミングの時に智謀
void カスタム::On_メインゲーム開始() {
for ( int Unit=0; Unit < 最大数::武将情報::配列数; Unit++ ) {
if ( p武将戸籍情報[Unit].顔番号 == 顔番号::石田三成|| p武将戸籍情報[Unit].顔番号 == 顔番号::浅井長政||
p武将戸籍情報[Unit].顔番号 == 顔番号::足利義輝) {
p武将情報[Unit].智謀適正 = 2;
}
}
}
智謀適正のところはこれでBになるはず。
智謀適正をイベントや何やらで上下したいときはまた色々必要になるような
新武将は編集のところから作れる(デフォルト)
選択ダイヤログをうまく工夫すれば「自分で新武将を作る」ことも出来るが
戦国時代に似合わないので割愛 >>114
ありがとうございます
適正だけじゃなくて能力値もそんな感じでいじれるんですか?
あと新武将も新しく始めても、最初からいる状態にしたいのです >>115
もちろん可能です。
http://天翔記.jp/?page=nobu_mod_the_snmod
の
・主に出来ること
⇒ 戦略画面や戦争画面の様々な値の取得や書換
内のの「武将」に相当します。 皆さんお久しぶりです。CHRです。
ずっと多忙だったのですが、久々に天翔記の改造に着手しました。
皆さんC言語とか扱って別次元に行かれてる中、自分はシナリオのエディットくらいしか出来ませんが、今回は創造PUKの武将能力を天翔記に変換して移植するという作業をちまちま行っています。
織田信長の場合、
政治→政才:100(x2)
武勇→戦才:89(x2)
知略→智才:94(x2)
統率→魅力:99(x2)
のように変換予定です。魅力の値は、もう本当に統率に書き換えて割り切ります。
勇猛の値は、(武力+統率÷2)-10÷100で切り捨てようかなと思っています。
(数学が非常に苦手な為、計算式の書き方を間違えていたらすみません)
義理の数値は天翔記は高いほど裏切りにくいですが、創造は逆なので反転させる予定です。
計算したら信長の武統の値が8.95になると思うので、勇猛の値を0が1、8が7で埋める予定です。
戦法や兵科適正についてはまだ何も考えていないので、OpenOffice 4.1.3(Excel持ってない&使い方ほぼ知らないので互換アプリ)で武将のデータを作成しながらちまちま考えていく予定です。
上手いこと能力の移植出来たら、武将も創造から大量に引っ張って追加、シナリオ移植なども考えています。
以上、近況の報告でした。 >>115
ありがとうございます
新しく1から新武将を作るやり方をお聞きしてもよろしいですか?
すみません… あと連投本当にすみません、勇猛の値についての説明、雑過ぎたので再度。
信長の値が8.95になるので、この8という数字は天翔記のエディタでは-1で入力して、信長の勇猛は7にします。
あと思考に関しては、
【0】才
【1】利
【2】義
【3】家
【4】道
【5】家
【6】創造
に変換予定です。思考6は凡愚なAIだそうで、創造主義は信長だけなようで、信長だけに搭載予定です。
一新された天翔記の能力の中、高い能力で思考6の信長、うつけになるか鬼才になるか、楽しみにしています。
本当に何度もすみません。それでは。 >>119
新武将の生成は「Set_武将誕生」関数を使えばOK
※手元の環境が古いので現在と違う部分がある可能性あり
https://u7.getuploader.com/nobu6/download/488
相場変更直前に、所属血筋1の勢力に生成される(テストなので能力)
https://u7.getuploader.com/nobu6/download/481
1回だけ生成したい場合はこっちを参考に。あまり多くするとゲームの読込が
遅くなるので注意(3000人追加したら数分かかった事が)
組み合わせによっては、チンギスハン4みたいに自分で追加コマンドを作って
在野から登用も可能
手元の環境が復帰次第以下の動作も確認の予定
・大名死亡直後に、該当コマンドを実施して生成された場合に彼を後継者とする「大名の遠縁」が出来るか
・「戦闘中」に「篭城中の勢力」が「攻城中の場所を居城」とした武将生成が出来るか
・過去に死んだ人物を記録して、そのデータを参照して、復活が出来ないか
(1561年に死んだ人物が1690年に復活。滅亡させた勢力の名前や人物の名前を記録して
特殊メッセージとして流させる。それ自体は出来るのはわかるが実際のテストは今だなし)
あとはヒッソリとやっていたのは
革新よろしく、戦法を色々練っていたりという感じです(自暴自棄になって革新PKで遊び続けた産物)
ターン経過時/残りターン変更時に発動(下に行くほど上位職業向けの戦法)
http://xn--rssu31gj1g.jp/?page=nobu_mod_the_snmod_methodref_on_turn_change_in_field_battle
http://xn--rssu31gj1g.jp/?page=nobu_mod_the_snmod_methodref_on_battle_damaged
◆今、与えたダメージの0.5〜2倍をさらに与える兵科戦法
◆一定の確率で士気を大きく下げる戦法
◆攻撃ではなく、政治や技能の有無でダメージを決める特殊攻撃
◆ダメージを大名の官位や国力から決める特殊攻撃
◆敵に与えたダメージから一定の兵数を回復するドレイン攻撃
◆敵勢力の兵数・士気・訓練をシャッフルする特殊攻撃etc... >>122
まさに追加したいと考えていた信尹がモデルとは…
これで武将追加して、武将列伝でいじれば出来るですかね
ちょっと家に変えるのが楽しみになってきました ID:GLQP3PmM です
int iCastleID = 0;
int NodoubleCheck = 0;//◆東西武田氏など、ないと思うが
for (int 軍団番号 = 0; 軍団番号 < 最大数::軍団情報::配列数; 軍団番号++) {//●武田氏の本拠地データを吸い取る
int iGundanLeaderBushouID = p軍団情報[軍団番号].軍団長【武将番号】 - 1;
if (0 <= iGundanLeaderBushouID && iGundanLeaderBushouID < 最大数::武将情報::配列数) {
if (p武将戸籍情報[iGundanLeaderBushouID].状態 == 状態::大名) {//◆軍団長はリーダー
if (NodoubleCheck == 0) {
if (p武将情報[iGundanLeaderBushouID].所属血筋 == 1) {//◆◆所属血筋が1の勢力である場合…(武田氏)
iCastleID = p軍団情報[軍団番号].所属居城【城番号】;//◆◆◆所属血筋1の所属居城
NodoubleCheck++;//1回居城を決めたらもうしない
}
}
}
}
}
メモリエディッタから真田家の血筋を調べたところ、42でした
なので、
p武将情報[iGundanLeaderBushouID].所属血筋 == 1 の1を42に変えたところ、武田になりました
1は北條、2は上杉、21は里見 とこれの法則性が見つけられません
どう設定されているのでしょうか もう分からないから単純に戸石城を直接居城に設定して無理やり解決しました… >>124-125
上記のコードは昔書いた物で、甲斐武田家に仕官することを想定しています
(汎用性がないので、一門の筆頭者のいる城に仕官する方式に変更する方が良いかも?
これにより架空武将の場合でも史実武将同様の歴史を作れる)
for (int 軍団番号 = 0; 軍団番号 < 最大数::軍団情報::配列数; 軍団番号++) {//●武田/真田氏の本拠地データを吸い取る
int iGundanLeaderBushouID = p軍団情報[軍団番号].軍団長【武将番号】 - 1;
if (0 <= iGundanLeaderBushouID && iGundanLeaderBushouID < 最大数::武将情報::配列数) {
if (p武将戸籍情報[iGundanLeaderBushouID].状態 == 状態::大名) {//◆軍団長はリーダー
if (NodoubleCheck == 0) {
if (p武将情報[iGundanLeaderBushouID].所属血筋 == 1) {//◆◆所属血筋が1
iCastleID = p軍団情報[軍団番号].所属居城【城番号】-1;//◆◆◆所属血筋1の居城
NodoubleCheck++;//1回居城を決めたらもうしない
} else if (p武将情報[iGundanLeaderBushouID].所属血筋 == 42) {//◆◆所属血筋42の勢力も存在する場合
iCastleID = p軍団情報[軍団番号].所属居城【城番号】-1;//所属血筋42の居城
NodoubleCheck++;//1回(ry
}
}
}
}
//真田氏も武田氏も存在しない場合は、血筋42の居城に身を寄せる
//ただし相性などによっては寄せない場合もあり、簡単な処理なので複数に血筋42武将が拡散された場合はどこかに飛ぶことになる
if (NodoubleCheck == 0) { //◆武田も真田も存在しない場合
for (int 武将 = 0; 武将 < 最大数::武将情報::配列数; 武将番号++) {
if (p武将情報[武将].所属血筋 == 42) {//◆◆所属血筋が42
iCastleID = p武将情報[武将].所属居城【城番号】-1;//◆◆◆所属血筋42の居城
}
}
} ちなみにシナリオエディタで血族関係を見ていると
1が武田、2が長尾となっています
天翔記の血筋は255までしか無いので出てこない人物の血筋実装は
拡張セーブデータで「血筋256」を独自に作っていく必要があります
http://xn--rssu31gj1g.jp/?page=nobu_mod_the_snmod_update
v2.6.5.0 ⇒ v2.6.5.1のところが参考になります
struct 武将情報EX型のところに色々追加していけばほぼ無限に広がると思います
例として、血筋256〜1000までは未登場の人物、1001〜9999は架空武将の血筋となり
自動生成時に埋めていく方式です(名前も親から一文字貰う機能も付けた方がいいかな) ありがとうございます、やっとできました!
感謝します。
質問ばかりで申し訳ないですが、例えば1560年の真田幸隆をシナリオ選択時に独立した状態にして
大名として選択することは可能でしょうか >>128
現在のScenarioModではそこまでは不可能なので
シナリオエディタで色々改変する必要があります
http://1st.geocities.jp/emn_projects/index.html
登場武将の居城や所属軍団の設定をうまくやらないといきなり死ぬ可能性があるので注意
(未登場武将の仕官先も変えないといけない)
ちなみに、後継者の決め方も工夫できます
http://xn--rssu31gj1g.jp/?page=nobu_mod_the_snmod_methodref_on_custom_koukeisya_bushou
上の例は、固有の人物を設定していますが
大名と相性の良い人物や能力が極めて高い人物、「忍者衆の場合、忍者が後継者」ということも可能です
https://www19.atwiki.jp/nobu6/pages/39.html
参考:大名の後継者の決め方について >>128
これについては、明日のTSMod/ScenarioModで可能とします。
シナリオ開始時、もしくは、メインの戦略画面のほぼいかなるタイミングにおいても、
@大名内における軍団の新設
A軍団まるごとの大名としての独立
が出来るようなAPIを提供します。
この@とAを組み合わせることで、「とある大名の普通の武将」→「軍団長へ」
「軍団長」→「大名へ」というのが可能となります。
(ローカルでは出来てるので、記事とか説明文を明日アップする形) >>130
ありがとうございます
勢力裏切りイベントなどで使えそうです
軍団新設時の城の分配や、「軍団まるごとの大名としての独立 」とは反対の
「大名勢力をどこかの軍団に編入させる」ことは出来そうでしょうか?
(軍資金で勢力を合併。というアイディアも暖めていたり) 忠誠度と配属年数が何度やっても設定されない…
それと生年がよくわからない 西暦の値-1454 で設定するのはわかったけど
なんか思った数値にならない >>132
設定した直後の行とかで、
「デバッグ出力 << p武将情報[〜].忠誠 << endl;」
をあちこちに書いて、
値が変わってるか確認した方がいいです。
何カ所に張って、設定したはずの数値が、何かの関数の呼び出し後戻ってるかもしれない。
例えば、「忠誠度」や「士官年数」を設定した後で、
「Set_武将転居」とかで武将を違う大名家に飛ばしてしまってるなら、
当然「忠誠度」や「士官年数」は別の値に上書きされてしまうことがある。
年齢はGet_年齢() の関数の逆をすればよいのだから
int check = p年情報.年 + 1 - 年齢;
p武将情報[iBushouID].生年 = check;
ただし、このcheckが0〜255である必要があって、これは
つまるところ、(天翔記基準年の値自体を変更してない限り)
計算の結果として、
・「1455年生まれより、前に生まれた人」に設定することはできないし
(例えば、1540年の段階で150歳とかには出来ない)
・「1708年生まれより、後にうまれた人」に設定することもできない
という制限が付くということです。
一応、Set_年齢( iBushouID, 年齢) という関数もたしときます。 >>131
解体は出来るかどうか、調べてみないとわかりません。
軍団新設や大名への独立は、必要な部分のデータの辻褄を合わせればできますが、
解体は、「大名、あるいは、軍団がからむ、天翔記の全てのデータのリセットと掃除」の部分をやらねばならないので、
難易度が跳ね上がります。
・大名の解体は、ゲーム的に存在しないので、難しいかも
・軍団の合流は、ゲーム的に存在するのでその天翔記の関数が流用できればいけるかも。
ゲームが始まってないようなシナリオデータ段階であれば、
「今回提供する関数の逆のことをやればいいだけなんだけど、
ゲームが始まってしまっていると、話の次元が全く変わる感じ
特に「軍団の思考のデータ」「大名の思考のデータ」が把握できてないし、
他にも必ず数点あるはず。 ScenarioMod が更新
・http://天翔記.jp/?page=nobu_mod_the_snmod_update
今回久々にイベントハンドラが追加されています
・http://天翔記.jp/?page=nobu_mod_the_snmod_methodref_on_selectscenarioafter
このイベントハンドラは要するに
「既存のシナリオデータを壊すことなく、ScenarioModで一部修正をする」
しかも、その修正した状態に基づいて、「大名選択」等が行える
みたいな 目的に非常に最適なものとなっています。
ちなみに、例Cに
・1560年、シナリオ3の(ユーザーが大名選択する段階からすでに)、
真田幸隆が大名として独立した状態となっている。
という例も含まれています。 >>134
確かにリセットの部分を入れ込むと処理もかなり多くなると思います
大名の解体は、脅迫で勢力を取り込む所から思いつきました
軍団の思考データというのもあるのは始めて知りました
武将個人の思考とはまた違う感じの様な気もします
解体は現役全員を浪人にして、浪人に出来ないのは一時的に死亡処理・・・して
勢力滅亡という形で色々してみます
>>135
ありがとうございます
軍団配下の城移転も出来そうです
直接確認はまだ出来そうにありませんが、色々なことが出来そうです
「HARAKIRI」にありましたペリー襲撃イベントのように
【(予め予備枠が10コ近くあるか確認)→危なそうな在野を生成する→現役勢力にして登用させる→軍団と城を分配させる
→独立させる→危なそうな家臣を生成させる】といった中だるみ防止策がより鮮明になりました
あとは、致命的な敗北後による勢力の分裂や一門衆による叛乱といったものも可能だと感じました
駆虎コマンドのような物も選択ダイヤログで出来そうです あと、>>100にあります内容を工夫して25ターン目になると
強制的に25ターン消費させて戦争を終える・・・というのは可能でしょうか?
(現物は見れないので、多分下記のような感じの内容。25ターン目ではなくても、総大将が死亡した次のターンや、
自作したイベントで停戦した時など)バグがおきそうな気もしますが…
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
if ( 残りターン数 == 25 ) {
BYTE *pUsedTurn = (BYTE *)0x4BB4D2;
*pUsedTurn = 25;
}
} >>137
*pUserdTurnは絶対的な消費量なので、
「今これだけ消費」という意味ではないです。
*pUserdTurn = 25; というのは、
「戦争全体が31ターンで、25ターン経過済み」
といった「絶対数」の意味です。
逆に言えば、
*pUserdTurn = 15; が維持されていれば、
ずっと残り16ターンでずっと戦争やってることになります。
脅迫が確かにかなり近いので、もしかすると、
脅迫が関数化できれば、なんとかなるかもしれないですねぇ。 >>138
ありがとうございます
どのような感じになれば、戦争ターンを全部消費した扱いになるのでしょうか・・・
上位職業の武将によっては強引に戦争ターンを引き伸ばすといったことも
出来そうだと思いました ターン操作で、全部消費という扱いにはなりません。
安全につくるなら、戦争のOR終了条件みたいなのを作るしかないかと。 なんか書き方へんかな。
全部消費という扱いにはできても、
ターンは1ターンに1回だけチェックされるなので、
ターン操作では即、終了にはもっていけない。
というのが正しい。 >>141-142
ターン操作だけではターンの増減はできるものの、終了処理はまた別の処理が
(戦争終了条件)必要と言う感じですね
ターン増減も含めて関数があると使いやすそうですが、どうでしょうか? >>135
さっそく使ってみたのですが、「カスタム::On_シナリオデータ反映直後」の関数が全く呼びされないのは何かアップデート漏れとかあるからですかね…
デバッグを頭にいれても何も出力されないので、そもそもこの関数が呼び出されていないと思うんです tsmodを更新しましたか?
駆動系メソッドを呼び出すのはtsmodなので
更新する必要があります。 >>144
自宅に帰ってきたので、確認してみましたが、
TSMod/ScenarioModともに問題ないと思います。
最初の「デバッグ出力」が、
別ソフトからの受信結果の「続き」に表示されるので、
デバッグモニターの「右端」に表示されることが多くて、
ちょっとわかりにくいかもしれないなぁ。 144です、すみません tsmod更新漏れでした… >>117の状況ですが、ようやく武将の基本データをExcelに入れる事に成功しました。
スレ内で未だにミス表記あったまま放置してしまいましたが、魅力の方は2倍ではないです。
またデータリスト作ってる間に、こうした方が面白いんじゃないかと、仕様変更の手を加えたりしました。
需要はないかもしれませんが、個人的に(作ってる時間が)楽しめているので、ついでに遊んでもいいなって思える人が出てくると嬉しいなって思っています。
それでは。 以下、自分で書いてて間違ってるのをあげ忘れてたので報告
>>101
の「武将の退避」はちょっと不足してますね。
武将を退避した後、「仮」とはいえ、誕生させているので、
少なくとも、
・p武将情報
・p武将戸籍情報
・p城情報
のバックアップしておく必要があります。
p城情報は絶対必須 (浪人が誕生すると、城情報が変化可能性があるので)
あまり「イケてるかイケてないか」ギリギリは狙わず、
https://u7.getuploader.com/nobu6/download/500
みたいに、「ガサガサ」っと武将・城・軍団・大名を退避しておいて、
「ンゴゴゴ」っと一気に戻す、みたいにした方が漏れがなくて安全。 北海度と東北の海をもっと広くしようと思ったけど
野戦マップ編集しんどくて断念したあああ
もっと海戦がしたいぉ 戦法決定アルゴリズム(仮)を作っているのですが、
更に良さそうな案はありそうでしょうか・・・
・既に30種類は決めていて、攻撃・回復・補助攻撃に分類。ID設定を行っている
・武将個人の追加セーブデータ枠に
「戦法01」「戦法02」「戦法03」・・・と組み込んでいて、
戦法01 = 7;(攻撃前に敵を混乱させる)
戦法02 = 4;(攻撃前に敵の士気を半減する)
戦法03 = 1;(敵へのダメージ2倍攻撃)
のように決めていく
・戦法は、void カスタム::On_被ダメージ時で実行することを想定
・補助や回復によってはターン変更時になることも 現在は
int 戦法ID = -1;
if(闘志が蓄積){//◆闘士もどこかで用意
if(ランダム ==1 ){
戦法ID = 戦法01
}else if(ランダム ==2 ){
戦法ID = 戦法02
}else{
戦法ID = 戦法03
}
}
//実際に戦法IDを元に決めていく
if(戦法ID == 1 ){
ダメージ兵数 *= 2;
}
else if(戦法ID == 2 ){
//敵の士気を減らす処理
}
見たいな感じでランダム決定していますが
戦法の数が今後50,100と増えることを考えるとこの形式には限界がありそうです
本人の性格(熟練度・義理・思考・職業他)で優先度を変えたり的確な判断ができるようする
(昔のドラクエではアルゴリズムがあったと思います?)可能性を考えると何かありそうな感じもしますが・・・