Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

320 rader
9.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+1",value=1},
  23. {name="2+1",value=2},
  24. {name="3+1",value=3},
  25. {name="4+1",value=4},
  26. {name="5+1",value=5},
  27. {name="10+1",value=10},
  28. {name="15+1",value=15},
  29. },
  30. baojiao = {
  31. {name="报叫",value=1},
  32. {name="",value=0,hide=true},
  33. },
  34. zimomode = {
  35. --{name="自摸不加",value=0},
  36. {name="自摸加番",value=2},
  37. {name="自摸加底",value=1},
  38. },
  39. placecard = {
  40. {name = "摆牌", value = 0x0001}
  41. },
  42. baseMulti = {
  43. {name = "积分倍数x", value = 0x0001}
  44. },
  45. srlf = {
  46. {name = "三人两房", value = 0x0001}
  47. },
  48. lrlf = {
  49. {name = "两人两房", value = 0x0002}
  50. },
  51. forbidProp = {
  52. {name = "屏蔽快捷语与道具", value = 1},
  53. {name = "屏蔽快捷语与道具", value = 0, hide = true},
  54. },
  55. forbidVoice = {
  56. {name = "屏蔽语音", value = 1},
  57. {name = "屏蔽语音", value = 0, hide = true},
  58. },
  59. }
  60. wanfa.clubWanFaTitle={
  61. playnum="人数",
  62. --limitfan="封顶",
  63. gamescore="底分",
  64. advancerule="玩法",
  65. baseMulti="积分倍数",
  66. piaomode="飘",
  67. isfaststart="人数",
  68. forbidProp = "其他",
  69. }
  70. wanfa.RuleText =
  71. {
  72. {
  73. title = "基础规则",
  74. content =
  75. {
  76. "1、用牌:条、筒、万108张。",
  77. "2、玩法:可以碰、杠。",
  78. "3、定庄:",
  79. "(1)首局随机定庄;",
  80. "(2)胡牌玩家做庄;",
  81. "(3)流局上局庄家继续做庄。",
  82. "4、胡牌规则:",
  83. "(1)基本胡牌:一对将,加4个刻子或顺子牌;",
  84. "(2)一炮多响:玩家打出一张牌,若超过一名玩家能胡时,多名玩家都可以一起胡牌。",
  85. "(3)有胡必胡:能胡牌时,必须胡牌,只显示胡牌按钮。",
  86. },
  87. },
  88. --[[{
  89. title = "名词解释",
  90. content =
  91. {
  92. "1、刮风(明杠),分为直杠和巴杠。",
  93. "(1)直杠:玩家手中有三张一样的牌,其他玩家打出此牌,该玩家杠。",
  94. "(2)巴杠(面下杠):玩家已经碰出一对牌,又自摸到碰的牌选中杠。",
  95. "2、下雨(暗杠):玩家手中有4张相同的牌选择杠。",
  96. "3、过手胡:在同一回合中,若有人点炮,玩家没有胡牌,则此回合其他玩家点炮,只要没有加番就不能胡,自摸可以胡。",
  97. "4、查大叫:流局时没有听牌的玩家赔给有叫的玩家最大番数,刮风下雨结算(未听牌玩家刮风下雨分数返还)。",
  98. "5、自摸加底:玩家自摸后,除获得相应牌型分后再加1底分。",
  99. "6、自摸加番:玩家自摸后,计算牌型分后,再在该牌型分*2。",
  100. "7、呼叫转移:开杠的人在杠上炮后,杠钱要一井转移给接炮的人,如果杠不结算则不转移。",
  101. "8、杠上花:明暗杠后,补张自摸。",
  102. "9、杠上炮:玩家开杠后放炮。",
  103. }
  104. },--]]
  105. --[[{
  106. title = "牌型介绍",
  107. content =
  108. {
  109. "1、平胡:胡牌底分,1番,一对将牌和4个刻子或顺子(刻子成杠)组成。",
  110. "2、缺一门:1番,胡牌时,只有两门牌。",
  111. "3、大对子:4番,四副刻子加一对将。",
  112. "4、清一色:6番,全部是一种花色的平胡。",
  113. "5、七对:5番,玩家手牌都是对子,没有碰和杠。",
  114. "6、一般高:1番,连续3个对子组成的顺子,和七对叠加。",
  115. "7、门清:1番,胡牌玩家手上没有碰牌和杠牌,暗杠除外。",
  116. "8、暗七对:6番,小七对中有四张牌是相同的,则胡牌时需在小七对的番数上再加上杠的番数。",
  117. "9、龙七对:6番,小七对中有三张相同的牌,且胡这张牌。",
  118. }
  119. },
  120. {
  121. title = "番数计算",
  122. content =
  123. {
  124. "1、1番=1分,+1番即+1分,+2番即+2分。",
  125. "2、基本输积分将由番数和飘算出。",
  126. "3、点炮计算方式为1对1,自摸结算方式为1对多。",
  127. "4、另加番:",
  128. "(1)根:+1番,所有牌中有4张一样的牌,(无论是否碰、杠),可以累计计算。",
  129. "(2)杠上花:+1番",
  130. "(3)杠上炮:+1番",
  131. "(4)抢杠胡:+1番",
  132. "(5)扫底胡:+1番",
  133. "(6)海底炮:+1番",
  134. "(7)金钩钓:+1番",
  135. "(8)金钩炮:+1番",
  136. "(9)卡心五:+1番",
  137. "(10)摆牌:+2番",
  138. "(11)摆独张:+5番",
  139. }
  140. },
  141. {
  142. title = "算分规则",
  143. content =
  144. {
  145. "1、总分=底分+飘数+牌型番数+另加番数",
  146. "如:底分选1+1",
  147. "A飘3,胡清一色,胡B,B飘2",
  148. "结算:1(底分)+3(A飘3)+2(B飘2)+6(清一色)=12分",
  149. }
  150. },
  151. {
  152. title = "特殊规则",
  153. content =
  154. {
  155. "1、摆牌:",
  156. "(1)在叫胡的情况下,可选择摆胡或不摆胡,摆牌后,系统自动出牌。",
  157. "(2)摆牌要把自己要胡的所有牌型亮出,让其他玩家看到,知道摆牌玩家胡什么牌,摆胡家不能更换手上所有的牌,但手上的牌有杠可以杠,摆出来的牌是不能杠。",
  158. "(3)没有摆牌的玩家摸到摆胡玩家的炮牌不能打出。",
  159. "(4)如果一局有2家或3家同时摆胡,且其中1家摸到点炮牌,则必须放炮给另外也摆胡的玩家。这种情况下放炮的玩家所输的摆牌倍数要加2番,如果被放炮玩家普通摆牌,则+4番,如果是摆独张,则+7番。",
  160. "(5)当牌桌剩下12张牌时则不能摆胡,前面已经摆好的可以胡。",
  161. "(6)放炮(自摸)必胡。",
  162. "(7)特殊情况:有一家未摆牌的玩家,手上的牌全部为别的玩家摆胡的炮牌,并且摸上的牌也是的情况下,他可以随意打出一张牌。",
  163. }
  164. },--]]
  165. }
  166. function wanfa.getWanFaInfo(str)
  167. local tab=json.decode(str)
  168. local temp=""
  169. for k,v in pairs(tab) do
  170. if wanfa[k] then
  171. if k == "playnum" and tab["isfaststart"] == 1 then
  172. temp=temp..""
  173. elseif k == "baseMulti" then
  174. temp=temp..wanfa[k][1].name..v.." "
  175. else
  176. for _,data in pairs(wanfa[k]) do
  177. if v==data.value and not data.hide then
  178. temp=temp..data.name.." "
  179. end
  180. end
  181. end
  182. end
  183. end
  184. return temp
  185. end
  186. function wanfa.getWanFaInfoTab(str)
  187. local tab=json.decode(str)
  188. local temp={}
  189. for k,v in pairs(tab) do
  190. if wanfa[k] then
  191. if k == "playnum" and tab["isfaststart"] == 1 then
  192. -- temp=temp..""
  193. elseif k == "baseMulti" then
  194. table.insert(temp,wanfa[k][1].name..v)
  195. else
  196. for _,data in pairs(wanfa[k]) do
  197. if v==data.value and not data.hide then
  198. -- temp=temp..data.name.." "
  199. table.insert(temp,data.name)
  200. end
  201. end
  202. end
  203. end
  204. end
  205. return temp
  206. end
  207. function wanfa.getClubWaFaInfo(str)
  208. local tab=json.decode(str)
  209. local temp={}
  210. if wanfa["limitfan"] then
  211. local limitfanValue = tab.limitfan;
  212. for _,data in pairs(wanfa["limitfan"]) do
  213. if limitfanValue==data.value and not data.hide then
  214. table.insert(temp,{name=wanfa.clubWanFaTitle["limitfan"] or "",value={data.name}});
  215. end
  216. end
  217. end
  218. local isFirstOne = true;
  219. for kk,vv in pairs(wanfa) do
  220. for k,v in pairs(tab) do
  221. if kk == k then
  222. if (k == "playnum" and tab["isfaststart"] == 1) or k == "limitfan" then
  223. elseif k == "baseMulti" then
  224. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa[k][1].name..v}})
  225. else
  226. for _,data in pairs(vv) do
  227. if v==data.value and not data.hide then
  228. if isFirstOne then
  229. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "玩法",value={data.name}})
  230. if not wanfa.clubWanFaTitle[k] then
  231. isFirstOne = false;
  232. end
  233. else
  234. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  235. --temp=temp..data.name.." "
  236. end
  237. end
  238. end
  239. end
  240. end
  241. end
  242. end
  243. return temp
  244. end
  245. function wanfa.getClubTableWanFaInfo(str)
  246. local tab=json.decode(str)
  247. local temp=""
  248. for kk,vv in pairs(wanfa) do
  249. for k,v in pairs(tab) do
  250. if kk == k then
  251. if k == "gamescore" or k == "placecard" then
  252. for _,data in pairs(vv) do
  253. if v==data.value then
  254. -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  255. temp=temp..data.name.." "
  256. end
  257. end
  258. end
  259. end
  260. end
  261. end
  262. return temp
  263. end
  264. ---
  265. -- 获取亲友圈玩法
  266. -- @param gameId
  267. -- @param jushu
  268. -- @param ruleStr
  269. -- @param arena
  270. -- @return
  271. --
  272. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  273. local str = wanfa.getClubWaFaInfo(ruleStr, jushu)
  274. return str
  275. end
  276. ---
  277. -- 获取包间多玩法桌子上显示的信息
  278. -- @param gameId
  279. -- @param ruleStr
  280. -- @param playerNum
  281. -- @return
  282. --
  283. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  284. local str = ""
  285. local jsonData=json.decode(ruleStr)
  286. if jsonData.isfaststart == 1 or jsonData.faststart == 1 then
  287. str = str .. "快速成局 "
  288. else
  289. if playerNum then
  290. str = str .. playerNum .. "人 "
  291. elseif jsonData.playnum then
  292. str = str .. jsonData.playnum .. "人 "
  293. end
  294. end
  295. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  296. str = str .. wanfaStr
  297. return str
  298. end
  299. return wanfa