Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

326 řádky
9.4 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. luobonum={
  17. {name="无萝卜",value=0},
  18. {name="1萝卜",value=1},
  19. {name="2萝卜",value=2},
  20. },
  21. piaomode={
  22. {name="不飘",value=0},
  23. {name="随飘",value=1},
  24. {name="必飘",value=2},
  25. },
  26. dianganghua={
  27. {name="点杠花(点炮)",value=1},
  28. {name="点杠花(自摸)",value=2},
  29. },
  30. zimomode={
  31. {name="自摸加底",value=1},
  32. {name="自摸加番",value=2},
  33. {name="自摸不加",value=0},
  34. },
  35. baojiao = {
  36. {name="报叫",value=1},
  37. {name="",value=0,hide=true},
  38. },
  39. jingoudiao = {
  40. {name="金钩钓",value=1},
  41. {name="",value=0,hide=true},
  42. },
  43. tingpai = {
  44. {name="听牌提示",value=1},
  45. {name="",value=0,hide=true},
  46. },
  47. specrule={
  48. {name="过张升番可胡",value=0x0001},
  49. {name="博自摸",value=0x0002},
  50. },
  51. diFenLimit={
  52. {name="小于等于%d分加%d",value=1},
  53. {name="",value=0,hide=true},
  54. },
  55. baseMulti = {
  56. {name = "积分倍数x", value = 0x0001}
  57. },
  58. forbidProp = {
  59. {name = "屏蔽快捷语与道具", value = 1},
  60. {name = "屏蔽快捷语与道具", value = 0, hide = true},
  61. },
  62. forbidVoice = {
  63. {name = "屏蔽语音", value = 1},
  64. {name = "屏蔽语音", value = 0, hide = true},
  65. },
  66. }
  67. wanfa.clubWanFaTitle={
  68. specrule="玩法",
  69. playnum="人数",
  70. limitfan="封顶",
  71. luobonum="萝卜",
  72. diFenLimit="低分加分",
  73. baseMulti="积分倍数",
  74. forbidProp = "其他",
  75. forbidVoice="其他",
  76. }
  77. wanfa.ruleText =
  78. {
  79. {
  80. title = "基础规则",
  81. content =
  82. {
  83. "1、用牌:麻将“条、筒”从一到九,各4张,合计共72张牌。",
  84. "2、玩法:可碰、杠,不可吃,可点炮、自摸、一炮多响。",
  85. "3、定庄:首局房主坐庄。之后,由上局“一胡”玩家坐庄;一炮双响则放炮者坐庄,流局则摸最后一张牌玩家坐庄。",
  86. "4、一牌多用:碰杠胡可同时使用,一家操作操作完,需要等另一家操作完。",
  87. },
  88. },
  89. --[2] =
  90. --[[{
  91. title = "名词解释",
  92. content =
  93. {
  94. "1、刮风(明杠),分为直杠和巴杠。",
  95. " (1)直杠:玩家手中有三张一样的牌,其他玩家打出此牌,该玩家杠。",
  96. " (2)巴杠(面下杠):玩家已经碰出一对牌,又自摸到碰的牌选中杠。",
  97. "2、下雨(暗杠):玩家手中有4张相同的牌选择杠。",
  98. "3、过手胡:在同一回合中,若有人点炮,玩家没有胡牌,则此回合其他玩家点炮,只要没有加番就不能胡,自摸可以胡。",
  99. "4、查大叫:流局时没有听牌的玩家赔给有叫的玩家最大番数,刮风下雨结算(未听牌玩家刮风下雨分数返还)。",
  100. "5、自摸加底:玩家自摸后,除获得相应牌型分后再加1底分。",
  101. "6、自摸加番:玩家自摸后,计算牌型分后,再在该牌型分*2。",
  102. "7、呼叫转移:开杠的人在杠上炮后,杠钱要一井转移给接炮的人,如果杠不结算则不转移。",
  103. "8、杠上花:明暗杠后,补张自摸。",
  104. "9、杠上炮:玩家开杠后放炮。",
  105. }
  106. },
  107. --[3] =
  108. {
  109. title = "胡牌类型",
  110. content =
  111. {
  112. "1、平胡:四坎(除4副刻子)加一对将。",
  113. "2、对对胡:四副刻子加一对将。",
  114. "3、清一色:全部是一种花色的平胡。",
  115. "4、七对:玩家手牌都是对子。",
  116. "5、龙七对:玩家手牌都是对子,并且有一个根儿。",
  117. "6、清大对:清一色+对对胡。",
  118. "7、清七对:清一色+七对。",
  119. "8、清龙七对:清一色+龙七对。",
  120. "9、天胡:庄家起牌就胡牌。",
  121. "10、地胡:只在庄家出的第一张牌为地胡。",
  122. }
  123. },
  124. --[4] =
  125. {
  126. title = "特殊玩法",
  127. content =
  128. {
  129. "1、报叫:可选择报叫,赌自摸,不报。AB玩家均报,相互结算+2番;AB玩家其中1家报,相互结算+1番;AB玩家均不报,相互不加番。",
  130. "2、飘:如果开设房间时选择“不飘”,那么不允许任何人飘;如果开设房间时选择“随飘”,那么每一小局开始前由玩家自己选择是否飘;如果开设房间时选择“必飘”,那么每局每人都是飘家。",
  131. " (1)AB玩家均飘,相互结算+2番",
  132. " (2)AB玩家其中1家飘,相互结算+1番;",
  133. " (3)AB玩家均不飘,相互不加番。",
  134. "3、拔萝卜:",
  135. " (1)一局结束,系统随机抽萝卜牌(如果创建房间选择1个萝卜,那么抽一张;如果创建房间选择2个萝卜,那么抽两张...)。",
  136. " (2)胡牌玩家手牌中(包括碰、胡牌)有一张萝卜牌,则+1分。",
  137. " (3)拔出相同萝卜,萝卜数*2。",
  138. }
  139. },--]]
  140. }
  141. function wanfa.getWanFaInfo(str)
  142. str = str or ""
  143. local tab=json.decode(str)
  144. local temp=""
  145. for k,v in pairs(tab) do
  146. if wanfa[k] then
  147. if k == "playnum" then--and tab["isfaststart"] == 1
  148. temp=temp..""
  149. elseif k == "baseMulti" then
  150. temp=temp..wanfa[k][1].name..v.." "
  151. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  152. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  153. for _,data in pairs(wanfa[k]) do
  154. if not data.hide then
  155. local des = string.format(data.name,v,tab.diFenAdd)
  156. temp=temp..des.." "
  157. end
  158. end
  159. else
  160. temp=temp.."不加分".." "
  161. end
  162. elseif k == "specrule" then
  163. for _,data in pairs(wanfa[k]) do
  164. if not data.hide then
  165. if getNumBand(v,data.value) > 0 then
  166. temp=temp..data.name.." "
  167. end
  168. end
  169. end
  170. else
  171. for _,data in pairs(wanfa[k]) do
  172. if v==data.value and not data.hide then
  173. temp=temp..data.name.." "
  174. end
  175. end
  176. end
  177. end
  178. end
  179. return temp
  180. end
  181. function wanfa.getWanFaInfoTab(str)
  182. str = str or ""
  183. local tab=json.decode(str)
  184. local temp={}
  185. for k,v in pairs(tab) do
  186. if wanfa[k] then
  187. if k == "playnum" then--and tab["isfaststart"] == 1
  188. -- temp=temp..""
  189. elseif k == "baseMulti" then
  190. table.insert(temp,wanfa[k][1].name..v)
  191. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  192. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  193. for _,data in pairs(wanfa[k]) do
  194. if not data.hide then
  195. local des = string.format(data.name,v,tab.diFenAdd)
  196. table.insert(temp,des)
  197. end
  198. end
  199. else
  200. table.insert(temp,"不加分")
  201. end
  202. elseif k == "specrule" then
  203. for _,data in pairs(wanfa[k]) do
  204. if not data.hide then
  205. if getNumBand(v,data.value) > 0 then
  206. table.insert(temp,data.name)
  207. end
  208. end
  209. end
  210. else
  211. for _,data in pairs(wanfa[k]) do
  212. if v==data.value and not data.hide then
  213. -- temp=temp..data.name.." "
  214. table.insert(temp,data.name)
  215. end
  216. end
  217. end
  218. end
  219. end
  220. return temp
  221. end
  222. function wanfa.getClubWaFaInfo(str)
  223. str = str or ""
  224. local tab=json.decode(str)
  225. local temp={}
  226. for k,v in pairs(tab) do
  227. if wanfa[k] then
  228. if k == "playnum" and tab["isfaststart"] == 1 then
  229. --temp=temp..""
  230. elseif k == "baseMulti" then
  231. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa[k][1].name..v}})
  232. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  233. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  234. for _,data in pairs(wanfa[k]) do
  235. if not data.hide then
  236. local des = string.format(data.name,v,tab.diFenAdd)
  237. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={des}})
  238. end
  239. end
  240. else
  241. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"不加分"}})
  242. end
  243. elseif k == "specrule" then
  244. local firstWf = true
  245. for _,data in pairs(wanfa[k]) do
  246. if not data.hide then
  247. if getNumBand(v,data.value) > 0 then
  248. if firstWf then
  249. firstWf = false
  250. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  251. else
  252. table.insert(temp,{name="",value={data.name}})
  253. end
  254. end
  255. end
  256. end
  257. else
  258. for _,data in pairs(wanfa[k]) do
  259. if v==data.value and not data.hide then
  260. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  261. --temp=temp..data.name.." "
  262. end
  263. end
  264. end
  265. end
  266. end
  267. return temp
  268. end
  269. function wanfa.getClubTableWanFaInfo(str)
  270. str = str or ""
  271. local tab=json.decode(str)
  272. local temp=""
  273. for k,v in pairs(tab) do
  274. if wanfa[k] then
  275. if k == "limitfan" or k == "laizinum" or k == "luobonum" then
  276. for _,data in pairs(wanfa[k]) do
  277. if v==data.value then
  278. -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  279. temp=temp..data.name.." "
  280. end
  281. end
  282. end
  283. end
  284. end
  285. return temp
  286. end
  287. ---
  288. -- 获取亲友圈玩法
  289. -- @param gameId
  290. -- @param jushu
  291. -- @param ruleStr
  292. -- @param arena
  293. -- @return
  294. --
  295. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  296. local str = wanfa.getClubWaFaInfo(ruleStr, jushu)
  297. return str
  298. end
  299. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  300. local str = ""
  301. local jsonData=json.decode(ruleStr)
  302. if jsonData.isfaststart == 1 then
  303. str = str .. "快速成局 "
  304. else
  305. if playerNum then
  306. str = str .. playerNum .. "人 "
  307. elseif jsonData.playnum then
  308. str = str .. jsonData.playnum .. "人 "
  309. end
  310. end
  311. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  312. str = str .. wanfaStr
  313. return str
  314. end
  315. return wanfa