You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

217 regels
7.0 KiB

  1. local Define_53 = {}
  2. local gameConfig = getSubGameConfig(GAME_IDS.NanChongDouDiZhu)
  3. --游戏内玩法
  4. Define_53.GAME_RULE = {
  5. ["gameid"] = gameConfig.gameName,
  6. ["gamerule"] = gameConfig.GameType,
  7. ["game_num"] = gameConfig.playerNum,
  8. ["deductRule"] = {
  9. ["0"] = "房主支付",
  10. ["1"] = "AA支付",
  11. },
  12. ["multLimit"] = {
  13. ["3"] = "3番",
  14. ["4"] = "4番",
  15. ["0"] = "3+1",
  16. },
  17. ["piaoType"] = {
  18. ["0"] = "不漂",
  19. ["1"] = "随漂",
  20. ["2"] = "定漂",
  21. },
  22. ["calcFan"] = {
  23. ["1"] = "梯番",
  24. ["2"] = "滚番",
  25. },
  26. ["playRule"] = {
  27. ["1"] = "癞子",
  28. ["2"] = "闷抓",
  29. ["4"] = "双王四个二必倒",
  30. ["3"] = "癞子 闷抓",
  31. ["5"] = "癞子 双王四个二必倒",
  32. ["6"] = "闷抓 双王四个二必倒",
  33. ["7"] = "癞子 闷抓 双王四个二必倒",
  34. },
  35. ["baseMulti"] = {
  36. ["1"] = "积分倍数x"
  37. },
  38. ["forbidProp"] = {
  39. ["1"] = "屏蔽快捷语与道具"
  40. },
  41. ["forbidVoice"] = {
  42. ["1"] = "屏蔽语音"
  43. }
  44. }
  45. -- 斗地主规则文本
  46. Define_53.ruleText =
  47. {
  48. --[1] =
  49. {
  50. title = "基础规则",
  51. content =
  52. {
  53. "1、一副扑克54张牌+一张花牌赖子=55张,一人17张,留4张做底牌,在确定地主之前玩家不能查看底牌。",
  54. "2、叫地主:首先由第一个进入房间玩家位置开始翻牌,翻的牌需要展示一下,后面则由上局赢牌位置随机翻牌。",
  55. "3、倒牌:叫地主后,农民玩家可以“倒”或者是“不倒”,“倒牌”后,该局输赢翻倍,选择“不倒”的玩家,输赢不翻倍。",
  56. "4、拉牌:在有玩家“倒”的情况下,地主才可以选择“拉”,地主“拉”后,输赢在“倒”的基础上再翻倍。每局玩家只有一次“倒”和“拉”的机会。",
  57. "5、游戏结束:有玩家先出完牌则游戏结束,地主先出完则地主赢,农民先出完则农名赢。",
  58. },
  59. },
  60. -- {
  61. -- title = "特殊规则",
  62. -- content =
  63. -- {
  64. -- "1、三主必抓规则(三个2除外):",
  65. -- "单癞子的情况下手牌分值达到3主必须叫地主(分值计算:王算1个主,不分大小,2算1个主,癞子算1个主,原始炸弹算1个主)。",
  66. -- "无癞子的情况下三主必须叫地主。",
  67. -- "双王或者是四个二必抓。",
  68. -- }
  69. -- },
  70. --[2] =
  71. --[[{
  72. title = "牌型介绍",
  73. content =
  74. {
  75. "1、单牌:任意一张单牌。",
  76. "2、对牌:数值相同的两张牌。",
  77. "3、三张牌:数值相同的三张牌。例: JJJ,最后一手可出。",
  78. "4、三带一:数值相同的三张牌+ 一张单牌(没有三带二)。 例: 333+6。",
  79. "5、单顺:五张或更多的连续单牌。不包括2点和双王。例: 34567。",
  80. "6、连对:三対或更多的達姨対牌。不包括2点和双王。例: 334455。",
  81. "7、飞机:二个或更多的连续同点数的三張牌。不包括2点和双王。",
  82. "8、飞机帯翅膀:飞机+同数量的单牌。例: 333444+88 。",
  83. "9、四帯二:四张先生共同的牌带两张牌,可以是单张也可以是一对,只能最后一手出。例: 5555 +3+ 8",
  84. "10、火箭:即双王(双鬼牌),什么牌型都可打,是最大的牌,出牌时也算作炸弹。",
  85. "12、炸弹:由四张相同点数的牌组成的牌型,大于其他的一切牌型。例: 6666。",
  86. "13、软炸弹:由癞子和其他牌组成的炸弹大于炸弹以外的所有牌型。",
  87. }
  88. },
  89. --[3] =
  90. {
  91. title = "牌型比较",
  92. content =
  93. {
  94. "1、火箭最大,可以打任意其他的牌。",
  95. "2、炸弹比火箭小,软炸弹(由赖子和其他的牌组成的炸弹牌型)比炸弹小,比其他牌大。",
  96. "3、都是炸弹时按牌的分值比大小。",
  97. "4、单牌按分值比大小依次是:",
  98. " 大王>小王>2>A>K>Q>J>10>9>8>7>6>5>4>3,不分花色。 ",
  99. "5、对牌、三张牌都按分值比大小。",
  100. "6、单顺按最大的一张牌的分值来比大小。 ",
  101. "7、飞机带翅膀和四带二按其中的飞机和四张部分来比,带的牌不影响大小。",
  102. }
  103. },
  104. --[5] =
  105. {
  106. title = "算分规则",
  107. content =
  108. {
  109. "1、闷抓:1番",
  110. "2、倒(闷倒):1番",
  111. "3、拉:1番",
  112. "4、炸弹: 1番",
  113. "5、春天: 1番",
  114. "6、反春天: 1番",
  115. "7、尾家叫地主: 1番",
  116. "8、滚番:积分=(底分1分+漂分)*2的N次方(N为番数)",
  117. "9、梯番:积分=(底分1分+漂分)+N(N为番数)",
  118. "10、漂分:漂分为1",
  119. }
  120. },--]]
  121. }
  122. --俱乐部切换多玩法桌子显示的玩法 8倍 经典/不洗牌 飘分
  123. function Define_53.getClubTableWanFaInfo(str)
  124. local tab=json.decode(str)
  125. local temp=""
  126. if tab.gamerule and tonumber(tab.gamerule) >= 0 then
  127. temp = temp .. Define_53.GAME_RULE.game_num[tab.gamerule] .. '人 '
  128. end
  129. if tab.multLimit and tonumber(tab.multLimit) >= 0 then
  130. local multLimit = tab.multLimit
  131. if Define_53.GAME_RULE['multLimit'][''..multLimit] then
  132. temp = temp .. Define_53.GAME_RULE['multLimit'][''..multLimit] .. ' '
  133. end
  134. end
  135. if tab.piaoType and tonumber(tab.piaoType) >= 0 then
  136. local piaoType = tab.piaoType
  137. if Define_53.GAME_RULE['piaoType'][''..piaoType] then
  138. temp = temp .. Define_53.GAME_RULE['piaoType'][''..piaoType] .. ' '
  139. end
  140. end
  141. if tab.calcFan and tonumber(tab.calcFan) >= 0 then
  142. local calcFan = tab.calcFan
  143. if Define_53.GAME_RULE['calcFan'][''..calcFan] then
  144. temp = temp .. Define_53.GAME_RULE['calcFan'][''..calcFan] .. ' '
  145. end
  146. end
  147. return temp
  148. end
  149. function Define_53.getRuleFromString(gameId, jushu, ruleStr)
  150. local jsonData = json.decode(ruleStr)
  151. local tt = {}
  152. if jushu then
  153. local jushuText = string.format("%d 局",jushu);
  154. table.insert(tt, {name = "局数", value = {jushuText}})
  155. end
  156. if jsonData.multLimit and jsonData.multLimit >= 0 then
  157. local specStr = Define_53.GAME_RULE.multLimit["" .. jsonData.multLimit] or ""
  158. if specStr ~= "" then
  159. table.insert(tt, {name = "封顶", value = {specStr}})
  160. end
  161. end
  162. if jsonData.piaoType and jsonData.piaoType >= 0 then
  163. local specStr = Define_53.GAME_RULE.piaoType["" .. jsonData.piaoType] or ""
  164. if specStr ~= "" then
  165. table.insert(tt, {name = "漂分", value = {specStr}})
  166. end
  167. end
  168. if jsonData.calcFan and jsonData.calcFan >= 0 then
  169. local specStr = Define_53.GAME_RULE.calcFan["" .. jsonData.calcFan] or ""
  170. if specStr ~= "" then
  171. table.insert(tt, {name = "算番", value = {specStr}})
  172. end
  173. end
  174. if jsonData.playRule and jsonData.playRule >= 0 then
  175. local specStr = Define_53.GAME_RULE.playRule["" .. jsonData.playRule] or ""
  176. if specStr ~= "" then
  177. table.insert(tt, {name = "玩法", value = {specStr}})
  178. end
  179. end
  180. if jsonData.baseMulti and jsonData.baseMulti > 0 then
  181. table.insert(tt, {name = '积分倍数', value = {Define_53.GAME_RULE.baseMulti["1"] .. jsonData.baseMulti}})
  182. end
  183. if jsonData.forbidProp and jsonData.forbidProp > 0 then
  184. table.insert(tt, {name = '其他', value = {Define_53.GAME_RULE.forbidProp["1"]}})
  185. end
  186. return tt
  187. end
  188. function Define_53.getClubTableRuleString(gameId, ruleStr, playerNum)
  189. local str = ""
  190. str = str..Define_53.getClubTableWanFaInfo(ruleStr)
  191. return str
  192. end
  193. return Define_53