Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

290 строки
10 KiB

  1. local Define_28 = {}
  2. local gameConfig = getSubGameConfig(GAME_IDS.DouDiZhu)
  3. --游戏内玩法
  4. Define_28.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. ["0"] = "不限倍数",
  14. ["8"] = "8倍封顶",
  15. ["16"] = "16倍封顶",
  16. ["32"] = "32倍封顶",
  17. },
  18. ["lordType"] = {
  19. ["1"] = "4个2必当",
  20. ["2"] = "双王必当",
  21. ["4"] = "单王双2必当",
  22. ["3"] = "双王必当 4个2必当",
  23. ["5"] = "单王双2必当 4个2必当",
  24. ["6"] = "双王必当 单王双2必当",
  25. ["7"] = "双王必当 单王双2必当 4个2必当",
  26. },
  27. ["nobLord"] = {
  28. ["0"] = "重新洗牌",
  29. ["1"] = "先叫必当",
  30. },
  31. ["sanDai"] = {
  32. ["1"] = "三带单",
  33. ["2"] = "三带对",
  34. ["3"] = "三带单 三带对",
  35. },
  36. ["siDai"] = {
  37. ["2"] = "四带两单",
  38. ["8"] = "四带两对",
  39. ["10"] = "四带两单 四带两对",
  40. },
  41. ["piaoType"] = {
  42. ["0"] = "不飘",
  43. ["5"] = "飘5分",
  44. ["10"] = "飘10分",
  45. },
  46. ["extPlay"] = {
  47. ["1"] = "屏蔽聊天和互动道具",
  48. ["2"] = "加倍",
  49. ["4"] = "剩余手牌显示",
  50. ["3"] = "屏蔽聊天和互动道具 加倍",
  51. ["5"] = "屏蔽聊天和互动道具 剩余手牌显示",
  52. ["6"] = "加倍 剩余手牌显示",
  53. ["7"] = "屏蔽聊天和互动道具 加倍 剩余手牌显示",
  54. ['8'] = '超时自动不加倍',
  55. ['9'] = '屏蔽聊天和互动道具 超时自动不加倍',
  56. ['10'] = '加倍 超时自动不加倍',
  57. ['11'] = '屏蔽聊天和互动道具 加倍 超时自动不加倍',
  58. ['12'] = '剩余手牌显示 超时自动不加倍',
  59. ['13'] = '屏蔽聊天和互动道具 剩余手牌显示 超时自动不加倍',
  60. ['14'] = '加倍 剩余手牌显示 超时自动不加倍',
  61. ['15'] = '屏蔽聊天和互动道具 加倍 剩余手牌显示 超时自动不加倍',
  62. },
  63. ["forbidProp"] = {
  64. ["1"] = "屏蔽快捷语与道具",
  65. },
  66. ["forbidVoice"] = {
  67. ["1"] = "屏蔽语音",
  68. },
  69. ["baseMulti"] = {
  70. ["1"] = "积分倍数x"
  71. },
  72. }
  73. Define_28.clubWanFaTitle={
  74. game_num ="人数",
  75. multLimit = "封顶",
  76. gamerule = "玩法",
  77. baseMulti="积分倍数",
  78. }
  79. -- 斗地主规则文本
  80. Define_28.ruleText =
  81. {
  82. --[1] =
  83. {
  84. title = "基础规则",
  85. content =
  86. {
  87. "1、发牌:一副牌 54 张,一人 17 张,留 3 张做底牌,在确定地主之前玩家不能看底牌,确认地主之后地主获得3张底牌。",
  88. "2、叫牌:",
  89. "(1)叫牌时可以叫:1分、2分、3分、不叫。后叫牌者只能叫比前面玩家高的分或者不叫。",
  90. "(2)叫牌结束后所叫分值最大的玩家为地主。如果有玩家叫“3分” 则立即结束叫牌,该玩家为地主。",
  91. "3、第一个叫牌的玩家:第一轮叫牌的玩家由系统选定,以后每一轮首先叫牌的玩家按(第一轮)出牌顺序轮流担任。",
  92. "4、出牌:地主首先出牌,然后按逆时针顺序依次出牌,轮到用户跟牌时,用户可以选择 “不出”或出比上一个玩家大的牌。某一玩家出完牌时结束本局。",
  93. "5、胜负判定:任意一家出完牌后结束游戏,若是地主先出完牌则地主胜,否则另外两家胜。",
  94. },
  95. },
  96. --[2] =
  97. --[[{
  98. title = "牌型介绍",
  99. content =
  100. {
  101. "1、火箭:即双王,最大的牌。",
  102. "2、炸弹:四张同数值牌。",
  103. "3、单牌:单个牌。",
  104. "4、对牌:数值相同的两张牌。",
  105. "5、三张牌:数值相同的三张牌。",
  106. "6、三带一:数值相同的三张牌 + 一张单牌或一对牌。不包括 2 点和双王。",
  107. "7、双顺(连对):三对或更多的连续对牌。不包括 2 点和双王。",
  108. "8、三顺(飞机):二个或更多的连续三张牌。不包括 2 点和双王。",
  109. "9、飞机带翅膀:三顺+同数量的单牌(或同数量的对牌)。",
  110. "10、四带二:四张牌+任意两张单牌(或任意两对牌,注意:四带二不是炸弹)。",
  111. }
  112. },
  113. --[3] =
  114. {
  115. title = "牌型大小",
  116. content =
  117. {
  118. "1、火箭最大,可以压任意其他的牌。",
  119. "2、炸弹比火箭小,比其他牌大。都是炸弹时按牌的点数比大小。",
  120. "3、除火箭和炸弹外,其他牌必须要牌型相同且总张数相同才能比大小。",
  121. "4、单牌按分值比大小,依次是:大王>小王>2>A>K>Q>J>10>9>8>7>6>5>4>3 ,不分花色。",
  122. "5、对牌,三张牌都按点数比大小。",
  123. "6、顺牌按最大的一张牌的点数值来比大小。",
  124. "7、飞机带翅膀和四带二按其中的三顺和四张部分来比,带的牌不影响大小。",
  125. }
  126. },
  127. --[4] =
  128. {
  129. title = "特殊规则",
  130. content =
  131. {
  132. "1、必当地主",
  133. "(1)4个2必当:如果起始手牌包含4个2,则轮到自己必须叫3分,当地主。",
  134. "(2)双王必当:如果起始手牌包含一对大小王,则轮到自己必须叫3分,当地主。",
  135. "(3)单王双2必当:如果起始手牌包含单王双2,则轮到自己必须叫3分,当地主。",
  136. "2、无人叫地主时",
  137. "(1)重新发牌:如果都不叫,则重新发牌,重新叫牌。",
  138. "(2)先叫必当:如果没有玩家选择叫地主,那么本局先叫牌的玩家强制要求做地主。",
  139. "3、加倍玩法",
  140. "(1)在选择抢完地主后,地主出牌前增加一个翻倍选择功能。在抢完地主后地主把底牌拿到手中,出现翻倍选择功能,用户可以选择加倍或不加倍。但若要进行加倍操作时,玩家必须符合特定条件。",
  141. "(2)在限制时间内完成加倍或不加倍的操作后,必须等待其他玩家进行完相关操作或直到限制时间到(限制时间到未选择的默认不加倍,15s),则游戏开始由地主出牌。",
  142. "(3)加倍后游戏得分计算为:底分*倍数*自己加倍数*对手加倍数,若有加倍则*2,若没加倍则*1。",
  143. }
  144. },
  145. --[5] =
  146. {
  147. title = "算分规则",
  148. content =
  149. {
  150. "1、底分:叫牌的分数。",
  151. "2、倍数:初始为1,每出一个炸弹或火箭翻一倍(留在手上没出的不算)。",
  152. "3、结算:",
  153. "(1)地主胜:地主得分为2*底分*倍数。其余玩家各得: -底分*倍数。",
  154. "(2)地主败:地主得分为-2*底分*倍数。其余玩家各得:底分*倍数。",
  155. "(3)若有加倍时,则计分公式为:底分*倍数*自己加倍数*对手加倍数。",
  156. "(4)地主所有牌出完,其他两家一张都未出,春天:分数*2。",
  157. "(5)其他两家中有一家先出完牌,地主只出过一手牌,反春天:分数*2。",
  158. }
  159. },
  160. --[6] =
  161. {
  162. title = "不洗牌",
  163. content =
  164. {
  165. "1、不洗牌玩法的牌型规则与经典玩法相同,但发牌方式不同。",
  166. "2、在不洗牌玩法中,玩家打完一局后,所有的牌将不会洗牌,按一定顺序切牌后依次发给下一桌玩家。",
  167. "3、玩法特点:a,手牌更加整齐;b,拿到炸弹的可能性更高;c,单局耗时更短,更刺激,更流畅。",
  168. }
  169. },--]]
  170. }
  171. --俱乐部切换多玩法桌子显示的玩法 8倍 经典/不洗牌 飘分
  172. function Define_28.getClubTableWanFaInfo(str)
  173. local tab=json.decode(str)
  174. local temp=""
  175. if tab.multLimit and tonumber(tab.multLimit) >= 0 then
  176. local multLimit = tab.multLimit
  177. if multLimit == 0 then
  178. temp = temp.."不限倍数 "
  179. else
  180. temp = temp..multLimit.."倍 "
  181. end
  182. end
  183. if tab.gamerule then
  184. if tonumber(tab.gamerule) == 0 then
  185. temp = temp.."经典 "
  186. elseif tonumber(tab.gamerule) == 1 then
  187. temp = temp.."不洗牌 "
  188. end
  189. end
  190. if tab.piaoType and tonumber(tab.piaoType) >= 0 then
  191. local piaoType = tab.piaoType
  192. if piaoType == 0 then
  193. temp = temp.."不飘"
  194. else
  195. temp = temp.."飘"..piaoType.."分"
  196. end
  197. end
  198. return temp
  199. end
  200. function Define_28.getRuleFromString(gameId, jushu, ruleStr)
  201. local jsonData = json.decode(ruleStr)
  202. local tt = {}
  203. if jushu then
  204. local jushuText = string.format("%d 局",jushu);
  205. table.insert(tt, {name = "局数", value = {jushuText}})
  206. end
  207. if jsonData.gamerule then
  208. local strGameRule = "";
  209. if tonumber(jsonData.gamerule) == 0 then
  210. strGameRule = "经典 "
  211. elseif tonumber(jsonData.gamerule) == 1 then
  212. strGameRule = "不洗牌 "
  213. end
  214. table.insert(tt, {name= Define_28.clubWanFaTitle["gamerule"], value={strGameRule}})
  215. end
  216. if jsonData.multLimit and jsonData.multLimit >= 0 then
  217. local specStr = Define_28.GAME_RULE.multLimit["" .. jsonData.multLimit] or ""
  218. if specStr ~= "" then
  219. table.insert(tt, {name = "倍数", value = {specStr}})
  220. end
  221. end
  222. if jsonData.lordType and jsonData.lordType >= 0 then
  223. local specStr = Define_28.GAME_RULE.lordType["" .. jsonData.lordType] or ""
  224. if specStr ~= "" then
  225. table.insert(tt, {name = "地主", value = {specStr}})
  226. end
  227. end
  228. if jsonData.nobLord and jsonData.nobLord >= 0 then
  229. local specStr = Define_28.GAME_RULE.nobLord["" .. jsonData.nobLord] or ""
  230. if specStr ~= "" then
  231. table.insert(tt, {name = "无人叫牌", value = {specStr}})
  232. end
  233. end
  234. if jsonData.sanDai and jsonData.sanDai >= 0 then
  235. local specStr = Define_28.GAME_RULE.sanDai["" .. jsonData.sanDai] or ""
  236. if specStr ~= "" then
  237. table.insert(tt, {name = "三带", value = {specStr}})
  238. end
  239. end
  240. if jsonData.siDai and jsonData.siDai >= 0 then
  241. local specStr = Define_28.GAME_RULE.siDai["" .. jsonData.siDai] or ""
  242. if specStr ~= "" then
  243. table.insert(tt, {name = "四带", value = {specStr}})
  244. end
  245. end
  246. if jsonData.piaoType and jsonData.piaoType >= 0 then
  247. local specStr = Define_28.GAME_RULE.piaoType["" .. jsonData.piaoType] or ""
  248. if specStr ~= "" then
  249. table.insert(tt, {name = "飘分", value = {specStr}})
  250. end
  251. end
  252. if jsonData.extPlay and jsonData.extPlay >= 0 then
  253. local specStr = Define_28.GAME_RULE.extPlay["" .. jsonData.extPlay] or ""
  254. if specStr ~= "" then
  255. table.insert(tt, {name = "其它", value = {specStr}})
  256. end
  257. end
  258. if jsonData.baseMulti and jsonData.baseMulti > 0 then
  259. table.insert(tt, {name = Define_28.clubWanFaTitle.baseMulti, value = {Define_28.GAME_RULE.baseMulti["1"] .. jsonData.baseMulti}})
  260. end
  261. return tt
  262. end
  263. function Define_28.getClubTableRuleString(gameId, ruleStr, playerNum)
  264. local str = ""
  265. str = str..Define_28.getClubTableWanFaInfo(ruleStr)
  266. return str
  267. end
  268. return Define_28