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.

298 lines
7.1 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. playnum = {
  15. {name="三人玩",value=3},
  16. {name="四人玩",value=4},
  17. {name="快速成局",value=-1},
  18. },
  19. laiziNum = {
  20. {name="癞子",value=0},
  21. {name="癞子",value=1},
  22. {name="癞子",value=2},
  23. {name="癞子",value=3},
  24. {name="癞子",value=4},
  25. {name="癞子",value=5},
  26. {name="癞子",value=6},
  27. },
  28. specialRule={
  29. {name="过碰不碰",value=0x0002},
  30. },
  31. baseMulti = {
  32. {name = "积分倍数x", value = 0x0001}
  33. },
  34. forbidProp = {
  35. {name = "屏蔽快捷语与道具", value = 1},
  36. {name = "", value = 0, hide = true},
  37. },
  38. forbidVoice = {
  39. {name = "屏蔽语音", value = 1},
  40. {name = "", value = 0, hide = true},
  41. },
  42. }
  43. wanfa.clubWanFaTitle={
  44. fanscore="超番加底",
  45. highLimit = "封顶",
  46. playnum = "玩家人数",
  47. laiziNum = "癞子数量",
  48. specialRule = "玩法",
  49. baseMulti="积分倍数",
  50. forbidProp="其他",
  51. }
  52. wanfa.RuleText =
  53. {
  54. --[1] =
  55. {
  56. title = "基础规则",
  57. content =
  58. {
  59. "1、人数:3人、4人",
  60. "2、用牌:除大小王外的52张牌+X张癞子(0≤X≤6)",
  61. "3、发牌:头家8张,闲家7张,小家5张",
  62. },
  63. },
  64. --[2] =
  65. --[[{
  66. title = "游戏玩法",
  67. content =
  68. {
  69. "1、基础操作:吃、碰、偷、巴、胡、报叫。",
  70. "2、癞子玩法说明:",
  71. "①癞子只能偷、巴、碰,不能吃。",
  72. "②手中有癞子不能胡,也不能胡癞子。",
  73. "③癞子碰牌、偷牌必须带一张真实牌。",
  74. }
  75. },
  76. --[3] =
  77. {
  78. title = "胡牌结算",
  79. content =
  80. {
  81. "1、番数计算:",
  82. "天胡:3番",
  83. "地胡:2番",
  84. "报叫:+1番",
  85. "3张相同的牌:+1番,每多一张相同的牌多加一番",
  86. "2、分数计算:",
  87. "基础得分=底分×2ˆn+超番加底的分,(底分为1分,n为胡牌者总番数)",
  88. }
  89. },--]]
  90. }
  91. --获取玩法规则
  92. function wanfa.getRuleInfo(ruleStr)
  93. --return "luzhouwanfa"
  94. if not ruleStr then
  95. ruleStr = app.room.roomInfo.strGameInfo
  96. end
  97. local tab=json.decode(ruleStr)
  98. local temp=""
  99. local tempTab = {}
  100. tempTab["fanscore"] = tab.fanscore or 0
  101. tempTab["highLimit"] = tab.highLimit or 3
  102. tempTab["baseMulti"] = tab.baseMulti or 1
  103. tempTab["laiziNum"] = tab.laiziNum or 0
  104. tempTab["playnum"] = tab.playnum or 0
  105. tempTab["specialRule"] = tab.specialRule or 0
  106. for k,v in pairs(tempTab) do
  107. if wanfa[k] then
  108. if k == "specialRule" then
  109. for _,data in pairs(wanfa[k]) do
  110. if not data.hide then
  111. if getNumBand(v,data.value) > 0 then
  112. if (tempTab.playnum == 2 or tempTab.playnum == 3) and data.value == 32 then--固定2人3人时不显示小家可看牌
  113. else
  114. temp=temp..data.name.." "
  115. end
  116. end
  117. end
  118. end
  119. elseif k == "fanscore" then
  120. for _,data in pairs(wanfa[k]) do
  121. if v==data.value then
  122. temp=temp.."超番"..data.name.." "
  123. end
  124. end
  125. elseif k == "baseMulti" then
  126. temp=temp..wanfa.baseMulti[1].name..v.." "
  127. elseif k == "laiziNum" then
  128. if tonumber(v) == 0 then
  129. temp=temp.."无癞子".." "
  130. else
  131. temp=temp.."癞子x"..v.." "
  132. end
  133. else
  134. for _,data in pairs(wanfa[k]) do
  135. if v==data.value and not data.hide then
  136. temp=temp..data.name.." "
  137. end
  138. end
  139. end
  140. end
  141. end
  142. return temp
  143. end
  144. --获取茶馆玩法规则
  145. function wanfa.getClubRuleInfo(ruleStr, jushu)
  146. if not ruleStr then
  147. ruleStr = app.room.roomInfo.strGameInfo
  148. end
  149. --return "luzhouclubwanfa"
  150. local tab=json.decode(ruleStr)
  151. local temp={}
  152. if jushu then
  153. local jushuText = string.format("%d 局", jushu);
  154. table.insert(temp, 1, {name = "局数", value = {jushuText}})
  155. end
  156. local tempTab = {}
  157. tempTab["fanscore"] = tab.fanscore or 0
  158. tempTab["highLimit"] = tab.highLimit or 3
  159. tempTab["baseMulti"] = tab.baseMulti or 1
  160. tempTab["laiziNum"] = tab.laiziNum or 0
  161. tempTab["playnum"] = tab.playnum or 0
  162. for k,v in pairs(tab) do
  163. if wanfa[k] then
  164. if k == "specialRule" then
  165. for _,data in pairs(wanfa[k]) do
  166. if not data.hide then
  167. if getNumBand(v,data.value) > 0 then
  168. if (tempTab.playnum == 2 or tempTab.playnum == 3) and data.value == 32 then--固定2人3人时不显示小家可看牌
  169. else
  170. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  171. --只有第一行显示玩法
  172. k = ""
  173. end
  174. end
  175. end
  176. end
  177. elseif k == "highLimit" then
  178. for _,data in pairs(wanfa[k]) do
  179. if v==data.value then
  180. if tonumber(v) ~= 0 then
  181. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name.."封顶"}})
  182. else
  183. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  184. end
  185. end
  186. end
  187. elseif k == "fanscore" then
  188. for _,data in pairs(wanfa[k]) do
  189. if v==data.value and not data.hide then
  190. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"超番"..data.name}})
  191. end
  192. end
  193. elseif k == "baseMulti" then
  194. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa.baseMulti[1].name .. v}})
  195. elseif k == "laiziNum" then
  196. if tonumber(v) == 0 then
  197. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"无癞子"}})
  198. else
  199. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"癞子x".. v}})
  200. end
  201. else
  202. for _,data in pairs(wanfa[k]) do
  203. if v==data.value and not data.hide then
  204. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  205. end
  206. end
  207. end
  208. end
  209. end
  210. return temp
  211. end
  212. function wanfa.getClubTableWanFaInfo(str)
  213. local tab=json.decode(str)
  214. local temp=""
  215. local tempTab = {}
  216. tempTab["fanscore"] = tab.fanscore or 0
  217. tempTab["highLimit"] = tab.highLimit or 3
  218. tempTab["baseMulti"] = tab.baseMulti or 1
  219. --固定亲友圈桌面玩法顺序
  220. for k,v in pairs(tempTab) do
  221. if wanfa[k] then
  222. if k ~= "playnum" then
  223. if k == "fanscore" then
  224. for _,data in pairs(wanfa[k]) do
  225. if v==data.value then
  226. temp=temp.."超番"..data.name.." "
  227. end
  228. end
  229. elseif k == "laiziNum" then
  230. elseif k == "baseMulti" then
  231. else
  232. for _,data in pairs(wanfa[k]) do
  233. if v==data.value then
  234. temp=temp..data.name.." "
  235. end
  236. end
  237. end
  238. end
  239. end
  240. end
  241. return temp
  242. end
  243. ---
  244. -- 获取包间玩法信息
  245. -- @param gameId
  246. -- @param jushu
  247. -- @param ruleStr
  248. -- @param arena
  249. -- @return
  250. --
  251. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  252. local str = wanfa.getClubRuleInfo(ruleStr, jushu)
  253. return str
  254. end
  255. ---
  256. -- 获取包间多玩法桌子上显示的信息
  257. -- @param gameId
  258. -- @param ruleStr
  259. -- @param playerNum
  260. -- @return
  261. --
  262. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  263. local str = ""
  264. local jsonData=json.decode(ruleStr)
  265. if jsonData.startMode == 1 then
  266. str = str .. "快速成局 "
  267. else
  268. if playerNum then
  269. str = str .. playerNum .. "人 "
  270. elseif jsonData.playnum then
  271. str = str .. jsonData.playnum .. "人 "
  272. end
  273. end
  274. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  275. str = str .. wanfaStr
  276. return str
  277. end
  278. return wanfa