|
- 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},
- },
- mqzz = {
- {name="门清中张",value=1},
- {name="",value=0,hide=true},
- },
- tdh = {
- {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},
- },
-
- jiaxinwu = {
- {name = "夹心五", value = 1},
- {name = "", value = 0, hide = true}
- },
-
- sidui = {
- {name = "可胡四对", 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={
- playmode="玩法",
- playnum="人数",
- limitfan="封顶",
- baseMulti="积分倍数",
- forbidProp = "其他",
- }
-
- wanfa.ruleText =
- {
- {
- title = "基础规则",
- content =
- {
- "1、人数:2人。",
- "2、道具:麻将“万”共36张。",
- "3、一家胡牌,即结束游戏。",
- "4、两房麻将不含“换三张”“定缺”玩法。",
- "5、流局时查叫,即未叫玩家要赔偿有叫玩家最大可能番数。",
- "6、坐庄规则:上一局最先胡牌玩家当庄,流局则此局庄家的下家当庄。",
- },
- },
- --[[{
- 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=""
-
- local sortTable = {
- 'playnum',
- 'isfaststart',
- 'limitfan',
- 'gshmode',
- 'playmode',
- 'mqzz',
- 'tdh',
- 'dpcanxiaohu',
- 'duiduihu2fan',
- 'jiaxinwu',
- 'sidui',
- 'baseMulti',
- 'forbidProp',
- 'forbidVoice',
- }
-
- for _, key in ipairs(sortTable) do
- for k,v in pairs(tab) do
- if key == k then
- 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
- end
- end
- return temp
- end
-
- function wanfa.getWanFaInfoTab(str)
- local tab=json.decode(str)
- local temp={}
-
- local sortTable = {
- 'playnum',
- 'isfaststart',
- 'limitfan',
- 'gshmode',
- 'playmode',
- 'mqzz',
- 'tdh',
- 'dpcanxiaohu',
- 'duiduihu2fan',
- 'jiaxinwu',
- 'sidui',
- 'baseMulti',
- 'forbidProp',
- 'forbidVoice',
- }
-
- for _, key in ipairs(sortTable) do
- for k,v in pairs(tab) do
- if key == k then
- 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
- 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 sortTable = {
- 'playnum',
- 'isfaststart',
- 'limitfan',
- 'gshmode',
- 'playmode',
- 'mqzz',
- 'tdh',
- 'dpcanxiaohu',
- 'duiduihu2fan',
- 'jiaxinwu',
- 'sidui',
- 'baseMulti',
- 'forbidProp',
- 'forbidVoice',
- }
-
- for _, key in ipairs(sortTable) do
- for k,v in pairs(tab) do
- if key == k then
- 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
- 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
|