commonplacebook9019 @ ウィキ
N6のMod用自作関数 リスト取得用
最終更新:
commonplacebook9019
-
view
大名家同盟国の武将を取得
番号リスト型 追加関数◆Get_大名家同盟国人物(int 大名番号【配列用】) {
番号リスト型 list;
for (int i = 0; i < 最大数::大名情報::配列数; i++) {
if (p大名情報[i].大名【武将番号】) {
if (Is_同盟関係(i, 大名番号【配列用】)) {
////////////////////
int iDaimyoBushouID = p大名情報[i].大名【武将番号】 - 1;
for (int 武将 = 0; 武将 < 最大数::武将情報::配列数; 武将++) {
if (p武将戸籍情報[武将].状態 <= 状態::現役) {
if (Is_自分と相手は同じ大名家所属(武将, iDaimyoBushouID)) {
list.push_back(武将);
}
}
}
}
}
}
return list;
}
番号リスト型 追加関数◆Get_大名家同盟国拠点(int 大名番号【配列用】) {
番号リスト型 list;
for (int i = 0; i < 最大数::大名情報::配列数; i++) {
if (p大名情報[i].大名【武将番号】) {
if (Is_同盟関係(i, 大名番号【配列用】)) {
番号リスト型 所持城List = Get_大名所持城番号リスト【配列用】(i);
for each (int 城3 in 所持城List) {
if (0 <= 城3 && 城3 < 最大数::城情報::配列数) {
list.push_back(城3);
}
}
}
}
}
return list;
}
大名家の持っている家宝(大名・家臣含む)
番号リスト型 追加関数◆Get_大名家所持家宝(int 大名番号【配列用】) {
番号リスト型 list;
int iDaimyoBushouID = p大名情報[大名番号【配列用】].大名【武将番号】 - 1;
for (int 武将 = 0; 武将 < 最大数::武将情報::配列数; 武将++) {
if (p武将戸籍情報[武将].状態 <= 状態::現役) {
if (Is_自分と相手は同じ大名家所属(武将, iDaimyoBushouID)) {
////////////////////////////////////////////////////////
for (int i = 0; i < 最大数::家宝情報::配列数; i++) {
if (p家宝情報[i].所有武将【武将番号】 == 武将) {
list.push_back(i);
}
}
////////////////////////////////////////////////////////
}
}
}
return list;
}
城から一定半径以下のある城を取得
番号リスト型 追加関数◆Get_城周囲半径カウント_10以内【配列用】(int 城番号【配列用】, double 距離) {
番号リスト型 list;
城グリッド位置型 位置j;
位置j = Get_城グリッド位置(城番号【配列用】);
for (int i = 0; i < 最大数::城情報::配列数; i++) {
if (i == 城番号【配列用】) { continue; }
//double 最短距離 = 10.0;//◇
double 最短距離 = 距離;//◇
城グリッド位置型 p2 = Get_城グリッド位置(i);
城グリッドベクトル型 vCastle = 位置j - p2;
2Dベクトル型 vReal(vCastle.X, vCastle.Y);
if (vReal.長さ() < 最短距離) {
list.push_back(i);
}
}
return list;
}
城に隣接する味方城を取得
番号リスト型 追加関数◆Get_隣接拠点_友軍のみ(int 城番号, int 方角1) {
番号リスト型 list;
番号リスト型 list2;
城グリッド位置型 位置j;
位置j = Get_城グリッド位置(城番号);
if (方角1 == 隣接拠点方角::北) { list.push_back(位置j.北【城番号】 - 1); }
if (方角1 == 隣接拠点方角::北東) { list.push_back(位置j.北東【城番号】 - 1); }
if (方角1 == 隣接拠点方角::東) { list.push_back(位置j.東【城番号】 - 1); }
if (方角1 == 隣接拠点方角::南東) { list.push_back(位置j.南東【城番号】 - 1); }
if (方角1 == 隣接拠点方角::南) { list.push_back(位置j.南【城番号】 - 1); }
if (方角1 == 隣接拠点方角::南西) { list.push_back(位置j.南西【城番号】 - 1); }
if (方角1 == 隣接拠点方角::西) { list.push_back(位置j.西【城番号】 - 1); }
if (方角1 == 隣接拠点方角::北西) { list.push_back(位置j.北西【城番号】 - 1); }
for each (int 城List1 in list) {
if (0 <= 城List1 && 城List1 < 最大数::城情報::配列数) {
int i城軍団ID1 = p城情報[城List1].所属軍団【軍団番号】 - 1;
int i城軍団ID2 = p城情報[城番号].所属軍団【軍団番号】 - 1;
if (0 <= i城軍団ID1 && i城軍団ID1 < 最大数::軍団情報::配列数 &&
0 <= i城軍団ID2 && i城軍団ID2 < 最大数::軍団情報::配列数) {
int i城軍団ID1a = p軍団情報[城List1].所属大名【大名番号】 - 1;
int i城軍団ID2a = p軍団情報[城番号].所属大名【大名番号】 - 1;
if (0 <= i城軍団ID1a && i城軍団ID1a < 最大数::大名情報::配列数 &&
0 <= i城軍団ID2a && i城軍団ID2a < 最大数::大名情報::配列数) {
list2.push_back(城List1);
}
}
}
}
//////////////////////////////////////////////////////////////////////
return list2;
}
大名家の同盟国or友好低い大名家のみを取得する
番号リスト型 追加関数◆Get_同盟国リスト【配列用】(int 大名番号【配列用】) {
// それ以外は何も入れずに返す。
番号リスト型 list;
for (int i = 0; i < 最大数::大名情報::配列数; i++) {
if (Is_同盟関係(大名番号【配列用】, i)) {
list.push_back(i);
}
}
return list;
}
番号リスト型 追加関数◆Get_敵対国リスト【配列用】(int 大名番号【配列用】) {
// それ以外は何も入れずに返す。
番号リスト型 list;
for (int i = 0; i < 最大数::大名情報::配列数; i++) {
int 友好度 = Get_友好関係(i, 大名番号【配列用】);
if (友好度 <= 30) { list.push_back(i); }
}
return list;
}
武将自身が持っている家宝・官位取得
番号リスト型 追加関数◆Get_武将所持家宝(int 武将番号【配列用】) {
番号リスト型 list;
if (0 <= 武将番号【配列用】 && 武将番号【配列用】 < 最大数::武将情報::配列数) {
for (int i = 0; i < 最大数::家宝情報::配列数; i++) {
if (p家宝情報[i].所有武将【武将番号】 - 1 == 武将番号【配列用】) {
list.push_back(i);
}
}
}
return list;
}
番号リスト型 追加関数◆Get_武将所持官位(int 武将番号【配列用】) {
番号リスト型 list;
if (0 <= 武将番号【配列用】 && 武将番号【配列用】 < 最大数::武将情報::配列数) {
for (int i = 0; i < 最大数::官位情報::配列数; i++) {
if (p官位情報[i].所有武将【武将番号】 == 武将番号【配列用】) {
list.push_back(i);
}
}
}
return list;
}
大名家の城のうち、開墾可能な城を抽出
番号リスト型 追加関数◆Get_所属勢力拠点_石高開発可能リスト【配列用】(int 大名番号【配列用】) {
int iDaimyoID = 大名番号【配列用】;
番号リスト型 r;
if (0 <= iDaimyoID && iDaimyoID < 最大数::大名情報::配列数) {
for (int iCastleID = 0; iCastleID < 最大数::城情報::配列数; iCastleID++) {
int iGundanID = p城情報[iCastleID].所属軍団【軍団番号】 - 1;
if (0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) {
if (iDaimyoID == p軍団情報[iGundanID].所属大名【大名番号】 - 1) {
int 最大石高 = p城付加情報[iCastleID].最大石高÷10;
最大石高 = int(最大石高 * 10);
if (p城情報[iCastleID].石高 < 最大石高) {
r.push_back(iCastleID);
}
}
}
}
}
else { デバッグ出力("大名番号【配列用】は範囲外"); }
return r;
}