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.

254 lines
6.9 KiB

  1. local wanfa={
  2. fanscore={
  3. {name="+1",value=1},
  4. {name="+2",value=2},
  5. {name="+5",value=5},
  6. {name="+10",value=10},
  7. {name="不加底",value=0},
  8. },
  9. highLimit={
  10. {name="3番",value=3},
  11. {name="4番",value=4},
  12. {name="不封顶",value=0},
  13. },
  14. Piaorule={
  15. {name="不吃飘",value=0},
  16. {name="吃飘",value=1},
  17. },
  18. playnum = {
  19. {name="二人玩",value=2},
  20. {name="三人玩",value=3},
  21. {name="四人玩",value=4},
  22. {name="快速成局",value=-1},
  23. },
  24. baseMulti = {
  25. {name = "积分倍数x", value = 0x0001}
  26. },
  27. forbidProp = {
  28. {name = "屏蔽聊天与互动道具", value = 1},
  29. {name = "屏蔽聊天与互动道具", value = 0, hide = true},
  30. },
  31. }
  32. wanfa.clubWanFaTitle={
  33. fanscore="超番加底",
  34. highLimit = "封顶",
  35. Piaorule = "玩法",
  36. playnum = "玩家人数",
  37. baseMulti="积分倍数",
  38. forbidProp="其他",
  39. }
  40. wanfa.RuleText =
  41. {
  42. --[1] =
  43. {
  44. title = "基础规则",
  45. content =
  46. {
  47. "1、人数:3人、4人",
  48. "2、用牌:长牌一套,总共84张牌, 21种牌,每种牌4张。",
  49. "3、定头:开局后,系统随机翻一张牌展示,然后根据牌面数字从对应玩家开始按逆时针顺序往下数,数到所翻牌面数字时,该玩家即本局头家",
  50. },
  51. },
  52. --[2] =
  53. --[[{
  54. title = "牌型介绍",
  55. content =
  56. {
  57. "1、基础胡牌:头家14坨起胡,闲家12坨起胡,小家4坨起胡,0番。",
  58. "2、特殊胡牌:",
  59. "龙胡:也叫24坨红,即总坨数大于等于24,+1番。",
  60. "坨坨红:胡牌牌面全是红色牌,+3番 。",
  61. "黑龙:胡牌牌面的红牌总坨数≤4,+1番。",
  62. "坨坨黑:胡牌牌面全是黑色牌,+3番。",
  63. "天胡:庄家起手直接胡(天胡胡牌不需要等别人偷),+2番。",
  64. }
  65. },
  66. --[3] =
  67. {
  68. title = "玩法介绍",
  69. content =
  70. {
  71. "1、偷牌:手中有3张一样的牌可偷牌,偷的牌需展示至桌面。",
  72. "2、报叫:起手所有玩家不再偷牌后,若听牌,可选择报叫,报叫后必须胡牌。",
  73. "3、打牌:确定所有玩家都不再偷牌后,头家开始打牌。从手中16张牌选择一张打出。",
  74. "4、翻牌:上家出完牌后,若无人吃/碰/胡,则下家开始翻牌堆最上面的牌。",
  75. "5、吃牌:上家打出、翻出的牌以及自己翻出的牌,与自己手牌可组成“点数和等于14”的组合时,可选择吃,吃的牌需展示至桌面。",
  76. "6、碰牌:手中有一对牌(一模一样),其他玩家打或翻出同样的牌时,可选择碰,碰的牌需展示至桌面。",
  77. "7、巴牌:偷/碰牌的基础上,若再摸进/翻出一张相同的牌,可选择巴(四张一样的牌叫做巴牌),巴的牌需展示至桌面。",
  78. "8、胡牌:可以胡其他任何玩家打出或翻出的牌,若多家胡同样的牌,则按逆时针顺序,排在前面的才可以胡,无一炮多响。",
  79. "9、点炮:从某玩家手中打出一张牌后,被其他玩家胡了。",
  80. "10、黄庄:三人玩法剩余5张无人胡、四人玩法剩余2张无人胡,则黄庄。",
  81. }
  82. },
  83. --[4] =
  84. {
  85. title = "特殊规则",
  86. content =
  87. {
  88. "1、冲番牌:天、地、人、和、幺四、红九、三四。",
  89. "2、吃飘:玩家胡牌后,满足吃飘条件,即吃飘。",
  90. }
  91. },--]]
  92. }
  93. --获取玩法规则
  94. function wanfa.getRuleInfo(ruleStr)
  95. --return "luzhouwanfa"
  96. if not ruleStr then
  97. ruleStr = app.room.roomInfo.strGameInfo
  98. end
  99. local tab=json.decode(ruleStr)
  100. local temp=""
  101. for k,v in pairs(tab) do
  102. if wanfa[k] then
  103. if k == "specialRule" then
  104. for _,data in pairs(wanfa[k]) do
  105. if not data.hide then
  106. if getNumBand(v,data.value) > 0 then
  107. if (tab.playnum == 2 or tab.playnum == 3) and data.value == 32 then--固定2人3人时不显示小家可看牌
  108. else
  109. temp=temp..data.name.." "
  110. end
  111. end
  112. end
  113. end
  114. elseif k == "highLimit" then
  115. if v>0 then
  116. temp=temp..v.."番 "
  117. else
  118. temp=temp.."不封顶 "
  119. end
  120. elseif k == "fanscore" then
  121. for _,data in pairs(wanfa[k]) do
  122. if v==data.value and not data.hide then
  123. temp=temp.."超番"..data.name.." "
  124. end
  125. end
  126. elseif k == "baseMulti" then
  127. temp = temp .. wanfa.baseMulti[1].name .. v .. " "
  128. else
  129. for _,data in pairs(wanfa[k]) do
  130. if v==data.value and not data.hide then
  131. temp=temp..data.name.." "
  132. end
  133. end
  134. end
  135. end
  136. end
  137. return temp
  138. end
  139. --获取茶馆玩法规则
  140. function wanfa.getClubRuleInfo(ruleStr, jushu)
  141. if not ruleStr then
  142. ruleStr = app.room.roomInfo.strGameInfo
  143. end
  144. --return "luzhouclubwanfa"
  145. local tab=json.decode(ruleStr)
  146. local temp={}
  147. if jushu then
  148. local jushuText = string.format("%d 局", jushu);
  149. table.insert(temp, 1, {name = "局数", value = {jushuText}})
  150. end
  151. for k,v in pairs(tab) do
  152. if wanfa[k] then
  153. if k == "specialRule" then
  154. for _,data in pairs(wanfa[k]) do
  155. if not data.hide then
  156. if getNumBand(v,data.value) > 0 then
  157. if (tab.playnum == 2 or tab.playnum == 3) and data.value == 32 then--固定2人3人时不显示小家可看牌
  158. else
  159. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  160. --只有第一行显示玩法
  161. k = ""
  162. end
  163. end
  164. end
  165. end
  166. elseif k == "baseMulti" then
  167. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa.baseMulti[1].name .. v}})
  168. else
  169. for _,data in pairs(wanfa[k]) do
  170. if v==data.value and not data.hide then
  171. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  172. end
  173. end
  174. end
  175. end
  176. end
  177. return temp
  178. end
  179. function wanfa.getClubTableWanFaInfo(str)
  180. local tab=json.decode(str)
  181. local temp=""
  182. for k,v in pairs(tab) do
  183. if wanfa[k] then
  184. if k ~= "playnum" then
  185. if k == "fanscore" then
  186. for _,data in pairs(wanfa[k]) do
  187. if v==data.value then
  188. temp=temp.."超番"..data.name.." "
  189. end
  190. end
  191. elseif k == "baseMulti" then
  192. elseif k == "forbidProp" then
  193. else
  194. for _,data in pairs(wanfa[k]) do
  195. if v==data.value then
  196. temp=temp..data.name.." "
  197. end
  198. end
  199. end
  200. end
  201. end
  202. end
  203. return temp
  204. end
  205. ---
  206. -- 获取包间玩法信息
  207. -- @param gameId
  208. -- @param jushu
  209. -- @param ruleStr
  210. -- @param arena
  211. -- @return
  212. --
  213. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  214. local str = wanfa.getClubRuleInfo(ruleStr, jushu)
  215. return str
  216. end
  217. ---
  218. -- 获取包间多玩法桌子上显示的信息
  219. -- @param gameId
  220. -- @param ruleStr
  221. -- @param playerNum
  222. -- @return
  223. --
  224. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  225. local str = ""
  226. local jsonData=json.decode(ruleStr)
  227. if jsonData.startMode == 1 then
  228. str = str .. "快速成局 "
  229. else
  230. if playerNum then
  231. str = str .. playerNum .. "人 "
  232. elseif jsonData.playnum then
  233. str = str .. jsonData.playnum .. "人 "
  234. end
  235. end
  236. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  237. str = str .. wanfaStr
  238. return str
  239. end
  240. return wanfa