25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

271 satır
7.2 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="封顶3番",value=3},
  13. {name="封顶4番",value=4},
  14. {name="封顶5番",value=5},
  15. },
  16. piaomode={
  17. {name="不飘",value=0},
  18. {name="随飘",value=1},
  19. {name="定飘",value=2},
  20. },
  21. gamescore={
  22. {name="1分",value=1},
  23. {name="2分",value=2},
  24. {name="3分",value=3},
  25. },
  26. laizinum={
  27. -- {name="4鬼",value=4},
  28. -- {name="8鬼",value=8},
  29. -- {name="12鬼",value=12},
  30. },
  31. baojiao = {
  32. {name="报叫",value=1},
  33. {name="",value=0,hide=true},
  34. },
  35. zimomode = {
  36. --{name="自摸不加",value=0},
  37. {name="自摸加番",value=2},
  38. {name="自摸加底",value=1},
  39. },
  40. srlf = {
  41. {name = "三人两房", value = 0x0001}
  42. },
  43. lrlf = {
  44. {name = "两人两房", value = 0x0002}
  45. },
  46. baseMulti = {
  47. {name = "积分倍数x", value = 0x0001}
  48. },
  49. forbidProp = {
  50. {name = "屏蔽快捷语与道具", value = 1},
  51. {name = "屏蔽快捷语与道具", value = 0, hide = true},
  52. },
  53. forbidVoice = {
  54. {name = "屏蔽语音", value = 1},
  55. {name = "屏蔽语音", value = 0, hide = true},
  56. },
  57. }
  58. wanfa.clubWanFaTitle={
  59. playnum="人数",
  60. limitfan="封顶",
  61. --laizinum="鬼牌",
  62. gamescore="底分",
  63. advancerule="玩法",
  64. baseMulti="积分倍数",
  65. forbidProp = "其他",
  66. }
  67. wanfa.RuleText =
  68. {
  69. {
  70. title = "基础规则",
  71. content =
  72. {
  73. "1、用牌 :麻将“筒条万”,合计108张。",
  74. "2、玩法:可碰、杠,不可吃,可点炮、自摸、一炮多响。",
  75. "3、坐庄:最先胡牌玩家坐庄,一炮多响则点炮玩家坐庄,流局庄家下家坐庄。",
  76. "4、定缺:在发完手牌后选择一门不要的花色即为定缺,摸到这门花色的牌必须要打出,对局中不可再更改定缺。",
  77. "5、胡牌",
  78. "(1)胡牌时,手牌最多只有2种花色,否则不可胡牌。",
  79. "(2)玩家胡牌后,其余玩家继续游戏,直到流局或只有一位未胡牌玩家为止。",
  80. "6、查大叫:流局时没叫的玩家赔给有叫的玩家最大可能的番数,且刮风下雨不再结算。",
  81. },
  82. },
  83. --[[{
  84. title = "名词解释",
  85. content =
  86. {
  87. "1、刮风(明杠),分为直杠和巴杠。",
  88. "(1)直杠:玩家手中有三张一样的牌,其他玩家打出此牌,该玩家杠。",
  89. "(2)巴杠(面下杠):玩家已经碰出一对牌,又自摸到碰的牌选中杠。",
  90. "2、下雨(暗杠):玩家手中有4张相同的牌选择杠。",
  91. "3、过手胡:在同一回合中,若有人点炮,玩家没有胡牌,则此回合其他玩家点炮,只要没有加番就不能胡,自摸可以胡。",
  92. "4、查大叫:流局时没有听牌的玩家赔给有叫的玩家最大番数,刮风下雨结算(未听牌玩家刮风下雨分数返还)。",
  93. "5、自摸加底:玩家自摸后,除获得相应牌型分后再加1底分。",
  94. "6、自摸加番:玩家自摸后,计算牌型分后,再在该牌型分*2。",
  95. "7、呼叫转移:开杠的人在杠上炮后,杠钱要一井转移给接炮的人,如果杠不结算则不转移。",
  96. "8、杠上花:明暗杠后,补张自摸。",
  97. "9、杠上炮:玩家开杠后放炮。",
  98. }
  99. },--]]
  100. --[[{
  101. title = "胡牌类型",
  102. content =
  103. {
  104. "1、平胡:四坎(除4副刻子)加一对将(0番)。",
  105. "2、对对胡:四副刻子加一对将(2番)。",
  106. "3、清一色:全部是一种花色的平胡(3番)。",
  107. "4、七对:玩家手牌都是对子,没有碰和刮风下雨(3番)。",
  108. }
  109. },
  110. {
  111. title = "算分规则",
  112. content =
  113. {
  114. "1、总分=胡牌番数+杠分,1番=2,2番=2×2,依此类推。",
  115. "2、点炮结算方式为1对1,自摸结算方式为1对多。",
  116. "根:+1番 所有牌中有4张一样的牌,可累加计算",
  117. "杠上开花:+1番",
  118. "杠上炮:+1番",
  119. "抢杠胡:+1番",
  120. "金钩钓:+3番",
  121. "注:各个牌型不重复计算,只收取最大番。",
  122. }
  123. },--]]
  124. }
  125. function wanfa.getWanFaInfo(str)
  126. local tab=json.decode(str)
  127. local temp=""
  128. for k,v in pairs(tab) do
  129. if wanfa[k] then
  130. if k == "playnum" and tab["isfaststart"] == 1 then
  131. temp=temp..""
  132. elseif k == "baseMulti" then
  133. temp=temp..wanfa[k][1].name..v.." "
  134. else
  135. for _,data in pairs(wanfa[k]) do
  136. if v==data.value and not data.hide then
  137. temp=temp..data.name.." "
  138. end
  139. end
  140. end
  141. end
  142. end
  143. return temp
  144. end
  145. function wanfa.getWanFaInfoTab(str)
  146. local tab=json.decode(str)
  147. local temp={}
  148. for k,v in pairs(tab) do
  149. if wanfa[k] then
  150. if k == "playnum" and tab["isfaststart"] == 1 then
  151. -- temp=temp..""
  152. elseif k == "baseMulti" then
  153. table.insert(temp,wanfa[k][1].name..v)
  154. else
  155. for _,data in pairs(wanfa[k]) do
  156. if v==data.value and not data.hide then
  157. -- temp=temp..data.name.." "
  158. table.insert(temp,data.name)
  159. end
  160. end
  161. end
  162. end
  163. end
  164. return temp
  165. end
  166. function wanfa.getClubWaFaInfo(str)
  167. local tab=json.decode(str)
  168. local temp={}
  169. if wanfa["limitfan"] then
  170. local limitfanValue = tab.limitfan;
  171. for _,data in pairs(wanfa["limitfan"]) do
  172. if limitfanValue==data.value and not data.hide then
  173. table.insert(temp,{name=wanfa.clubWanFaTitle["limitfan"] or "",value={data.name}});
  174. end
  175. end
  176. end
  177. local isFirstOne = true;
  178. for k,v in pairs(tab) do
  179. if wanfa[k] then
  180. if (k == "playnum" and tab["isfaststart"] == 1) or k == "limitfan" then
  181. elseif k == "baseMulti" then
  182. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa[k][1].name..v}})
  183. else
  184. for _,data in pairs(wanfa[k]) do
  185. if v==data.value and not data.hide then
  186. if isFirstOne then
  187. table.insert(temp,{name="玩法",value={data.name}})
  188. isFirstOne = false;
  189. else
  190. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  191. --temp=temp..data.name.." "
  192. end
  193. end
  194. end
  195. end
  196. end
  197. end
  198. return temp
  199. end
  200. function wanfa.getClubTableWanFaInfo(str)
  201. local tab=json.decode(str)
  202. local temp=""
  203. for k,v in pairs(tab) do
  204. if wanfa[k] then
  205. if k == "limitfan" or k == "laizinum" or k == "zimomode" then
  206. for _,data in pairs(wanfa[k]) do
  207. if v==data.value then
  208. -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  209. temp=temp..data.name.." "
  210. end
  211. end
  212. end
  213. end
  214. end
  215. return temp
  216. end
  217. ---
  218. -- 获取亲友圈玩法
  219. -- @param gameId
  220. -- @param jushu
  221. -- @param ruleStr
  222. -- @param arena
  223. -- @return
  224. --
  225. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  226. local str = wanfa.getClubWaFaInfo(ruleStr, jushu)
  227. return str
  228. end
  229. ---
  230. -- 获取包间多玩法桌子上显示的信息
  231. -- @param gameId
  232. -- @param ruleStr
  233. -- @param playerNum
  234. -- @return
  235. --
  236. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  237. local str = ""
  238. local jsonData=json.decode(ruleStr)
  239. if jsonData.isfaststart == 1 then
  240. str = str .. "快速成局 "
  241. else
  242. if playerNum then
  243. str = str .. playerNum .. "人 "
  244. elseif jsonData.playnum then
  245. str = str .. jsonData.playnum .. "人 "
  246. end
  247. end
  248. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  249. str = str .. wanfaStr
  250. return str
  251. end
  252. return wanfa