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="3番",value=3}, {name="4番",value=4}, {name="5番",value=5}, }, luobonum={ {name="无萝卜",value=0}, {name="1萝卜",value=1}, {name="2萝卜",value=2}, }, piaomode={ {name="不飘",value=0}, {name="随飘",value=1}, {name="必飘",value=2}, }, dianganghua={ {name="点杠花(点炮)",value=1}, {name="点杠花(自摸)",value=2}, }, zimomode={ {name="自摸加底",value=1}, {name="自摸加番",value=2}, {name="自摸不加",value=0}, }, baojiao = { {name="报叫",value=1}, {name="",value=0,hide=true}, }, jingoudiao = { {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}, }, 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={ specrule="玩法", playnum="人数", limitfan="封顶", luobonum="萝卜", diFenLimit="低分加分", baseMulti="积分倍数", forbidProp = "其他", forbidVoice="其他", } wanfa.ruleText = { { title = "基础规则", content = { "1、用牌:麻将“条、筒”从一到九,各4张,合计共72张牌。", "2、玩法:可碰、杠,不可吃,可点炮、自摸、一炮多响。", "3、定庄:首局房主坐庄。之后,由上局“一胡”玩家坐庄;一炮双响则放炮者坐庄,流局则摸最后一张牌玩家坐庄。", "4、一牌多用:碰杠胡可同时使用,一家操作操作完,需要等另一家操作完。", }, }, --[2] = --[[{ title = "名词解释", content = { "1、刮风(明杠),分为直杠和巴杠。", " (1)直杠:玩家手中有三张一样的牌,其他玩家打出此牌,该玩家杠。", " (2)巴杠(面下杠):玩家已经碰出一对牌,又自摸到碰的牌选中杠。", "2、下雨(暗杠):玩家手中有4张相同的牌选择杠。", "3、过手胡:在同一回合中,若有人点炮,玩家没有胡牌,则此回合其他玩家点炮,只要没有加番就不能胡,自摸可以胡。", "4、查大叫:流局时没有听牌的玩家赔给有叫的玩家最大番数,刮风下雨结算(未听牌玩家刮风下雨分数返还)。", "5、自摸加底:玩家自摸后,除获得相应牌型分后再加1底分。", "6、自摸加番:玩家自摸后,计算牌型分后,再在该牌型分*2。", "7、呼叫转移:开杠的人在杠上炮后,杠钱要一井转移给接炮的人,如果杠不结算则不转移。", "8、杠上花:明暗杠后,补张自摸。", "9、杠上炮:玩家开杠后放炮。", } }, --[3] = { title = "胡牌类型", content = { "1、平胡:四坎(除4副刻子)加一对将。", "2、对对胡:四副刻子加一对将。", "3、清一色:全部是一种花色的平胡。", "4、七对:玩家手牌都是对子。", "5、龙七对:玩家手牌都是对子,并且有一个根儿。", "6、清大对:清一色+对对胡。", "7、清七对:清一色+七对。", "8、清龙七对:清一色+龙七对。", "9、天胡:庄家起牌就胡牌。", "10、地胡:只在庄家出的第一张牌为地胡。", } }, --[4] = { title = "特殊玩法", content = { "1、报叫:可选择报叫,赌自摸,不报。AB玩家均报,相互结算+2番;AB玩家其中1家报,相互结算+1番;AB玩家均不报,相互不加番。", "2、飘:如果开设房间时选择“不飘”,那么不允许任何人飘;如果开设房间时选择“随飘”,那么每一小局开始前由玩家自己选择是否飘;如果开设房间时选择“必飘”,那么每局每人都是飘家。", " (1)AB玩家均飘,相互结算+2番", " (2)AB玩家其中1家飘,相互结算+1番;", " (3)AB玩家均不飘,相互不加番。", "3、拔萝卜:", " (1)一局结束,系统随机抽萝卜牌(如果创建房间选择1个萝卜,那么抽一张;如果创建房间选择2个萝卜,那么抽两张...)。", " (2)胡牌玩家手牌中(包括碰、胡牌)有一张萝卜牌,则+1分。", " (3)拔出相同萝卜,萝卜数*2。", } },--]] } function wanfa.getWanFaInfo(str) str = str or "" 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.."" 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) str = str or "" 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.."" 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) str = str or "" local tab=json.decode(str) local temp={} for k,v in pairs(tab) do if wanfa[k] then if k == "playnum" and tab["isfaststart"] == 1 then --temp=temp.."" elseif k == "baseMulti" then table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={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,{name=wanfa.clubWanFaTitle[k] or "",value={des}}) end end else table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"不加分"}}) end elseif k == "specrule" then local firstWf = true for _,data in pairs(wanfa[k]) do if not data.hide then if getNumBand(v,data.value) > 0 then if firstWf then firstWf = false table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) else table.insert(temp,{name="",value={data.name}}) end end end end else for _,data in pairs(wanfa[k]) do if v==data.value and not data.hide then table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) --temp=temp..data.name.." " end end end end end return temp end function wanfa.getClubTableWanFaInfo(str) str = str or "" local tab=json.decode(str) local temp="" for k,v in pairs(tab) do if wanfa[k] then if k == "limitfan" or k == "laizinum" or k == "luobonum" 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 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