Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

304 Zeilen
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="40颗",value=5},
  13. {name="80颗",value=6},
  14. },
  15. laizinum={
  16. {name="4鬼",value=4},
  17. {name="8鬼",value=8},
  18. {name="12鬼",value=12},
  19. },
  20. baojiao = {
  21. {name="报叫",value=1},
  22. {name="",value=0,hide=true},
  23. },
  24. xiqian = {
  25. {name="喜钱",value=1},
  26. {name="",value=0,hide=true},
  27. },
  28. guozhangjiafan = {
  29. {name="过张升番可胡",value=1},
  30. {name="",value=0,hide=true},
  31. },
  32. toujiazhuang = {
  33. {name="一炮多响头家庄",value=1},
  34. {name="",value=0,hide=true},
  35. },
  36. tingpai = {
  37. {name="听牌提示",value=1},
  38. {name="",value=0,hide=true},
  39. },
  40. isoutredcard = {
  41. {name="杠后不可打红中",value=1},
  42. {name="",value=0,hide=true},
  43. },
  44. hufan = {
  45. {name="5颗起胡",value=2},
  46. {name="",value=0,hide=true},
  47. },
  48. diFenLimit={
  49. {name="小于等于%d分加%d",value=1},
  50. {name="",value=0,hide=true},
  51. },
  52. baseMulti = {
  53. {name = "积分倍数x", value = 0x0001}
  54. },
  55. forbidProp = {
  56. {name = "屏蔽快捷语与道具", value = 1},
  57. {name = "屏蔽快捷语与道具", value = 0, hide = true},
  58. },
  59. forbidVoice = {
  60. {name = "屏蔽语音", value = 1},
  61. {name = "屏蔽语音", value = 0, hide = true},
  62. },
  63. }
  64. wanfa.clubWanFaTitle={
  65. playnum="人数",
  66. limitfan="封顶",
  67. laizinum="鬼牌",
  68. diFenLimit="低分加分",
  69. baseMulti="积分倍数",
  70. forbidProp = "其他",
  71. }
  72. wanfa.ruleText =
  73. {
  74. {
  75. title = "基础规则",
  76. content =
  77. {
  78. "1、人数:4人",
  79. "2、用牌:麻将“筒”、“条”、“万”三种牌",
  80. "3、红中:泸州俗称“鬼”,创建房间可选择4鬼、8鬼或12鬼,可任意当做万子、筒子、条子使用。",
  81. "4、坐庄:第一局创建房间房主或第一进入房间玩家为庄家。上一局“一胡”玩家当庄,可以连庄,和局则连庄。",
  82. },
  83. },
  84. --[2] =
  85. --[[{
  86. title = "坐庄规则",
  87. content =
  88. {
  89. "第一局创建房间房主或第一进入房间玩家为庄家。 ",
  90. "上一局“一胡”玩家当庄,可以连庄,和局则连庄。 ",
  91. "如牌局中有玩家“一炮双响“或“一炮三响”,则由此玩家当庄。",
  92. "如流局则此局庄家的下家当庄。 ",
  93. }
  94. },
  95. --[3] =
  96. {
  97. title = "胡牌类型",
  98. content =
  99. {
  100. "平胡:胡牌时,必须是有任意一对将牌(任意一对对子),其他牌组成顺子或刻子。",
  101. "对对胡:四副刻子加一对将。",
  102. "七对:玩家手牌都是对子,没有碰和刮风下雨。",
  103. "清一色:全部是一种花色的平胡。",
  104. "龙七对:玩家手牌都是对子,并且有一个根儿,没有碰和刮风下雨。",
  105. "清对:清一色+对对胡",
  106. "清七对:清一色+七对。",
  107. "清龙七对:清一色+龙七对。",
  108. }
  109. },
  110. --[4] =
  111. {
  112. title = "名词解释",
  113. content =
  114. {
  115. "点炮:胡其他玩家发出来的牌。",
  116. "自摸:玩家本人摸到的牌且能胡牌。",
  117. "荒庄(流局):摸完所有牌后都无人胡牌即称为荒庄。",
  118. "归:牌型中有四张同样的牌,称为“归”。",
  119. "碰:自己有两张相同牌,其他玩家打一张同样牌即可形成坎,此操作叫“碰”,碰牌时用普通的对子碰称为“硬碰”,用红中代替时,称为“加鬼碰”。",
  120. "杠:自己有三张相同牌,其他玩家打一张同样牌即可形成归,此操作叫“杠”。杠牌时用普通的三张相同牌碰称为“明杠”,用红中代替时,称为“加鬼杠”。",
  121. "暗杠:玩家本人摸到四张相同的牌杠下去叫“暗杠”,可加红中。",
  122. "巴杠:玩家本人已经碰牌,在下一轮到玩家本人摸牌后,手牌里有与碰牌相同的牌或者红中即可进行巴杠。",
  123. "抢杠胡:A玩家在杠牌(巴杠)时,B玩家恰好能胡这张牌,则可以胡牌,称为“抢杠”,暗杠不能“抢杠”。",
  124. "杠上花:杠牌之后摸起来张牌如果能胡,称为“杠上花”。",
  125. "杠上炮:杠牌之后打出去的牌,点炮其他玩家,称为“杠上炮”。",
  126. "查叫:每盘最后一张牌打出后,如果还有至少两家未胡牌,此时需要检查未胡牌的玩家是否下叫。未下叫的玩家将赔付未胡牌但已下叫的玩家,按可达到最高番数牌面计算。",
  127. "花猪:必须缺门可胡,即胡牌的时候不能有三种花色的牌,红中除外。查叫时,手上还有三种花色牌的玩家称为花猪。",
  128. "爆牌:开局庄家打出去第一张牌后或闲家开局摸起来的牌就已经下叫了,可进行爆牌,需即时进行操作。爆牌后不能碰牌和打牌出去,但是可以杠牌。其他玩家打出或者自己摸到听牌即可胡牌。",
  129. "杀爆:在爆牌情况下,未报爆玩家领先爆牌玩家胡牌。",
  130. }
  131. },
  132. --[5] =
  133. {
  134. title = "补充说明",
  135. content =
  136. {
  137. " 过手胡:某一回合中,若有人点炮,玩家没有选择胡,则此回合有其他玩家点炮,也不能胡,自摸除外。当该玩家摸牌,碰牌,杠牌后,过手胡限制解除。",
  138. " 关于碰杠优先级:抢碰杠:如果A玩家岀牌,BCD玩家都能碰或杠,按以下优先级确认操作优先级:“硬碰”/“明杠”>“加鬼碰”>“加鬼杠”。没有以上确认操作时,“加鬼碰杠”玩家则按逆时针顺序优先确认操作选择。",
  139. }
  140. },--]]
  141. }
  142. function wanfa.getWanFaInfo(str)
  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" and tab["isfaststart"] == 1 then
  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. else
  163. for _,data in pairs(wanfa[k]) do
  164. if v==data.value and not data.hide then
  165. temp=temp..data.name.." "
  166. end
  167. end
  168. end
  169. end
  170. end
  171. return temp
  172. end
  173. function wanfa.getWanFaInfoTab(str)
  174. local tab=json.decode(str)
  175. local temp={}
  176. for k,v in pairs(tab) do
  177. if wanfa[k] then
  178. if k == "playnum" and tab["isfaststart"] == 1 then
  179. -- temp=temp..""
  180. elseif k == "baseMulti" then
  181. table.insert(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. table.insert(temp,des)
  188. end
  189. end
  190. else
  191. table.insert(temp,"不加分")
  192. end
  193. else
  194. for _,data in pairs(wanfa[k]) do
  195. if v==data.value and not data.hide then
  196. -- temp=temp..data.name.." "
  197. table.insert(temp,data.name)
  198. end
  199. end
  200. end
  201. end
  202. end
  203. return temp
  204. end
  205. function wanfa.getClubWaFaInfo(str)
  206. local tab=json.decode(str)
  207. local temp={}
  208. for k,v in pairs(tab) do
  209. if wanfa[k] then
  210. if k == "playnum" and tab["isfaststart"] == 1 then
  211. --temp=temp..""
  212. elseif k == "baseMulti" then
  213. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={wanfa[k][1].name..v}})
  214. elseif k == "diFenLimit" and (tab.playnum == 2 or tab.isfaststart==1) then
  215. if v > 0 and (tab.diFenAdd and tab.diFenAdd > 0) then
  216. for _,data in pairs(wanfa[k]) do
  217. if not data.hide then
  218. local des = string.format(data.name,v,tab.diFenAdd)
  219. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={des}})
  220. end
  221. end
  222. else
  223. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={"不加分"}})
  224. end
  225. else
  226. for _,data in pairs(wanfa[k]) do
  227. if v==data.value and not data.hide then
  228. table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  229. --temp=temp..data.name.." "
  230. end
  231. end
  232. end
  233. end
  234. end
  235. return temp
  236. end
  237. function wanfa.getClubTableWanFaInfo(str)
  238. local tab=json.decode(str)
  239. local temp=""
  240. for k,v in pairs(tab) do
  241. if wanfa[k] then
  242. if k == "limitfan" or k == "laizinum" then
  243. for _,data in pairs(wanfa[k]) do
  244. if v==data.value then
  245. -- table.insert(temp,{name=wanfa.clubWanFaTitle[k] or "",value={data.name}})
  246. local isLimitFan40 = string.find(data.name,"40颗") or 0
  247. if isLimitFan40 > 0 then
  248. if tab.hufan == 2 then
  249. temp=temp..data.name.."(5)".." "
  250. else
  251. temp=temp..data.name.."(2)".." "
  252. end
  253. else
  254. temp=temp..data.name.." "
  255. end
  256. end
  257. end
  258. end
  259. end
  260. end
  261. return temp
  262. end
  263. ---
  264. -- 获取亲友圈玩法
  265. -- @param gameId
  266. -- @param jushu
  267. -- @param ruleStr
  268. -- @param arena
  269. -- @return
  270. --
  271. function wanfa.getRuleFromString (gameId, jushu, ruleStr,arena)
  272. local str = wanfa.getClubWaFaInfo(ruleStr, jushu)
  273. return str
  274. end
  275. function wanfa.getClubTableRuleString (gameId, ruleStr, playerNum)
  276. local str = ""
  277. local jsonData=json.decode(ruleStr)
  278. if jsonData.isfaststart == 1 then
  279. str = str .. "快速成局 "
  280. else
  281. if playerNum then
  282. str = str .. playerNum .. "人 "
  283. elseif jsonData.playnum then
  284. str = str .. jsonData.playnum .. "人 "
  285. end
  286. end
  287. local wanfaStr = wanfa.getClubTableWanFaInfo(ruleStr)
  288. str = str .. wanfaStr
  289. return str
  290. end
  291. return wanfa