#!/usr/bin/env ruby
# -*- coding: euc-jp -*-
$KCODE = "EUC"
require 'config'
require 'user_record'
require 'catalog'
require 'login'
require 'tss'
require 'tsslock'
require 'cgi'
cgi = CGI.new()
@login = Login.new(cgi)
def cgi_select(name, values, labels, selected)
r = %Q(\n)
end
def update_all
urdb = Store.new('db/ur.db')
urdb.transaction() do
urdb.roots.each do |i|
u = urdb[i]
u.update
urdb[i] = u
end
end
end
def rank_table(ta, r)
print "
"
print "
順位
"
print "
ID
"
ta.each do |t|
print "
#{t}
"
end
print "
"
r.each_index do |i|
print "
"
print "
#{i+1}
"
r[i].each do |d|
print "
#{d}
"
end
print "
"
end
print "
"
end
def rank_tables(us, prefix = '')
print "
#{prefix}勝率ランキング
\n"
rank_table(['勝率', '勝敗'],
us.sort do |a, b|
[b[1].win_rate, b[1].wins] <=>
[a[1].win_rate, a[1].wins]
end.collect do |u|
s = u[1]
[u[0], "#{s.win_rate}%", "#{s.wins}勝 #{s.loses}敗"]
end)
print "
#{prefix}生存率ランキング
\n"
rank_table(['生存率', '平均寿命', '参加数'],
us.sort do |a, b|
[b[1].live_rate, b[1].avg_dates, b[1].num ] <=>
[a[1].live_rate, a[1].avg_dates, a[1].num ]
end.collect do |u|
s = u[1]
[u[0], "#{s.live_rate}%", "#{s.avg_dates}日", "#{s.num}回"]
end)
print "
#{prefix}MVP得票ランキング
\n"
rank_table(['MVP得票', 'MVP回数', '参加数'],
us.sort do |a, b|
[b[1].mvpcs, b[1].mvps, a[1].num] <=>
[a[1].mvpcs, a[1].mvps, b[1].num]
end.collect do |u|
s = u[1]
[u[0], "#{s.mvpcs}票", "#{s.mvps}回", "#{s.num}回"]
end)
end
def idl(id, nick)
"#{nick}"
end
def idl_db(userdb, id)
if (userdb[id])
idl(id, userdb[id]['nick'])
else
udb = Store.new("db/ur/#{CGI.escape(id)}.db")
udb.transaction(true) do
if (udb['root'])
idl(id, udb['root'].nick)
else
idl(id, '???')
end
end
end
end
def senseki_table(cls_th, a, cls_proc)
print "
"
print "
#{cls_th}
"
print "
勝敗
勝率
"
print "
生存率
寿命
"
print "
MVP票
MVP数
"
print "
"
a.each do |s|
next if (s.num == 0)
print "
"
print "
#{cls_proc.call(s.cls)}
"
print "
#{s.wins}勝#{s.loses}敗
#{s.win_rate}%
"
print "
#{s.live_rate}%
#{s.avg_dates}日
"
print "
#{s.mvpcs}票
#{s.mvps}回
"
print "
"
end
print "
"
end
def matome(id)
if (id != '')
userdb = Store.new('db/user.db')
userdb.transaction(true) do
urdb_file = "db/ur/#{CGI.escape(id)}.db"
if (!FileTest.exist?(urdb_file))
print "
まだ戦績がありません。
"
else
urdb = Store.new(urdb_file)
u = urdb.transaction(true) do
urdb['root']
end
print "
#{u.nick}
"
s = u.senseki
if (s)
print "#{s.wins}勝 #{s.loses}敗 (勝率 #{s.win_rate}%) "
print "生存率 #{s.live_rate}%, 平均寿命 #{s.avg_dates}日 "
print "MVP#{s.mvps}回, MVP得票#{s.mvpcs}票 "
print " "
else
print "まだ戦績がありません"
end
print "
自己紹介
"
print " "
if (u.intro)
print u.intro.gsub(/\n/, ' ')
else
print '自己紹介がありません。早めに下の自己紹介編集で自己紹介を作って下さい。よくわからんIDは削除する可能性があります。'
end
print " "
print " "
if (s)
print "
村の記録
"
vldb = Store.new('db/vil.db')
srvdb = Store.new('db/srv.db')
vldb.transaction(true) do
srvdb.transaction(true) do
u.sorted_vils.each do |v|
vi = vldb['root'].find() do |vi|
vi['vid'] == v.vid
end
s = srvdb[vi['country']]
print "
#{v.vname} (#{v.vid}村) #{if (v.mvp) then '★' end} 【#{v.win ? '勝利' : '敗北'}】 #{v.name} (#{v.skill}) #{v.survive}日目 #{v.death} (#{v.hist})"
end
end
end
print "