=begin = Text template レーサー集計作成(テキスト形式) == フォーマット テキスト / BBS形式(MS Pフォント対応) =end =begin == 商業値100になったと予想される日付 =end def txt_fortlist_cp100_datelist(fortlist) line = [] count = 0 line[count] = "" for area in 0 ... ROW for number in 0 ... COLUMN if fortlist[area][number][1] != 0 # 日付が入っていれば line[count+=1] = getfortarea(area, 0) + (number+1).to_s line[count] += ": " + fortlist[area][number][1] + "\n" end end end return line end =begin == 商業値予想まとめ 29, 59, 100の時 =end def txt_cp_list(cp_week_two, cp_week_four, cp_all) line = [] count = 0 line[count] = "N-: 29 50 100\n" for area in 0 ... ROW for number in 0 ... COLUMN # 全力で投資して商業値10未満の砦は除外 if cp_all[area][number][1] > 10 line[count+=1] = getfortarea(area, 0) + (number+1).to_s + ": " line[count+=1] = sprintf("%3d ", cp_week_two[area][number][1]) line[count+=1] = sprintf("%3d ", cp_week_four[area][number][1]) line[count+=1] = sprintf("%3d\n", cp_all[area][number][1]) end end end return line end =begin == 最終結果 各砦の最終確保ギルド名、堅守、落城回数、占領時間を各地域ごとに出力します。 攻城戦時間が終わる20分以上前に占領してそのまま防衛した場合 落城回数の後に占領時間を付けます。 出力形式はLydia板攻城戦スレ形式です。 === 入力 堅守回数 占領回数 防衛時間 === 空白 fortlist[砦地域][砦番号] = nil の場合 fortlist[砦地域][砦番号][1] = 0 の場合 =end def txt_fortlist_guildinfo(defense, breakcount, breaktime, limittime) line = [] count = 0 limitsec = str2sec(limittime) for area in 0 ... ROW line[count] = "▼ " + getfortarea(area, 6) # 街名 line[count] += " ["+ getfortarea(area, 2) + "]\n" for number in 0 ... COLUMN line[count+=1] = (number+1).to_s + ". " if defense[area][number] == nil # 空白の時 line[count] += "\n" elsif defense[area][number][1] != 0 # 堅守している時 line[count] += defense[area][number][0] + " (☆" line[count] += defense[area][number][1].to_s + ")\n" # (回数/占領時間〜) limittime 以前に占領してたとき elsif str2sec(breaktime[area][number][1]) <= limitsec line[count] += defense[area][number][0] + " (" line[count] += breakcount[area][number][1].to_s + "/" line[count] += breaktime[area][number][1] + "〜)\n" else line[count] += defense[area][number][0] + " (" line[count] += breakcount[area][number][1].to_s + ")\n" end end line[count+=1] = "\n" count += 1 end return line end =begin == 砦別集計を行列形式で出力 === 対応点 小数点 空白の置き換え(掲示板投稿用) 行列と全体の合計平均計算 桁数調整 === figure_decimal 小数点下の表示させる桁数 0の時は、整数だけを表示する。 === param 1. 平均、合計を出力するかどうか (ON:2,3 /OFF: 0,1) 2以上/1以下 2. 空白を0で埋めるかどうか (ON:1,3 /OFF: 0,2) 奇数/偶数 指定例: %010.4 全部で10桁で表現(整数、小数点、'.'(1桁)の桁数の合計) 小数点下は4桁、空白は0で埋める =end def txt_fortlist_matrix(fortlist, figure_decimal, param) line = [] count = total = average = 0 (total_row, total_column, total) = matrix_total(fortlist, ROW, COLUMN) (average_row, average_column, average) = matrix_average(total_row, total_column, total) # 合計の数の桁数を全体の表示桁数にする(表示を最大の桁数に合わせる) if figure_decimal == 0 # 整数なら小数点の点の桁を削除する figure = total.prec_i.to_s.length else figure = total.prec_i.to_s.length + figure_decimal + 1 end fig_put = "%" # 行列の出力フォーマット設定、空白を0で埋めるかどうか if (param == 1) || (param == 3) then fig_put += "0" end fig_put += figure.to_s + "." + figure_decimal.to_s + "f" minus = " " for count in 0 ... (figure-1) # 桁数調整 minus += "-" end count = 0 # 行数のリセット line[count] = "N" for number in 1 .. COLUMN # 一番上の砦番号 line[count] += minus + number.to_s end if (param == 2) || (param == 3) # 一番上の平均、合計の列 line[count] += minus + "S" + minus + "A\n" else line[count] += "\n" end for area in 0 ... ROW # 行列表示 line[count+=1] = getfortarea(area, 0) for number in 0 ... COLUMN line[count] += sprintf(" #{fig_put}", fortlist[area][number][1]) end if (param == 2) || (param == 3) # 平均、合計の列 # 各列の一行の合計 line[count] += sprintf(" #{fig_put}", total_row[area]) # 各列の一行の平均 line[count] += sprintf(" #{fig_put}", average_row[area]) end line[count] += "\n" end if (param == 2) || (param == 3) # 平均、合計の行 line[count+=1] = "S" # 各行の一列の合計 for number in 0 ... COLUMN line[count] += sprintf(" #{fig_put}", total_column[number]) end line[count] += sprintf(" #{fig_put}", total) + minus + "-" + "\n" line[count+=1] = "A" # 各行の一列の平均 for number in 0 ... COLUMN line[count] += sprintf(" #{fig_put}", average_column[number]) end line[count] += minus + "-" + sprintf(" #{fig_put}", average) + "\n" end line[count+=1] = "\n" return line end =begin == ギルドランキングリスト作成 breakfort: [0:OFF, 1:ON] =end def txt_guildlist_ranklist(guildlist, breakfort) line = [] count = 0 line[count] = " 順位 回数 ギルド名 獲得砦" if breakfort == 1 then line[count] += " 占領砦\n" # 占領砦一覧 else line[count] += "\n" end # イテレータ変数の事前宣言(高速化用) guild = announce = rank = getfort = breaklist = 0 guildlist.each { |guild, announce, rank, getfort, breaklist| if guild == "" then next end # ギルド名が空白の時は省略 if getfort == "" # 獲得砦がない場合 line[count+=1] = sprintf("%3d位 %3d回 %s", rank, announce, guild) else line[count+=1] = sprintf("%3d位 %3d回 %s %s", rank, announce, guild, getfort) end if breakfort == 1 then line[count] += sprintf(" %s", breaklist) end line[count] += "\n" } return line end =begin == Wiki用ギルドランキングリスト作成 BijouWiki Format (http://ro-bijou.sub.jp/ro/pukiwiki.php) 21位以降は出力しない。 breakfort: [0:OFF, 1:ON] =end def wiki_guildlist_ranklist(guildlist) line = [] count = 0 # 占領砦一覧 line[count] = "|~COLOR(BLUE){順位}|~COLOR(BLUE){回数}|~COLOR(BLUE){ギルド名}|~COLOR(BLUE){獲得砦}|~COLOR(BLUE){占領砦}|\n" # イテレータ変数の事前宣言(高速化用) guild = announce = rank = bef_rank = getfort = breaklist = 0 guildlist.each { |guild, announce, rank, getfort, breaklist| if guild == "" then next end # ギルド名が空白の時は省略 if rank > 20 then break end # 21位以降は出力しない if rank == bef_rank if getfort == "" # 獲得砦がない場合 line[count+=1] = sprintf("|~|~|%s||", rank, announce, guild) else line[count+=1] = sprintf("|~|~|%s|%s|", rank, announce, guild, getfort) end else if getfort == "" # 獲得砦がない場合 line[count+=1] = sprintf("|%d位|%d回|%s||", rank, announce, guild) else line[count+=1] = sprintf("|%d位|%d回|%s|%s|", rank, announce, guild, getfort) end end line[count] += sprintf("%s|\n", breaklist) bef_rank = rank # 順位を記憶して同位かどうかチェックする } return line end