本WIKI由呜呜kurumi申请于2021年03月15日创建,编辑权限开放

如有内容错误,可以联系站长呜呜kurumi提交错误,赛马娘WIKI力求给大家带来最好的体验,也欢迎训练员们和我们一起建设
bugfix0531
全站通知:

模块:繁中数据库

来自赛马娘WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:繁中数据库/doc创建

local p={}
local d_fan = require('模块:繁中数据库内容')
local d = require('模块:数据库内容')
--local fan_spcard = require('模块:繁中支援卡效果数据库内容')
function strsplit (inputstr, sep)
        if sep == nil then
                sep = "%s"
        end
        local t={}
        for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                table.insert(t, str)
        end
        return t
end


p["角色信息"]=function(frame)
	local id=frame.args["id"]
	local chr_id = string.sub(id,1,-3)
	local fan_name = d_fan.text_data_6
	local fan_nickname = d_fan.text_data_5
	local fan_height = d_fan.text_data_158
	local fan_weight = d_fan.text_data_9
	local fan_bday = d_fan.text_data_157
	local fan_cv = d_fan.text_data_7
	local fan_intro = d_fan.text_data_144
	local fan_motto = d_fan.text_data_163
	for i,fname in pairs(fan_name)do
		if chr_id == fname.index then
			frame:callParserFunction{name='#vardefine',args={'繁译名',fname.text}}
			break
		end
	end
	for j,intro in pairs(fan_intro)do
		if chr_id == intro.index then
			frame:callParserFunction{name='#vardefine',args={'繁译简介',intro.text}}
			break
		end
	end
	for k,motto in pairs(fan_motto)do
		if chr_id == motto.index then
			frame:callParserFunction{name='#vardefine',args={'繁译自介',motto.text}}
			break
		end
	end
	for l,fnick in pairs(fan_nickname)do
		if id == fnick.index then
			frame:callParserFunction{name='#vardefine',args={'繁译昵称',string.sub(fnick.text,2,-2)}}
			break
		end
	end
	for m,height in pairs(fan_height)do
		if chr_id == height.index then
			frame:callParserFunction{name='#vardefine',args={'身高',height.text}}
			break
		end
	end
	for n,weight in pairs(fan_weight)do
		if chr_id == weight.index then
			frame:callParserFunction{name='#vardefine',args={'体重',weight.text}}
			break
		end
	end
	for o,bday in pairs(fan_bday)do
		if chr_id == bday.index then
			frame:callParserFunction{name='#vardefine',args={'生日',bday.text}}
			break
		end
	end
	for p,cv in pairs(fan_cv)do
		if chr_id == cv.index then
			frame:callParserFunction{name='#vardefine',args={'CV',cv.text}}
			break
		end
	end
end

--①根据赛马娘的ID(race_set_id)从single_mode_route_race中找到比赛组ID(race_group_id)
--②根据比赛组ID(race_group_id)从single_mode_race_group中找到比赛详情ID(race_program_id)
--③根据比赛详情ID(race_program_id)从single_mode_program中找到比赛ID(race_instance_id)
--④根据比赛ID(race_instance_id)从text_data_29中找到比赛名称(text)
p["育成目标"]=function(frame)
	local id=frame.args["id"]  --赛马娘的ID
	local d_race=d.single_mode_route_race  --育成比赛目标
	local d_data=d.single_mode_program     --记录了比赛详细信息
	local d_group=d.single_mode_race_group --用于连接比赛组ID(race_group_id)和比赛详情ID(race_program_id)
	local d_text=d_fan.text_data_29  --记录了比赛名称和比赛index
	for i,v in pairs (d_race) do
		if(v.race_set_id==id)then --在育成比赛目标中的race_set_id就是赛马娘的id
			local v1=v.condition_value_1
			local v2=v.condition_value_2
			local ctype=v.condition_type --训练类型。2代表指定名次以内,3代表集成多少粉丝?
			local cid=v.condition_id --训练ID,也就是上面的比赛组ID(race_group_id)
			local alter=''
			local ttype=v.target_type
			
			if(ttype =='3')then break end --遍历到目标为URA比赛时停止
			if(v.determine_race ~='0')then --判定是否有分歧路线
				alter = '(有分歧路线)'
			end
			local year = '第'..tostring(math.ceil(tonumber(v.turn)/24))..'年 '
			local month = tostring(math.floor(((tonumber(v.turn)-1)%24)/2)+1)..'月 '
			local half='前半' if(tonumber(v.turn)%2==0)then half='后半'end
			frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id..'时间',year..month..half}}
			for j,k in pairs(d_group)do
				if(ctype=="2")then 
					if(cid=='100')then 
						--mw.log(string.format('GⅠレースで%s回%s着以内に入着する',v2,v1) )
						frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id,string.format('於GⅠ上榜%s次前%s名以內',v2,v1) }}
					elseif(cid=='200')then
						frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id,string.format('於GⅡ上榜%s次前%s名以內',v2,v1) }}
					elseif(cid=='300')then
						frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id,string.format('於GⅢ上榜%s次前%s名以內',v2,v1) }}
					end
				break 
				end
				if(ctype=="3")then --mw.log(string.format('ファンを%s人集める',v1)) 
					frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id,string.format('累積%s名粉絲',v1)}} 
					frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id..'条件',string.format('粉丝数%s人以上',v1)}}
				break 
				end
				if(k.race_group_id==cid)then  --k是d_group,即single_mode_race_group,用于连接比赛组ID(race_group_id)和比赛详情ID(race_program_id)
					for m,n in pairs(d_data)do  --d_data是single_mode_program,记录了比赛详情
						if(n.id==k.race_program_id)then
							local fans=n.need_fan_count
							if(n.grade_rate_id ~= '900')then--输出比赛id, 屏蔽出道战
								frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id..'id',string.sub(n.race_instance_id, 1 ,4)}}
							end
							for q,w in pairs(d_text)do
								if(w.index==n.race_instance_id)then
									if(v1=='0')then --mw.log(w.text..'に出走')
										frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id, '參賽 '..w.text..alter}}
									else 
										if(v1~='1')then v1=" 跑入前"..v1..'名以內' else v1=' 獲得第'..v1..'名'end
										frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id,'於 '..w.text..v1..alter}}
										--mw.log(month..half)
									end
									if(fans~='0')then 
										frame:callParserFunction{name='#vardefine',args={'目标'..v.sort_id..'条件',string.format('粉丝数%s人以上',fans)}}
										--mw.log(string.format('粉丝数%s人以上',fans))
									end
									break
								end
							end
							break
						end
					end
					break 
				end
			end
		end
	end
	for i,v in pairs (frame.args)do
		if(v~="")then frame:callParserFunction{name='#vardefine',args={i,v}}end
	end
	return
end

p["支援卡信息"]=function(frame)
	local id=frame.args["id"]
	local fan_cardname = d_fan.text_data_75
	local fan_story = d_fan.text_data_88
	local fan_card = require('模块:繁中支援卡效果数据库内容').support_card_data
	local cname = ''
	local title = ''
	local chara = ''
	local rarity = string.sub(id,1,1)
	local command_table = {['101']='速度',['102']='力量',['103']='毅力',['105']='耐力',['106']='智力',['0']='友人'}
	if rarity == '1'then
		frame:callParserFunction{name='#vardefine',args={'稀有度', 'R'}}
	elseif rarity == '2'then
		frame:callParserFunction{name='#vardefine',args={'稀有度', 'SR'}}
	elseif rarity == '3'then
		frame:callParserFunction{name='#vardefine',args={'稀有度', 'SSR'}}
	end
	for i,cardname in pairs(fan_cardname)do
		if id == cardname.index then
			title = '【'..string.sub(strsplit(cardname.text,']')[1],2)..'】'
			chara = strsplit(cardname.text,']')[2]
			cname = title .. chara
			frame:callParserFunction{name='#vardefine',args={'卡名', cname}}
			frame:callParserFunction{name='#vardefine',args={'前缀', title}}
			frame:callParserFunction{name='#vardefine',args={'关联角色', chara}}
			break
		end
	end
	for j,story in pairs(fan_story)do
		if id == story.index then
			frame:callParserFunction{name='#vardefine',args={'小故事', story.text}}
			break
		end
	end
	for k,card in pairs(fan_card)do
		if id == card.id then
			if card.command_id == "0" and card.support_card_type == "3" then 
				frame:callParserFunction{name='#vardefine',args={'类型', "团队"}}
			else 
				frame:callParserFunction{name='#vardefine',args={'类型', command_table[card.command_id]}}
			end 
			break
		end
	end
end

p["支援卡ao"]=function(frame)
	local id = frame.args["id"]
	local d_data = d.single_mode_scout_chara
	local ranks = {"G","F","E","D","C","B","A"}
	for i,v in pairs (d_data) do
		if(v.support_card_id == id)then
			frame:callParserFunction{name='#vardefine',args={'ao速度',v.speed}}
			frame:callParserFunction{name='#vardefine',args={'ao速度上限',v.speed_limit}}
			frame:callParserFunction{name='#vardefine',args={'ao耐力',v.stamina}}
			frame:callParserFunction{name='#vardefine',args={'ao耐力上限',v.stamina_limit}}
			frame:callParserFunction{name='#vardefine',args={'ao力量',v.pow}}
			frame:callParserFunction{name='#vardefine',args={'ao力量上限',v.pow_limit}}
			frame:callParserFunction{name='#vardefine',args={'ao毅力',v.guts}}
			frame:callParserFunction{name='#vardefine',args={'ao毅力上限',v.guts_limit}}
			frame:callParserFunction{name='#vardefine',args={'ao智力',v.wiz}}
			frame:callParserFunction{name='#vardefine',args={'ao智力上限',v.wiz_limit}}
			frame:callParserFunction{name='#vardefine',args={'ao草地适性',ranks[tonumber(v.proper_ground_turf)]}}
			frame:callParserFunction{name='#vardefine',args={'ao泥地适性',ranks[tonumber(v.proper_ground_dirt)]}}
			frame:callParserFunction{name='#vardefine',args={'ao短距离适性',ranks[tonumber(v.proper_distance_short)]}}
			frame:callParserFunction{name='#vardefine',args={'ao英里赛适性',ranks[tonumber(v.proper_distance_mile)]}}
			frame:callParserFunction{name='#vardefine',args={'ao中距离适性',ranks[tonumber(v.proper_distance_middle)]}}
			frame:callParserFunction{name='#vardefine',args={'ao长距离适性',ranks[tonumber(v.proper_distance_long)]}}
			frame:callParserFunction{name='#vardefine',args={'ao逃适性',ranks[tonumber(v.proper_running_style_nige)]}}
			frame:callParserFunction{name='#vardefine',args={'ao先行适性',ranks[tonumber(v.proper_running_style_senko)]}}
			frame:callParserFunction{name='#vardefine',args={'ao差行适性',ranks[tonumber(v.proper_running_style_sashi)]}}
			frame:callParserFunction{name='#vardefine',args={'ao追适性',ranks[tonumber(v.proper_running_style_oikomi)]}}
			break
		end
	end
end

return p