hsp天道 | ||
使用ゲーム | 信長の野望・天道 | |
シナリオ・担当勢力 | - | |
シナリオの設定 | - | |
動画形態 | - | |
登録武将 | - | |
史実武将の扱い | - | |
縛り | - | |
投稿時期 | - | |
投稿者名 | tamura | |
マイリスト | hsp天道 | |
関連タグ | 【hsp天道】 | |
ニコニコ大百科 | ||
関連サイト | - | |
ニコ証 | - | |
関連動画 | その時幻想郷が動いた | |
備考 | - |
#uselib "user32.dll" #func SetTimer "SetTimer" int,int,int,int #func KillTimer "KillTimer" int,int #uselib "kernel32.dll" #cfunc CreateToolhelp32Snapshot "CreateToolhelp32Snapshot" int,int #cfunc Process32First "Process32First" int,sptr #cfunc Process32Next "Process32Next" int,sptr #func CloseHandle "CloseHandle" int #cfunc OpenProcess "OpenProcess" int,int,int #func ReadProcessMemory "ReadProcessMemory" int,int,var,int,int #func WriteProcessMemory "WriteProcessMemory" int,int,var,int,int #define WM_TIMER 0x0113 #define TIMER_ID 1 ; タイマーID sdim strBuf,25000;あとで使う変数。 gsel 0,-1;起動時に現れるなんとかというウィンドウを消す。 ;ウィンドウの表示、およびあれこれ設定。 screen 2,300,400,4 hMainWnd=hwnd onexit goto *exit title "test" button gosub "戦法+$90",*test_kakizaki_sennpou_hennkou ; メッセージ処理の登録、タイマーメッセージが来たら*OnTimerラベルへ飛ぶ。 oncmd gosub *OnTimer,WM_TIMER ; タイマーを設定(1秒間隔) SetTimer hwnd,TIMER_ID,1000,0 if stat==0 { dialog "タイマーの設定に失敗しました。", 1, "エラー" end } ;乱数の準備 randomize ;ハンドル取得に使う変数を準備。 sdim ProcName,260 dim PROCESSENTRY32,74 ProcName="NOBU13.exe" ;スナップショットを調べて、天道のハンドルという情報を探す。 *GetProc GameWndPID=0 hSnap=CreateToolhelp32Snapshot($F,0) if hSnap==-1:dialog "CreateToolhelp32Snapshot error",1,"スナップショットなし":stop PROCESSENTRY32.0=296 if Process32First(hSnap,varptr(PROCESSENTRY32)){ do getstr strBuf,PROCESSENTRY32,36,'\0' if strBuf==ProcName:GameWndPID=PROCESSENTRY32.2:_break until Process32Next(hSnap,varptr(PROCESSENTRY32))==0 if GameWndPID==0{ CloseHandle hSnap error="天道は起動していますか?\nEXEはNOBU13.exeですか?" switch MessageBoxA(hMainWnd,error,"エラー",$15) case 2 end case 4 goto *GetProc swend } }else{ CloseHandle hSnap dialog "Process32First error",1,"想定外のエラー" end } CloseHandle hSnap hGameWndProc=OpenProcess($1F0FFF,0,GameWndPID) ;サーチ用変数。 NowSearchA=0 NowSearchB=0 NowSearchC=0 NowSearchD=0 adr_today=$110036A8;35F0;36A8 k=$200001DC adr_ootutu_jump=$12004BB0 adr_sisetu_top=$2000004C adr_yakusyoku_top=$1200EF34 adr_kakizaki_sennpou=$12005800 ;ゲーム内の日付を検索する。 *Search_today ReadProcessMemory hGameWndProc,int(adr_today),NowSearchA,4,0 ReadProcessMemory hGameWndProc,int(adr_today+4),NowSearchB,4,0 ReadProcessMemory hGameWndProc,int(adr_today+16),NowSearchC,4,0 ReadProcessMemory hGameWndProc,int(adr_today+20),NowSearchD,4,0 if NowSearchA==$61D&NowSearchB==$3 {;群雄割拠の開始日付を探す。 ;if NowSearchA==$62E&NowSearchB==$1 {;夢幻の如くの開始日付を探す。 if NowSearchA<=NowSearchC{ mes "日付を発見しました!" adr_today=adr_today+16;現在の年号のアドレスを入力しておく。 goto *Search_kaki } else { adr_today=adr_today+$10000 goto *Search_today } } else { if adr_today>$14000000 { if adr_today==$140036A8{ adr_today=$110035F0 goto *Search_today } else { dialog "日付が見つかりません。\n天道を再起動してみてください。" end } } else { adr_today=adr_today+$10000 goto *Search_today } } stop ;蠣崎季広のデータを検索する。 *Search_kaki ReadProcessMemory hGameWndProc,int(k),NowSearchA,4,0 ReadProcessMemory hGameWndProc,int(k)+4,NowSearchB,4,0 ReadProcessMemory hGameWndProc,int(k)+8,NowSearchC,4,0 ReadProcessMemory hGameWndProc,int(k)+12,NowSearchD,4,0 ;NowSearchXは、はじめに4バイトで使ったので、後はずっと4バイトで使用する。 if NowSearchA=$44&NowSearchB=$31&NowSearchC=$4C&NowSearchD=$4F { mes "蠣崎季広のデータを見つけました!" goto *Search_ootutu_taiA } else { if k>$220001DC { dialog "季広のデータが見つかりません\n天道を再起動してみてください。" stop } k=k+$10000 goto *Search_kaki } stop ;大筒隊のアドレスを取得する。 *Search_ootutu_taiA ReadProcessMemory hGameWndProc,int(adr_ootutu_jump),NowSearchA,4,0 ReadProcessMemory hGameWndProc,int(NowSearchA),NowSearchB,4,0 if NowSearchB==$D31D5C { mes "大筒隊のデータを発見しました!" goto *Search_sisetu_top ReadProcessMemory hGameWndProc,int(adr_ootutu_jump),adr_ootutu,4,0 } else { if adr_ootutu_jump>$13000000 { adr_ootutu_jump=$12003CC0 goto *Search_ootutu_taiB } else { adr_ootutu_jump=adr_ootutu_jump+$10000 goto *Search_ootutu_taiA } } stop *Search_ootutu_taiB ReadProcessMemory hGameWndProc,int(adr_ootutu_jump),NowSearchA,4,0 ReadProcessMemory hGameWndProc,int(NowSearchA),NowSearchB,4,0 if NowSearchB==$D31D5C { mes "大筒隊のデータを発見しました!" ReadProcessMemory hGameWndProc,int(adr_ootutu_jump),adr_ootutu,4,0 goto *Search_sisetu_top } else { if adr_ootutu_jump>$13000000 { dialog "大筒のデータが見つかりません\n天道を再起動してみてください。" } else { adr_ootutu_jump=adr_ootutu_jump+$10000 goto *Search_ootutu_taiB } } stop ;施設データの先頭を検索する。よくよく調べたらkから特定可能だった。 *Search_sisetu_top ReadProcessMemory hGameWndProc,int(adr_sisetu_top),NowSearchA,4,0 if NowSearchA==$D2FDC8 { mes "施設データの先頭を発見しました!" goto *Search_yakusyoku_top } else { adr_sisetu_top=adr_sisetu_top+$10000 if adr_sisetu_top>$22000000 { dialog "施設データが見つかりません。\n天道を再起動してみてください。" end } goto *Search_sisetu_top } stop ;役職データの先頭を検索する。征夷大将軍のデータの先頭を探す。 *Search_yakusyoku_top ReadProcessMemory hGameWndProc,int(adr_yakusyoku_top),NowSearchA,4,0 if NowSearchA==$D33600 { mes "役職データの先頭を発見しました!" goto *Search_kakizaki_sennpou } else { adr_yakusyoku_top=adr_yakusyoku_top+$10000 if adr_yakusyoku_top>$13000000 { dialog "役職データが見つかりません。\n天道を再起動してみてください。" end } goto *Search_yakusyoku_top } stop ;蠣崎季広の戦法を検索する。 *Search_kakizaki_sennpou ReadProcessMemory hGameWndProc,int(adr_kakizaki_sennpou),NowSearchA,4,0 ReadProcessMemory hGameWndProc,int(NowSearchA+$8),NowSearchB,4,0 NowSearchC=k-$11BE68 if NowSearchB==NowSearchC { mes "蠣崎季広の戦法を発見しました!" adr_kakizaki_sennpou=NowSearchA+$8;adr_kakizaki_sennpouに蠣崎季広の戦法のアドレスを入力。 dialog "準備よし。" goto *main_system_ready } else { adr_kakizaki_sennpou=adr_kakizaki_sennpou+$10000 if adr_yakusyoku_top>$13000000 { dialog "蠣崎季広の戦法が見つかりません。\n天道を再起動してみてください。" end } goto *Search_kakizaki_sennpou } stop *main_system_ready ;ここでmain_systemで使う変数の準備。 kaguya_kyotenn_taikyuu=0 sanae_syutuzinn=0;早苗が出陣しているかどうかのフラグ kanako_syutuzinn=0;神奈子が出陣しているかどうかのフラグ dim kimokeene_kani_toukyuu,300 dim orin_yakusyoku_toukyuu,300 dim syou_kahou_toukyuu,400 dim daityan_zuikou_izyou_zizoku,5;大ちゃんの能力で使用。 dim iku_zuikou_siki,5;永江衣玖の能力で使用。 ;分割したファイルのインクルード #include "gennsoukyou.hsp" #include "koumakyou.hsp" #include "koumakann.hsp" #include "youyoumu.hsp" #include "eiyasyou.hsp" #include "huuzinnroku.hsp" #include "kaeizuka.hsp" #include "hisoutennsoku.hsp" #include "seirensen.hsp" #include "month.hsp" #include "ten_day.hsp" #include "koumakann_member_count.hsp" #include "koumakann_syuppon.hsp" stop ;OnTimerに行く前にstopで止めないとエラー。 *OnTimer ;タイマーメッセージの処理 if wparam==TIMER_ID : gosub *main_system return 0;gosubで呼びだしたラベルの最後はreturnでないとスタック領域がオーバーフローしましたというエラーがでる。 *main_system cls ReadProcessMemory hGameWndProc,int(adr_today+8),day_now,4,0 mes "今"+day_now+"日" ReadProcessMemory hGameWndProc,int(adr_today+4),now_month,4,0 mes "今月は"+now_month+"" ;毎月2~5日の間に一回だけ呼び出すサブルーチン。 if day_now>1&day_now<=5&month_system_still_done==0 { gosub *koumakann_member_count gosub *main_system_month month_system_still_done=1;フラグをONにし、今月はこれ以上実行しない。 } if day_now>6&month_system_still_done==1 {;フラグをOFFにする。 month_system_still_done=0 } ;毎月5~10、15~20、25~30の間に呼びだすサブルーチン。 ;毎月5~10日 if day_now>=5&day_now<=10&ten_day_system_still_doneA==0 { gosub *main_system_ten_day gosub *koumakann_syuppon ten_day_system_still_doneA=1;フラグをONにし、今月はこれ以上実行しない。 } if day_now>10&ten_day_system_still_doneA==1 {;フラグをOFFにする。 ten_day_system_still_doneA=0 } ;毎月15~20日 if day_now>=15&day_now<=20&ten_day_system_still_doneB==0 { gosub *main_system_ten_day gosub *koumakann_syuppon ten_day_system_still_doneB=1;フラグをONにし、今月はこれ以上実行しない。 } if day_now>20|day_now<15 {;フラグをOFFにする。 if ten_day_system_still_doneB==1 { ten_day_system_still_doneB=0 } } ;毎月25~30日 if day_now>25&day_now<=30&ten_day_system_still_doneC==0 { gosub *main_system_ten_day gosub *koumakann_syuppon ten_day_system_still_doneC=1;フラグをONにし、今月はこれ以上実行しない。 } if day_now<25&ten_day_system_still_doneC==1 {;フラグをOFFにする。 ten_day_system_still_doneC=0 } ;毎秒呼び出すサブルーチン。 gosub *main_system_gensoukyou gosub *main_system_koumakyou gosub *main_system_koumakann gosub *main_system_youyoumu gosub *main_system_eiyasyou gosub *main_system_huuzinnroku gosub *main_system_hisoutennsoku gosub *main_system_seirensen return 0 *test_kakizaki_sennpou_hennkou ReadProcessMemory hGameWndProc,int(adr_kakizaki_sennpou),ValueWA,4,0 ValueWA=ValueWA+$90 WriteProcessMemory hGameWndProc,int(adr_kakizaki_sennpou),ValueWA,4,0 mes "蠣崎季広の戦法変更" return 0 *exit KillTimer hwnd,TIMER_ID ;タイマーを破棄 CloseHandle hGameWndProc end
stop *main_system_huuzinnroku ;雛の撃破兵数を知る。 ReadProcessMemory hGameWndProc,int(k+$91500),HinaKill,4,0;ヒナキルの呼び出し。 ReadProcessMemory hGameWndProc,int(k+$91500-$F0),HinaLV_pre,4,0;雛レベルの呼び出し。 ReadProcessMemory hGameWndProc,int(k+$5D0-$40),hina_syozai_adr,4,0 ReadProcessMemory hGameWndProc,int(hina_syozai_adr),hina_syozai_value,4,0 if hina_syozai_value==$D32FE0 {;雛が出陣中。 hina_mokuhyou_pre=hina_mokuhyou_now hina_mokuhyou_heiryoku_pre=hina_mokuhyou_heiryoku_now hina_syouhei_pre=hina_syouhei_now ReadProcessMemory hGameWndProc,int(hina_syozai_adr+$10),hina_mokuhyou_now,4,0;攻撃目標 ReadProcessMemory hGameWndProc,int(hina_mokuhyou_now),hina_mokuhyou_value,4,0;目標の種類取得 ReadProcessMemory hGameWndProc,int(hina_mokuhyou_now+$28),hina_mokuhyou_heiryoku_now,4,0;目標兵数 ReadProcessMemory hGameWndProc,int(hina_mokuhyou_now+$2C),hina_syouhei_now,4,0;目標兵数 if hina_mokuhyou_value==$D32FE0||hina_mokuhyou_value==$D30120 { if hina_mokuhyou_pre==hina_mokuhyou_now{;目標が健在。 gennsyou=hina_mokuhyou_heiryoku_pre-hina_mokuhyou_heiryoku_now;兵数減少。 zouka_syouhei=hina_syouhei_now-hina_syouhei_pre hina_syouhei_hanntei=gennsyou*0.3 if gennsyou>=0&&zouka_syouhei>hina_syouhei_hanntei {;兵力が減少しており、傷兵がそれに見合うだけ増えている。 HinaKill=HinaKill+gennsyou WriteProcessMemory hGameWndProc,int(k+$91500),HinaKill,4,0;ヒナキルの保管。 } } } } ;雛のレベルアップ HinaLV_now=HinaKill/10000 if HinaLV_now>HinaLV_pre {;レベルがさっきまでと違う ReadProcessMemory hGameWndProc,int(k+$5D0),hina_write,4,0 hina_write=hina_write+1 WriteProcessMemory hGameWndProc,int(k+$5D0),hina_write,4,0 ReadProcessMemory hGameWndProc,int(k+$5D0+$8),hina_write,4,0 hina_write=hina_write+1 WriteProcessMemory hGameWndProc,int(k+$5D0+$8),hina_write,4,0 HinaLV_pre=HinaLV_pre+1 WriteProcessMemory hGameWndProc,int(k+$91500-$F0),HinaLV_pre,4,0;雛レベルの保管。 mes "LVUP" } mes "ヒナキル"+HinaKill+"" mes "雛レベル"+HinaLV_now+"" ;にとり(No247)が岩付城東の匠ノ町3を支配していれば、そこの技術を三段構えに変える。 ;変数修正・動作確認済み。 ReadProcessMemory hGameWndProc,int(adr_today+$8),nitori_today,4,0 if nitori_today>1&&nitori_today<10 {;2~9日の間で、以下の判定がまだ。 if nitori_gizyutu_hantei==0 { for i,1,364,1;全国の町並みを調べ、三段構えを研究している場所が無いか調査。 nitori_matinami=k-$AE684+i*$8C ReadProcessMemory hGameWndProc,int(nitori_matinami),nitori_matinami_gizyutu,4,0 sanndanngamae=k-$116BB4 if nitori_matinami_gizyutu==sanndanngamae {;三段構えが研究済み nitori_gizyutu_kakikae=20;書き換え実行せず。 } next nitori_gizyutu_hantei=1;判定済み if nitori_gizyutu_kakikae==0 { ReadProcessMemory hGameWndProc,int(k+$1DE90-$74),nitori_gunndan,4,0;にとりの勢力 ReadProcessMemory hGameWndProc,int(k-$AB3A8-$10),nitori_takumi_sihai_kyotenn,4,0;該当匠ノ町3の支配拠点 ReadProcessMemory hGameWndProc,int(nitori_takumi_sihai_kyotenn+$108),nitori_takumi_sihai_gunndann,4,0;その拠点の勢力 if nitori_gunndan==nitori_takumi_sihai_gunndann {;該当匠ノ町3をにとりの勢力が支配 ReadProcessMemory hGameWndProc,int(k-$AB3A8),nitori_takumi_gizyutu,4,0;技術を取得 if nitori_takumi_gizyutu!=0 {;なんらかの技術が研究されている。 nitori_gizyutu_kakikae=1;書き換え開始 } } } } } else { nitori_gizyutu_hantei=0 } if nitori_gizyutu_kakikae>=1&&nitori_gizyutu_kakikae<10 { nitori_gizyutu_kakikae=nitori_gizyutu_kakikae+1 nitori_count=10-nitori_gizyutu_kakikae mes ""+nitori_count+"秒以内に岩付城を画面外に!!" } if nitori_gizyutu_kakikae==10 { ValueWA=1 WriteProcessMemory hGameWndProc,int(k-$116BB4+$58),ValueWA,4,0 ValueWA=k-$116BB4 WriteProcessMemory hGameWndProc,int(k-$AB3A8),ValueWA,4,0 nitori_gizyutu_kakikae=0 } ;早苗の部隊の兵力が1000以下の時、兵力を+1000~5000。代償として、士気-10。 ;変数変更・動作確認済み。 ReadProcessMemory hGameWndProc,int(k+$67E60-$40),sanae_syozai_Adr,4,0 ReadProcessMemory hGameWndProc,int(sanae_syozai_Adr),sanae_gennzaiti_Value,4,0;早苗の現在地を取得 if sanae_gennzaiti_Value==$D32FE0 {;早苗が出陣している ReadProcessMemory hGameWndProc,int(sanae_syozai_Adr+$28),sanae_heiryoku,4,0;早苗部隊の兵力。 if sanae_heiryoku<=1000&&sanae_heiryoku==0 { rand_value=rnd(5)+1;1~5 ValueWA=ValueWA+rand_value*1000;兵力を1000~5000補給。 WriteProcessMemory hGameWndProc,int(sanae_syozai_Adr+$28),ValueWA,4,0 ;ValueWA=0;インチキ出来ないよう、傷兵0、と思ったが、別にいいかな? ;WriteProcessMemory hGameWndProc,int(sanae_syozai_Adr+$2C),ValueWA,4,0 ReadProcessMemory hGameWndProc,int(sanae_syozai_Adr+$48),ValueWA,4,0;代償として士気-10 ValueWA=ValueWA-10 WriteProcessMemory hGameWndProc,int(sanae_syozai_Adr+$48),ValueWA,4,0 } } ;【毎秒】神奈子が攻撃中の相手に、毎秒特定の打撃を与える。 ;変数変更・動作確認済み。 ReadProcessMemory hGameWndProc,int(k+$63A90-$40),kanako_syozai_adr,4,0 ReadProcessMemory hGameWndProc,int(kanako_syozai_adr),kanako_syozai_adr_value,4,0;神奈子の現在地を調べる。 if kanako_syozai_adr_value==$D32FE0{;出陣中 ReadProcessMemory hGameWndProc,int(kanako_syozai_adr+$10),kanako_kougeki,4,0 ReadProcessMemory hGameWndProc,int(kanako_kougeki),kanako_kougeki_value,4,0 if kanako_kougeki_value==$D32FE0||kanako_kougeki_value==$D30120 {;目標は敵部隊、もしくは拠点 ReadProcessMemory hGameWndProc,int(kanako_kougeki+$28),kanako_write_A,4,0 kanako_write_A=kanako_write_A-100 ReadProcessMemory hGameWndProc,int(kanako_kougeki+$2C),kanako_write_B,4,0 kanako_write_B=kanako_write_B+100 if kanako_write_A<0 { kanako_write_B=kanako_write_B+kanako_write_A kanako_write_A=0 } WriteProcessMemory hGameWndProc,int(kanako_kougeki+$28),kanako_write_A,4,0 WriteProcessMemory hGameWndProc,int(kanako_kougeki+$2C),kanako_write_B,4,0 } if kanako_kougeki_value==$D2FDC8 {;目標は敵施設。 ReadProcessMemory hGameWndProc,int(kanako_kougeki+$C),kanako_write_A,4,0 kanako_write_A=kanako_write_A-100 if kanako_write_A<0 { kanako_write_A=0 } WriteProcessMemory hGameWndProc,int(kanako_kougeki+$C),kanako_write_A,4,0 } } ;【毎秒・戦法発動後10秒持続】諏訪子の戦法が発動した瞬間のみ、備え系戦法効果時間を5倍にする。 ;変数変更・動作確認済み。 suwako_tousi_pre=suwako_tousi_now ReadProcessMemory hGameWndProc,int(k+$51DC0-$40),suwako_syozai_adr,4,0 ReadProcessMemory hGameWndProc,int(suwako_syozai_adr),suwako_syozai_adr_value,4,0 if suwako_syozai_adr_value==$D32FE0 {;出陣中 ReadProcessMemory hGameWndProc,int(suwako_syozai_adr+$78),suwako_gunzei,4,0;Value=軍勢のポインタ。 if suwako_gunzei==$0 {;諏訪子の部隊が単独である。 ReadProcessMemory hGameWndProc,int(suwako_syozai_adr+$4C),suwako_tousi_now,4,0;部隊の闘志取得 } else {;諏訪子の部隊が軍勢に含まれる。 ReadProcessMemory hGameWndProc,int(suwako_gunzei+$4C),suwako_tousi_now,4,0;軍勢の闘志 } if suwako_tousi_now<suwako_tousi_pre {;闘志の減少を確認。 suwako_write=100 WriteProcessMemory hGameWndProc,int($E90E08),suwako_write,4,0 swako_sennpou_kyouka=1 mes "書き込み実施" } if swako_sennpou_kyouka>=1&&swako_sennpou_kyouka<=9 { swako_sennpou_kyouka=swako_sennpou_kyouka+1 } if swako_sennpou_kyouka>=10 { suwako_write=20 WriteProcessMemory hGameWndProc,int($E90E08),suwako_write,4,0 swako_sennpou_kyouka=0 } } else {;出陣中に非ず ReadProcessMemory hGameWndProc,int($E90E08),suwako_senpou_zizokuzikann,4,0 if suwako_senpou_zizokuzikann>20 { suwako_write=20 WriteProcessMemory hGameWndProc,int($E90E08),suwako_write,4,0;パラメータを元に戻す。 } swako_sennpou_kyouka=0 } return 0
;ここは、ゲーム内の毎月2日に1回だけ呼ばれるサブルーチン。 stop *main_system_month ;施設関係の能力 ReadProcessMemory hGameWndProc,int(k+$13220-$74),misutelia_gunndann,4,0;ミスチーの軍団 ReadProcessMemory hGameWndProc,int(k+$16C40-$74),udonge_gunndann,4,0;うどんげの軍団 ReadProcessMemory hGameWndProc,int(k+$3A9C0-$74),sizuha_gunndann,4,0;静葉の軍団 ReadProcessMemory hGameWndProc,int(k+$41640-$74),minoriko_gunndann,4,0;穣子の軍団 ReadProcessMemory hGameWndProc,int(k+$18D30-$74),momizi_gunndann,4,0;椛の軍団 ReadProcessMemory hGameWndProc,int(k+$749D0-$74),unzan_gunndann,4,0;雲山の軍団 ReadProcessMemory hGameWndProc,int(k+$71960-$74),nue_gunndann,4,0;ぬえの軍団 i=0 unzan_norosidai=0 nue_sisetu_ten_count=0 ;ReadProcessMemory hGameWndProc,int(k+$91500-$180+$1C),adr_sisetu_top,4,0 ;adr_sisetu_topが0の時がある。調査中。 mes adr_sisetu_top repeat 10000 ReadProcessMemory hGameWndProc,int(adr_sisetu_top+36*i),month_sisetu_adr_value,4,0 if month_sisetu_adr_value==$D2FDC8 {;施設でなければ以下を実行しない。 ReadProcessMemory hGameWndProc,int(adr_sisetu_top+36*i+4),month_sisetu_syurui,4,0 ReadProcessMemory hGameWndProc,int(month_sisetu_syurui+4),month_sisetu_name,4,0 ReadProcessMemory hGameWndProc,int(adr_sisetu_top+36*i+8),month_sisetu_matinami,4,0;所属町並 ReadProcessMemory hGameWndProc,int(month_sisetu_matinami+4),month_sisetu_kyoten,4,0;町並みが所属する拠点 ReadProcessMemory hGameWndProc,int(month_sisetu_kyoten+$108),month_sisetu_gundan,4,0;拠点が所属する軍団
;季節ごと if now_month==3||now_month==6||now_month==9||now_month==12{ if month_sisetu_name==$C98EBA95||month_sisetu_name==$EA8FB993{;施設が兵舎もしくは道場 if month_sisetu_gundan==udonge_gunndann {;うどんげの軍団が持つ兵舎・道場1つにつき兵士+300 ReadProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),udonge_write,4,0 udonge_write=udonge_write+300 WriteProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),udonge_write,4,0 } } if month_sisetu_name==$738E||month_sisetu_name==$D98AA48F{;施設が市もしくは商館 if month_sisetu_gundan==misutelia_gunndann {;ミスチーの軍団が持つ金銭施設1つにつき金銭+500 ReadProcessMemory hGameWndProc,int(misutelia_gunndann+$48),misutelia_write,4,0 misutelia_write=misutelia_write+500 WriteProcessMemory hGameWndProc,int(misutelia_gunndann+$48),misutelia_write,4,0 } } if now_month==9 {;9月のみ発動。 if month_sisetu_name==$A894 {;施設が畑 if month_sisetu_gundan==minoriko_gunndann {;穣子の軍団に、畑1つにつき兵糧+500 ReadProcessMemory hGameWndProc,int(minoriko_gunndann+$4C),minoriko_write,4,0 minoriko_write=minoriko_write+500 WriteProcessMemory hGameWndProc,int(minoriko_gunndann+$4C),minoriko_write,4,0 } if month_sisetu_gundan==sizuha_gunndann {;静葉の畑は、1つにつき兵力+500 ReadProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),sizuha_write,4,0 sizuha_write=sizuha_write+500 WriteProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),sizuha_write,4,0 } } if month_sisetu_name==$63938590{;施設が水田 if month_sisetu_gundan==minoriko_gunndann {;穣子の軍団に、水田1つにつき兵糧+2000 ReadProcessMemory hGameWndProc,int(minoriko_gunndann+$4C),minoriko_write,4,0 minoriko_write=minoriko_write+2000 WriteProcessMemory hGameWndProc,int(minoriko_gunndann+$4C),minoriko_write,4,0 } if month_sisetu_gundan==sizuha_gunndann {;静葉の水田は、1つにつき兵力+500 ReadProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),sizuha_write,4,0 sizuha_write=sizuha_write+500 WriteProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),sizuha_write,4,0 } } } if month_sisetu_name==$CC824594{;施設が忍の里 if month_sisetu_gundan==momizi_gunndann { ReadProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),momizi_write,4,0;兵士+300 momizi_write=momizi_write+300 WriteProcessMemory hGameWndProc,int(month_sisetu_kyoten+$28),momizi_write,4,0 ReadProcessMemory hGameWndProc,int(momizi_gunndann+$48),momizi_write,4,0;金銭+500 momizi_write=momizi_write+500 WriteProcessMemory hGameWndProc,int(momizi_gunndann+$48),momizi_write,4,0 ReadProcessMemory hGameWndProc,int(momizi_gunndann+$4C),momizi_write,4,0;兵糧+500 momizi_write=momizi_write+500 WriteProcessMemory hGameWndProc,int(momizi_gunndann+$4C),momizi_write,4,0 } } }
;1月のみ発動。 if now_month==1 { if month_sisetu_name==$EF89B38B||month_sisetu_name==$C689F68C||month_sisetu_name==$BA8E8392||month_sisetu_name==$9B8E{;施設が教会、公家館、茶室、寺 if month_sisetu_gundan==nue_gunndann{ nue_sisetu_ten_count=nue_sisetu_ten_count+1 if nue_sisetu_ten_count>=10 {;施設数が10ごとに、名声+1 ReadProcessMemory hGameWndProc,int(nue_gunndann+$8),nue_seiryoku,4,0;勢力データ ReadProcessMemory hGameWndProc,int(nue_seiryoku+$D0),nue_write,4,0;名声値 nue_write+1 WriteProcessMemory hGameWndProc,int(nue_seiryoku+$D0),nue_write,4,0 ReadProcessMemory hGameWndProc,int(nue_seiryoku+$D4),nue_write,4,0;名声値 nue_write+1 WriteProcessMemory hGameWndProc,int(nue_seiryoku+$D4),nue_write,4,0 nue_sisetu_ten_count=0 } } }
} ;毎月 if month_sisetu_name==$8C895498 {;施設が狼煙台 if month_sisetu_gundan==unzan_gunndann {;雲山の軍団が所有。 unzan_norosidai=unzan_norosidai+1 } } i=i+1 } loop ;官位関係の能力(きもけーね) if now_month==1 {;1月のみ発動 ReadProcessMemory hGameWndProc,int(k+$8E2A0-$74),kimokeene_syozai_adr,4,0;きもけーねの軍団 ReadProcessMemory hGameWndProc,int(kimokeene_syozai_adr+$8),kimokeene_seiryoku,4,0;きもけーねの勢力 ReadProcessMemory hGameWndProc,int(kimokeene_seiryoku+$BC),kimokeene_daimyou,4,0;きもけーねの大名 i=0 kimokeene_kani_suu=0 repeat 400 kimokeene_kani_seiryoku=0;現在調査中の官位の勢力 ReadProcessMemory hGameWndProc,int(k-$121780+i*60),kimokeene_kani_value,4,0 if kimokeene_kani_value!=$D31DC8 : break ;官位でなければループ終わり ReadProcessMemory hGameWndProc,int(k-$121780+$30+i*60),kimokeene_kani_seiryoku_buf,4,0;官位の勢力 if kimokeene_kani_seiryoku_buf!=0 {;家宝が授与されていない kimokeene_kani_seiryoku=kimokeene_kani_seiryoku_buf;家宝の所有勢力 } else { ReadProcessMemory hGameWndProc,int(k-$121780+$34+i*60),kimokeene_kani_zyuyosya,4,0;官位の授与者 if kimokeene_kani_zyuyosya!=0 {;官位が授与済み if kimokeene_daimyou==kimokeene_kani_zyuyosya {;調査中の武将が大名ならば、この段階で等級+2 ReadProcessMemory hGameWndProc,int(k-$121780+$38+i*60),kimokeene_write,4,0 kimokeene_write=kimokeene_write+2 WriteProcessMemory hGameWndProc,int(k-$121780+$38+i*60),kimokeene_write,4,0 } ReadProcessMemory hGameWndProc,int(kimokeene_kani_zyuyosya+$144),kimokeene_kani_gundan,4,0;所有軍団 ReadProcessMemory hGameWndProc,int(kimokeene_kani_gundan+$8),kimokeene_kani_seiryoku,4,0;所有勢力 } } if kimokeene_seiryoku==kimokeene_kani_seiryoku {;所有勢力が一致 kimokeene_kani_toukyuu.kimokeene_kani_suu=k-$121780+$38+i*60;配列に、等級のアドレスを入力する。 kimokeene_kani_suu=kimokeene_kani_suu+1;勢力の総官位数を調べる } i=i+1 loop kimokeene_rand=rnd(kimokeene_kani_suu)-1;ランダムに、0~官位数の乱数を作成 if kimokeene_rand<0 : kimokeene_rand=0 kimokeene_kani_select=kimokeene_kani_toukyuu.kimokeene_rand ReadProcessMemory hGameWndProc,int(kimokeene_kani_select),kimokeene_write,4,0;乱数が示す官位の等級を+2 kimokeene_write=kimokeene_write+2 WriteProcessMemory hGameWndProc,int(kimokeene_kani_select),kimokeene_write,4,0 } ;役職関係の能力(火焔猫燐) if now_month==1 { ReadProcessMemory hGameWndProc,int(k+$F040-$74),rin_gundan,4,0;おりんの軍団 ReadProcessMemory hGameWndProc,int(rin_gundan+$8),orin_seiryoku,4,0;おりんの勢力 i=0 orin_yakusyoku_suu=0 repeat 400 orin_yakusyoku_seiryoku=0;現在調査中の官位の勢力 ReadProcessMemory hGameWndProc,int(adr_yakusyoku_top+i*64),rin_yakusyoku_value,4,0 if rin_yakusyoku_value!=$D33600 : break ;役職でなければループ終わり ReadProcessMemory hGameWndProc,int(adr_yakusyoku_top+$28+i*64),rin_yakusyoku_seiryoku_buf,4,0;役職の勢力 if rin_yakusyoku_seiryoku_buf!=0 {;役職が授与されていない orin_yakusyoku_seiryoku=rin_yakusyoku_seiryoku_buf;役職の所有勢力 } else { ReadProcessMemory hGameWndProc,int(adr_yakusyoku_top+$2C+i*64),rin_yakusyoku_zyuyosya,4,0;役職の授与者 if rin_yakusyoku_zyuyosya!=0 {;役職が授与済み ReadProcessMemory hGameWndProc,int(rin_yakusyoku_zyuyosya+$144),rin_yakusyoku_gundan,4,0;所有軍団 ReadProcessMemory hGameWndProc,int(rin_yakusyoku_gundan+$8),orin_yakusyoku_seiryoku,4,0;所有勢力 } } if orin_seiryoku==orin_yakusyoku_seiryoku {;所有勢力が一致 orin_yakusyoku_toukyuu.orin_yakusyoku_suu=adr_yakusyoku_top+$30+i*64;配列に、等級のアドレスを入力する。 orin_yakusyoku_suu=orin_yakusyoku_suu+1;勢力の総役職数を調べる } i=i+1 loop rin_rand=rnd(orin_yakusyoku_suu)-1;ランダムに、0~役職数の乱数を作成 if rin_rand<0 : rin_rand=0 rin_yakusyoku_serect=orin_yakusyoku_toukyuu.rin_rand ReadProcessMemory hGameWndProc,int(rin_yakusyoku_serect),rin_write,4,0;乱数が示す役職の等級を+2 rin_write=rin_write+2 WriteProcessMemory hGameWndProc,int(rin_yakusyoku_serect),rin_write,4,0 } ;家宝関係の能力(寅丸星) ;全ての家宝を調べ、星の勢力の持つ家宝、その等級のアドレス、そのなかでも一等級以上の数を算出。 ReadProcessMemory hGameWndProc,int(k+$26060-$74),syou_gundan,4,0;星の軍団 ReadProcessMemory hGameWndProc,int(syou_gundan+$8),syou_seiryoku,4,0;星の勢力 i=0 syou_kahou_suu=0 syou_ittoukyuu_kahou_suu=0 repeat 400 syou_kahou_seiryoku=0 ReadProcessMemory hGameWndProc,int(k-$128058+i*76),syou_kahou_value,4,0 if syou_kahou_value!=$D31D7C : break ;家宝でなければループ終わり ReadProcessMemory hGameWndProc,int(k-$128058+$34+i*76),syou_kahou_seiryoku_buf,4,0;家宝の勢力 if syou_kahou_seiryoku_buf!=0 {;家宝が授与されていない syou_kahou_seiryoku=syou_kahou_seiryoku_buf;家宝の所有勢力 } else { ReadProcessMemory hGameWndProc,int(k-$128058+$38+i*76),syou_kahou_zyuyosya,4,0;家宝の授与者 if syou_kahou_zyuyosya!=0 {;家宝が授与済み ReadProcessMemory hGameWndProc,int(syou_kahou_zyuyosya+$144),syou_kahou_gundan,4,0;所有軍団 ReadProcessMemory hGameWndProc,int(syou_kahou_gundan+$8),syou_kahou_seiryoku,4,0 } } if syou_seiryoku==syou_kahou_seiryoku {;所有軍団が一致 syou_kahou_toukyuu.syou_kahou_suu=k-$128058+$40+i*76;配列に、等級のアドレスを入力する。 syou_kahou_suu=syou_kahou_suu+1;家宝数を調べる ReadProcessMemory hGameWndProc,int(k-$128058+$40+i*76),syou_kahou_toukyuu_buf,4,0 if syou_kahou_toukyuu_buf>=10{ syou_ittoukyuu_kahou_suu=syou_ittoukyuu_kahou_suu+1 } } i=i+1 loop if now_month==1 { syou_rand=rnd(syou_kahou_suu)-1;ランダムに、1~家宝数の乱数を作成 if syou_rand<0 : syou_rand=0;家宝を一つも持っていない勢力の場合 syou_kahou_select=syou_kahou_toukyuu.syou_rand ReadProcessMemory hGameWndProc,int(syou_kahou_select),syou_kahou_write,4,0;乱数が示す家宝の等級を+2 syou_kahou_write=syou_kahou_write+2 WriteProcessMemory hGameWndProc,int(syou_kahou_select),syou_kahou_write,4,0 } mes "星一等級"+syou_ittoukyuu_kahou_suu+"" ;全町並検索。 ;十六夜咲夜の能力。毎月2日に、自軍団にいる紅魔館メンバーの数だけ民忠を回復。100を超える。 ReadProcessMemory hGameWndProc,int(k+$32DC0-$74),sakuya_gunndann,4,0 ReadProcessMemory hGameWndProc,int(k+$91500-$180+$C),sakuya_member,4,0 i=0 repeat 364;全国の町並みを調べ、そこが咲夜の軍団に所属するか調べる。 sakuya_matinami_adr=k-$AE588+i*140;計算で出したアドレスと違う……? ReadProcessMemory hGameWndProc,int(sakuya_matinami_adr+$8),sakuya_matinami_kyoten,4,0;町並みの所属拠点 ReadProcessMemory hGameWndProc,int(sakuya_matinami_kyoten+$108),sakuya_matinami_gundan,4,0;拠点の所属軍団 if sakuya_matinami_gundan==sakuya_gunndann { ReadProcessMemory hGameWndProc,int(sakuya_matinami_adr+$3C),sakuya_write,4,0 sakuya_write=sakuya_write+sakuya_member if sakuya_write>100 { sakuya_write=100 } WriteProcessMemory hGameWndProc,int(sakuya_matinami_adr+$3C),sakuya_write,4,0 } i=i+1 loop ;全部将検索 ;ナズーリン・上白沢彗音・魅魔の能力で使用。 ReadProcessMemory hGameWndProc,int(k+$64630-$74),nazuurin_gunndan,4,0 ReadProcessMemory hGameWndProc,int(k+$65D70-$74),keene_gundan,4,0 ReadProcessMemory hGameWndProc,int(k+$49810-$74),mima_gundan,4,0 i=0 mima_ninzuu=0 keene_tiryaku_ninzuu=0 keene_seizi_ninzuu=0 repeat 2500 ReadProcessMemory hGameWndProc,int(k-$1B8+i*496),busyou_value,4,0 if busyou_value==$D2FDF4 {;武将データである。 ReadProcessMemory hGameWndProc,int(k-$74+i*496),busyou_gundan,4,0;調査中武将の所属軍団 ;ナズーリンの能力。同じ所属軍団所属する、政治70以上の武将1人につき、毎月金銭+500。 ;官位や家宝による修正値は除く。 if busyou_gundan==nazuurin_gunndan {;ナズーリンの軍団に所属 ReadProcessMemory hGameWndProc,int(k+$C+i*496),busyou_seizi,4,0 if busyou_seizi>=70{ ReadProcessMemory hGameWndProc,int(busyou_gundan+$48),nazuurin_write,4,0 nazuurin_write=nazuurin_write+500 WriteProcessMemory hGameWndProc,int(busyou_gundan+$48),nazuurin_write,4,0 } } if now_month==1 {;以下の能力は1月のみ発動。 ;上白沢彗音と同じ軍団で、知略70以下か、政治70以下の武将のリスト、人数を調べる。 if busyou_gundan==keene_gundan{ ReadProcessMemory hGameWndProc,int(k+$8+i*496),keene_tiryaku_buf,4,0 if keene_tiryaku_buf<=70 { keine_tiryaku.keene_tiryaku_ninzuu=k+$8+i*496 keene_tiryaku_ninzuu=keene_tiryaku_ninzuu+1 } ReadProcessMemory hGameWndProc,int(k+$C+i*496),keene_seizi_buf,4,0 if keene_seizi_buf<=70 { keine_seizi.keene_seizi_ninzuu=k+$C+i*496 keene_seizi_ninzuu=keene_seizi_ninzuu+1 } } ;まず、魅魔と同じ軍団で、鉄砲適正値がA以下の武将のリストと、その武将の人数を取得。 if busyou_gundan==mima_gundan {;魅魔と同軍団 ReadProcessMemory hGameWndProc,int(k-$5C+i*496),mima_tekisei_buf,4,0 if mima_tekisei_buf<=3{ mima_teppou_tekisei.mima_ninzuu=k-$5C+i*496;実際は、鉄砲適正値のアドレスのリスト。 mima_ninzuu=mima_ninzuu+1;該当人数を数える。 } } } } else { break } i=i+1 loop if now_month==1{ ;毎月1月初め、魅魔と同軍団にいる武将誰か一人の鉄砲適正値をSにする。すでにSの者は除外。 if mima_ninzuu!=0 { mima_rand=rnd(mima_ninzuu);だれの適正値を書き換えるかをランダムで決定。 mima_write=4 WriteProcessMemory hGameWndProc,int(mima_teppou_tekisei.mima_rand),mima_write,4,0 } ;毎月1月初め、上白沢彗音と同軍団にいる、知略70以下の武将を一人選び、知略+1。 ;家宝や官位による修正値は除く。 if keene_tiryaku_ninzuu!=0{ keene_rand=rnd(keene_tiryaku_ninzuu) ReadProcessMemory hGameWndProc,int(keine_tiryaku.keene_rand),keene_write,4,0 keene_write=keene_write+1 WriteProcessMemory hGameWndProc,int(keine_tiryaku.keene_rand),keene_write,4,0 } ;毎月1月初め、上白沢彗音と同軍団にいる、政治70以下の武将を一人選び、政治+1。 ;家宝や官位による修正値は除く。 if keene_seizi_ninzuu!=0 { keene_rand=rnd(keene_seizi_ninzuu) ReadProcessMemory hGameWndProc,int(keine_seizi.keene_rand),keene_write,4,0 keene_write=keene_write+1 WriteProcessMemory hGameWndProc,int(keine_seizi.keene_rand),keene_write,4,0 } }