Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

402 rindas
12 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=0,hide = true},
  9. },
  10. limitfan={
  11. {name="2番",value=2},
  12. {name="3番",value=3},
  13. {name="4番",value=4},
  14. },
  15. gshmode={
  16. {name="点杠花(点炮)",value=1},
  17. {name="点杠花(自摸)",value=2},
  18. },
  19. zimomode={
  20. {name="自摸加底",value=1},
  21. {name="自摸加番",value=2},
  22. {name="自摸不加",value=0},
  23. },
  24. baojiao = {
  25. {name="报叫",value=1},
  26. {name="",value=0,hide=true},
  27. },
  28. swapcard = {
  29. {name="换三张",value=1},
  30. {name="换四张",value=2},
  31. {name="不换张",value=0}
  32. },
  33. jdyj = {
  34. {name="幺九将对",value=1},
  35. {name="",value=0,hide=true},
  36. },
  37. mqzz = {
  38. {name="门清中张",value=1},
  39. {name="",value=0,hide=true},
  40. },
  41. tdh = {
  42. {name="天地胡",value=1},
  43. {name="",value=0,hide=true},
  44. },
  45. tingpai = {
  46. {name="听牌提示",value=1},
  47. {name="",value=0,hide=true},
  48. },
  49. specrule={
  50. {name="过张升番可胡",value=0x0001},
  51. {name="博自摸",value=0x0002},
  52. },
  53. diFenLimit={
  54. {name="小于等于%d分加%d",value=1},
  55. {name="",value=0,hide=true},
  56. },
  57. baseMulti = {
  58. {name = "积分倍数x", value = 0x0001}
  59. },
  60. forbidProp = {
  61. {name = "屏蔽快捷语与道具", value = 1},
  62. {name = "屏蔽快捷语与道具", value = 0, hide = true},
  63. },
  64. forbidVoice = {
  65. {name = "屏蔽语音", value = 1},
  66. {name = "屏蔽语音", value = 0, hide = true},
  67. },
  68. fanniu = {
  69. {name = "放牛必须过庄胡", value = 1},
  70. {name = "放牛必须过庄胡", value = 0, hide = true},
  71. },
  72. guoshoupeng = {
  73. {name = "过手碰", value = 1},
  74. {name = "过手碰", value = 0, hide = true},
  75. },
  76. sjbsj = {
  77. {name = "死叫不算叫", value = 1},
  78. {name = "死叫不算叫", value = 0 , hide = true},
  79. },
  80. hjzjf = {
  81. {name = "胡绝张加番", value = 1},
  82. },
  83. }
  84. wanfa.clubWanFaTitle={
  85. zimomode="玩法",
  86. playnum="人数",
  87. limitfan="封顶",
  88. baseMulti="积分倍数",
  89. forbidProp = "其他",
  90. }
  91. wanfa.ruleText =
  92. {
  93. {
  94. title = "基础规则",
  95. content =
  96. {
  97. "1、用牌 :麻将“万筒条”,合计108张。",
  98. "2、玩法:可碰、杠,不可吃,可点炮、自摸、一炮多响。",
  99. "3、坐庄:最先胡牌玩家坐庄,一炮多响则点炮玩家坐庄,流局庄家下家坐庄。",
  100. "4、换三/四张:游戏开始时,玩家需选中3/4张同花色的牌与其他玩家进行交换。",
  101. "5、定缺:在发完手牌后选择一门不要的花色即为定缺,对局中必须先打出定缺牌,对局中不可再更改定缺。",
  102. "6、胡牌",
  103. " (1)胡牌时,手牌最多只有2种花色,否则不可胡牌。",
  104. " (2)玩家胡牌后,其余玩家继续游戏,直到流局或只有一位未胡牌玩家为止。",
  105. "7、查大叫:流局时没叫的玩家赔给有叫的玩家最大可能的番数,且刮风下雨不再结算。",
  106. "8、呼叫转移:开杠的人在杠上点炮后,杠分要一并转移给接炮的人。",
  107. "9、死叫不算叫:要胡的牌张已经全部被打出或碰杠出,此时牌局结束,该玩家属于无叫。",
  108. "10、胡绝张加番:叫牌时,仅剩一张胡牌张时胡,胡牌翻倍。",
  109. },
  110. },
  111. --[2] =
  112. --[[{
  113. title = "名词解释",
  114. content =
  115. {
  116. "1、刮风(明杠),分为直杠和巴杠。",
  117. " (1)直杠:玩家手中有三张一样的牌,其他玩家打出此牌,该玩家杠。",
  118. " (2)巴杠(面下杠):玩家已经碰出一对牌,又自摸到碰的牌选中杠。",
  119. "2、下雨(暗杠):玩家手中有4张相同的牌选择杠。",
  120. "3、过手胡:在同一回合中,若有人点炮,玩家没有胡牌,则此回合其他玩家点炮,只要没有加番就不能胡,自摸可以胡。",
  121. "4、查大叫:流局时没有听牌的玩家赔给有叫的玩家最大番数,刮风下雨结算(未听牌玩家刮风下雨分数返还)。",
  122. "5、自摸加底:玩家自摸后,除获得相应牌型分后再加1底分。",
  123. "6、自摸加番:玩家自摸后,计算牌型分后,再在该牌型分*2。",
  124. "7、呼叫转移:开杠的人在杠上炮后,杠钱要一井转移给接炮的人,如果杠不结算则不转移。",
  125. "8、杠上花:明暗杠后,补张自摸。",
  126. "9、杠上炮:玩家开杠后放炮。",
  127. }
  128. },--]]
  129. --[3] =
  130. --[[{
  131. title = "胡牌类型",
  132. content =
  133. {
  134. "1、平胡:四坎(除4副刻子)加一对将(0番)。",
  135. "2、对对胡:四副刻子加一对将(1番)。",
  136. "3、清一色:全部是一种花色的平胡(2番)。",
  137. "4、七对:玩家手牌都是对子,没有碰和刮风下雨(2番)。",
  138. "5、龙七对:玩家手牌都是对子,且有一个根儿,无碰和杠(3番)。",
  139. "6、清对:清一色+对对胡(3番)。",
  140. "7、清七对:清一色+七对(4番)。",
  141. "8、清龙七对:清一色+龙七对(5番)。",
  142. "9、全幺九:所有组成的顺子、刻子、将牌里都包含1或9(3番)。",
  143. "10、将对:所有牌当中,全是2、5、8组成的对对胡(3番)。",
  144. "11、将七对:所有牌当中,全是2、5、8组成的龙七对(4番)。",
  145. "12、门清:胡牌时,没有碰过牌,没有明杠(1番)。",
  146. "13、中张:胡牌时所有牌没有一和九(1番)。",
  147. "14、其他加番:",
  148. " 根:+1番 所有牌中有4张一样的牌,可累加计算",
  149. " 杠上开花:+1番",
  150. " 杠上炮:+1番",
  151. " 抢杠胡:+1番",
  152. " 海底捞月:+1番",
  153. " 金钩钓:+1番",
  154. " 海底炮:+1番",
  155. " 天胡:+3番",
  156. " 地胡:+2番",
  157. }
  158. },
  159. --[4] =
  160. {
  161. title = "算分规则",
  162. content =
  163. {
  164. "1、总分=胡牌番数+杠分,1番=2,2番=2×2,依此类推。",
  165. "2、点炮结算方式为1对1,自摸结算方式为1对多。",
  166. "3、刮风(明杠):分为直杠和巴杠。",
  167. " 直杠:放杠者减2倍底分。",
  168. " 巴杠:其他玩家都减1倍底分。",
  169. " 下雨(暗杠):其他玩家都减2倍底分。",
  170. }
  171. },--]]
  172. }
  173. function wanfa.getWanFaInfo(str)
  174. local tab=json.decode(str)
  175. local temp=""
  176. for k,v in table.sortPairs(tab,table.defaultSort) do
  177. if wanfa[k] then
  178. if k == "playnum" then--and tab["isfaststart"] == 1
  179. temp=temp..""
  180. elseif k == "baseMulti" then
  181. temp=temp..wanfa[k][1].name..v.." "
  182. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  183. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  184. for _,data in pairs(wanfa[k]) do
  185. if not data.hide then
  186. local des = string.format(data.name,v,tab.diFenAdd)
  187. temp=temp..des.." "
  188. end
  189. end
  190. else
  191. temp=temp.."不加分".." "
  192. end
  193. elseif k == "specrule" then
  194. for _,data in pairs(wanfa[k]) do
  195. if not data.hide then
  196. if getNumBand(v,data.value) > 0 then
  197. temp=temp..data.name.." "
  198. end
  199. end
  200. end
  201. elseif k == "swapcard" then
  202. -- 换牌张数处理
  203. if tab.swapcard == 1 and tab.swapcardcount then
  204. -- tab.swapcardcount 值是真正的换牌张数
  205. local result = wanfa.swapcard[tab.swapcardcount -2]
  206. result = result.name
  207. temp = temp .. result
  208. end
  209. else
  210. for _,data in pairs(wanfa[k]) do
  211. if v==data.value and not data.hide then
  212. temp=temp..data.name.." "
  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. for k,v in table.sortPairs(tab,table.defaultSort) do
  224. if wanfa[k] then
  225. if k == "playnum" then--and tab["isfaststart"] == 1
  226. -- temp=temp..""
  227. elseif k == "baseMulti" then
  228. table.insert(temp,wanfa[k][1].name..v)
  229. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  230. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  231. for _,data in pairs(wanfa[k]) do
  232. if not data.hide then
  233. local des = string.format(data.name,v,tab.diFenAdd)
  234. table.insert(temp,des)
  235. end
  236. end
  237. else
  238. table.insert(temp,"不加分")
  239. end
  240. elseif k == "specrule" then
  241. for _,data in pairs(wanfa[k]) do
  242. if not data.hide then
  243. if getNumBand(v,data.value) > 0 then
  244. table.insert(temp,data.name)
  245. end
  246. end
  247. end
  248. elseif k == "swapcard" then
  249. -- 换牌张数处理
  250. if tab.swapcard == 1 or tab.swapcard == 2 and tab.swapcardcount then
  251. -- tab.swapcardcount 值是真正的换牌张数
  252. local result = wanfa.swapcard[tab.swapcardcount -2]
  253. result = result.name
  254. table.insert(temp,result)
  255. end
  256. else
  257. for _,data in pairs(wanfa[k]) do
  258. if v==data.value and not data.hide then
  259. -- temp=temp..data.name.." "
  260. table.insert(temp,data.name)
  261. end
  262. end
  263. end
  264. end
  265. end
  266. return temp
  267. end
  268. function wanfa.getClubWaFaInfo(str)
  269. local tab=json.decode(str)
  270. local temp={}
  271. for k,v in pairs(tab) do
  272. if wanfa[k] then
  273. if k == "playnum" and tab["isfaststart"] == 1 then
  274. --temp=temp..""
  275. elseif k == "baseMulti" then
  276. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa[k][1].name..v}})
  277. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  278. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  279. for _,data in pairs(wanfa[k]) do
  280. if not data.hide then
  281. local des = string.format(data.name,v,tab.diFenAdd)
  282. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={des}})
  283. end
  284. end
  285. else
  286. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"不加分"}})
  287. end
  288. elseif k == "specrule" then
  289. local firstWf = true
  290. for _,data in pairs(wanfa[k]) do
  291. if not data.hide then
  292. if getNumBand(v,data.value) > 0 then
  293. if firstWf then
  294. firstWf = false
  295. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  296. else
  297. table.insert(temp,{name="",value={data.name}})
  298. end
  299. end
  300. end
  301. end
  302. else
  303. for _,data in pairs(wanfa[k]) do
  304. if v==data.value and not data.hide then
  305. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  306. --temp=temp..data.name.." "
  307. end
  308. end
  309. end
  310. end
  311. end
  312. return temp
  313. end
  314. function wanfa.getClubTableWanFaInfo(str)
  315. local tab=json.decode(str)
  316. local temp=""
  317. --[[for k,v in pairs(tab) do
  318. if wanfa[k] then
  319. if k == "limitfan" or k == "swapcard" then
  320. for _,data in pairs(wanfa[k]) do
  321. if v==data.value then
  322. -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  323. temp=temp..data.name.." "
  324. logD("_data_name_", k)
  325. logD("_data_name_", k, data.name)
  326. end
  327. end
  328. end
  329. end
  330. end--]]
  331. if tab.limitfan then
  332. for k,v in pairs(wanfa.limitfan) do
  333. if tab.limitfan == v.value then
  334. temp = temp..v.name.." "
  335. end
  336. end
  337. end
  338. if tab.swapcard then
  339. for k,v in pairs(wanfa.swapcard) do
  340. if tab.swapcard == v.value then
  341. temp = temp..v.name.." "
  342. end
  343. end
  344. end
  345. return temp
  346. end
  347. ---
  348. -- 获取亲友圈玩法
  349. -- @param gameId
  350. -- @param jushu
  351. -- @param ruleStr
  352. -- @param arena
  353. -- @return
  354. --
  355. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  356. local str = wanfa.getClubWaFaInfo(ruleStr, jushu)
  357. return str
  358. end
  359. ---
  360. -- 获取包间多玩法桌子上显示的信息
  361. -- @param gameId
  362. -- @param ruleStr
  363. -- @param playerNum
  364. -- @return
  365. --
  366. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  367. local str = ""
  368. local jsonData=json.decode(ruleStr)
  369. if jsonData.isfaststart == 1 or jsonData.faststart == 1 then
  370. str = str .. "快速成局 "
  371. else
  372. if playerNum then
  373. str = str .. playerNum .. "人 "
  374. elseif jsonData.playnum then
  375. str = str .. jsonData.playnum .. "人 "
  376. end
  377. end
  378. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  379. str = str .. wanfaStr
  380. return str
  381. end
  382. return wanfa