您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

249 行
6.8 KiB

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