|
- 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="5番",value=5},
- {name="6番",value=6},
- },
- piaomode={
- {name="不飘",value=0},
- {name="随飘",value=1},
- {name="定飘",value=2},
- },
- jingnum={
- {name="4听用",value=4},
- {name="8听用",value=8},
- {name="11听用",value=11},
- },
- -- jingelevenrule={
- -- {name="2番起胡", value= 0x01},
- -- {name="无听用加3番", value= 0x02},
- -- },
- fan2qihu = {
- {name = '2番起胡', value = 0x01},
- },
-
- jia3fan = {
- {name = '无听用加3番', value = 0x02},
- },
-
- humode={
- {name="点炮胡", value= 2},
- {name="自摸胡", value= 1},
- },
- -- specialrule={
- -- {name="定缺", value= 0x01},
- -- {name="天胡满贯", value= 0x02},
- -- },
- dingque = {
- {name = '定缺', value = 0x01},
- },
-
- tianhumanguan = {
- {name = '天胡满贯', value = 0x02},
- },
-
- baseMulti = {
- ["1"] = "积分倍数x"
- },
-
- forbidProp = {
- {name = "屏蔽快捷语与道具", value = 1},
- {name = "屏蔽快捷语与道具", value = 0, hide = true},
- },
- forbidVoice = {
- {name = "屏蔽语音", value = 1},
- {name = "屏蔽语音", value = 0, hide = true},
- },
- }
-
- wanfa.clubWanFaTitle={
- playnum = "人数",
- isfaststart = '人数',
- limitfan = "封顶",
- piaomode ='玩法',
- baseMulti="积分倍数",
- forbidProp = "其他",
- }
-
- wanfa.ruleText =
- {
- {
- title = "基础规则",
- content =
- {
- '1、用牌:筒、条、万3种花色,共108张牌。',
- '2、打法:可碰、可杠、自摸/点炮。',
- '3、坐庄:上局最先胡牌玩家坐庄,若一炮多响,则点炮玩家坐庄,流局则上局庄家继续坐庄。',
- '4、缺一门:必须要打缺之后才能胡牌,即胡牌最多只有两种花色,否则为花猪,系统默认有定缺牌时,必须出定缺牌。',
- '5、血战:玩家胡牌后,其余玩家继续游戏。',
- '6、查大叫:流局时,检查玩家是否下叫,未下叫玩家(花猪除外)要赔付已下叫的玩家最大可能番数。',
- },
- },
- --[2] =
- --[[{
- title = "胡牌类型",
- content =
- {
- '1、平胡:四坎牌(除四副刻子)加一对将。',
- '2、对对胡:四副刻子加一对将。',
- '3、清一色:全部是一种花色的平胡。',
- '4、七对:玩家手牌都是两张一对的,没有碰和杠。',
- '5、龙七对:牌型为七对,但玩家手中有四张一样的牌(没有杠出)。只能算一个龙七对,其他的算根。',
- '6、清对:清一色+对对胡。',
- '7、清七对:清一色+七对。',
- '8、清龙七对:清一色+龙七对。',
- }
- },
- --[3] =
- {
- title = "特殊规则",
- content =
- {
- '1、飘:牌局开始前玩家选择“飘”或“不飘”来决定加倍与否。',
- '2、本金:牌局开始时,庄家在尾家摸完牌后,将接下来的那张牌翻开,翻开的这张牌叫本金。',
- '3、听用: “听用”牌可以代替其他任意牌,即癞子的作用,不可被打出。',
- '4、飞:听用牌可以代替其他牌进行碰的操作,即用一张听用牌和一张与对手打出相同的牌碰对手打出的牌,称为“飞”。',
- '5、提:“飞”牌后,若摸到碰牌中的非听用牌,则可进行“提”操作,用摸到的牌把听用牌提出来,重新交换到手牌中。',
- '6、根:四张相同的牌未开杠,与听用牌组成的四张相同的牌也算,为一根。',
- '7、杠:只有纯四张相同的牌才能进行杠操作,含听用牌的不行,明/暗/补杠,都需要亮出来给别人看,有杠胡牌可加番。',
- }
- },--]]
- }
-
- function wanfa.__parseTingRule(tingRule)
- local tbRules = {};
-
- if getNumBand(tingRule, 0x01) > 0 then
- tbRules.fan2qihu = 0x01
- end
-
- if getNumBand(tingRule, 0x02) > 0 then
- tbRules.jia3fan = 0x02
- end
-
- return tbRules;
- end
-
- function wanfa.__parseSpecRule (specialrule)
- local tbRules = {};
-
- if getNumBand(specialrule, 0x01) > 0 then
- tbRules.dingque = 0x01
- end
-
- if getNumBand(specialrule, 0x02) > 0 then
- tbRules.tianhumanguan = 0x02
- end
-
- return tbRules;
- end
-
- -- 小结算的规则显示
- 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..""
- 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
-
- local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0);
- for k,v in pairs(specialrule) do
- for _,data in pairs(wanfa[k] or {}) do
- if v == data.value and not data.hide then
- temp=temp..data.name.." "
- end
- end
- end
-
- local jingelevenrule = wanfa.__parseTingRule(tab.jingelevenrule or 0);
- for k,v in pairs(jingelevenrule) do
- for _,data in pairs(wanfa[k] or {}) do
- if v == data.value and not data.hide then
- temp=temp..data.name.." "
- 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..""
- 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
-
- -- 听用规则
- if tab.jingelevenrule and tab.jingelevenrule ~= 0 then
- local jingelevenrule = wanfa.__parseTingRule(tab.jingelevenrule or 0);
- for k,v in pairs(jingelevenrule) do
- for _,data in pairs(wanfa[k] or {}) do
- if v == data.value and not data.hide then
- table.insert(temp,data.name)
- end
- end
- end
- end
-
- -- 特殊规则
- local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0);
- for k,v in pairs(specialrule) do
- for _,data in pairs(wanfa[k] or {}) do
- if v == data.value and not data.hide then
- table.insert(temp,data.name)
- end
- end
- end
-
- if tab.baseMulti and tab.baseMulti > 0 then
- table.insert(temp, wanfa.baseMulti['1']..tab.baseMulti)
- end
-
- if tab.forbidProp and tab.forbidProp > 0 then
- table.insert(temp, wanfa.forbidProp['1'])
- end
- if tab.forbidVoice and tab.forbidVoice > 0 then
- table.insert(temp, wanfa.forbidVoice['1'])
- end
-
- return temp
- end
-
- -- 俱乐部的包间玩法显示
- function wanfa.getClubWaFaInfo(str)
- local tab=json.decode(str)
- local temp={}
- -- 根据顺序显示(局数,房费,人数,封顶,玩法(飘,听用,胡牌,定缺,天胡满贯)),通过位运算的需要另外添加
- local t = { 'playnum', 'isfaststart', 'limitfan', 'piaomode', 'jingnum', 'humode', 'forbidProp','forbidVoice',}
-
- -- 如果有快开,那么不显示具体人数,直接杀出
- if tab.isfaststart == 1 then
- tab.playnum = nil
- end
-
- for _, v in ipairs(t) do
- if wanfa[v] and tab[v] then
- local value = tab[v] -- 选择的值
- local ruleTab = wanfa[v] -- 上面定义的规则表
- for _, j in pairs(ruleTab) do
- if value == j.value and not j.hide then
- table.insert(temp, {name = wanfa.clubWanFaTitle[v] or "", value = {j.name}, })
- break
- end
- end
-
- end
- end
-
- local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0);
- for k,v in pairs(specialrule) do
- for _,data in pairs(wanfa[k] or {}) do
- if v == data.value and not data.hide then
- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
- end
- end
- end
-
- local jingelevenrule = wanfa.__parseTingRule(tab.jingelevenrule or 0);
- for k,v in pairs(jingelevenrule) do
- for _,data in pairs(wanfa[k] or {}) do
- if v == data.value and not data.hide then
- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
- end
- end
- end
-
- if tab.baseMulti and tab.baseMulti > 0 then
- table.insert(temp, {name = wanfa.clubWanFaTitle.baseMulti, value = {wanfa.baseMulti["1"] .. tab.baseMulti}})
- end
-
- return temp
- end
-
- -- 俱乐部规则,包间模式下的桌子显示(人数,封顶番数,飘的情况,胡牌规则)
- function wanfa.getClubTableWanFaInfo(str)
- local tab=json.decode(str)
- local str = ""
- local temp = { 'limitfan', 'piaomode', 'humode' } -- 待拼接的字段,不需要人数,人数在另一边有拼接
-
-
- for i, v in ipairs(temp) do
- if tab[v] and wanfa[v] then -- 如果有此规则,并且已有定义
- local value = tab[v] -- 选择的值
- local ruleTab = wanfa[v] -- 上面定义的规则表
- for _, j in pairs(ruleTab) do
- if value == j.value then
- str = str .. j.name .. ' '
- break
- end
- end
- end
- end
-
- -- local specialrule = wanfa.__parseSpecRule(tab.specialrule or 0);
- -- for i, v in pairs(specialrule) do
- -- if wanfa[i] then
- -- local ruleTab = wanfa[i]
- -- for _, j in pairs(ruleTab) do
- -- if v == j.value then
- -- str = str .. j.name .. ' '
- -- break
- -- end
- -- end
- -- end
- -- end
- return str
- end
-
- 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
|