local wanfa={ playnum={ {name="4人",value=4}, {name="3人",value=3}, {name="2人",value=2}, }, isfaststart={ {name="快速成局",value=1}, {name="",value=0,hide=true}, }, limitfan={ {name="5番",value=5}, {name="6番",value=6}, }, piaomode={ {name="不飘",value=0}, {name="随飘",value=1}, {name="定飘",value=2}, }, jingnum={ {name="4听用",value=4}, {name="8听用",value=8}, {name="11听用",value=11}, }, -- jingelevenrule={ -- {name="2番起胡", value= 0x01}, -- {name="无听用加3番", value= 0x02}, -- }, fan2qihu = { {name = '2番起胡', value = 0x01}, }, jia3fan = { {name = '无听用加3番', value = 0x02}, }, humode={ {name="点炮胡", value= 2}, {name="自摸胡", value= 1}, }, -- specialrule={ -- {name="定缺", value= 0x01}, -- {name="天胡满贯", value= 0x02}, -- }, dingque = { {name = '定缺', value = 0x01}, }, tianhumanguan = { {name = '天胡满贯', value = 0x02}, }, baseMulti = { ["1"] = "积分倍数x" }, forbidProp = { {name = "屏蔽快捷语与道具", value = 1}, {name = "屏蔽快捷语与道具", value = 0, hide = true}, }, forbidVoice = { {name = "屏蔽语音", value = 1}, {name = "屏蔽语音", value = 0, hide = true}, }, } wanfa.clubWanFaTitle={ playnum = "人数", isfaststart = '人数', limitfan = "封顶", piaomode ='玩法', baseMulti="积分倍数", forbidProp = "其他", } wanfa.ruleText = { { title = "基础规则", content = { '1、用牌:筒、条、万3种花色,共108张牌。', '2、打法:可碰、可杠、自摸/点炮。', '3、坐庄:上局最先胡牌玩家坐庄,若一炮多响,则点炮玩家坐庄,流局则上局庄家继续坐庄。', '4、缺一门:必须要打缺之后才能胡牌,即胡牌最多只有两种花色,否则为花猪,系统默认有定缺牌时,必须出定缺牌。', '5、血战:玩家胡牌后,其余玩家继续游戏。', '6、查大叫:流局时,检查玩家是否下叫,未下叫玩家(花猪除外)要赔付已下叫的玩家最大可能番数。', }, }, --[2] = --[[{ title = "胡牌类型", content = { '1、平胡:四坎牌(除四副刻子)加一对将。', '2、对对胡:四副刻子加一对将。', '3、清一色:全部是一种花色的平胡。', '4、七对:玩家手牌都是两张一对的,没有碰和杠。', '5、龙七对:牌型为七对,但玩家手中有四张一样的牌(没有杠出)。只能算一个龙七对,其他的算根。', '6、清对:清一色+对对胡。', '7、清七对:清一色+七对。', '8、清龙七对:清一色+龙七对。', } }, --[3] = { title = "特殊规则", content = { '1、飘:牌局开始前玩家选择“飘”或“不飘”来决定加倍与否。', '2、本金:牌局开始时,庄家在尾家摸完牌后,将接下来的那张牌翻开,翻开的这张牌叫本金。', '3、听用: “听用”牌可以代替其他任意牌,即癞子的作用,不可被打出。', '4、飞:听用牌可以代替其他牌进行碰的操作,即用一张听用牌和一张与对手打出相同的牌碰对手打出的牌,称为“飞”。', '5、提:“飞”牌后,若摸到碰牌中的非听用牌,则可进行“提”操作,用摸到的牌把听用牌提出来,重新交换到手牌中。', '6、根:四张相同的牌未开杠,与听用牌组成的四张相同的牌也算,为一根。', '7、杠:只有纯四张相同的牌才能进行杠操作,含听用牌的不行,明/暗/补杠,都需要亮出来给别人看,有杠胡牌可加番。', } },--]] } function wanfa.__parseTingRule(tingRule) local tbRules = {}; if getNumBand(tingRule, 0x01) > 0 then tbRules.fan2qihu = 0x01 end if getNumBand(tingRule, 0x02) > 0 then tbRules.jia3fan = 0x02 end return tbRules; end function wanfa.__parseSpecRule (specialrule) local tbRules = {}; if getNumBand(specialrule, 0x01) > 0 then tbRules.dingque = 0x01 end if getNumBand(specialrule, 0x02) > 0 then tbRules.tianhumanguan = 0x02 end return tbRules; end -- 小结算的规则显示 function wanfa.getWanFaInfo(str) local tab=json.decode(str) local temp="" for k,v in pairs(tab) do if wanfa[k] then if k == "playnum" then--and tab["isfaststart"] == 1 temp=temp.."" else for _,data in pairs(wanfa[k]) do if v==data.value and not data.hide then temp=temp..data.name.." " end end end end end local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0); for k,v in pairs(specialrule) do for _,data in pairs(wanfa[k] or {}) do if v == data.value and not data.hide then temp=temp..data.name.." " end end end local jingelevenrule = wanfa.__parseTingRule(tab.jingelevenrule or 0); for k,v in pairs(jingelevenrule) do for _,data in pairs(wanfa[k] or {}) do if v == data.value and not data.hide then temp=temp..data.name.." " end end end return temp end -- 房间规则显示 function wanfa.getWanFaInfoTab(str) local tab=json.decode(str) local temp={} for k,v in pairs(tab) do if wanfa[k] then if k == "playnum" then--and tab["isfaststart"] == 1 -- temp=temp.."" else for _,data in pairs(wanfa[k]) do if v==data.value and not data.hide then -- temp=temp..data.name.." " table.insert(temp,data.name) end end end end end -- 听用规则 if tab.jingelevenrule and tab.jingelevenrule ~= 0 then local jingelevenrule = wanfa.__parseTingRule(tab.jingelevenrule or 0); for k,v in pairs(jingelevenrule) do for _,data in pairs(wanfa[k] or {}) do if v == data.value and not data.hide then table.insert(temp,data.name) end end end end -- 特殊规则 local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0); for k,v in pairs(specialrule) do for _,data in pairs(wanfa[k] or {}) do if v == data.value and not data.hide then table.insert(temp,data.name) end end end if tab.baseMulti and tab.baseMulti > 0 then table.insert(temp, wanfa.baseMulti['1']..tab.baseMulti) end if tab.forbidProp and tab.forbidProp > 0 then table.insert(temp, wanfa.forbidProp['1']) end if tab.forbidVoice and tab.forbidVoice > 0 then table.insert(temp, wanfa.forbidVoice['1']) end return temp end -- 俱乐部的包间玩法显示 function wanfa.getClubWaFaInfo(str) local tab=json.decode(str) local temp={} -- 根据顺序显示(局数,房费,人数,封顶,玩法(飘,听用,胡牌,定缺,天胡满贯)),通过位运算的需要另外添加 local t = { 'playnum', 'isfaststart', 'limitfan', 'piaomode', 'jingnum', 'humode', 'forbidProp','forbidVoice',} -- 如果有快开,那么不显示具体人数,直接杀出 if tab.isfaststart == 1 then tab.playnum = nil end for _, v in ipairs(t) do if wanfa[v] and tab[v] then local value = tab[v] -- 选择的值 local ruleTab = wanfa[v] -- 上面定义的规则表 for _, j in pairs(ruleTab) do if value == j.value and not j.hide then table.insert(temp, {name = wanfa.clubWanFaTitle[v] or "", value = {j.name}, }) break end end end end local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0); for k,v in pairs(specialrule) do for _,data in pairs(wanfa[k] or {}) do if v == data.value and not data.hide then table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) end end end local jingelevenrule = wanfa.__parseTingRule(tab.jingelevenrule or 0); for k,v in pairs(jingelevenrule) do for _,data in pairs(wanfa[k] or {}) do if v == data.value and not data.hide then table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) end end end if tab.baseMulti and tab.baseMulti > 0 then table.insert(temp, {name = wanfa.clubWanFaTitle.baseMulti, value = {wanfa.baseMulti["1"] .. tab.baseMulti}}) end return temp end -- 俱乐部规则,包间模式下的桌子显示(人数,封顶番数,飘的情况,胡牌规则) function wanfa.getClubTableWanFaInfo(str) local tab=json.decode(str) local str = "" local temp = { 'limitfan', 'piaomode', 'humode' } -- 待拼接的字段,不需要人数,人数在另一边有拼接 for i, v in ipairs(temp) do if tab[v] and wanfa[v] then -- 如果有此规则,并且已有定义 local value = tab[v] -- 选择的值 local ruleTab = wanfa[v] -- 上面定义的规则表 for _, j in pairs(ruleTab) do if value == j.value then str = str .. j.name .. ' ' break end end end end -- local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0); -- for i, v in pairs(specialrule) do -- if wanfa[i] then -- local ruleTab = wanfa[i] -- for _, j in pairs(ruleTab) do -- if v == j.value then -- str = str .. j.name .. ' ' -- break -- end -- end -- end -- end return str end function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena) local str = wanfa.getClubWaFaInfo(ruleStr, jushu) return str end function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum) local str = "" local jsonData=json.decode(ruleStr) if jsonData.isfaststart == 1 then str = str .. "快速成局 " else if playerNum then str = str .. playerNum .. "人 " elseif jsonData.playnum then str = str .. jsonData.playnum .. "人 " end end local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr) str = str .. wanfaStr return str end return wanfa