|
- local wanfa={
- highLimit={
- {name="3番",value=3},
- {name="4番",value=4},
- {name="不封顶",value=0},
- },
- Piaorule={
- {name="不漂",value=0},
- {name="随漂",value=1},
- {name="定漂",value=2},
- },
- playnum = {
- {name="三人玩",value=3},
- {name="四人玩",value=4},
- {name="快速成局",value=-1},
- },
- specialRule={
- {name="十八烂",value=0x0001},
- {name="可弯叫",value=0x0002},
- {name="占山玩法",value=0x0004},
- },
-
- 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 = "玩家人数",
- Piaorule = "漂",
- highLimit = "封顶",
- specialRule="玩法",
- baseMulti="积分倍数",
- forbidProp="其他",
- forbidVoice="其他",
- }
-
- wanfa.RuleText =
- {
- --[1] =
- {
- title = "基础规则",
- content =
- {
- "1、人数:3人、4人",
- "2、用牌:长牌一套,总共84张牌,21种牌,每种牌4张。",
- "3、发牌:庄家18张,两家17张,小家5张。",
- },
- },
-
- --[2] =
- --[[{
- title = "游戏玩法",
- content =
- {
- "1.漂:摸牌前选择漂,漂后相互结算的玩家加1分/漂。",
- "2.吃:上家打出、翻出的牌以及自己翻出的牌,与自己手牌可组成“点数和等于14”的吃牌组合时,可选择吃,吃的牌需展示至桌面。",
- "3.暗:大家起手有3/4张一样的牌,必须暗(系统强制),胡牌时手上不能有暗牌。轮到小家偷牌后,有3/4张一样的可以暗或者过。",
- "4.碰:手中有一对牌,其他玩家打/翻出,或自己翻出同样的牌时,可以碰,碰牌后需偷一张牌。",
- "5. 垮:对局中,大家碰/垮后偷了一张牌,刚好与手上的对子凑成3张的情况。",
- "6. 偷:暗/垮/碰牌后或轮到小家偷牌,玩家从牌墩抓一张牌到手中,不展示给其他玩家看。",
- "7. 违规:在有玩家碰了天(/地/丁/斧)的情况下,手中有单张(没有成对,也没成组合)的地(/天/斧/丁),且是曾吃过的牌时,必须打出的情况。若是偷牌后报退打出,则不算违规。",
- "8. 胡:手牌和出现的牌全部两两成吃牌组合,且满足胡牌条件,即可胡牌。",
- "9. 红十八:没有碰牌的情况下,摆牌和手牌全部成14组合,且全部是红牌(可以有丁点斧头);",
- "10. 十八烂:大家原手牌没有2张一样的牌,可直接胡牌;需在创建房间时勾选该玩法;",
- "11.招吃无叫:玩家报招吃后,不能胡牌,下次吃碰操作后即可解除招吃无叫的限制。",
- "12. 正吃正打:同点数的牌,只能吃红打黑,不能吃红打红,不能吃黑打红。",
- "13. 弯叫:玩家换叫,不管够不够点,单次或者多次连续吃牌后变换叫,即为弯叫。",
- }
- },
- --[2] =
- {
- title = "胡牌结算",
- content =
- {
- "1. 点数计算:(胡牌需满足:庄家20点,闲家18点,小家5点。)",
- "单张红牌:1点",
- "碰/暗/垮3张红牌:8点,暗4张红牌:10点",
- "碰/暗/垮3张黑牌:4点,暗4张黑牌:6点",
- "2. 番数计算:",
- "(1)大家:",
- "①五门红(天、地、人、和、幺四)碰/暗/垮3张1番,原手暗4张2番;",
- "②其他牌原手暗4张1番;",
- "③十八烂:1番;",
- "④红十八:3番;",
- "⑤30点:点数≥30,1番;",
- "(2)小家:",
- "①五门红(天、地、人、和、幺四)碰/暗/垮3张1番,原手暗4张2番;",
- "②其他牌原手暗4张1番;",
- "③全红/全黑:1番",
- "④10点1番,满12点2番,满18点3番",
- "⑤自摸1番;",
- }
- },--]]
- }
-
- --获取玩法规则
- function wanfa.getRuleInfo(ruleStr)
- if not ruleStr then
- ruleStr = app.room.roomInfo.strGameInfo
- end
- --return "luzhouclubwanfa"
- local tab=json.decode(ruleStr)
- local temp=""
- for k,v in pairs(tab) do
- if wanfa[k] then
- if k == "specialRule" then
- for _,data in pairs(wanfa[k]) do
- if not data.hide then
- if getNumBand(v,data.value) > 0 then
- temp = temp..data.name.." "
- else
- if data.value == 0x0002 then
- temp = temp.."不可弯叫".." "
- end
- end
- end
- end
- else
- if k == "baseMulti" then
- temp = temp .. wanfa.baseMulti[1].name .. v .. " "
- 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
- return temp
- end
-
- --获取茶馆玩法规则
- function wanfa.getClubRuleInfo(ruleStr)
- if not ruleStr then
- ruleStr = app.room.roomInfo.strGameInfo
- end
- --return "luzhouclubwanfa"
- local tab=json.decode(ruleStr)
- local temp={}
- for k,v in pairs(tab) do
- if wanfa[k] then
- if k == "specialRule" then
- for _,data in pairs(wanfa[k]) do
- if not data.hide then
- if getNumBand(v,data.value) > 0 then
- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
- --只有第一行显示玩法
- k = ""
- else
- if data.value == 0x0002 then
- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"不可弯叫"}})
- k = ""
- end
- end
- end
- end
- else
- if k == "baseMulti" then
- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa.baseMulti[1].name .. v}})
- 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}})
- end
- end
- end
- end
- end
- end
- return temp
- end
-
- function wanfa.getClubTableWanFaInfo(str)
- local tab=json.decode(str)
- local temp=""
- local tempTab = {}
- tempTab["Piaorule"] = tab.Piaorule or 1
- tempTab["specialRule"] = tab.specialRule or 0
- for k,v in pairs(tab) do
- if wanfa[k] then
- if k ~= "playnum" and k ~= "highLimit" then
- if k == "specialRule" then
- local iswanJiao = false
- if getNumBand(v,0x0002) > 0 then
- iswanJiao = true
- end
- for _,data in pairs(wanfa[k]) do
- if getNumBand(v,data.value) > 0 then
- temp=temp..data.name.." "
- end
- end
-
- if not iswanJiao then
- temp=temp.."不可弯叫".." "
- end
- else
- if k == "baseMulti" then
- -- temp = temp .. wanfa.baseMulti[1].name .. v .. " "
- elseif k == "forbidProp" then
- else
- for _,data in pairs(wanfa[k]) do
- if v==data.value then
- temp=temp..data.name.." "
- end
- end
- end
- end
- end
- end
- end
- return temp
- end
-
- function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
- local str = wanfa.getClubRuleInfo(ruleStr, jushu)
- return str
- end
-
- 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
|