|
- 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},
- },
- zimomode={
- {name="自摸加底",value=1},
- {name="自摸加番",value=2},
- {name="自摸不加",value=0},
- },
- 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=2},
- {name="不换张",value=0},
- },
- 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},
- },
- baseMulti = {
- {name = "积分倍数x", value = 0x0001}
- },
-
- forbidProp = {
- {name = "屏蔽快捷语与道具", value = 1},
- {name = "屏蔽快捷语与道具", value = 0, hide = true},
- },
- forbidVoice = {
- {name = "屏蔽语音", value = 1},
- {name = "屏蔽语音", value = 0, hide = true},
- },
-
- fanniu = {
- {name = "放牛必须过庄胡", value = 1},
- {name = "放牛必须过庄胡", value = 0, hide = true},
- },
-
- guoshoupeng = {
- {name = "过手碰", value = 1},
- {name = "过手碰", value = 0, hide = true},
- },
- }
-
- wanfa.clubWanFaTitle={
- zimomode="玩法",
- playnum="人数",
- limitfan="封顶",
- baseMulti="积分倍数",
- forbidProp = "其他",
- }
-
- wanfa.ruleText =
- {
- {
- title = "基础规则",
- content =
- {
- "1、用牌 :麻将“万筒条”,合计108张。",
- "2、玩法:可碰、杠,不可吃,可点炮、自摸、一炮多响。",
- "3、坐庄:最先胡牌玩家坐庄,一炮多响则点炮玩家坐庄,流局庄家下家坐庄。",
- "4、换三张:游戏开始时,玩家需选中3张同花色的牌与其他玩家进行交换。",
- "5、定缺:在发完手牌后选择一门不要的花色即为定缺,对局中必须先打出定缺牌,对局中不可再更改定缺。",
- "6、胡牌",
- " (1)胡牌时,手牌最多只有2种花色,否则不可胡牌。",
- " (2)玩家胡牌后,其余玩家继续游戏,直到流局或只有一位未胡牌玩家为止。",
- "7、查大叫:流局时没叫的玩家赔给有叫的玩家最大可能的番数,且刮风下雨不再结算。",
- "8、呼叫转移:开杠的人在杠上点炮后,杠分要一并转移给接炮的人。",
- },
- },
- --[2] =
- --[[{
- title = "名词解释",
- content =
- {
- "1、刮风(明杠),分为直杠和巴杠。",
- " (1)直杠:玩家手中有三张一样的牌,其他玩家打出此牌,该玩家杠。",
- " (2)巴杠(面下杠):玩家已经碰出一对牌,又自摸到碰的牌选中杠。",
- "2、下雨(暗杠):玩家手中有4张相同的牌选择杠。",
- "3、过手胡:在同一回合中,若有人点炮,玩家没有胡牌,则此回合其他玩家点炮,只要没有加番就不能胡,自摸可以胡。",
- "4、查大叫:流局时没有听牌的玩家赔给有叫的玩家最大番数,刮风下雨结算(未听牌玩家刮风下雨分数返还)。",
- "5、自摸加底:玩家自摸后,除获得相应牌型分后再加1底分。",
- "6、自摸加番:玩家自摸后,计算牌型分后,再在该牌型分*2。",
- "7、呼叫转移:开杠的人在杠上炮后,杠钱要一井转移给接炮的人,如果杠不结算则不转移。",
- "8、杠上花:明暗杠后,补张自摸。",
- "9、杠上炮:玩家开杠后放炮。",
- }
- },--]]
- --[3] =
- --[[{
- title = "胡牌类型",
- content =
- {
- "1、平胡:四坎(除4副刻子)加一对将(0番)。",
- "2、对对胡:四副刻子加一对将(1番)。",
- "3、清一色:全部是一种花色的平胡(2番)。",
- "4、七对:玩家手牌都是对子,没有碰和刮风下雨(2番)。",
- "5、龙七对:玩家手牌都是对子,且有一个根儿,无碰和杠(3番)。",
- "6、清对:清一色+对对胡(3番)。",
- "7、清七对:清一色+七对(4番)。",
- "8、清龙七对:清一色+龙七对(5番)。",
- "9、全幺九:所有组成的顺子、刻子、将牌里都包含1或9(3番)。",
- "10、将对:所有牌当中,全是2、5、8组成的对对胡(3番)。",
- "11、将七对:所有牌当中,全是2、5、8组成的龙七对(4番)。",
- "12、门清:胡牌时,没有碰过牌,没有明杠(1番)。",
- "13、中张:胡牌时所有牌没有一和九(1番)。",
- "14、其他加番:",
- " 根:+1番 所有牌中有4张一样的牌,可累加计算",
- " 杠上开花:+1番",
- " 杠上炮:+1番",
- " 抢杠胡:+1番",
- " 海底捞月:+1番",
- " 金钩钓:+1番",
- " 海底炮:+1番",
- " 天胡:+3番",
- " 地胡:+2番",
- }
- },
- --[4] =
- {
- title = "算分规则",
- content =
- {
- "1、总分=胡牌番数+杠分,1番=2,2番=2×2,依此类推。",
- "2、点炮结算方式为1对1,自摸结算方式为1对多。",
- "3、刮风(明杠):分为直杠和巴杠。",
- " 直杠:放杠者减2倍底分。",
- " 巴杠:其他玩家都减1倍底分。",
- " 下雨(暗杠):其他玩家都减2倍底分。",
- }
- },--]]
- }
-
- 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..""
- 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
- elseif k == "playmode" 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" 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)
- 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)
- local tab=json.decode(str)
- local temp=""
- for k,v in pairs(tab) do
- if wanfa[k] then
- if k == "limitfan" or k == "swapcard" 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
|