全站通知:
模块:繁中比赛查询
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:繁中比赛查询/doc创建
local p={}
local d_fan = require('模块:繁中数据库内容')
local d_race = require('模块:繁中比赛数据库内容')
function setDefault (t, d)
local mt = {__index = function () return d end}
setmetatable(t, mt)
end
p["查找比赛ID"]=function(frame)
local name=frame.args["name"]
local d_text=d_race.text_data_29
for q,w in pairs(d_text)do
if(w.text==name)then
--mw.log('ID:'..string.sub(w.index, 1, -3).."yuan:"..w.index)
frame:callParserFunction{name='#vardefine',args={"比赛ID",string.sub(w.index, 1, -3)}}
end
end
return
end
p["比赛ID查赛场属性"]=function(frame)
local Id=frame.args["id"]
local course_id = ""
local grade=0
local distance = 0
local race = d_race.race
local free_point = d_race.single_mode_free_win_point
local free_coin = d_race.single_mode_free_coin_race
local mc_table = {["10001"]="札幌",["10002"]="函館",["10003"]="新潟",
["10004"]="福島",["10005"]="中山",["10006"]="東京",["10007"]="中京",
["10008"]="京都",["10009"]="阪神",["10010"]="小倉",["10101"]="大井",
["10103"]="川崎",["10104"]="船橋",["10105"]="盛岡"
}
setDefault(mc_table, "(未知)")
local turn_table = {["1"]="顺",["2"]="逆",["4"]="直"}
setDefault(turn_table, "(未知)")
local grade_table = {["100"]="GⅠ",["200"]="GⅡ",["300"]="GⅢ",["400"]="OP",
["700"]="Pre-OP"}
setDefault(grade_table, "(未知)")
local typetable = {'','内','外','外'}
local groundtable = {'草地','沙地'}
for i,Rrace in pairs(race)do
if(Id == Rrace.id)then
frame:callParserFunction{name='#vardefine',args={"参赛人数",Rrace.entry_num}}
mw.log('参赛人数:'..Rrace.entry_num..'赛程id:'..Rrace.course_set)
grade = Rrace.grade
frame:callParserFunction{name='#vardefine',args={"赛事等级",grade_table[Rrace.grade]}}
course_id = Rrace.course_set
frame:callParserFunction{name='#vardefine',args={"course_id",course_id}}
break
end
end
for j,Course in pairs(d_race.race_course_set)do
if (course_id == Course.id)then
-- 方向:1-右,2-左,4-直线
-- 赛道:1-无,2-内,3-外,4-外→内
-- 类型:1-草,2-泥
--mw.log('距离:'..Course.distance..'场地类型:'..Course.ground.." 赛道"..Course.inout..' 方向:'..Course.turn.." 最短完成时间:"..Course.finish_time_min)
distance = tonumber(Course.distance)
if distance <= 1400 then
frame:callParserFunction{name='#vardefine',args={"赛程","短距離"}}
elseif distance <= 1800 then
frame:callParserFunction{name='#vardefine',args={"赛程","一哩"}}
elseif distance <= 2400 then
frame:callParserFunction{name='#vardefine',args={"赛程","中距離"}}
else
frame:callParserFunction{name='#vardefine',args={"赛程","長距離"}}
end
frame:callParserFunction{name='#vardefine',args={"最短用时",tonumber(Course.finish_time_min)/10000 ..' ±'.. tonumber(Course.finish_time_min_random_range)/10000}}
frame:callParserFunction{name='#vardefine',args={"最长用时",tonumber(Course.finish_time_max)/10000 ..' ±'.. tonumber(Course.finish_time_max_random_range)/10000}}
frame:callParserFunction{name='#vardefine',args={"赛道",typetable[tonumber(Course.inout)]}}
frame:callParserFunction{name='#vardefine',args={"赛场",mc_table[Course.race_track_id]}}
frame:callParserFunction{name='#vardefine',args={"方向",turn_table[Course.turn]}}
frame:callParserFunction{name='#vardefine',args={"长度",Course.distance}}
frame:callParserFunction{name='#vardefine',args={"场地类型",groundtable[tonumber(Course.ground)]}}
end
end
--[[
for k,point in pairs(free_point)do
if point.grade == grade then
frame:callParserFunction{name='#vardefine',args={"排名"..point.order_min.."点数",point.point_num}}
end
end
for l,coin in pairs(free_coin)do
if coin.grade == grade then
frame:callParserFunction{name='#vardefine',args={"排名"..coin.order_min.."商店币",coin.coin_num}}
end
end
--]]
return
end
--1)根据比赛名称(text)从text_data_29中找到比赛ID(race_instance_id)
--2)根据比赛ID(race_instance_id)从single_mode_program中找到比赛详情ID(race_program_id)
--3)根据比赛详情ID(race_program_id)从single_mode_race_group中找到比赛组ID(race_group_id)
--4)根据比赛组ID(race_group_id)从single_mode_route_race中找到赛马娘的ID(race_set_id)
p["比赛找赛马娘"]=function(frame)
local umamsm_num = 0
local umamsm_array = {}
local race_ID=frame.args["id"]
local single_mode_program = d_race.single_mode_program
local single_mode_race_group = d_race.single_mode_race_group
local single_mode_route_race = d_race.single_mode_route_race
for i,program in pairs(single_mode_program)do
local riID = string.sub(program.race_instance_id, 1, -3)
if (riID==race_ID)then
mw.log('比赛ID:'..riID)
--2)根据比赛ID(race_instance_id)从single_mode_program中找到比赛详情ID(race_program_id)
for j,group in pairs(single_mode_race_group)do
if (group.race_program_id == program.id)then
mw.log('比赛详情ID:'..group.race_program_id )
--3)根据比赛详情ID(race_program_id)从single_mode_race_group中找到比赛组ID(race_group_id)
local last_uma = 0
for k,race in pairs(single_mode_route_race)do
if (race.condition_id == group.race_group_id)then
--mw.log('比赛组ID:'..race.condition_id )
--4)根据比赛组ID(race_group_id)从single_mode_route_race中找到赛马娘的ID(race_set_id)
mw.log('赛马娘ID:'..race.race_set_id)
if (last_uma == race.race_set_id)then
umamsm_num = umamsm_num - 1
end
last_uma=race.race_set_id
umamsm_num = umamsm_num + 1
umamsm_array[umamsm_num] = race.race_set_id
--[[
for i,character in pairs (translate_text.translate_data_6_6)do
if (race.race_set_id==character.index)then
mw.log('赛马娘中文名:'..character.translate)
--frame:callParserFunction{name='#vardefine',args={"赛马娘A"..umamsm_num,character.translate}}
umamsm_array[umamsm_num] = character.translate
end
end
--]]
end
end
end
end
end
end
local output = ""
for k, v in pairs(umamsm_array) do
output = output..v.."、"
end
frame:callParserFunction{name='#vardefine',args={"赛马娘A",string.sub(output,0,-4)}}
mw.log("赛马娘A",string.sub(output,0,-4))
return
end
--好大的一个三角形,小伙伴们千万不要学着这么写!!
--感谢大佬的代码和详尽注释! 学着补充了找比赛奖励的函数
--1)根据比赛ID(race_instance_id)从single_mode_program中找到奖励组ID(reward_set_id)
--2)根据奖励组ID(reward_set_id)从single_mode_reward_set中找到物品ID(item_id). reward_type="2"为首次夺得第一名奖励; reward_type="1"为通常奖励
p["比赛找奖励"]=function(frame)
local race_ID=frame.args["id"]
local item_array = {}
local single_mode_program = d_race.single_mode_program
local single_mode_reward_set = d_race.single_mode_reward_set
local single_mode_fan_count = d_race.single_mode_fan_count
local race = d_race.race
local course_set = d_race.race_course_set
local race_trophy = d_race.race_trophy
for i,program in pairs(single_mode_program)do
local item_num = 0
local riID = string.sub(program.race_instance_id, 1, -3)
if (riID == race_ID)then
--mw.log('比赛ID:'..riID)
local last_item = 0
for j, set in pairs(single_mode_reward_set)do
if (set.reward_set_id == program.reward_set_id and set.reward_type == "1")then
--mw.log('奖励组ID:'..set.reward_set_id)
if (last_item == set.item_id)then
item_num = item_num - 1
end
last_item = set.item_id
item_num = item_num + 1
--mw.log('物品ID:'..set.item_id)
item_array[item_num] = string.format("%05d",set.item_id)
end
end
for f, fan_set in pairs(single_mode_fan_count)do
if program.fan_set_id == fan_set.fan_set_id then
frame:callParserFunction{name='#vardefine',args={"排名"..fan_set.order.."粉丝奖励",fan_set.fan_count}}
end
end
frame:callParserFunction{name='#vardefine',args={"参加所需粉丝数",program.need_fan_count}}
end
end
for l, r in pairs(race)do
if (r.id == race_ID)then
for m, n in pairs(course_set)do
if (r.course_set == n.id)then
frame:callParserFunction{name='#vardefine',args={"race_track",n.race_track_id}}
break
end
end
end
end
local output = ""
for k, v in pairs(item_array) do
output = output..v.."、"
end
frame:callParserFunction{name='#vardefine',args={"奖励",output}}
--mw.log("奖励ID:",output)
return
end
p["比赛属性"]=function(frame)
local race_ID=frame.args["id"]
local id = race_ID.."01"
local race = d_race.race
local fan_name = d_fan.text_data_28
local fan_nickname = d_fan.text_data_29
local race_course_set = d_race.race_course_set
local race_course_set_status = d_race.race_course_set_status
local Sstatus = {"速度","持久力","力量","意志力","智力"}
local Rstatus = ""
for i,Rrace in pairs(race)do
if(race_ID == Rrace.id)then
for j,c_set in pairs(race_course_set)do
if(c_set.id == Rrace.course_set)then
if(c_set.course_set_status_id == "0")then
break
end
for k,CSset in pairs(race_course_set_status)do
if(CSset.course_set_status_id == c_set.course_set_status_id)then
Rstatus = Rstatus..Sstatus[tonumber(CSset.target_status_1)]
if(CSset.target_status_2 ~= "0")then
Rstatus = Rstatus.."、"..Sstatus[tonumber(CSset.target_status_2)]
end
break
end
end
end
end
end
end
frame:callParserFunction{name='#vardefine',args={"比赛属性",Rstatus}}
-- 繁中
for j,name in pairs(fan_name)do
if id == name.index then
frame:callParserFunction{name='#vardefine',args={"繁译名",name.text}}
break
end
end
for k,nickname in pairs(fan_nickname)do
if id == nickname.index then
frame:callParserFunction{name='#vardefine',args={"繁译简称",nickname.text}}
break
end
end
end
return p

沪公网安备 31011002002714 号