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}, }, piaomode={ {name="不飘",value=0}, {name="自由飘",value=1}, {name="固定飘",value=2}, }, gamescore={ {name="1+1",value=1}, {name="2+1",value=2}, {name="3+1",value=3}, {name="4+1",value=4}, {name="5+1",value=5}, },--]] gshmode={ {name="点杠花(点炮)",value=1}, {name="点杠花(自摸)",value=2}, }, twoFang={ {name="",value=0,hide=true}, {name="2人2房",value=1}, }, baojiao = { {name="报叫",value=1}, {name="",value=0,hide=true}, }, zimomode = { --{name="自摸不加",value=0}, {name="自摸加番",value=2}, {name="自摸加底",value=1}, }, difen = { {name = "底分x", value = 0x0001} }, baseMulti = { {name = "积分倍数x", value = 0x0001} }, specRule={ {name="听牌提示",value=0x0001}, {name="换三张",value=0x0002}, {name="定缺",value=0x0004}, {name="比番",value=0x0008}, {name="过张升番胡",value=0x0010}, {name="庄家买马",value=0x0020}, }, forbidProp = { {name = "屏蔽快捷语与道具", value = 1}, {name = "屏蔽快捷语与道具", value = 0, hide = true}, }, forbidVoice = { {name = "屏蔽语音", value = 1}, {name = "屏蔽语音", value = 0, hide = true}, }, } wanfa.clubWanFaTitle={ playnum="人数", --limitfan="封顶", difen="底分", specRule="玩法", baseMulti="积分倍数", isfaststart="人数", forbidProp = "其他", } wanfa.RuleText = { { title = "基础规则", content = { "1、人数:4人,庄家发14张牌,闲家13张。", "2、道具:麻将“万”“筒”“条”“中”“发”“白”共120张。", "3、玩法:玩家胡牌后,其余玩家继续游戏,直到流局或只有一位未胡牌玩家为止。", "4、缺一门:胡牌时,手牌最多只有2种花色,否则不可以胡牌。", "5、查叫:流局时查叫,即未叫玩家要赔偿有叫玩家最大可能番数。", "6、查花猪:游戏结束后,手上只要有3门牌的玩家即为花猪", "7、坐庄:上一局最先胡牌玩家当庄,如一炮多响则点炮玩家为庄,流局则此局庄家的下家当庄。", }, }, --[[{ title = "名词解释", content = { "1、刮风(明杠),分为直杠和巴杠。", "(1)直杠:玩家手中有三张一样的牌,其他玩家打出此牌,该玩家杠。", "(2)巴杠(面下杠):玩家已经碰出一对牌,又自摸到碰的牌选中杠。", "2、下雨(暗杠):玩家手中有4张相同的牌选择杠。", "3、过手胡:在同一回合中,若有人点炮,玩家没有胡牌,则此回合其他玩家点炮,只要没有加番就不能胡,自摸可以胡。", "4、查大叫:流局时没有听牌的玩家赔给有叫的玩家最大番数,刮风下雨结算(未听牌玩家刮风下雨分数返还)。", "5、自摸加底:玩家自摸后,除获得相应牌型分后再加1底分。", "6、自摸加番:玩家自摸后,计算牌型分后,再在该牌型分*2。", "7、呼叫转移:开杠的人在杠上炮后,杠钱要一井转移给接炮的人,如果杠不结算则不转移。", "8、杠上花:明暗杠后,补张自摸。", "9、杠上炮:玩家开杠后放炮。", } },--]] --[[{ title = "牌型介绍", content = { "1、平胡:四坎(除4副刻子)加一对将。", "2、边张:只能是1、2胡3和8、9胡7。", "3、卡张:即胡两张牌中间的一张,如手上有4、6胡卡5;6、8胡卡7。", "4、单调:手上没有对子,需要调将的叫单调。", "5、门清:没有吃牌,碰牌,杠牌,全凭自己摸牌上听。", "6、大对子:手上每坎牌都是三张一样的牌。", "7、七对:手牌都是对子,没有碰和杠。", "8、龙七对:手牌都是对子,没有碰和杠,且胡的那张牌有四张。", "9、清一色:手上全是一门牌、可以包含“中发白”的牌型都叫清一色。", "10、大三元:中发白每个牌都碰了或者每个含三张牌(及以上)。", "11、十八学士:所有牌杠后单调。", } },--]] --[[{ title = "番数计算", content = { "1、1番=1分,+1番即+1分,+2番即+2分。", "2、基本输积分将由番数和飘算出。", "3、点炮计算方式为1对1,自摸结算方式为1对多。", "4、另加番:", "(1)根:+1番,所有牌中有4张一样的牌,(无论是否碰、杠),可以累计计算。", "(2)杠上花:+1番", "(3)杠上炮:+1番", "(4)抢杠胡:+1番", "(5)扫底胡:+1番", "(6)海底炮:+1番", "(7)金钩钓:+1番", "(8)金钩炮:+1番", "(9)卡心五:+1番", "(10)摆牌:+2番", "(11)摆独张:+5番", } },--]] --[[{ title = "算分规则", content = { "1、番=底分 例如:底分为1分,1番=1分 2番=2分", "2、计分=平胡2番+牌型番(所有牌型番,可叠加)+另加番", "3、点炮结算方式为1对1,自摸结算方式为1对多。", "4、另加番:", "(1)自摸:+1番", "(2)中、发、白:碰+1番、明杠+2番、暗杠+3番", "(3)杠上开花:+5番", "(4)杠上炮:+5番", "(5)抢杠胡:+5番", "(6)金钩钓:+4番,指所有其余牌均已碰(或杠),只留有一张手牌", "(7)海底胡、海底炮:+5番", "(8)海底杠上炮:+10番", } },--]] --[[{ title = "特殊规则", content = { "1、摆牌:", "(1)在叫胡的情况下,可选择摆胡或不摆胡,摆牌后,系统自动出牌。", "(2)摆牌要把自己要胡的所有牌型亮出,让其他玩家看到,知道摆牌玩家胡什么牌,摆胡家不能更换手上所有的牌,但手上的牌有杠可以杠,摆出来的牌是不能杠。", "(3)没有摆牌的玩家摸到摆胡玩家的炮牌不能打出。", "(4)如果一局有2家或3家同时摆胡,且其中1家摸到点炮牌,则必须放炮给另外也摆胡的玩家。这种情况下放炮的玩家所输的摆牌倍数要加2番,如果被放炮玩家普通摆牌,则+4番,如果是摆独张,则+7番。", "(5)当牌桌剩下12张牌时则不能摆胡,前面已经摆好的可以胡。", "(6)放炮(自摸)必胡。", "(7)特殊情况:有一家未摆牌的玩家,手上的牌全部为别的玩家摆胡的炮牌,并且摸上的牌也是的情况下,他可以随意打出一张牌。", } },--]] } 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" and (tab["isfaststart"] == 1 or tab["twoFang"] == 1) then temp=temp.."" elseif k == "baseMulti" or k == "difen" then temp=temp..wanfa[k][1].name..v.." " 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] then if k == "playnum" and (tab["isfaststart"] == 1 or tab["twoFang"] == 1) then -- temp=temp.."" elseif k == "baseMulti" or k == "difen" then table.insert(temp,wanfa[k][1].name..v) 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) local tab=json.decode(str) local temp={} if wanfa["limitfan"] then local limitfanValue = tab.limitfan; for _,data in pairs(wanfa["limitfan"]) do if limitfanValue==data.value and not data.hide then table.insert(temp,{name=wanfa.clubWanFaTitle["limitfan"] or "",value={data.name}}); end end end local isFirstOne = true; for kk,vv in pairs(wanfa) do for k,v in pairs(tab) do if kk == k then if (k == "playnum" and (tab["isfaststart"] == 1 or tab["twoFang"] == 1)) or k == "limitfan" then elseif k == "baseMulti" then table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa[k][1].name..v}}) 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(vv) do if v==data.value and not data.hide then if isFirstOne then table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "玩法",value={data.name}}) if not wanfa.clubWanFaTitle[k] then isFirstOne = false; end else table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) --temp=temp..data.name.." " end end end end end end end return temp end function wanfa.getClubTableWanFaInfo(str) local tab=json.decode(str) local temp="" for kk,vv in pairs(wanfa) do for k,v in pairs(tab) do if kk == k then if k == "baseMulti" then--or k == "gshmode" for _,data in pairs(vv) do if k == "baseMulti" then temp=temp..data.name..v.." " elseif v==data.value then -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) temp=temp..data.name.." " end 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 .. "快速成局 " elseif jsonData.twoFang == 1 then str = str .. "2人2房 " 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