Files
youlegames/codes/games/server/games/zpy/arithmetic.js

1050 lines
32 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var cls_zhaopengyou_tishi = cls_zhaopengyou_tishi ||{
jiesan_zhaopengyou : function (o_room,duSeat) {
var o_desk = o_room.o_desk;
var paiju = o_desk.method.CurrAset();
paiju.benju = 1;
var isteshupai = false;
var shuangwang = false;
var zhadanpaitianjia = false;
for (var i = 0; i < 4; i++) {
if(typeof(duSeat) != "undefined" && i == duSeat){
continue;
}
paiju.kongzhiquan = i;
//提示牌
paiju.paixing = [[1,1],[0,0,0,0,1]];
paiju.tishipai = cls_zhaopengyou_tishi.jinxian_jiesuan_tishi(o_room);
// if(o_desk.paiju.banben == 0){
// paiju.tishipai = cls_zhaopengyou_tishi.jinxian_jiesuan_tishizha(o_room);
// }else{
// }
for (var j = 0; j < paiju.tishipai.length; j++) {
isteshupai = false;
shuangwang = false;
var dq_dapai = cls_zhaopengyou_aset.CardsToCardIds(paiju.tishipai[j]);
//获取牌型
var paixing = cls_zhaopengyou_paixing.jinxian_zhaopengyou(paiju.tishipai[j] , o_desk);
var nengchu = cls_zhaopengyou_paixing.dapai_zhaopengyou(paiju.tishipai[j],paixing[0],paiju.paiid[i].length - paiju.tishipai[j].length,paixing[1][0][4],paixing[1][paixing[1].length-1][4]);
var put = false;
if (!nengchu[0]) {
if (paiju.tishipai[j].length == 3 || paiju.tishipai[j].length == 4 || paiju.tishipai[j].length>=9) {
if (o_desk.data.banben == 0) {
var teshupai = ksw_zhaopengyou.jinxian(paiju.tishipai[j]);
if (teshupai.length) {
isteshupai = true;
paixing = teshupai;
put = true;
}
}else{
var teshupai = ksw_zhaopengyou.chongren(paiju.tishipai[j]);
if (teshupai.length) {
isteshupai = true;
paixing = teshupai;
put = true;
}
}
}
} else {
paixing[0] = nengchu[1];
put = nengchu[0];
}
if (paixing[0][0] >= 4) {//奖
if (o_desk.data.banben == 0) {
var jg = ksw_zhaopengyou.jiang_jinxian(paiju.tishipai[j],paixing,paiju);
paiju.jiang[i] = paiju.jiang[i] + jg;
// if (paixing[0][0] == paiju.tishipai[j].length && paixing[0][0] >= 4) {
// if (paixing[1][0][4] == 15) {
// paiju.jiang[i] = paiju.jiang[i] +1;
// }
// }
// if(jg>0 || (paixing[0][0] == 4 && isteshupai)){
// console.log('炸弹牌牌型');
// console.log(dq_dapai);
// console.log(paixing);
paiju.zhadanpai[i].push(dq_dapai);
zhadanpaitianjia = true;
// }
}else{
var jg = ksw_zhaopengyou.jiang_chongren(paiju.tishipai[j],paixing,paiju.leixing[6]);
paiju.jiang[i] = paiju.jiang[i] + jg;
// if (paixing[0][0] == paiju.tishipai[j].length && paixing[0][0] >= 4) {
// if (paixing[1][0][4] == 15) {
// paiju.jiang[i] = paiju.jiang[i] +1;
// }
// }
// if(jg>0 || (paixing[0][0] == 4 && isteshupai)){
// console.log('炸弹牌牌型');
// console.log(dq_dapai);
// console.log(paixing);
zhadanpaitianjia = true;
paiju.zhadanpai[i].push(dq_dapai);
// }
//paiju.jiang[i] = paiju.jiang[i] + ksw_zhaopengyou.jiang_chongren(paiju.tishipai[j],paixing);
}
}else if (paixing[0][0] == 2 && paixing[0][1] == 1 && paixing[1][0][4] >= 53) {//对王
paiju.jiang[i] = paiju.jiang[i] + 1;
paiju.zhadanpai[i].push(dq_dapai);
zhadanpaitianjia = true;
shuangwang = true;
}
if (paixing[0][0]>=4 && paixing[0][0] == paiju.tishipai[j].length) { //如果是炸弹 则炸弹+1
paiju.zha[i] = paiju.zha[i]+1;
// console.log('arithmetic.js seat: '+ i);
if (paixing[0][0]==4) {
paiju.duozha[i][0] = paiju.duozha[i][0]+1;
}
if (paixing[0][0]==5) {
paiju.duozha[i][1] = paiju.duozha[i][1]+1;
// console.log('5炸');
}
if (paixing[0][0]==6) {
paiju.duozha[i][2] = paiju.duozha[i][2]+1;
// console.log('6炸');
}
if (paixing[0][0]==7) {
paiju.duozha[i][3] = paiju.duozha[i][3]+1;
// console.log('7炸');
}
if (paixing[0][0]==8) {
paiju.duozha[i][4] = paiju.duozha[i][4]+1;
// console.log('8炸');
}
}
var seat = i;
if (paiju.leixing[5] == 2) {
//检测是否碰奖 // 只有双王和四炸才会计算碰奖 要排除510K
if(shuangwang || (paixing[0][0] == 4 && !isteshupai)){
for (var k = 0; k < paiju.paixinglishi.length; k++) {
if (k != seat) {
for (var l = 0; l < paiju.paixinglishi[k].length; l++) {
if (cls_zhaopengyou_paixing.pengjiang_zhaopengyou(paixing, paiju.paixinglishi[k][l])) {
paiju.jiang[seat] = paiju.jiang[seat] + 1;
paiju.jiang[k] = paiju.jiang[k] + 1;
// console.log('碰奖');
// console.log(i +' '+ seat);
// console.log(paixing);
//paiju.zhadanpai[seat].push(pack.data.dq_dapai.reverse());
break;
}
}
}
}
//保存历史牌型
if (paiju.paixinglishi[seat]) {
paiju.paixinglishi[seat].push(paixing);
}
}
}
}
}
paiju.jijiang = cls_bt_suanjiang.new(paiju.duozha);
paiju.pysx = 1;
//控制权
// paiju.kongzhiquan = -2;
// if (o_desk.data.banben ==0) {
// //算奖
// paiju.jijiang = cls_bt_suanjiang.new(paiju.duozha);
// for (var i = 0; i < paiju.jiang.length; i++) {
// paiju.jiang[i] = paiju.jiang[i] + paiju.jijiang[i];
// }
// //冲关
// if(paiju.leixing[2]<5){
// for (var i = 0; i < 4; i++) {
// if (paiju.jiang[i]>=paiju.leixing[2]+2) {
// paiju.jiang[i] = paiju.jiang[i] * 2;
// paiju.chongguan[i] = 1;
// }
// }
// }
// //霸王
// if(paiju.leixing[1]==1){
// var bawang = [0,0];
// for (var i = 0; i < 4; i++) {
// if (paiju.jiang[i]>0) {
// bawang[0] = bawang[0]+1;
// bawang[1] = i;
// }
// }
// if (bawang[0]==1) {
// paiju.jiang[bawang[1]] = paiju.jiang[bawang[1]]*2;
// paiju.chongguan[bawang[1]+4] = 1;
// }
// }
// }
// //奖 算分
// paiju.xiaojufen[0] = paiju.jiang[0]*3-paiju.jiang[1]-paiju.jiang[2]-paiju.jiang[3];
// paiju.xiaojufen[1] = paiju.jiang[1]*3-paiju.jiang[0]-paiju.jiang[2]-paiju.jiang[3];
// paiju.xiaojufen[2] = paiju.jiang[2]*3-paiju.jiang[0]-paiju.jiang[1]-paiju.jiang[3];
// paiju.xiaojufen[3] = paiju.jiang[3]*3-paiju.jiang[1]-paiju.jiang[2]-paiju.jiang[0];
},
jinxian_jiesuan_tishizha: function(o_room){
var paiju = o_room.o_desk.method.CurrAset();
var tishipai = [];
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var paiidcpy = handpai.concat();
var wsktishi = this.ksw_tishipai(paiidcpy);
// console.log('wsk');
// console.log(wsktishi);
if(wsktishi.length > 0 && wsktishi[0] >= 3){
// console.log('出现三个510K及以上');
// console.log(wsktishi);
wsktishi[1] = cls_zhaopengyou_card.SortCardList(wsktishi[1],[1,0]);
//排序放入
tishipai.push(wsktishi[1]);
paiidcpy = cls_zhaopengyou_tishi.quchupai(paiidcpy,wsktishi[1]);
// console.log('去除510');
// console.log(paiidcpy);
}
//提示炸弹时去除之前已经选出的牌
//结算提示不管理牌
for (var i = 8; i >= 4; i--) {
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
[i,1], [0,1,0,0]);
// if(tishizha.length > 0){
// tishipai.push(tishizha[0]);
// paiidcpy = cls_zhaopengyou_tishi.quchupai(paiidcpy,tishizha[0]);
// // console.log('去除'+i);
// // console.log(paiidcpy);
// }
for(var j=0;j<tishizha.length;j++){
tishipai.push(tishizha[j]);
paiidcpy = cls_zhaopengyou_tishi.quchupai(paiidcpy,tishizha[j]);
}
// for (var l = 0; l < tishizha.length; l++) {
// tishipai.push(tishizha[l]);
// }
// if (i == 5 && wangtishi.length == 3) {
// tishipai.push(wangtishi);
// }
// if (i == 5 && wsktishi[0] == 3) {
// tishipai.push(wsktishi[1]);
// }
// b=0;
}
var wangtishi = this.wang_tishipai(paiidcpy);
if (wangtishi.length >= 3) {
tishipai.push(wangtishi);
}else{
var xiaowang =[];
var dawang = [];
for(var m=0;m<wangtishi.length;m++){
if(wangtishi[m][4]==53){
xiaowang.push(wangtishi[m]);
}
if(wangtishi[m][4]==54){
dawang.push(wangtishi[m]);;
}
}
if(dawang.length ==2){
tishipai.push(dawang);
}
if(xiaowang.length ==2){
tishipai.push(xiaowang);
}
}
return tishipai;
},
//从arr1中去除arr2出现的牌 arr1 为card arr2 为card
quchupai : function(arr1,arr2){
for(var i=0;i<arr2.length;i++){
for(var j=0;j<arr1.length;j++){
if(arr2[i][0] == arr1[j][0]){
arr1.splice(j,1);
break;
}
}
}
return arr1;
},
jinxian_jiesuan_tishi : function(o_room){
var paiju = o_room.o_desk.method.CurrAset();
paiju.paixing = [[2,1],[[14,2,2,2,15,0,1,1,0,0,1,null,null,null],[40,4,2,4,15,0,1,1,0,0,1,null,null,null]]];//对2 因为对王也会算奖所以最小牌牌型设置为对2
var zuida = 54;
var zuixiao = 15;
var o_desk = o_room.o_desk;
var tishipai = [];
// 先从大到小取炸弹 ,然后双王特殊处理
if (o_desk.data.banben == 0) {
tishipai = this.jinxian_jiesuan_tishizha(o_room , 4,paiju.paixing[1][0][4]);
}else{
tishipai = this.chongren_jiesuan_tishizha(o_room , 4,paiju.paixing[1][0][4]);
}
// console.log('未出牌炸弹');
// console.log(tishipai);
return tishipai;
},
jinxian_tishi : function(o_room){
var paiju = o_room.o_desk.method.CurrAset();
var zuixiaopai = paiju.paixing[1][0][4]+1;
var zuidapai = null;
var o_desk = o_room.o_desk;
var tishipai = [];
if ((paiju.paixing[0][0] == 1 && paiju.paixing[0][1]>=5) || (paiju.paixing[0][0] == 2 && paiju.paixing[0][1]>=2) || (paiju.paixing[0][0] == 3 && paiju.paixing[0][1]>=2)) {
zuidapai = 14;
}
// 先将理牌的牌拿出 再提示 然后在结果里排序
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var lp = paiju.lipai[paiju.kongzhiquan];
var paiidcpy = handpai.concat();
var pxList = [];
var paiList = [];
//如果自己打的不是炸
if (paiju.paixing[0][0] < 4 ) {
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
//将牌id列表转换成牌对象列表
var dq_dapai = cls_zhaopengyou_aset.CardIdsToCards(paiju, lp[i]);
//排序
dq_dapai = cls_zhaopengyou_card.SortCardList(dq_dapai)
//获取牌型
var px = cls_zhaopengyou_paixing.jinxian_zhaopengyou(dq_dapai, o_desk);
// 特殊牌
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
if (o_desk.data.banben == 0) {
var teshupai = ksw_zhaopengyou.jinxian(dq_dapai);
if (teshupai.length) {
px = teshupai;
put = true;
}
} else {
var teshupai = ksw_zhaopengyou.chongren(dq_dapai);
if (teshupai.length) {
px = teshupai;
put = true;
}
}
}
// 比较牌型 如果理牌小于当前比牌 不需要加入到提示中
//比较大小
if(!px || !px[1] || !px[1][0] || !paiju.paixing || !paiju.paixing[1] || !paiju.paixing[1][0]){
continue;
}
var p = cls_zhaopengyou_paixing.bipai_zhaopengyou(px, paiju.paixing, px[1][0][4], paiju.paixing[1][0][4], dq_dapai.length, paiju.zuidapai.length, paiju.paiid[paiju.kongzhiquan].length - dq_dapai.length);
if(p){
pxList.push(px);
paiList.push(dq_dapai);
}
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
//提示牌 牌
tishipai = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
paiju.paixing[0], [0,0,1,0], zuixiaopai ,zuidapai);
if (o_desk.data.banben == 0) {
var tishizha = this.jinxian_tishizha(o_room, 0);
}else{
var tishizha = this.chongren_tishizha(o_room , 0);
}
for (var l = 0; l < tishizha.length; l++) {
tishipai.push(tishizha[l]);
}
}else{
if (o_desk.data.banben == 0) {
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
//将牌id列表转换成牌对象列表
var dq_dapai = cls_zhaopengyou_aset.CardIdsToCards(paiju, lp[i]);
//排序
dq_dapai = cls_zhaopengyou_card.SortCardList(dq_dapai)
//获取牌型
var px = cls_zhaopengyou_paixing.jinxian_zhaopengyou(dq_dapai, o_desk);
// 特殊牌
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
if (o_desk.data.banben == 0) {
var teshupai = ksw_zhaopengyou.jinxian(dq_dapai);
if (teshupai.length) {
px = teshupai;
put = true;
}
} else {
var teshupai = ksw_zhaopengyou.chongren(dq_dapai);
if (teshupai.length) {
px = teshupai;
put = true;
}
}
}
// 比较牌型 如果理牌小于当前比牌 不需要加入到提示中
//比较大小
if(!px || !px[1] || !px[1][0] || !paiju.paixing || !paiju.paixing[1] || !paiju.paixing[1][0]){
continue;
}
var p = cls_zhaopengyou_paixing.bipai_zhaopengyou(px, paiju.paixing, px[1][0][4], paiju.paixing[1][0][4], dq_dapai.length, paiju.zuidapai.length, paiju.paiid[paiju.kongzhiquan].length - dq_dapai.length);
if(p){
pxList.push(px);
paiList.push(dq_dapai);
}
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
tishipai = this.jinxian_tishizha(o_room, paiju.paixing[0][0],paiju.paixing[1][0][4]);
}else{
tishipai = this.chongren_tishizha(o_room , paiju.paixing[0][0],paiju.paixing[1][0][4]);
}
}
// 将理牌中的牌加入到提示牌中
for(var i=0;i<pxList.length;i++){
var paixing = pxList[i];
var found = false;
// console.log('paixing');
// console.log(paixing);
for(var j=0;j<tishipai.length;j++){
//将牌id列表转换成牌对象列表
var dq_dapai = tishipai[j];
//获取牌型
var px = cls_zhaopengyou_paixing.jinxian_zhaopengyou(dq_dapai, o_desk);
// 特殊牌
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
if (o_desk.data.banben == 0) {
var teshupai = ksw_zhaopengyou.jinxian(dq_dapai);
if (teshupai.length) {
px = teshupai;
put = true;
}
} else {
var teshupai = ksw_zhaopengyou.chongren(dq_dapai);
if (teshupai.length) {
px = teshupai;
put = true;
}
}
}
//比较大小
var p = cls_zhaopengyou_paixing.bipai_zhaopengyou(px, paixing, px[1][0][4], paixing[1][0][4], dq_dapai.length, paiju.zuidapai.length, paiju.paiid[paiju.kongzhiquan].length - dq_dapai.length);
if(p){
found = true;
tishipai.splice(j,0,paiList[i]);
break;
}
}
if(!found){
tishipai.push(paiList[i]);
}
}
return tishipai;
},
chongren_jiesuan_tishizha: function(o_room ,a ,b){
var paiju = o_room.o_desk.method.CurrAset();
var tishipai = [];
var wangtishi = this.wang_tishi(o_room);
var wsktishi = this.chongren_ksw_tishi(o_room);
if (a < 4 && wsktishi.length) {
if (wsktishi[0]<3) {
for (var i = 0; i < wsktishi[1].length; i++) {
tishipai.push(wsktishi[1][i]);
}
}
}
if (a==4&&b==1&& wsktishi.length) {
if (wsktishi[0]<3&&wsktishi[0]>0) {
tishipai.push(wsktishi[1][wsktishi[1].length-1]);
}
}
b++;
if (a<4) {
a = 4;
}
var lp = paiju.lipai[paiju.kongzhiquan];
// 先将理牌的牌拿出 再提示 然后在结果里排序
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var paiidcpy = handpai.concat();
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
for (var i = a; i <= 8; i++) {
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
[i,1], [0,0,0,0], b,null);
for (var l = 0; l < tishizha.length; l++) {
tishipai.push(tishizha[l]);
}
if (i == 5 && wsktishi[0] == 3) {
tishipai.push(wsktishi[1]);
}
if (i == 6 && wangtishi.length == 3) {
tishipai.push(wangtishi);
}
b=0;
}
if (wsktishi[0] >= 4) {
tishipai.push(wsktishi[1]);
}
if (wangtishi.length == 4) {
tishipai.push(wangtishi);
}
return tishipai;
},
jinxian_tishizha: function(o_room ,a , b){
var paiju = o_room.o_desk.method.CurrAset();
var o_desk = o_room.o_desk;
var tishipai = [];
var wangtishi = this.wang_tishi(o_room);
var wsktishi = this.jinxian_ksw_tishi(o_room);
if (a < 4 && wsktishi.length) {
if (wsktishi[0]<3) {
for (var i = 0; i < wsktishi[1].length; i++) {
tishipai.push(wsktishi[1][i]);
}
}
}
if (a==4&&b==1&& wsktishi.length) {
if (wsktishi[0]<3&&wsktishi[0]>0) {
tishipai.push(wsktishi[1][wsktishi[1].length-1]);
}
}
b++;
if (a<4) {
a = 4;
}
var lp = paiju.lipai[paiju.kongzhiquan];
// 先将理牌的牌拿出 再提示 然后在结果里排序
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var paiidcpy = handpai.concat();
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
for (var i = a; i <= 8; i++) {
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
[i,1], [0,0,0,0], b,null);
for (var l = 0; l < tishizha.length; l++) {
tishipai.push(tishizha[l]);
}
if (i == 5 && wangtishi.length == 3) {
tishipai.push(wangtishi);
}
if (i == 5 && wsktishi[0] == 3) {
tishipai.push(wsktishi[1]);
}
if (i == 8 && wangtishi.length == 4) {
tishipai.push(wangtishi);
}
b=0;
}
//特殊炸弹情况
if(a >= 9){
if (wsktishi[0] >= 4) {
tishipai.push(wsktishi[1]);
}
}
// if (wangtishi.length == 4) {
// tishipai.push(wangtishi);
// }
// if (wsktishi[0] >= 4) {
// tishipai.push(wsktishi[1]);
// }
return tishipai;
},
chongren_tishizha: function(o_room ,a ,b){
var paiju = o_room.o_desk.method.CurrAset();
var o_desk = o_room.o_desk;
var tishipai = [];
var wangtishi = this.wang_tishi(o_room);
var wsktishi = this.chongren_ksw_tishi(o_room);
if (a < 4 && wsktishi.length) {
if (wsktishi[0]<3) {
for (var i = 0; i < wsktishi[1].length; i++) {
tishipai.push(wsktishi[1][i]);
}
}
}
if (a==4&&b==1&& wsktishi.length) {
if (wsktishi[0]<3&&wsktishi[0]>0) {
tishipai.push(wsktishi[1][wsktishi[1].length-1]);
}
}
b++;
if (a<4) {
a = 4;
}
var lp = paiju.lipai[paiju.kongzhiquan];
// 先将理牌的牌拿出 再提示 然后在结果里排序
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var paiidcpy = handpai.concat();
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
for (var i = a; i <= 8; i++) {
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
[i,1], [0,0,0,0], b,null);
for (var l = 0; l < tishizha.length; l++) {
tishipai.push(tishizha[l]);
}
if (i == 5 && wsktishi[0] == 3) {
tishipai.push(wsktishi[1]);
}
if (i == 6 && wangtishi.length == 3) {
tishipai.push(wangtishi);
}
b=0;
}
if (wsktishi[0] >= 4) {
tishipai.push(wsktishi[1]);
}
if (wangtishi.length == 4) {
tishipai.push(wangtishi);
}
return tishipai;
},
wang_tishi :function(o_room){
var paiju = o_room.o_desk.method.CurrAset();
var lp = paiju.lipai[paiju.kongzhiquan];
// 先将理牌的牌拿出 再提示 然后在结果里排序
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var paiidcpy = handpai.concat();
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
return this.wang_tishipai(paiidcpy);
},
wang_tishipai(pai){
var wang = [];
for (var i = 0; i < pai.length; i++) {
if (pai[i][4] == 53 || pai[i][4] == 54) {
wang.push(pai[i]);
}
}
return wang;
},
ksw_tishipai:function(pai){
var wu = [];
var shi = [];
var kai = [];
var tishipai = [];
//var pai = paiidcpy;
for (var i = 0; i < pai.length; i++) {
switch (pai[i][4]){
case 5:
wu.push(pai[i]);
tishipai.push(pai[i]);
break;
case 10:
shi.push(pai[i]);
tishipai.push(pai[i]);
break;
case 13:
kai.push(pai[i]);
tishipai.push(pai[i]);
break;
}
}
if (wu.length <= shi.length && wu.length <= kai.length && wu.length >=3) {//有3副以上五十K
return [wu.length,tishipai];
}else if (shi.length <= wu.length && shi.length <= kai.length && shi.length >=3) {//有3副以上五十K
return [shi.length,tishipai];
}else if (kai.length <= wu.length && kai.length <= shi.length && kai.length >=3) {//有3副以上五十K
return [kai.length,tishipai];
}else{//没有3副以上五十K
tishipai = [];
var zhengwsk = [];
var fuwsk = [];
for (var i = 0; i < wu.length; i++) {
for (var j = 0; j < shi.length; j++) {
if (wu[i][1] == shi[j][1]) {
for (var l = 0; l < kai.length; l++) {
if (wu[i][1] == kai[l][1]) {
zhengwsk.push(wu[i]);
zhengwsk.push(shi[j]);
zhengwsk.push(kai[l]);
wu.splice(i,1);
shi.splice(j,1);
kai.splice(l,1);
break;
}
}
}
if (zhengwsk.length) {
break;
}
}
if (zhengwsk.length) {
break;
}
}
if (wu.length>0&&shi.length>0&&kai.length>0) {
fuwsk.push(wu[0]);
fuwsk.push(shi[0]);
fuwsk.push(kai[0]);
}
if (zhengwsk.length&&fuwsk.length) {
return [2,[fuwsk,zhengwsk]];
}
if (zhengwsk.length) {
return [1,[zhengwsk]];
}
if (fuwsk.length) {
return [0,[fuwsk]];
}
}
return [];
},
jinxian_ksw_tishi: function(o_room){
var paiju = o_room.o_desk.method.CurrAset();
var lp = paiju.lipai[paiju.kongzhiquan];
// 先将理牌的牌拿出 再提示 然后在结果里排序
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var paiidcpy = handpai.concat();
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
return this.ksw_tishipai(paiidcpy);
},
chongren_ksw_tishi: function(o_room){
var paiju = o_room.o_desk.method.CurrAset();
var o_desk = o_room.o_desk;
var wu = [];
var shi = [];
var kai = [];
var tishipai = [];
var lp = paiju.lipai[paiju.kongzhiquan];
// 先将理牌的牌拿出 再提示 然后在结果里排序
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
var paiidcpy = handpai.concat();
// 手牌中去掉理牌后剩下的牌
for(var i=0;i<lp.length;i++){
for(var k=0;k<lp[i].length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lp[i][k] == paiidcpy[j][0]){
paiidcpy.splice(j,1);
break;
}
}
}
}
var pai = paiidcpy;
for (var i = 0; i < pai.length; i++) {
switch (pai[i][4]){
case 5:
wu.push(pai[i]);
break;
case 10:
shi.push(pai[i]);
break;
case 13:
kai.push(pai[i]);
break;
}
}
if (wu.length <= shi.length && wu.length <= kai.length && wu.length >=3) {//有3副以上五十K
for(var i = 0;i<wu.length;i++){
tishipai.push(wu[i]);
tishipai.push(shi[i]);
tishipai.push(kai[i]);
}
return [3,tishipai];
}else if (shi.length <= wu.length && shi.length <= kai.length && shi.length >=3) {//有3副以上五十K
for(var i = 0;i<shi.length;i++){
tishipai.push(wu[i]);
tishipai.push(shi[i]);
tishipai.push(kai[i]);
}
return [3,tishipai];
}else if (kai.length <= wu.length && kai.length <= shi.length && kai.length >=3) {//有3副以上五十K
for(var i = 0;i<kai.length;i++){
tishipai.push(wu[i]);
tishipai.push(shi[i]);
tishipai.push(kai[i]);
}
return [3,tishipai];
}else{
tishipai = [];
var zhengwsk = [];
var fuwsk = [];
for (var i = 0; i < wu.length; i++) {
for (var j = 0; j < shi.length; j++) {
if (wu[i][1] == shi[j][1]) {
for (var l = 0; l < kai.length; l++) {
if (wu[i][1] == kai[l][1]) {
zhengwsk.push(wu[i]);
zhengwsk.push(shi[j]);
zhengwsk.push(kai[l]);
wu.splice(i,1);
shi.splice(j,1);
kai.splice(l,1);
break;
}
}
}
if (zhengwsk.length) {
break;
}
}
if (zhengwsk.length) {
break;
}
}
if (wu.length>0&&shi.length>0&&kai.length>0) {
fuwsk.push(wu[0]);
fuwsk.push(shi[0]);
fuwsk.push(kai[0]);
}
if (zhengwsk.length&&fuwsk.length) {
return [2,[fuwsk,zhengwsk]];
}
if (zhengwsk.length) {
return [1,[zhengwsk]];
}
if (fuwsk.length) {
return [0,[fuwsk]];
}
}
return [];
},
xingxing_zhaopengyou : function(o_room){
var paiju = o_room.o_desk.method.CurrAset();
var o_desk = o_room.o_desk;
var jiafen = 0;
var xingxingfen = [];//实际扣除的星星数
var jiesan = [];
for (var j = 0; j < o_desk.data.people; j++) {
xingxingfen[j] = 0;
if (paiju.xiaojufen[j]<0) {//输分
if (o_room.seatlist[j].bean + paiju.xiaojufen[j] * o_desk.data.beishu >0) {//星星数大于扣分
xingxingfen[j] = paiju.xiaojufen[j] * o_desk.data.beishu;
}else{//星星数小于扣分
xingxingfen[j] = 0-o_room.seatlist[j].bean;
jiesan.push(j);
}
}
}
for (var i = 0; i < xingxingfen.length; i++) {//一起输出多少星星
jiafen = jiafen - xingxingfen[i];
}
for (var i = 0; i < o_room.seatlist.length; i++) {
if (o_room.seatlist[i]) {
if (o_room.seatlist[i].bean < o_room.roomtype[6][1]) {
var msg = {};
msg.app = "youle";
msg.route = "zhaopengyou";
msg.rpc = 'xingxingbugou';
msg.data = {};
o_room.method.sendpack_toseat(msg, jiesan[i]);
var tr = function(){
//踢人
mod_zpy.app.youle_room.export.kickplayer_inroom(o_room, jiesan[i]);
}
o_room.o_desk.timer.tiren = setTimeout(tr,4000);
}
}
}
if (paiju.xiaojufen[0] >= paiju.xiaojufen[1] && paiju.xiaojufen[0] >= paiju.xiaojufen[2]) {
if (paiju.xiaojufen[0] * o_desk.data.beishu >= jiafen) {//赢的星星大于扣的星星数
xingxingfen[0] = jiafen;
}else{
xingxingfen[0] = paiju.xiaojufen[0] * o_desk.data.beishu;
}
if (paiju.xiaojufen[1] > paiju.xiaojufen[2]) {//1>2
if (paiju.xiaojufen[1]>0) {
xingxingfen[1] = jiafen - paiju.xiaojufen[0] * o_desk.data.beishu;
}
}else{
if (paiju.xiaojufen[2]>0) {
xingxingfen[2] = jiafen - paiju.xiaojufen[0] * o_desk.data.beishu;
}
}
}else if (paiju.xiaojufen[1] >= paiju.xiaojufen[0] && paiju.xiaojufen[1] >= paiju.xiaojufen[2]) {
if (paiju.xiaojufen[1] * o_desk.data.beishu > jiafen) {//赢的星星大于扣的星星数
xingxingfen[1] = jiafen;
}else{
xingxingfen[1] = paiju.xiaojufen[1] * o_desk.data.beishu;
}
//0>2
if (paiju.xiaojufen[0] > paiju.xiaojufen[2]) {
if (paiju.xiaojufen[0]>0) {
xingxingfen[0] = jiafen - paiju.xiaojufen[1] * o_desk.data.beishu;
}
}else{
if (paiju.xiaojufen[2]>0) {
xingxingfen[2] = jiafen - paiju.xiaojufen[1] * o_desk.data.beishu;
}
}
}else if (paiju.xiaojufen[2] >= paiju.xiaojufen[0] && paiju.xiaojufen[2] >= paiju.xiaojufen[1]) {
if (paiju.xiaojufen[2] * o_desk.data.beishu > jiafen) {//赢的星星大于扣的星星数
xingxingfen[2] = jiafen;
}else{
xingxingfen[2] = paiju.xiaojufen[2] * o_desk.data.beishu;
}
//0>1
if (paiju.xiaojufen[0] > paiju.xiaojufen[1]) {
if (paiju.xiaojufen[0]>0) {
xingxingfen[0] = jiafen - paiju.xiaojufen[2] * o_desk.data.beishu;
}
}else{
if (paiju.xiaojufen[1]>0) {
xingxingfen[1] = jiafen - paiju.xiaojufen[2] * o_desk.data.beishu;
}
}
}
var xxs = [];
for(var i = 0 ; i<o_desk.data.people;i++){
xxs[i] = o_room.seatlist[i].bean;
}
//o_room: 房间对象arr_grade: 对应座位的玩家该局输赢分数数组(例如:[2,3,4,null,null]nowCount当前局数
var chashui = mod_zpy.app.youle_room.export.save_grade_aset(o_room, xingxingfen, o_desk.data.ju);
for (var i = 0; i < chashui.length; i++) {
xxs[i] = xxs[i]+chashui[i];
}
for (var i = 0; i < o_room.seatlist.length; i++) {
if (o_room.seatlist[i]){
o_room.seatlist[i].gameinfo.isbet = 0;
o_desk.data.zhunbei[i] = 1;
o_room.seatlist[i].gameinfo.isprepare = 0;
}
}
return xxs;
},
chushihua_zhaopengyou : function(o_room){
var o_desk = o_room.o_desk;
o_desk.data.grade = [];
o_desk.data.quanbufen = [];//
o_desk.data.huifang = [];//回放汇总
o_desk.data.putpai = [];//出牌情况
o_desk.data.zhanji = [];//战绩分
o_desk.data.playerid = [];
o_desk.data.zhunbei = [1,1,1];//准备阶段
o_desk.data.laizi = 0;
switch(o_room.roomtype[3]){//模式
case 1:
o_desk.data.laizi = 0;
break;
case 2:
o_desk.data.laizi = 1;
break;
}
o_desk.method_flow = null;
o_desk.timer.fapai = 0;
o_desk.timer.dapai = 0;
o_desk.timer.buyao = 0;
o_desk.timer.flow = 0;
o_desk.timer.tiren = 0;
for (var i = 0; i < o_desk.data.people; i++) {
o_desk.data.grade.push(0);
}
}
}