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="2番",value=2}, {name="3番",value=3}, {name="4番",value=4}, }, gshmode={ {name="点杠花(点炮)",value=1}, {name="点杠花(自摸)",value=2}, }, playmode={ {name="自摸加底",value=1}, {name="自摸加番",value=2}, {name="自摸不加",value=0}, }, baojiao = { {name="报叫",value=1}, {name="",value=0,hide=true}, }, swapcard = { {name="换三张",value=1}, {name="",value=0,hide=true}, }, jdyj = { {name="幺九将对",value=1}, {name="",value=0,hide=true}, }, mqzz = { {name="门清中张",value=1}, {name="",value=0,hide=true}, }, tdh = { {name="天地胡",value=1}, {name="",value=0,hide=true}, }, tingpai = { {name="听牌提示",value=1}, {name="",value=0,hide=true}, }, specrule={ {name="过张升番可胡",value=0x0001}, {name="博自摸",value=0x0002}, }, diFenLimit={ {name="小于等于%d分加%d",value=1}, {name="",value=0,hide=true}, }, ting = { {name="听牌提示",value=1}, {name="",value=0,hide=true}, }, duiduihu2fan = { {name = "对对胡两番", value = 1}, {name = "", value = 0, hide = true} }, dpcanxiaohu = { {name = "点炮可平胡", value = 1}, {name = "", value = 0, hide = true} }, handcard = { {name = "7张", value = 7}, {name = "10张", value = 10}, {name = "13张", value = 13}, }, baseMulti = { {name = "积分倍数x", value = 0x0001} }, forbidProp = { {name = "屏蔽快捷语与道具", value = 1}, {name = "屏蔽快捷语与道具", value = 0, hide = true}, }, forbidVoice = { {name = "屏蔽语音", value = 1}, {name = "屏蔽语音", value = 0, hide = true}, }, } wanfa.clubWanFaTitle={ playmode="玩法", playnum="人数", limitfan="封顶", baseMulti="积分倍数", forbidProp = "其他", } wanfa.ruleText = { { title = "基础规则", content = { "1、人数:3人。", "2、道具:麻将“筒”“条”“万”共108张。", "3、玩家胡牌后,其余玩家继续游戏,直到流局或只有一位未胡牌玩家为止。", "4、三人三房麻将不含“换三张”玩法。", "5、三人模式下可以选择点炮可平胡,如果没有选择这个选项,胡小胡只能自摸胡。即胡牌分数要大于1倍底分才可胡牌。", "6、流局时查叫,即未叫玩家要赔偿有叫玩家最大可能番数。", "7、坐庄规则:上一局最先胡牌玩家当庄,如一炮多响则点炮玩家为庄,流局则此局庄家的下家当庄。", }, }, --[[{ title = "胡牌类型", content = { "13张模式", "1、平胡(0番):四坎(除4副刻子)加一对将。", "2、对对胡(1番或2番):四副刻子加一对将。在对对胡两翻模式下2番,否则1番。", "3、清一色(2番):全部是一种花色的平胡。", "4、七对(2番):玩家手牌都是对子,没有碰和刮风下雨。", "5、龙七对(3番):玩家手牌都是对子,并且有一个根儿,没有碰和刮风下雨。6、清对(3番或4番):清一色+对对胡。在对对胡两翻模式下4番,否则3番", "6、清七对(4番):清一色+七对", "7、清龙七对(5番):清一色+龙七对", "8、全幺九(3番):所有组成的顺子、刻子、将牌里都包含1或9。", "9、将对(3番):所有牌当中,全部是2、5、8组成的对对胡。", "10、将七对(4番):所有牌当中,全是2、5、8组成的龙七对。", "11、门清(1番):胡牌时,没有碰过牌,没有明杠。", "12、中张(1番):胡牌时所有牌没有一和九。", "13、夹心五(1番):胡牌时,牌型可以摆成4和6夹一个5的胡牌。比如下面的牌型胡5条时,就是夹心五。", "", "10张模式", "1、平胡(0番):三坎(除3副刻子)加一对将。", "2、对对胡(1番或2番):三副刻子加一对将。在对对胡两翻模式下2番,否则1番。", "3、清一色(2番):全部是一种花色的平胡。", "4、清对(3番或4番):清一色+对对胡。在对对胡两翻模式下4番,否则3番", "5、全幺九(3番):所有组成的顺子、刻子、将牌里都包含1或9。", "6、将对(3番):所有牌当中,全部是2、5、8组成的对对胡。", "", "7张模式", "1、平胡(0番):两坎(除2副刻子)加一对将。", "2、对对胡(1番或2番):两副刻子加一对将。在对对胡两翻模式下2番,否则1番。", "3、清一色(2番):全部是一种花色的平胡。", "4、四对(2番):玩家手牌都是对子,没有碰和刮风下雨。", "5、龙四对(3番):玩家手牌都是对子,并且有一个根儿,没有碰和刮风下雨。6、清对(3番或4番):清一色+对对胡。在对对胡两翻模式下4番,否则3番", "6、清四对(4番):清一色+四对", "7、清龙四对(5番):清一色+龙四对", "8、全幺九(3番):所有组成的顺子、刻子、将牌里都包含1或9。", "9、将对(3番):所有牌当中,全部是2、5、8组成的对对胡。", "10、将四对(4番):所有牌当中,全是2、5、8组成的四对。", } }, { title = "算分规则", content = { "番=底金×2 例如:底金为1分,2番=1*2*2=4分 3番=1*2*2*2=8分", "基本输(赢)积分=番数+刮风下雨+自摸加底(自摸加番玩法则算在总番里)", "点炮结算方式为1对1,自摸结算方式为1对多。", "另加番", "1、根:+1番 所有牌中有4张一样的牌,(无论是否碰、杠),可累计计算。", "2、杠上开花:+1番", "3、杠上炮:+1番", "4、抢杠胡:+1番", "5、扫底胡:+1番", "6、金钩胡:+1番", "7、海底炮:+1番", "8、天胡:+3番", "9、地胡:+2番", "备注:各个牌型不重复计算,只收取最大番。", } },--]] } function wanfa.getWanFaInfo(str) local tab=json.decode(str) local temp="" for k,v in pairs(tab) do if wanfa[k] and k ~= "ting" then if k == "playnum" then--and tab["isfaststart"] == 1 temp=temp.."" elseif k == "baseMulti" then temp=temp..wanfa[k][1].name..v.." " elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then for _,data in pairs(wanfa[k]) do if not data.hide then local des = string.format(data.name,v,tab.diFenAdd) temp=temp..des.." " end end else temp=temp.."不加分".." " end elseif k == "specrule" then for _,data in pairs(wanfa[k]) do if not data.hide then if getNumBand(v,data.value) > 0 then temp=temp..data.name.." " end end end 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 return temp end function wanfa.getWanFaInfoTab(str) local tab=json.decode(str) local temp={} for k,v in pairs(tab) do if wanfa[k] and k ~= "ting" then if k == "playnum" then--and tab["isfaststart"] == 1 -- temp=temp.."" elseif k == "baseMulti" then table.insert(temp,wanfa[k][1].name..v) elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then for _,data in pairs(wanfa[k]) do if not data.hide then local des = string.format(data.name,v,tab.diFenAdd) table.insert(temp,des) end end else table.insert(temp,"不加分") end elseif k == "specrule" then for _,data in pairs(wanfa[k]) do if not data.hide then if getNumBand(v,data.value) > 0 then table.insert(temp,data.name) end end end 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 return temp end function wanfa.getClubWaFaInfo(str, jushu) local tab=json.decode(str) local temp={} if jushu then local jushuText = string.format("%d 局", jushu); table.insert(temp, 1, {name = "局数", value = {jushuText}}) end local orderList = { "deductRule", "playnum", "limitfan", "playmode", "gshmode", "baojiao", "swapcard", "jdyj", "mqzz", "tdh", -- "ting", "specrule", -- "diFenLimit", "duiduihu2fan", "jiaxinwu", "dpcanxiaohu", "tingpai", "handcard", "baseMulti", "forbidProp", "forbidVoice", } for _, key in pairs(orderList) do if wanfa[key] then if key == "playnum" and tab["isfaststart"] == 1 then table.insert(temp, {name = "人数" or "", value={"快速成局"}}) elseif key == "baseMulti" then table.insert(temp,{name=wanfa.clubWanFaTitle.baseMulti or "",value={wanfa.baseMulti[1].name .. tab.baseMulti}}) elseif key == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then if tab[key] and tab[key] > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then for _,data in pairs(wanfa[key]) do if not data.hide then local des = string.format(data.name, tab[key],tab.diFenAdd) table.insert(temp,{name=wanfa.clubWanFaTitle[key] or "",value={des}}) end end else table.insert(temp,{name=wanfa.clubWanFaTitle[key] or "",value={"不加分"}}) end elseif key == "specrule" then local firstWf = true for _,data in pairs(wanfa[key]) do if not data.hide then if tab[key] and getNumBand( tab[key],data.value) > 0 then if firstWf then firstWf = false table.insert(temp,{name=wanfa.clubWanFaTitle[key] or "",value={data.name}}) else table.insert(temp,{name="",value={data.name}}) end end end end else for _,data in pairs(wanfa[key]) do if tab[key]==data.value and not data.hide then table.insert(temp,{name=wanfa.clubWanFaTitle[key] or "",value={data.name}}) --temp=temp..data.name.." " end end end end end return temp end function wanfa.getClubTableWanFaInfo(str) local tab=json.decode(str) local temp="" for k,v in pairs(tab) do if wanfa[k] then if k == "handcard" or k == "limitfan" then for _,data in pairs(wanfa[k]) do if v==data.value then -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) temp=temp..data.name.." " end end end end end return temp end --- -- 获取亲友圈玩法 -- @param gameId -- @param jushu -- @param ruleStr -- @param arena -- @return -- function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena) local str = wanfa.getClubWaFaInfo(ruleStr, jushu) return str end --- -- 获取包间多玩法桌子上显示的信息 -- @param gameId -- @param ruleStr -- @param playerNum -- @return -- function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum) local str = "" local jsonData=json.decode(ruleStr) if jsonData.isfaststart == 1 or jsonData.faststart == 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