|
- local wanfa={
- {
- playnum = {
- {name="两人玩",value=2},
- {name="三人玩",value=3},
- {name="四人玩",value=4},
- {name="快速成局",value=-1},
- },
- },
- {
- deductRule={
- {name="房主支付",value=0},
- {name="AA支付",value=1},
- },
- },
- {
- highLimit={
- {name="100分",value=100},
- {name="200分",value=200},
- {name="300分",value=300},
- {name="500分",value=500},
- {name="1000分",value=1000},
- {name="2000分",value=2000},
- {name="3000分",value=3000},
- {name="4000分",value=4000},
- },
- },
- {
- specialRule={
- {name="自摸翻倍",value=0x0001},
- {name="可无胡",value=0x0200},
- {name="圈牌",value=0x0400},
- {name="整胡翻倍",value=0x0080},
- {name="放炮包赔",value=0x0008},
- {name="过张升番胡",value=0x0010},
- {name="查叫",value=0x0100},
- {name="归翻倍",value=0x0002},
- {name="单杀",value=0x0800},
- {name="小家可看庄牌",value=0x0020},
- {name="吃对家",value=0x0040},
- },
- isAndOr = true;
- },
- {
- scoreNum={
- {name="1/2/3小中大",value=1},
- {name="5/10/15小中大",value=5},
- {name="10/20/30小中大",value=10},
- },
- },
- {
- 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 = {
- playnum = "玩家人数",
- deductRule = "房费",
- highLimit = "封顶",
- specialRule = "玩法",
- scoreNum = "分数",
- baseMulti="积分倍数",
- forbidProp="其他",
- forbidVoice="其他",
- }
-
- wanfa.score1 = {
- [1] = "1/2/3",
- [5] = "5/10/15",
- [10] = "10/20/30",
- }
-
- wanfa.ruleStr = ""
-
-
- wanfa.RuleText =
- {
- --[1] =
- {
- title = "基础规则",
- content =
- {
- "1、用牌:小写“一”到“十”各4张,大写“壹”到“拾”各4张,共80张牌;其中“二七十”和“贰柒拾”为红色牌,其余为黑色牌。",
- "2、砌牌:大贰一般4人同玩,其中1人坐底。庄家摸21张,闲家摸20张,留19张在墩上。",
- "3、定庄:首局随机选庄,之后谁胡牌谁坐庄。",
- },
- },
- --[2] =
- --[[{
- title = "牌型介绍",
- content =
- {
- "1、一将牌:洗牌后,手中2个相同的牌为1对。",
- "2、一坎牌:洗牌后,手中3个相同的牌为1坎。",
- "3、一拢牌:洗牌后,手中4个相同的牌为拢。",
- "4、一列牌:砌牌后,手中的牌依据规则组合成相连的牌。",
- }
- },
- --[3] =
- {
- title = "玩法介绍",
- content =
- {
- "1、拢牌:拢牌为起手20张牌时,系统自动拢牌。",
- "2、招牌:游戏中,别人打或摸的牌与自己手中一坎牌相同时,则可招牌。",
- "3、碰牌:游戏中,别人打或摸的牌与自己手中一对牌相同时,则可碰牌。",
- "4、八块:当招或拢牌超过1次时,称为八块,此时不用从手中打牌出去,而是下家摸牌。",
- "5、吃牌:自己摸的或者上家出的牌,无人碰或招时,则可以与自己手中的牌组合成一列牌,称为吃牌。",
- "6、比牌:当吃的该牌与手中有相同牌时,必须要将手中的这张牌也根据某种组合起来,井将这2个组合的牌都放到桌上,称为比牌。",
- "7、过张:能吃却没有吃的牌,称为过张。",
- "8、进张:每进1张,必须打出1张,八块除外。",
- "9、爆牌:当砌牌后手中6列牌全部组合完毕,只差组成最后一列或1对时可以爆牌。",
- "10、胡牌:满足以下条件可以胡牌。",
- "(1)至少有10胡,或者0胡(无胡)。",
- "(2)手中的与放于桌上的牌组合完毕,而且有7列牌。",
- "11、荒庄:底牌都发完后却没人可胡牌时,则荒庄。",
- "12、圈:系统随机圈,大小贰柒拾任意一张,胡牌玩家手上有三个则为圈。",
- }
- },--]]
- }
- --获取茶馆玩法规则
- function wanfa.getClubRuleInfo(ruleStr)
- if not ruleStr then
- ruleStr = app.room.roomInfo.strGameInfo
- end
- local strGameInfo = json.decode(ruleStr)
- local temp = {}
- wanfa.ruleStr = ""
- for k,v in ipairs(wanfa) do
- for serverKey,serverValue in pairs(strGameInfo) do
- if v[serverKey] then
- if v.isAndOr then
- for i,data in ipairs(v[serverKey]) do
- if not data.hide then
- if getNumBand(serverValue,data.value) > 0 then
- table.insert(temp,{name=wanfa.clubWanFaTitle[serverKey] or "",value={data.name}})
- wanfa.ruleStr = wanfa.ruleStr..data.name.." "
- end
- end
- end
- else
- for i,data in ipairs(v[serverKey]) do
- if serverKey == "baseMulti" then
- table.insert(temp,{name=wanfa.clubWanFaTitle[serverKey] or "",value={data.name .. serverValue}})
- wanfa.ruleStr = wanfa.ruleStr..data.name .. serverValue .. " "
- break;
- end
- if serverValue == data.value and not data.hide then
- table.insert(temp,{name=wanfa.clubWanFaTitle[serverKey] or "",value={data.name}})
- wanfa.ruleStr = wanfa.ruleStr..data.name.." "
- break
- end
- end
- end
- break;
- end
- end
- end
- return temp,wanfa.ruleStr
- end
-
- --获取玩法规则
- function wanfa.getRuleInfo(ruleStr)
- if wanfa.ruleStr ~= "" then
- return wanfa.ruleStr;
- else
- local temp,tempStr = wanfa.getClubRuleInfo(ruleStr)
- return tempStr;
- end
- end
-
- function wanfa.getClubTableWanFaInfo(ruleStr)
- local strGameInfo = json.decode(ruleStr)
- local temp = ""
- for serverKey,serverValue in pairs(strGameInfo) do
- if serverKey == "highLimit" then
- for k,v in ipairs(wanfa) do
- if v[serverKey] then
- if v.isAndOr then
- for i,data in ipairs(v[serverKey]) do
- if getNumBand(serverValue,data.value) > 0 then
- temp = data.name.." "
- end
- end
- else
- for i,data in ipairs(v[serverKey]) do
- if serverKey == "baseMulti" then
- table.insert(temp,{name=wanfa.clubWanFaTitle[serverKey] or "",value={data.name .. serverValue}})
- temp = temp .. wanfa.clubWanFaTitle[serverKey] .. data.name .. serverValue .. " "
- break;
- end
- if serverValue == data.value then
- if serverValue == 0 then
- temp = data.name.." "
- else
- temp = wanfa.clubWanFaTitle[serverKey]..data.name.." "
- end
- break
- end
- end
- end
- break
- end
- end
- break
- end
- end
- for serverKey,serverValue in pairs(strGameInfo) do
- if serverKey == "scoreNum" then
- if serverValue >=0 and wanfa.score1[serverValue] then
- temp = temp..wanfa.score1[serverValue]
- 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.getClubRuleInfo(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.startMode == 1 then
- str = "快速成局 "
- else
- if jsonData.playerNum == 2 then
- str = str .. "快速成局 "
- else
- str = tostring(playerNum) .. "人 "
- end
- end
-
- local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
- str = str .. wanfaStr
- return str
- end
-
- return wanfa
|