Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

435 Zeilen
11 KiB

  1. local wanfa={
  2. playnum={
  3. {name="4人",value=4},
  4. {name="3人",value=3},
  5. {name="2人",value=2},
  6. },
  7. isfaststart={
  8. {name="快速成局",value=1},
  9. {name="",value=0,hide=true},
  10. },
  11. limitfan={
  12. {name="2番",value=2},
  13. {name="3番",value=3},
  14. {name="4番",value=4},
  15. },
  16. gshmode={
  17. {name="点杠花(点炮)",value=1},
  18. {name="点杠花(自摸)",value=2},
  19. },
  20. playmode={
  21. {name="自摸加底",value=1},
  22. {name="自摸加番",value=2},
  23. {name="自摸不加",value=0},
  24. },
  25. cardtype = {
  26. {name="两方",value=2},
  27. {name="三方",value=3},
  28. },
  29. swapcard={
  30. {name="不换牌",value=0},
  31. {name="换三张",value=3},
  32. {name="换四张",value=4},
  33. },
  34. yj = {
  35. {name="幺九",value=1},
  36. {name="",value=0,hide=true},
  37. },
  38. jd = {
  39. {name="将对",value=1},
  40. {name="",value=0,hide=true},
  41. },
  42. tdh = {
  43. {name="天地胡",value=1},
  44. {name="",value=0,hide=true},
  45. },
  46. mq = {
  47. {name="门清",value=1},
  48. {name="",value=0,hide=true},
  49. },
  50. zz = {
  51. {name="中张",value=1},
  52. {name="",value=0,hide=true},
  53. },
  54. efkh = {
  55. {name = "两分起胡", value = 1},
  56. {name = "", value = 0, hide = true}
  57. },
  58. ting = {
  59. {name = "听牌提示", value = 1},
  60. {name = "", value = 0, hide = true}
  61. },
  62. baseMulti = {
  63. {name = "积分倍数x", value = 0x0001}
  64. },
  65. forbidProp = {
  66. {name = "屏蔽快捷语与道具", value = 1},
  67. {name = "屏蔽快捷语与道具", value = 0, hide = true},
  68. },
  69. forbidVoice = {
  70. {name = "屏蔽语音", value = 1},
  71. {name = "屏蔽语音", value = 0, hide = true},
  72. },
  73. }
  74. wanfa.clubWanFaTitle={
  75. playmode="玩法",
  76. playnum="人数",
  77. limitfan="封顶",
  78. baseMulti="积分倍数",
  79. forbidProp = "其他",
  80. }
  81. wanfa.ruleText =
  82. {
  83. {
  84. title = "基础规则",
  85. content =
  86. {
  87. "1、人数:2人。",
  88. "2、道具:两方:麻将“筒”“条”共72张。三方:麻将“筒”“条”“万”共108张。",
  89. "3、三方玩法中,胡牌时,手牌最多只有2种花色,否则不可以胡牌。",
  90. "4、流局时查叫,即未叫玩家要赔偿有叫玩家最大可能番数。",
  91. },
  92. },
  93. --[[{
  94. title = "胡牌类型",
  95. content =
  96. {
  97. "13张模式",
  98. "1、平胡(0番):四坎(除4副刻子)加一对将。",
  99. "2、对对胡(1番):四副刻子加一对将。",
  100. "3、清一色(2番):全部是一种花色的平胡。",
  101. "4、七对(2番):玩家手牌都是对子,没有碰和刮风下雨。",
  102. "5、龙七对(3番):玩家手牌都是对子,并且有一个根儿,没有碰和刮风下雨。",
  103. "6、清对(3番):清一色+对对胡。",
  104. "7、清七对(4番):清一色+七对",
  105. "8、清龙七对(5番):清一色+龙七对",
  106. "9、全幺九(3番):所有组成的顺子、刻子、将牌里都包含1或9。",
  107. "10、将对(3番):所有牌当中,全部是2、5、8组成的对对胡。",
  108. "11、将七对(4番):所有牌当中,全是2、5、8组成的龙七对。",
  109. "12、卡二条(1番):胡牌时,牌型可以摆成1条和3条夹一个2条的胡牌。",
  110. "",
  111. "10张模式",
  112. "1、平胡(0番):三坎(除3副刻子)加一对将。",
  113. "2、对对胡(1番):三副刻子加一对将。",
  114. "3、清一色(2番):全部是一种花色的平胡。",
  115. "4、清对(3番):清一色+对对胡。",
  116. "5、全幺九(3番):所有组成的顺子、刻子、将牌里都包含1或9。",
  117. "6、将对(3番):所有牌当中,全部是2、5、8组成的对对胡。",
  118. "7、卡二条(1番):胡牌时,牌型可以摆成1条和3条夹一个2条的胡牌。",
  119. "",
  120. "7张模式",
  121. "1、平胡(0番):两坎(除2副刻子)加一对将。",
  122. "2、对对胡(1番):两副刻子加一对将。",
  123. "3、清一色(2番):全部是一种花色的平胡。",
  124. "4、四对(2番):玩家手牌都是对子,没有碰和刮风下雨。",
  125. "5、龙四对(3番):玩家手牌都是对子,并且有一个根儿,没有碰和刮风下雨。",
  126. "6、清对(3番):清一色+对对胡。",
  127. "7、清四对(4番):清一色+四对",
  128. "8、清龙四对(5番):清一色+龙四对",
  129. "9、全幺九(3番):所有组成的顺子、刻子、将牌里都包含1或9。",
  130. "10、将对(3番):所有牌当中,全部是2、5、8组成的对对胡。",
  131. "11、将四对(4番):所有牌当中,全是2、5、8组成的四对。",
  132. "12、卡二条(1番):胡牌时,牌型可以摆成1条和3条夹一个2条的胡牌。",
  133. }
  134. },
  135. {
  136. title = "算分规则",
  137. content =
  138. {
  139. "1、番=底金×2 例如:底金为1分,2番=1*2*2=4分 3番=1*2*2*2=8分",
  140. "2、基本输(赢)积分=番数+刮风下雨+自摸加底(自摸加番玩法则算在总番里)",
  141. "3、点炮结算方式为1对1,自摸结算方式为1对多。",
  142. "",
  143. "另加番",
  144. "1、根:+1番 所有牌中有4张一样的牌,(无论是否碰、杠),可累计计算。",
  145. "2、杠上开花:+1番",
  146. "3、杠上炮:+1番",
  147. "4、抢杠胡:+1番",
  148. "5、扫底胡:+1番",
  149. "6、金钩胡:+1番",
  150. "7、海底炮:+1番",
  151. "8、天胡:+3番",
  152. "9、地胡:+2番",
  153. "",
  154. "备注:各个牌型不重复计算,只收取最大番。",
  155. }
  156. },--]]
  157. }
  158. function wanfa.getWanFaInfo(str)
  159. local tab=json.decode(str)
  160. local temp=""
  161. local sortTable = {
  162. 'playnum',
  163. 'isfaststart',
  164. 'limitfan',
  165. 'gshmode',
  166. 'playmode',
  167. 'cardtype',
  168. 'swapcard',
  169. 'yj',
  170. 'jd',
  171. 'tdh',
  172. 'mq',
  173. 'zz',
  174. 'efkh',
  175. 'ting',
  176. 'baseMulti',
  177. 'forbidProp',
  178. 'forbidVoice',
  179. }
  180. for _, key in ipairs(sortTable) do
  181. for k,v in pairs(tab) do
  182. if key == k then
  183. if wanfa[k] then
  184. if k == "playnum" then--and tab["isfaststart"] == 1
  185. temp=temp..""
  186. elseif k == "baseMulti" then
  187. temp=temp..wanfa[k][1].name..v.." "
  188. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  189. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  190. for _,data in pairs(wanfa[k]) do
  191. if not data.hide then
  192. local des = string.format(data.name,v,tab.diFenAdd)
  193. temp=temp..des.." "
  194. end
  195. end
  196. else
  197. temp=temp.."不加分".." "
  198. end
  199. elseif k == "specrule" then
  200. for _,data in pairs(wanfa[k]) do
  201. if not data.hide then
  202. if getNumBand(v,data.value) > 0 then
  203. temp=temp..data.name.." "
  204. end
  205. end
  206. end
  207. else
  208. for _,data in pairs(wanfa[k]) do
  209. if v==data.value and not data.hide then
  210. temp=temp..data.name.." "
  211. end
  212. end
  213. end
  214. end
  215. end
  216. end
  217. end
  218. return temp
  219. end
  220. function wanfa.getWanFaInfoTab(str)
  221. local tab=json.decode(str)
  222. local temp={}
  223. local sortTable = {
  224. 'playnum',
  225. 'isfaststart',
  226. 'limitfan',
  227. 'gshmode',
  228. 'playmode',
  229. 'cardtype',
  230. 'swapcard',
  231. 'yj',
  232. 'jd',
  233. 'tdh',
  234. 'mq',
  235. 'zz',
  236. 'efkh',
  237. 'ting',
  238. 'baseMulti',
  239. 'forbidProp',
  240. 'forbidVoice',
  241. }
  242. for _, key in ipairs(sortTable) do
  243. for k,v in pairs(tab) do
  244. if key == k then
  245. if wanfa[k] then
  246. if k == "playnum" then--and tab["isfaststart"] == 1
  247. -- temp=temp..""
  248. elseif k == "baseMulti" then
  249. table.insert(temp,wanfa[k][1].name..v)
  250. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  251. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  252. for _,data in pairs(wanfa[k]) do
  253. if not data.hide then
  254. local des = string.format(data.name,v,tab.diFenAdd)
  255. table.insert(temp,des)
  256. end
  257. end
  258. else
  259. table.insert(temp,"不加分")
  260. end
  261. elseif k == "specrule" then
  262. for _,data in pairs(wanfa[k]) do
  263. if not data.hide then
  264. if getNumBand(v,data.value) > 0 then
  265. table.insert(temp,data.name)
  266. end
  267. end
  268. end
  269. else
  270. for _,data in pairs(wanfa[k]) do
  271. if v==data.value and not data.hide then
  272. -- temp=temp..data.name.." "
  273. table.insert(temp,data.name)
  274. end
  275. end
  276. end
  277. end
  278. end
  279. end
  280. end
  281. return temp
  282. end
  283. function wanfa.getClubWaFaInfo(str)
  284. local tab=json.decode(str)
  285. local temp={}
  286. local sortTable = {
  287. 'playnum',
  288. 'isfaststart',
  289. 'limitfan',
  290. 'gshmode',
  291. 'playmode',
  292. 'cardtype',
  293. 'swapcard',
  294. 'yj',
  295. 'jd',
  296. 'tdh',
  297. 'mq',
  298. 'zz',
  299. 'efkh',
  300. 'ting',
  301. 'baseMulti',
  302. 'forbidProp',
  303. 'forbidVoice',
  304. }
  305. for _, key in ipairs(sortTable) do
  306. for k,v in pairs(tab) do
  307. if key == k then
  308. if wanfa[k] then
  309. if k == "playnum" and tab["isfaststart"] == 1 then
  310. --temp=temp..""
  311. elseif k == "baseMulti" then
  312. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa[k][1].name .. v}})
  313. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  314. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  315. for _,data in pairs(wanfa[k]) do
  316. if not data.hide then
  317. local des = string.format(data.name,v,tab.diFenAdd)
  318. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={des}})
  319. end
  320. end
  321. else
  322. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"不加分"}})
  323. end
  324. elseif k == "specrule" then
  325. local firstWf = true
  326. for _,data in pairs(wanfa[k]) do
  327. if not data.hide then
  328. if getNumBand(v,data.value) > 0 then
  329. if firstWf then
  330. firstWf = false
  331. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  332. else
  333. table.insert(temp,{name="",value={data.name}})
  334. end
  335. end
  336. end
  337. end
  338. else
  339. for _,data in pairs(wanfa[k]) do
  340. if v==data.value and not data.hide then
  341. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  342. --temp=temp..data.name.." "
  343. end
  344. end
  345. end
  346. end
  347. end
  348. end
  349. end
  350. return temp
  351. end
  352. function wanfa.getClubTableWanFaInfo(str)
  353. local tab=json.decode(str)
  354. local temp=""
  355. local sortTable = {
  356. 'cardtype',
  357. 'limitfan',
  358. 'swapcard',
  359. }
  360. for _, key in ipairs(sortTable) do
  361. for k,v in pairs(tab) do
  362. if key == k then
  363. if wanfa[k] then
  364. if k == 'cardtype' or k == "limitfan" or k == "swapcard" then
  365. for _,data in pairs(wanfa[k]) do
  366. if v==data.value then
  367. -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  368. temp=temp..data.name.." "
  369. end
  370. end
  371. end
  372. end
  373. end
  374. end
  375. end
  376. return temp
  377. end
  378. ---
  379. -- 获取亲友圈玩法
  380. -- @param gameId
  381. -- @param jushu
  382. -- @param ruleStr
  383. -- @param arena
  384. -- @return
  385. --
  386. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  387. local str = wanfa.getClubWaFaInfo(ruleStr, jushu)
  388. return str
  389. end
  390. ---
  391. -- 获取包间多玩法桌子上显示的信息
  392. -- @param gameId
  393. -- @param ruleStr
  394. -- @param playerNum
  395. -- @return
  396. --
  397. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  398. local str = ""
  399. local jsonData=json.decode(ruleStr)
  400. -- if jsonData.isfaststart == 1 or jsonData.faststart == 1 then
  401. -- str = str .. "快速成局 "
  402. -- else
  403. -- if playerNum then
  404. -- str = str .. playerNum .. "人 "
  405. -- elseif jsonData.playnum then
  406. -- str = str .. jsonData.playnum .. "人 "
  407. -- end
  408. -- end
  409. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  410. str = str .. wanfaStr
  411. return str
  412. end
  413. return wanfa