commonplacebook9019 @ ウィキ
N6のMod用自作関数 汎用ほか
最終更新:
commonplacebook9019
-
view
大名家の大名を変更
void Set_簡易勢力領主変更(int 自分武将番号【配列用】, int 相手武将番号【配列用】) {
if (0 <= 自分武将番号【配列用】 && 自分武将番号【配列用】 < 最大数::武将情報::配列数 &&
0 <= 相手武将番号【配列用】 && 相手武将番号【配列用】 < 最大数::武将情報::配列数) {
int 自分武将番号居城 = p武将情報[自分武将番号【配列用】].所属居城【城番号】 - 1;
int 相手武将番号居城 = p武将情報[相手武将番号【配列用】].所属居城【城番号】 - 1;
if (0 <= 自分武将番号居城 && 自分武将番号居城 < 最大数::城情報::配列数 &&
0 <= 相手武将番号居城 && 相手武将番号居城 < 最大数::城情報::配列数) {
Set_武将転居(相手武将番号【配列用】, 自分武将番号居城);
Set_城主(相手武将番号【配列用】);
}
}
}
武将を勢力同士で移動させる
void 武将・勢力間移動(int 武将番号【配列用】, int 大名A番号【配列用】, int 大名B番号【配列用】) {
if (0 <= 武将番号【配列用】 && 武将番号【配列用】 < 最大数::武将情報::配列数 &&
0 <= 大名A番号【配列用】 && 大名A番号【配列用】 < 最大数::大名情報::配列数 &&
0 <= 大名B番号【配列用】 && 大名B番号【配列用】 < 最大数::大名情報::配列数) {
int iDaimyoBushouIDA = p大名情報[大名A番号【配列用】].大名【武将番号】 - 1;
int iDaimyoBushouIDB = p大名情報[大名B番号【配列用】].大名【武将番号】 - 1;
if (0 <= iDaimyoBushouIDA && iDaimyoBushouIDA < 最大数::武将情報::配列数 &&
0 <= iDaimyoBushouIDB && iDaimyoBushouIDB < 最大数::武将情報::配列数) {
int Daimyo居城A = p武将情報[iDaimyoBushouIDA].所属居城【城番号】 - 1;
int Daimyo居城B = p武将情報[iDaimyoBushouIDB].所属居城【城番号】 - 1;
Set_武将転居(武将番号【配列用】, Daimyo居城A);
}
}
}
武将の居城に画面を移す
void ◇人物居城カメラ移動_完成版(int 武将番号【配列用】) {
if (0 <= 武将番号【配列用】 && 武将番号【配列用】 < 最大数::武将情報::配列数) {
int 武将居城 = p武将情報[武将番号【配列用】].所属居城【城番号】 - 1;
if (0 <= 武将居城 && 武将居城 < 最大数::城情報::配列数) {
カメラ移動(武将居城);
}
}
}
物資を購入 ※別関数と併用可
void 物資購入(int 軍団番号【配列用】, int 購入量) {
if (0 <= 軍団番号【配列用】 && 軍団番号【配列用】 < 最大数::軍団情報::配列数) {
int Gold = p軍団情報[軍団番号【配列用】].金;
int 物資 = p軍団情報[軍団番号【配列用】].米;
int 物資購入費用 = 0;
int 現在の米相場 = p相場情報.米相場;
物資購入費用 = int(現在の米相場 * 購入量);
if (Gold > 物資購入費用) {
物資 += 購入量;
Gold -= 物資購入費用;
if (物資 > 60000) { 物資 = 60000; }
if (Gold < 0) { Gold = 0; }
p軍団情報[軍団番号【配列用】].金 = Gold;
p軍団情報[軍団番号【配列用】].米 = 物資;
}
else {
}
}
}
大名の本拠地に家臣がいる
bool ●_808追加_大名本拠地寄港(int 武将番号【配列用】, int 大名番号【配列用】) {
if (0 <= 武将番号【配列用】 && 武将番号【配列用】 < 最大数::武将情報::配列数 &&
0 <= 大名番号【配列用】 && 大名番号【配列用】 < 最大数::大名情報::配列数) {
int C2 = p武将情報[武将番号【配列用】].所属居城【城番号】 - 1;
int D1 = p大名情報[大名番号【配列用】].大名【武将番号】 - 1;
int D2 = p武将情報[D1].所属居城【城番号】 - 1;
if (C2 == D2) {
return true;
}
return false;
}
else {
return false;
}
}
ランダムで未所持の官位を選択する
int ランダム官位抽出_未所持() {
int ランダム家宝 = -1;
番号リスト型 list;
for (int 城 = 0; 城 < 最大数::官位情報::配列数; 城++) {
list.push_back(城);
}
//--------------------------------------------------
srand(timeGetTime()); random_shuffle(list.begin(), list.end());
//--------------------------------------------------
for each (int 家宝 in list) {
if (0 <= 家宝 && 家宝 < 最大数::官位情報::配列数) {
if (p官位情報[家宝].所有武将【武将番号】 == 0xFFFF) {
if (ランダム家宝 == -1) {
ランダム家宝 = 家宝;
}
}
}
}
return ランダム家宝;
}
int ランダム家宝抽出_未所持() {
int ランダム家宝 = -1;
番号リスト型 list;
for (int 城 = 0; 城 < 最大数::家宝情報::配列数; 城++) {
list.push_back(城);
}
//--------------------------------------------------
srand(timeGetTime()); random_shuffle(list.begin(), list.end());
//--------------------------------------------------
for each (int 家宝 in list) {
if (0 <= 家宝 && 家宝 < 最大数::家宝情報::配列数) {
if (p家宝情報[家宝].所有武将【武将番号】 == 0xFFFF) {
if (ランダム家宝 == -1) {
ランダム家宝 = 家宝;
}
}
}
}
return ランダム家宝;
}
int ランダム城抽出改Ⅱ_城主不在() {
int ランダム城 = -1;
番号リスト型 list;
for (int 城 = 0; 城 < 最大数::城情報::配列数; 城++) {
list.push_back(城);
}
//--------------------------------------------------
srand(timeGetTime()); random_shuffle(list.begin(), list.end());
//--------------------------------------------------
for each (int 城 in list) {
if (0 <= 城 && 城 < 最大数::城情報::配列数) {
if (p城情報[城].城主【武将番号】 != 0xFFFF) {
if (ランダム城 == -1) { ランダム城 = 城; }
}
}
}
return ランダム城;
}
int EX_ランダム武将抽出改_政治任意以上(int 数値) {
int ランダム武将 = -1;
番号リスト型 list;
for (int 武将 = 0; 武将 < 最大数::武将情報::配列数; 武将++) {
if (p武将戸籍情報[武将].状態 == 状態::現役 && Get_政治値(武将) > 数値) {
list.push_back(武将);
}
}
//--------------------------------------------------
srand(timeGetTime()); random_shuffle(list.begin(), list.end());
//--------------------------------------------------
for each (int 武将 in list) {
if (0 <= 武将 && 武将 < 最大数::武将情報::配列数) { if (ランダム武将 == -1) { ランダム武将 = 武将; } }
}
return ランダム武将;
}
城から一定の距離内の城をランダムに選択
int EX_ランダム拠点抽出_一定以下の距離(int 城, double 距離) {
int ランダム武将 = -1;
if (0 <= 城 && 城 < 最大数::城情報::配列数) {
int iGundanID = p城情報[城].所属軍団【軍団番号】 - 1;
if (0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) {
int d = p軍団情報[iGundanID].所属大名【大名番号】 - 1;
if (0 <= d && d < 最大数::大名情報::配列数) {
番号リスト型 list = Get_大名所持城番号リスト【配列用】(d);
城グリッド位置型 位置j;
位置j = Get_城グリッド位置(城);
double 最短距離 = 距離;
//--------------------------------------------------
srand(timeGetTime()); random_shuffle(list.begin(), list.end());
//--------------------------------------------------
for each (int 城2 in list) {
if (0 <= 城2 && 城2 < 最大数::城情報::配列数) {
城グリッド位置型 p2 = Get_城グリッド位置(城2);
城グリッドベクトル型 vCastle = 位置j - p2;
2Dベクトル型 vReal(vCastle.X, vCastle.Y);
if (vReal.長さ() < 最短距離) {
if (ランダム武将 == -1) { ランダム武将 = 城2; }
}
}
}
}
}
}
return ランダム武将;
}
入力した数値をばらけさせる
int 追加関数◆数値ランダム変動_85~115%(int 数値) {
if (rand() % 2 == 0) { 数値 += int(数値 * 0.05); }
if (rand() % 2 == 0) { 数値 += int(数値 * 0.05); }
if (rand() % 2 == 0) { 数値 += int(数値 * 0.05); }
if (rand() % 2 == 0) { 数値 -= int(数値 * 0.05); }
if (rand() % 2 == 0) { 数値 -= int(数値 * 0.05); }
if (rand() % 2 == 0) { 数値 -= int(数値 * 0.05); }
return 数値;
}
選択ダイアログを活用し、任意の数値を入れる
int 追加_数値入力関数_10(int 選択数値) {
文字列リスト型 選択ダイアログ;
選択ダイアログ.push_back("10");
選択ダイアログ.push_back("20");
選択ダイアログ.push_back("30");
選択ダイアログ.push_back("40");
選択ダイアログ.push_back("50");
選択ダイアログ.push_back("60");
選択ダイアログ.push_back("70");
選択ダイアログ.push_back("80");
選択ダイアログ.push_back("90");
int result = 選択メニューダイアログ表示(選択ダイアログ);
if (result == 1) {
選択数値 = 10;
}
else if (result == 2) {
選択数値 = 20;
}
else if (result == 3) {
選択数値 = 30;
}
else if (result == 4) {
選択数値 = 40;
}
else if (result == 5) {
選択数値 = 50;
}
else if (result == 6) {
選択数値 = 60;
}
else if (result == 7) {
選択数値 = 70;
}
else if (result == 8) {
選択数値 = 80;
}
else if (result == 9) {
選択数値 = 90;
}
else if (result == 0xFFFF) {
選択数値 = 0;
}
return 選択数値;
}
int 追加_数値入力関数_01(int 選択数値) {
文字列リスト型 選択ダイアログ;
選択ダイアログ.push_back("1");
選択ダイアログ.push_back("2");
選択ダイアログ.push_back("3");
選択ダイアログ.push_back("4");
選択ダイアログ.push_back("5");
選択ダイアログ.push_back("6");
選択ダイアログ.push_back("7");
選択ダイアログ.push_back("8");
選択ダイアログ.push_back("9");
int result = 選択メニューダイアログ表示(選択ダイアログ);
if (result == 1) {
選択数値 += 1;
}
else if (result == 2) {
選択数値 += 2;
}
else if (result == 3) {
選択数値 += 3;
}
else if (result == 4) {
選択数値 += 4;
}
else if (result == 5) {
選択数値 += 5;
}
else if (result == 6) {
選択数値 += 6;
}
else if (result == 7) {
選択数値 += 7;
}
else if (result == 8) {
選択数値 += 8;
}
else if (result == 9) {
選択数値 += 9;
}
else if (result == 0xFFFF) {
選択数値 += 0;
}
return 選択数値;
}
数値を入力し、メッセージやダイアログに表示させる(簡易化)
string 数値返し(int 数値) {
string 数値返し = to_string(数値);
return string(数値返し);
}
資金は数値以上ある+資金を消費する選択ダイアログ
※
bool Is_資金はちゃんとある(int 金額, int 軍団) {
if (0 <= 軍団 && 軍団 < 最大数::軍団情報::配列数) {
int 金 = p軍団情報[軍団].金;
if (金 > 金額) {
return true;
}
else {
return false;
}
}
else {
return false;
}
}
void 追加関数_総合_資金選択(int 資金) {
int i軍団ID = pターン情報.現在のターン【軍団番号】 - 1;
if (0 <= i軍団ID && i軍団ID < 最大数::軍団情報::配列数) {
int result2 = 関数::実行/取消ダイアログ表示("以下の資金がかかります。実行しますか");
if (result2 == TRUE) {
if (Is_資金はちゃんとある(資金, i軍団ID)) {
}
else {
}
}
else {
}
}
}