Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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