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="40颗",value=5}, {name="80颗",value=6}, }, laizinum={ {name="4鬼",value=4}, {name="8鬼",value=8}, {name="12鬼",value=12}, }, baojiao = { {name="报叫",value=1}, {name="",value=0,hide=true}, }, xiqian = { {name="喜钱",value=1}, {name="",value=0,hide=true}, }, guozhangjiafan = { {name="过张升番可胡",value=1}, {name="",value=0,hide=true}, }, toujiazhuang = { {name="一炮多响头家庄",value=1}, {name="",value=0,hide=true}, }, tingpai = { {name="听牌提示",value=1}, {name="",value=0,hide=true}, }, isoutredcard = { {name="杠后不可打红中",value=1}, {name="",value=0,hide=true}, }, hufan = { {name="5颗起胡",value=2}, {name="",value=0,hide=true}, }, 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}, }, } wanfa.clubWanFaTitle={ playnum="人数", limitfan="封顶", laizinum="鬼牌", diFenLimit="低分加分", baseMulti="积分倍数", forbidProp = "其他", } wanfa.ruleText = { { title = "基础规则", content = { "1、人数:4人", "2、用牌:麻将“筒”、“条”、“万”三种牌", "3、红中:泸州俗称“鬼”,创建房间可选择4鬼、8鬼或12鬼,可任意当做万子、筒子、条子使用。", "4、坐庄:第一局创建房间房主或第一进入房间玩家为庄家。上一局“一胡”玩家当庄,可以连庄,和局则连庄。", }, }, --[2] = --[[{ title = "坐庄规则", content = { "第一局创建房间房主或第一进入房间玩家为庄家。 ", "上一局“一胡”玩家当庄,可以连庄,和局则连庄。 ", "如牌局中有玩家“一炮双响“或“一炮三响”,则由此玩家当庄。", "如流局则此局庄家的下家当庄。 ", } }, --[3] = { title = "胡牌类型", content = { "平胡:胡牌时,必须是有任意一对将牌(任意一对对子),其他牌组成顺子或刻子。", "对对胡:四副刻子加一对将。", "七对:玩家手牌都是对子,没有碰和刮风下雨。", "清一色:全部是一种花色的平胡。", "龙七对:玩家手牌都是对子,并且有一个根儿,没有碰和刮风下雨。", "清对:清一色+对对胡", "清七对:清一色+七对。", "清龙七对:清一色+龙七对。", } }, --[4] = { title = "名词解释", content = { "点炮:胡其他玩家发出来的牌。", "自摸:玩家本人摸到的牌且能胡牌。", "荒庄(流局):摸完所有牌后都无人胡牌即称为荒庄。", "归:牌型中有四张同样的牌,称为“归”。", "碰:自己有两张相同牌,其他玩家打一张同样牌即可形成坎,此操作叫“碰”,碰牌时用普通的对子碰称为“硬碰”,用红中代替时,称为“加鬼碰”。", "杠:自己有三张相同牌,其他玩家打一张同样牌即可形成归,此操作叫“杠”。杠牌时用普通的三张相同牌碰称为“明杠”,用红中代替时,称为“加鬼杠”。", "暗杠:玩家本人摸到四张相同的牌杠下去叫“暗杠”,可加红中。", "巴杠:玩家本人已经碰牌,在下一轮到玩家本人摸牌后,手牌里有与碰牌相同的牌或者红中即可进行巴杠。", "抢杠胡:A玩家在杠牌(巴杠)时,B玩家恰好能胡这张牌,则可以胡牌,称为“抢杠”,暗杠不能“抢杠”。", "杠上花:杠牌之后摸起来张牌如果能胡,称为“杠上花”。", "杠上炮:杠牌之后打出去的牌,点炮其他玩家,称为“杠上炮”。", "查叫:每盘最后一张牌打出后,如果还有至少两家未胡牌,此时需要检查未胡牌的玩家是否下叫。未下叫的玩家将赔付未胡牌但已下叫的玩家,按可达到最高番数牌面计算。", "花猪:必须缺门可胡,即胡牌的时候不能有三种花色的牌,红中除外。查叫时,手上还有三种花色牌的玩家称为花猪。", "爆牌:开局庄家打出去第一张牌后或闲家开局摸起来的牌就已经下叫了,可进行爆牌,需即时进行操作。爆牌后不能碰牌和打牌出去,但是可以杠牌。其他玩家打出或者自己摸到听牌即可胡牌。", "杀爆:在爆牌情况下,未报爆玩家领先爆牌玩家胡牌。", } }, --[5] = { title = "补充说明", content = { " 过手胡:某一回合中,若有人点炮,玩家没有选择胡,则此回合有其他玩家点炮,也不能胡,自摸除外。当该玩家摸牌,碰牌,杠牌后,过手胡限制解除。", " 关于碰杠优先级:抢碰杠:如果A玩家岀牌,BCD玩家都能碰或杠,按以下优先级确认操作优先级:“硬碰”/“明杠”>“加鬼碰”>“加鬼杠”。没有以上确认操作时,“加鬼碰杠”玩家则按逆时针顺序优先确认操作选择。", } },--]] } 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" and tab["isfaststart"] == 1 then 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 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" and tab["isfaststart"] == 1 then -- 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 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 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 == "laizinum" then for _,data in pairs(wanfa[k]) do if v==data.value then -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}}) local isLimitFan40 = string.find(data.name,"40颗") or 0 if isLimitFan40 > 0 then if tab.hufan == 2 then temp=temp..data.name.."(5)".." " else temp=temp..data.name.."(2)".." " end else temp=temp..data.name.." " end 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 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