Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

220 righe
6.1 KiB

  1. local wanfa={
  2. scoreRule={
  3. {name="加底",value=1},
  4. {name="不加底",value=0},
  5. },
  6. highLimit={
  7. {name="48分",value=48},
  8. {name="64分",value=64},
  9. {name="96分",value=96},
  10. },
  11. bankMode={
  12. {name="胡牌者当庄",value=0},
  13. {name="轮庄",value=1},
  14. },
  15. specialRule={
  16. {name="自摸翻倍",value=1},
  17. {name="归翻倍",value=2},
  18. {name="可三招胡",value=4},
  19. {name="放炮全赔",value=8},
  20. {name="过胡升番可胡",value=16},
  21. {name="小家可看牌",value=32},
  22. {name="可吃对家",value=64},
  23. },
  24. playnum = {
  25. {name="两人玩",value=2},
  26. {name="三人玩",value=3},
  27. {name="四人玩",value=4},
  28. {name="快速成局",value=-1},
  29. },
  30. baseMulti = {
  31. {name = "积分倍数x", value = 0x0001}
  32. },
  33. forbidProp = {
  34. {name = "屏蔽快捷语与道具", value = 1},
  35. {name = "屏蔽快捷语与道具", value = 0, hide = true},
  36. },
  37. forbidVoice = {
  38. {name = "屏蔽聊天", value = 1},
  39. {name = "屏蔽聊天", value = 0, hide = true},
  40. },
  41. }
  42. wanfa.clubWanFaTitle={
  43. specialRule="玩法",
  44. highLimit = "封顶",
  45. scoreRule = "结算",
  46. playnum = "玩家人数",
  47. bankMode="定庄",
  48. baseMulti="积分倍数",
  49. forbidProp="其他",
  50. forbidVoice="其他",
  51. }
  52. wanfa.RuleText =
  53. {
  54. --[1] =
  55. {
  56. title = "基础规则",
  57. content =
  58. {
  59. "1、用牌:小写“一”到“十”各4张,大写“壹”到“拾”各4张,共80张牌;其中“二七十”和“贰柒拾”为红色牌,其余为黑色牌。",
  60. "2、砌牌:大贰一般4人同玩,其中1人坐底。庄家摸21张,闲家摸20张,留19张在墩上。",
  61. "3、定庄:首局随机选庄,之后谁胡牌谁坐庄。",
  62. },
  63. },
  64. --[2] =
  65. --[[{
  66. title = "牌型介绍",
  67. content =
  68. {
  69. "1、一将牌:洗牌后,手中2个相同的牌为1对。",
  70. "2、一坎牌:洗牌后,手中3个相同的牌为1坎。",
  71. "3、一拢牌:洗牌后,手中4个相同的牌为拢。",
  72. "4、一列牌:砌牌后,手中的牌依据规则组合成相连的牌。",
  73. }
  74. },
  75. --[3] =
  76. {
  77. title = "玩法介绍",
  78. content =
  79. {
  80. "1、拢牌:拢牌为起手20张牌时,系统自动拢牌。",
  81. "2、招牌:游戏中,别人打或摸的牌与自己手中一坎牌相同时,则可招牌。",
  82. "3、碰牌:游戏中,别人打或摸的牌与自己手中一对牌相同时,则可碰牌。",
  83. "4、八块:当招或拢牌超过1次时,称为八块,此时不用从手中打牌出去,而是下家摸牌。",
  84. "5、吃牌:自己摸的或者上家出的牌,无人碰或招时,则可以与自己手中的牌组合成一列牌,称为吃牌。",
  85. "6、比牌:当吃的该牌与手中有相同牌时,必须要将手中的这张牌也根据某种组合起来,井将这2个组合的牌都放到桌上,称为比牌。",
  86. "7、过张:能吃却没有吃的牌,称为过张。",
  87. "8、进张:每进1张,必须打出1张,八块除外。",
  88. "9、爆牌:当砌牌后手中6列牌全部组合完毕,只差组成最后一列或1对时可以爆牌。",
  89. "10、胡牌:满足以下条件可以胡牌。",
  90. "(1)至少有10胡,或者0胡(无胡)。",
  91. "(2)手中的与放于桌上的牌组合完毕,而且有7列牌。",
  92. "11、荒庄:底牌都发完后却没人可胡牌时,则荒庄。",
  93. }
  94. },--]]
  95. }
  96. --获取玩法规则
  97. function wanfa.getRuleInfo(ruleStr)
  98. --return "luzhouwanfa"
  99. if not ruleStr then
  100. ruleStr = app.room.roomInfo.strGameInfo
  101. end
  102. local tab=json.decode(ruleStr)
  103. local temp=""
  104. for k,v in pairs(tab) do
  105. if wanfa[k] then
  106. if k == "specialRule" then
  107. for _,data in pairs(wanfa[k]) do
  108. if not data.hide then
  109. if getNumBand(v,data.value) > 0 then
  110. if (tab.playnum == 2 or tab.playnum == 3) and data.value == 32 then--固定2人3人时不显示小家可看牌
  111. else
  112. temp=temp..data.name.." "
  113. end
  114. end
  115. end
  116. end
  117. elseif k == "highLimit" then
  118. if v>0 then
  119. temp=temp.."封顶"..v.." "
  120. end
  121. else
  122. if k == "baseMulti" then
  123. temp = temp .. wanfa[k][1].name .. v .. " "
  124. else
  125. for _,data in pairs(wanfa[k]) do
  126. if v==data.value and not data.hide then
  127. temp=temp..data.name.." "
  128. end
  129. end
  130. end
  131. end
  132. end
  133. end
  134. return temp
  135. end
  136. --获取茶馆玩法规则
  137. function wanfa.getClubRuleInfo(ruleStr)
  138. if not ruleStr then
  139. ruleStr = app.room.roomInfo.strGameInfo
  140. end
  141. --return "luzhouclubwanfa"
  142. local tab=json.decode(ruleStr)
  143. local temp={}
  144. for k,v in pairs(tab) do
  145. if wanfa[k] then
  146. if k == "specialRule" then
  147. for _,data in pairs(wanfa[k]) do
  148. if not data.hide then
  149. if getNumBand(v,data.value) > 0 then
  150. if (tab.playnum == 2 or tab.playnum == 3) and data.value == 32 then--固定2人3人时不显示小家可看牌
  151. else
  152. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  153. --只有第一行显示玩法
  154. k = ""
  155. end
  156. end
  157. end
  158. end
  159. else
  160. if k == "baseMulti" then
  161. table.insert(temp, {name = wanfa.clubWanFaTitle[k] or "", value = {wanfa[k][1].name .. v}})
  162. else
  163. for _,data in pairs(wanfa[k]) do
  164. if v==data.value and not data.hide then
  165. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  166. end
  167. end
  168. end
  169. end
  170. end
  171. end
  172. return temp
  173. end
  174. function wanfa.getClubTableWanFaInfo(str)
  175. local tab=json.decode(str)
  176. local temp=""
  177. for k,v in pairs(tab) do
  178. if wanfa[k] then
  179. if k == "highLimit" then
  180. for _,data in pairs(wanfa[k]) do
  181. if v==data.value then
  182. -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  183. temp=temp.."封顶"..data.name.." "
  184. end
  185. end
  186. end
  187. end
  188. end
  189. return temp
  190. end
  191. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  192. local str = wanfa.getClubRuleInfo(ruleStr, jushu)
  193. return str
  194. end
  195. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  196. local str = ""
  197. local jsonData=json.decode(ruleStr)
  198. if jsonData.startMode == 1 then
  199. str = "快速成局 "
  200. else
  201. if jsonData.playerNum == 2 then
  202. str = str .. "快速成局 "
  203. else
  204. str = tostring(playerNum) .. "人 "
  205. end
  206. end
  207. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  208. str = str .. wanfaStr
  209. return str
  210. end
  211. return wanfa