chore: 纳入项目全部源码进根仓库统一管理

删除 YouleNexus 内嵌 .git,统一由根仓库唯一管理。提交:
- projects/ 旧 H5 模板 Game_Surface_3 与各子游戏源码
- cocoscreator_projects/YouleNexus 工程 + cocos-creator-mcp 扩展源码
- CLAUDE.md、.mcp.json 等配置
library/temp/node_modules/dist 等缓存由 .gitignore 排除。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-28 11:55:13 +08:00
co-authored by Claude Opus 4.8
parent f5673c33c8
commit 7ab748919a
7317 changed files with 2810014 additions and 0 deletions
+757
View File
@@ -0,0 +1,757 @@
/*
点击事件
*/
function NN_MouseUp(gameid,spid_down,downx,downy,spid_up,upx,upy,timelong){
//鼠标弹起
switch (NN_GameState){
case NN_State.inHall:
NN_MouseUp_hall(gameid,spid_down,downx,downy,spid_up,upx,upy,timelong);
break;
case NN_State.inGame:
NN_MouseUp_game(gameid,spid_down,downx,downy,spid_up,upx,upy,timelong);
break;
default:
break;
}
NN_MouseUp_other(gameid,spid_down,downx,downy,spid_up,upx,upy,timelong);
};
function NN_MouseDown(gameid,spid,downx,downy,timelong){
//鼠标按下
if(NN_GameState == NN_State.inHall){//大厅按下事件
switch (spid){
case 0://
//play_ani(1,spid,33,100,110,0,60,0,0,0,1,0,0);
break;
default:
break;
}
}else if(NN_GameState == NN_State.inGame){
if(NN_Desk.state == NN_state.robZhuang){
if(spid == 706 || spid == 707 || spid == NN_Sprite.btn.noRob || spid == NN_Sprite.btn.rob){
NN_clickEffect(spid);
}
}else if(NN_Desk.state == NN_state.bet){
if(spid >= 809 && spid <= 818){
NN_clickEffect(spid);
}else if((spid >= 946 && spid <= 948) || spid == 955 || spid == 956){
NN_clickEffect(spid);
}else if(spid >= 1122 && spid <= 1125){
NN_clickEffect(spid);
}
}else if(NN_Desk.state == NN_state.rubCard){
if(spid == 750 || spid == 751){
NN_UI.rubPutUI_anim(false);
NN_UIP.anim.fingerSlide(false);
}
}else if(NN_Desk.state == NN_state.putCard){
if(spid == 807 || spid == 808 || spid == NN_Sprite.btn.sureCattle || spid == NN_Sprite.btn.noCattle){
NN_clickEffect(spid);
}
if(spid >= 725 && spid <= 729 && NN_Desk.pList[NN_Desk.myseat].putcard != 1){
NN_moveSelectCard(spid);
}
}else {
if(spid == 851 || spid == 1802 || spid == 925 || spid == 957 || spid == 981 || (spid >= 1000 && spid <= 1004) || spid == 1802 || (spid >= 1933 && spid <= 1942)){
NN_clickEffect(spid);
}
}
if(spid == 961 || spid == 962){
NN_clickEffect(spid);
}
}
//取消震动
if(NN_Desk.state == NN_state.bet && NN_Judge.isVibrator == 1){
NN_Judge.isVibrator = -1;
Func.canclevibrator();
}
};
function NN_MouseMove(gameid,spid,downx,downy,movex,movey ,timelong,offmovex,offmovey){
//鼠标移动
if(NN_Desk.state == NN_state.rubCard){
if(offmovex != 0 || offmovey != 0){
if(spid == 750 || spid == 751){
var offx = Math.round((movex - downx)*0.3), offy = Math.round((movey - downy)*0.3);
set_self(spid,18,get_self(spid-22,18)+offx,0,0);
set_self(spid,19,get_self(spid-22,19)+offy,0,0);
//if(offx > 36 || offx < -114 || offy < -162 || offy > 64){
//NN_Judge.isRub = 1;
//}
}
}
}else if(NN_Desk.state == NN_state.putCard && NN_Desk.pList[NN_Desk.myseat].putcard != 1){
//摆牌时移动选牌
if(offmovex != 0 || offmovey != 0 ){
if(spid >= 725 && spid <= 729){
if(movex >= 332 && movex <= 462){
if(movey >= get_self(725,19) && movey <= get_self(725,19)+176){
NN_moveSelectCard(725);
}
}else if(movex >= 463 && movex <= 593){
if(movey >= get_self(726,19) && movey <= get_self(726,19)+176){
NN_moveSelectCard(726);
}
}else if(movex >= 594 && movex <= 724){
if(movey >= get_self(727,19) && movey <= get_self(727,19)+176){
NN_moveSelectCard(727);
};
}else if(movex >= 725 && movex <= 855){
if(movey >= get_self(728,19) && movey <= get_self(728,19)+176){
NN_moveSelectCard(728);
}
}else if(movex >= 856 && movex <= 986){
if(movey >= get_self(729,19) && movey <= get_self(729,19)+176){
NN_moveSelectCard(729);
}
}else {
NN_Judge.boveCardaSpid = -1;
}
}else {
NN_Judge.boveCardaSpid = -1;
}
}
}else if(NN_Desk.state == NN_state.over){
// 结算界面移动战绩
if(offmovey != 0 && spid == 884){
set_self(spid,19,offmovey,1,0);
}
}
};
//移动选牌
function NN_moveSelectCard(_spid){
if(NN_Judge.boveCardaSpid != _spid){
//console.log("判断中。。。");
//先判断选择两张以上牌后返回选时,相对最前的牌隐藏,当前位置的牌不变
if(NN_Judge.putLoc.length >= 2 && NN_Judge.putLoc[NN_Judge.putLoc.length - 2] == _spid-725 && NN_Judge.putLoc[NN_Judge.putLoc.length -1] == NN_Judge.boveCardaSpid-725 && Math.abs(NN_Judge.boveCardaSpid - _spid) == 1){
NN_Judge.putLoc.splice(NN_Judge.putLoc.length - 1,1);
NN_UI.cardSelect(NN_Judge.boveCardaSpid - 725,0);
NN_Judge.boveCardaSpid = _spid;
}else {
NN_Judge.boveCardaSpid = _spid;
var a = -1;
for(var i=0;i<NN_Judge.putLoc.length;i++){
if(NN_Judge.putLoc[i] == _spid - 725){
NN_Judge.putLoc.splice(i,1);
a = 1;
if(NN_Judge.putLoc.length == 0){
if(NN_Desk.personMax == 10){
//搓摆牌提示
NN_UIP.show.onRobPutTips(0,0,0,1);
}else {
set_self(905,37,1,0,0);
set_self(769,37,1,0,0);
}
}
NN_UI.cardSelect(_spid - 725,0);
//console.log("第 "+(_spid - 725)+" 张牌下去 "+NN_Judge.putLoc);
break;
}
}
if(a == -1 && NN_Judge.putLoc.length < 3){
NN_Judge.putLoc[NN_Judge.putLoc.length] = _spid - 725;
//console.log("第 "+(_spid - 725)+" 张牌弹起 "+NN_Judge.putLoc);
NN_UI.cardSelect(_spid - 725,1);
//选牌提示
if(NN_Judge.putLoc.length > 0){
if(NN_Desk.personMax == 10){
//搓摆牌提示
NN_UIP.show.onRobPutTips(0,0,0,0);
}else {
set_self(905,37,0,0,0);
set_self(769,37,0,0,0);
}
}
}
}
}
};
function NN_MouseUp_hall(gameid,spid_down,downx,downy,spid_up,upx,upy,timelong) {
//大厅点击事件
};
function NN_MouseUp_game(gameid,spid_down,downx,downy,spid_up,upx,upy,timelong) {
//游戏桌点击弹起事件
if(spid_down == spid_up){
switch (spid_up){
case NN_Sprite.btn.noRob:
case 706://不抢
NN_SendData.robZhuang(-1);
NN_clickRecovery(spid_up);
break;
case NN_Sprite.btn.rob:
case 707://抢庄
NN_SendData.robZhuang(1);
NN_clickRecovery(spid_up);
break;
case 1802://总结算关闭按钮
case 851://总结算关闭按钮
//清除桌数据并返回大厅
NN_Exit_intoHall();
NN_clickRecovery(spid_up);
break;
case 809:
case 810:
case 811:
case 812:
case 813:
case 814:
case 815:
case 816:
case 817:
case 818://玩家押注
if(NN_Desk.state == NN_state.bet){
//var arr1 = [1,2,3,4,5,6,7,8,9,10];
if(NN_Desk.model == 5 && NN_Desk.zhuang > 0 && NN_Desk.pList[NN_Desk.myseat].betScoreAgain > 0){
//隐藏下注栏
NN_UIF.btn.betScore();
} else {
NN_SendData.betScore(spid_up - 808);
}
}
NN_clickRecovery(spid_up);
break;
case 946:
case 947:
case 948://玩家押注
if(NN_Desk.state == NN_state.bet){
NN_SendData.betScore(spid_up - 945);
}
NN_clickRecovery(spid_up);
break;
case 1122:
case 1123:
case 1124:
case 1125://玩家押注
if(NN_Desk.model_bet == 4 && NN_Desk.state == NN_state.bet){
NN_SendData.betScore(spid_up - 1122);
}
NN_clickRecovery(spid_up);
break;
case 925://游戏结束时分享好友
try{
if(NN_Judge.headViewList.length > 0){
Func.sharefinend(1,2,"","","",NN_Judge.headViewList);
}else {
Func.sharefinend(1,2,"","","",[859,860,861,862,863]);
}
}catch(e){}
NN_clickRecovery(spid_up);
break;
case 957://游戏结束时分享朋友圈
try{
if(NN_Judge.headViewList.length > 0){
Func.sharefinend(2,2,Game_Config.Share.appdownload,Game_Config.Share.title+Game_Config.Share.description);
}else {
Func.sharefinend(2,2,"","","",[859,860,861,862,863]);
}
}catch(e){}
NN_clickRecovery(spid_up);
break;
case 954://显示托管提示框
if(NN_Desk.pList[NN_Desk.myseat].isAuto == 1){
//取消托管
NN_SendData.trusteeship(-1);
} else {
NN_config.auto.mode = [2,2,2];
if(NN_config.auto.recode[1] < 1){
if(NN_Desk.betRange && NN_Desk.betRange.length > 0){
NN_config.auto.betScore = NN_Desk.betRange[NN_Desk.betRange.length - 1];
NN_config.auto.recode[1] = NN_Desk.betRange[NN_Desk.betRange.length - 1];
} else {
NN_config.auto.betScore = NN_Desk.model_bet;
NN_config.auto.recode[1] = NN_Desk.model_bet;
}
}
NN_UI.trusteeship(true);
}
break;
case 955://下注按钮显示及隐藏
if(NN_Desk.state == NN_state.bet && (NN_Desk.model == 4 || (NN_Desk.model == 5 && NN_Desk.pList[NN_Desk.myseat].cards.cards.length > 0))){
var temp = -1;
if((NN_Desk.model_bet == 10 || NN_Desk.model_bet == 5) && get_self(892,37) == 1 && get_self(892,19) < 720){
temp = 1;
}else if(NN_Desk.model_bet == 3 && get_self(924,37) == 1 && get_self(924,19) < 720){
temp = 1;
}
if(temp == -1){
NN_UIF.btn.betScore(1, 1, 1, NN_Desk.model_fast);
set_self(955,37,0,0,0);
}else {
NN_UIF.btn.betScore(0,1,0,1);
//set_self(955,43,1,0,0);
set_self(955,37,0,0,0);
}
} else {
set_self(955,37,0,0,0);
}
NN_clickRecovery(spid_up);
break;
case 956://不加注
NN_SendData.betScore(0);
NN_clickRecovery(spid_up);
break;
case 964://隐藏管提示框
case 962://取消托管
//关闭托管提示框
NN_UI.trusteeship(false);
NN_clickRecovery(spid_down);
break;
case 961://确认托管-发包
NN_SendData.trusteeship(1);
NN_clickRecovery(spid_down);
break;
case 975://托管-抢庄切换
if(NN_config.auto.robZhuang == 1){
NN_config.auto.robZhuang = -1;
set_self(968,43,2,0,0);
} else {
NN_config.auto.robZhuang = 1;
set_self(968,43,1,0,0);
}
break;
case 977://托管-下注分数增加
if(NN_Desk.betRange && NN_Desk.betRange.length > 0){
if(NN_config.auto.betScore >= NN_Desk.betRange[0] && NN_config.auto.betScore < NN_Desk.betRange[NN_Desk.betRange.length - 1]){
var temp = -1;
for(var i=0;i<NN_Desk.betRange.length;i++){
if(NN_config.auto.betScore == NN_Desk.betRange[i]){
temp = i;
break;
}
}
if(temp >= 0){
NN_config.auto.betScore = NN_Desk.betRange[temp + 1];
}
}
if(NN_config.auto.betScore >= NN_Desk.betRange[NN_Desk.betRange.length - 1]){
set_self(977,35,150,0,0);
}
}else{
if(NN_config.auto.betScore > 0 && NN_config.auto.betScore < NN_Desk.model_bet){
NN_config.auto.betScore ++;
}else{
NN_config.auto.betScore = NN_Desk.model_bet;
NN_config.auto.recode[1] = NN_Desk.model_bet;
}
if(NN_config.auto.betScore >= NN_Desk.model_bet){
set_self(977,35,150,0,0);
}
}
set_self(969,7,NN_config.auto.betScore,0,0);
set_self(969,20,String(NN_config.auto.betScore).length * 30,0,0);
set_self(969,18,get_self(979,18) + 55 - String(NN_config.auto.betScore).length * 15,0,0);
set_self(978,35,255,0,0);
break;
case 978://托管-下注分数减小
if(NN_Desk.betRange && NN_Desk.betRange.length > 0){
if(NN_config.auto.betScore > NN_Desk.betRange[0] && NN_config.auto.betScore <= NN_Desk.betRange[NN_Desk.betRange.length - 1]){
var temp = -1;
for(var i=0;i<NN_Desk.betRange.length;i++){
if(NN_config.auto.betScore == NN_Desk.betRange[i]){
temp = i;
break;
}
}
if(temp > 0){
NN_config.auto.betScore = NN_Desk.betRange[temp - 1];
}
}
if(NN_config.auto.betScore == NN_Desk.betRange[0]){
set_self(978,35,150,0,0);
}
}else{
if(NN_config.auto.betScore > 1 && NN_config.auto.betScore <= NN_Desk.model_bet){
NN_config.auto.betScore --;
}else{
NN_config.auto.betScore = 1;
NN_config.auto.recode[1] = 1;
}
if(NN_config.auto.betScore == 1){
set_self(978,35,150,0,0);
}
}
set_self(969,7,NN_config.auto.betScore,0,0);
set_self(969,20,String(NN_config.auto.betScore).length * 30,0,0);
set_self(969,18,get_self(979,18) + 55 - String(NN_config.auto.betScore).length * 15,0,0);
set_self(977,35,255,0,0);
break;
case 1112: //牌型奖励关闭
NN_UI.cardTypeReward();
break;
case 981: //复制总结算内容
NN_Desk.copyGameoverData();
NN_clickRecovery(spid_up);
break;
case 1113: //显示发牌按钮勾选
if(NN_UIF.disorderDeal.isView){
NN_UIF.disorderDeal.isView = false;
set_self(1113,43,2,0,0);
NN_UIF.disorderDeal.show();
}else {
NN_UIF.disorderDeal.isView = true;
set_self(1113,43,1,0,0);
NN_UIF.disorderDeal.show(true);
}
break;
case 1114: //发牌显示框点击
if(NN_UIF.disorderDeal.isView){
if(NN_UIF.disorderDeal.isDraw){
set_self(1115, 7, "此区域显示发给玩家所有的牌\n\n 点击显示发牌", 0, 0 );
if(NN_Desk.personMax == 10){ //10
set_self(1115, 18, get_self(1114, 18) + 80, 0, 0);
set_self(1115, 19, get_self(1114, 19) + 30, 0, 0);
}else {
set_self(1115, 18, get_self(1114, 18) + 10, 0, 0);
set_self(1115, 19, get_self(1114, 19) + 30, 0, 0);
}
set_self(1115, 37, 1, 0, 0);
NN_UIF.disorderDeal.isDraw = false;
}else {
set_self(1115, 37, 0, 0, 0);
NN_UIF.disorderDeal.isDraw = true;
}
}
break;
default:
break;
}
if(NN_Desk.state == NN_state.putCard){
if(spid_up >= 725 && spid_up <= 729 && NN_Desk.state == NN_state.rubCard && get_self(750,37) == 0 && get_self(751,37) == 0){
//牌背搓掉后不可地点牌处理
NN_Desk.state = NN_state.putCard;
}
if(spid_up == 807 || spid_up == NN_Sprite.btn.sureCattle){//确定
//判断是否已摆牌
//if(NN_Desk.pList[NN_Desk.myseat].putcard == 1){//摆牌
//NN_UI.putCard();
//return;
//}
NN_Judge_selectCard();
if(NN_Desk.pList[NN_Desk.myseat].cards.type == "wn"){
NN_SendData.putCard();
}else if(NN_Judge.putLoc.length == 3){
if(NN_Judge_putCard()){
NN_SendData.putCard();
}else {
NN_Tips.words("put_error");
}
}else if(NN_Judge.putLoc.length > 0){
NN_Tips.words("put_error");
//console.log("请点击选择三张牌选牛!");
}
//NN_SendData.putCard();
NN_clickRecovery(spid_up);
}else if(spid_up == 808 || spid_up == NN_Sprite.btn.noCattle){//无牛
if(NN_Desk.pList[NN_Desk.myseat].cards.type == "wn"){
NN_SendData.putCard();
}else{
NN_Tips.words("put_cattle");
}
NN_clickRecovery(spid_up);
}
}else if(NN_Desk.state == NN_state.over){ //总结算阶段
if(spid_up >= 1000 && spid_up <= 1004){ //吱口令
var seat = spid_up - 1000;
if(Utl.getPayCodeBySeat(seat)){
//复制到粘贴板
Utl.gameCopytext(Utl.getPayCodeBySeat(seat));
//提示复制成功
Utl.openTips("吱口令复制成功",1200);
}else {
set_self(1000+seat,37,0,0,0);
}
NN_clickRecovery(spid_up);
} else if(spid_up >= 1933 && spid_up <= 1942){
var seat = spid_up - 1933;
if(Utl.getPayCodeBySeat(seat)){
//复制到粘贴板
Utl.gameCopytext(Utl.getPayCodeBySeat(seat));
//提示复制成功
Utl.openTips("吱口令复制成功",1200);
}else {
set_self(1933 + seat,37,0,0,0);
}
NN_clickRecovery(spid_up);
}
}
}else {
if(spid_down == 706 || spid_down == 707 || spid_down == NN_Sprite.btn.noRob || spid_down == NN_Sprite.btn.rob
|| spid_down == 808 || spid_down == 807 || spid_down == NN_Sprite.btn.sureCattle || spid_down == NN_Sprite.btn.noCattle
|| spid_down == 851 || spid_down == 1802 || (spid_down >= 809 && spid_down <= 818)
|| (spid_down >= 946 && spid_down <= 948) || spid_down == 925 || spid_down == 957 || spid_down == 961 || spid_down == 962 || spid_down == 981){
NN_clickRecovery(spid_down);
}
}
if(NN_Desk.state == NN_state.rubCard){
if(spid_down == 750 || spid_down == 751){
NN_SendData.rubCard(spid_down - 747);
set_self(spid_down,37,0,0,0);
//搓牌后显示
var loc = spid_down - 747;
if(NN_Desk.pList[NN_Desk.myseat].rubcard.length == 0){
NN_Desk.pList[NN_Desk.myseat].rubcard[0] = loc;
}else if(NN_Desk.pList[NN_Desk.myseat].rubcard.length == 1){
if(NN_Desk.pList[NN_Desk.myseat].rubcard[0] != loc){
NN_Desk.pList[NN_Desk.myseat].rubcard[1] = loc;
}
//
NN_Desk.state = NN_state.putCard;
//搓牌完成-显示自动摆牌
if(NN_Desk.pList[NN_Desk.myseat].putcard != 1){
NN_putCard_autoSelection(true);
}
}
//显示
if(NN_Judge.isDealCards != 1){//判断是否发牌中
//logmessage("自己搓牌:"+NN_Desk.pList[NN_Desk.myseat].rubcard,1);
if(NN_Desk.model_fast >= 1){
if(NN_Desk.personMax == 10){
NN_UIP.card.rubCard(1,1,1,NN_Desk.model_fast, NN_Desk.myseat, loc, NN_Desk.pList[NN_Desk.myseat].cards.cards[loc]);
}else {
NN_UIF.card.rubCard(1,1,1,NN_Desk.model_fast, NN_Desk.myseat, loc, NN_Desk.pList[NN_Desk.myseat].cards.cards[loc]);
}
}else {
NN_UI.rubCard(NN_Desk.myseat,loc,NN_Desk.pList[NN_Desk.myseat].cards.cards[loc]);
}
}
}else {
NN_Judge.isRub = -1;
}
}else if(NN_Desk.state == NN_state.putCard && NN_Desk.pList[NN_Desk.myseat].putcard != 1){
if(spid_down >= 725 && spid_down <= 729){
NN_Judge.boveCardaSpid = -1;
//NN_Judge_selectCard();
//logmessage("NN_Judge.putLoc = "+NN_Judge.putLoc,1);
}
}else if(NN_Desk.state == NN_state.over){
if(spid_down == 884){//战绩列表
if(get_self(884,19) > 334 || get_self(884,21) < 143){
play_ani(1,884,19,get_self(884,19),334,0,400,0,0,0,1,0,0);
}else if(get_self(884,19)+get_self(884,21) < 477){
play_ani(1,884,19,get_self(884,19),447-get_self(884,21),0,400,0,0,0,1,0,0);
}
}
}
};
function NN_MouseUp_other(gameid,spid_down,downx,downy,spid_up,upx,upy,timelong){
//其他点击弹起事件
/*
if( Utl.getInfMode() == 1 && spid_down == spid_up){
//if(spid_down == spid_up){
switch (spid_up){
case 188://
Test.judge.times_click0 ++;
break;
case 203:
Test.judge.times_click1 ++;
break;
case 698://
Test.judge.times_click2 ++;
if(Test.judge.times_click0 == Test.judge.triggerMode[0] && Test.judge.times_click2 == Test.judge.triggerMode[2]){
//开启
if(Test.autoOpt.isOpen){
Test.autoOpt.close();
}else {
//测试用-自动操作
Test.autoOpt.open(-1);
}
}
break;
default:
Test.judge.times_click0 = 0;
Test.judge.times_click1 = 0;
Test.judge.times_click2 = 0;
break;
}
}
*/
};
function NN_Judge_putCard(){
//判断摆牌
var _cards = NN_Desk.pList[NN_Desk.myseat].cards;
if(_cards.niu < 0){
return false;
}
if(_cards.type == "wn"){
return true;
}else {
var c_val = [];
for(var i=0;i<3;i++){
c_val[i] = NN_Desk.cardList[_cards.cards[NN_Judge.putLoc[i]]].gameval;
}
if((c_val[0] + c_val[1] + c_val[2])%10 == 0){
return true;
}
}
return false;
};
//摆牌自动选中
function NN_putCard_autoSelection(isAnim/*是否动画*/){
//初始牌上下移动坐标点
if(NN_Desk.personMax == 10){ //10人局
NN_Judge.putPosY[1] = get_self(NN_Sprite.card.relvSpid[0], 19) + NN_Sprite.card.position[0][1];
NN_Judge.putPosY[0] = NN_Judge.putPosY[1] - 30;
}else{
NN_Judge.putPosY[0] = 490;
NN_Judge.putPosY[1] = 522;
}
var _cards = NN_Desk.pList[NN_Desk.myseat].cards;
var g_vallist = [];
for(var i=0;i<_cards.cards.length;i++){
g_vallist[i] = NN_Desk.cardList[_cards.cards[i]].gameval;
}
NN_Judge.putLoc = [];
if(_cards.type == "wn" || _cards.niu < 0){
return ;
}else {
var arr = [];
outer:
for(var i=0;i<3;i++){
for(var j=i+1;j<4;j++){
for(var k=j+1;k<=4;k++){
if((g_vallist[i] + g_vallist[j] + g_vallist[k])%10 == 0){
arr = [i,j,k];
break outer;
}
}
}
}
if(arr.length > 0){
NN_Judge.putLoc = arr;
for(var i=0; i<arr.length; i++){
if(get_self(725 + arr[i],19) != NN_Judge.putPosY[0]){
if(isAnim){
play_ani(1,725 + arr[i],19,get_self(725 + arr[i],19),NN_Judge.putPosY[0],0,80,0,0,0,1,0,0);
} else {
set_self(725 + arr[i],19,NN_Judge.putPosY[0],0,0);
}
}
}
if(NN_Desk.personMax == 10){ //10人局
//隐藏牌背
NN_UIP.show.onRobPutTips(0,0,0,0);
//隐藏选牌提示
NN_UIP.anim.fingerSlide();
} else {
//隐藏牌背
set_self(750,37,0,0,0);
set_self(751,37,0,0,0);
//隐藏选牌提示
set_self(905,37,0,0,0);
set_self(769,37,0,0,0);
}
}
}
};
function NN_Judge_selectCard(_putLoc){
//摆牌时判断选牌是否正常
if(_putLoc != null && _putLoc.length > 0){
for(var i=0;i<5;i++){
set_self(725+i,19,NN_Judge.putPosY[1],0,0);
for(var j=0;j<_putLoc.length;j++){
if(_putLoc[j] == i){
set_self(725+i,19,NN_Judge.putPosY[0],0,0);
}
}
}
}else {
var up_loc = [];
var temp = -1,up_num = 0;
NN_Judge.putLoc = [];
for(var i=0;i<5;i++){
if(get_self(725+i,19) < NN_Judge.putPosY[0] + 15){//牌弹起
NN_Judge.putLoc.push(i);
if(get_self(725+i,19) != NN_Judge.putPosY[0]){
play_ani(1,725+i,19,get_self(725+i,19),NN_Judge.putPosY[0],0,80,0,0,0,1,0,0);
}
}else{//牌未弹起
if(get_self(725+i,19) != NN_Judge.putPosY[1]){
play_ani(1,725+i,19,get_self(725+i,19),NN_Judge.putPosY[1],0,80,0,0,0,1,0,0);
}
/*
for(var j=0;j<NN_Judge.putLoc.length;j++){
if(NN_Judge.putLoc[j] == i){//若选牌数组中有,删掉
NN_Judge.putLoc.splice(j,1);
//console.log("选牌数组中有,删掉牌"+i);
break;
}
}
*/
}
}
return NN_Judge.putLoc.length;
}
};
function NN_clickEffect(spid){
//按钮点击效果
set_self(spid,35,200,0,0);
set_self(spid,33,105,0,0);
};
function NN_clickRecovery(spid){
//按钮点击恢复
set_self(spid,35,255,0,0);
set_self(spid,33,100,0,0);
};
+923
View File
@@ -0,0 +1,923 @@
/*data*/
var NN_GameModel = 1; //游戏网络0-单机,1网络
var NN_GameState = -1; //游戏状态
var NN_FS = []; //方位转座位
var NN_SF = []; //座位转方位
var NN_nowTimeout = 0; //当前倒计时时间-秒
var NN_nowTimeoutId = -1;//当前倒计时id
var NN_soundState = -1; //音效开关
var NN_timeout = 1; //定时器执开关
//牛牛配置参数
var NN_config = {
beanDes: "星星", //星星文字显示
roomCardDes: "房卡", //房卡显示
data : null, //配置文件数据
creatRoomMode : [-1, 1], //创建房间类型 [是否区分,当前创建房间模式]
room_card : [[[6,1],[12,2]],[[6,1],[12,2]]], //房卡类型
mult_bet : [3,3,3], //倍数类型对应下注模式
model_bet : 3, //下注模式
betRange : [], //下注范围
card_mult : [[8,2],[[-1],[1,1,1,1,1,1,1,1,2,3,4,-5,-6,-7,6,5,7,-11,-12],[1,1,2,3,4,5,6,7,8,9,10,-15,-16,-17,12,11,13,-25,-40]]], //牛八2倍类型牌型倍数
isOwnerInfinite : -1, //是否有房主无限局
isInfinite : 0, //是否无限局
force_bet: [-1, -1, -1, -1], //强制操作[是否开启, 是否抢庄,下注分数, 最小下注值]
model_bean: [-1,0,1000,10000,0.01], //星星分数显示 [1是否为星星场,星星数限制,星星数最小值,星星数最大值]
bean_mult: [1,1,50,0.02], //星星倍数相关[星星倍数,最小倍数,最大倍数,滑动间隔]
cfg_bean: [0, 0], //[抢庄限制,下注限制]
teaCost: [-1, 0, -1, [0,0], 0, [0,0]], //[是否服务费,服务费值,是否房主服务费(-1、0:无,1:可变动,2:固定服务费值), 服务费值[6局,12局], 服务费最大值模式(1:可变动,2:固定值),服务费最大值[6局,12局]];
teaCostRange: [0, 0], //茶水费范围
bean_leaveMin: [0.5, 1, [0.5, 1]], //星星场离场星星数 [离场星星,离场设置模式,[相对入场最小值百分比,相对入场最大值百分比]]
forceBetType: 2, //强制下注值:1-强制下注,2-最低下注
//托管参数
auto: {
mode: [1,1,1], //托管模式[抢庄,下注,搓摆牌]
toTime: 800, //定时延迟操作时间
fast_toTime : 700, //快版定时延迟操作时间
robZhuang: -1, //抢庄0-未操作,1-抢庄,-1-不抢
betScore: -1, //下注分数
recode: [-1,-1], //玩家操作记录
},
//托管提示框描述
des_trusteeship: "提示:托管时与最近一局的操作相同,若\n无操作时默认不抢庄,下注分数为最大值。",
ui:{
sysRoomDes: -1, //系统房间房间类型是否显示,-1为显示
}
};
var NN_errorMsg = ""; //最近一次错误信息
var NN_RevDataRecord = {
over:0, //0-断线重连时,-1-本地后台切回,1本地切回画完动画
dealCards:null, //发牌数据包记录
settlement:null,//结算数据包记录
gameover:null //总结算数据包记录
};
var NN_Judge = { //判断时用
isRub:-1, //是否搓牌成功
putLoc:[], //摆牌选中的位置
putPosY:[], //摆牌选中的位置移动Y轴坐标
boveCardaSpid:-1, //手是否移动到牌上,上次移动到哪张牌
isVibrator:-1, //是否震动
isDisband:-1, //是否解散房间
isStartWar:-1, //是否开始动画中
isOkZhuang:-1, //是否确定抢庄动画中
isDealCards:-1, //是否发牌动画中
headViewList: [], //玩家头像精灵有显示的列表
};
var NN_Desk = {};
function NN_createDesk(){
//创建游戏桌
NN_Desk = new NN_deskInfo(room_obj);
//NN_Desk.addPlayer();
//console.log("桌创建成功");
};
var NN_State = { //游戏各阶段状态
inHall:0,
inGame:1
};
var NN_state = { //游戏各阶段状态
ready:10, //准备
robZhuang:1, //抢庄
bet:2, //下注状态
betAgain:2, //下注状态
dealCard:3, //发牌
rubput:4, //搓牌和摆牌
settlement:5, //结算
over:6,
rubCard:7, //搓牌
putCard:8 //摆牌
};
//玩家游戏信息
var NN_playerInfo = function(_seat){
this.seat = _seat; //座位
this.cards = new NN_cardsInfo([]); //玩家手牌
this.isRob = 0; //-1不抢庄 1-抢
this.rubcard = []; //搓牌0-开始搓牌,1搓第一张牌,2搓牌完成
this.putcard = -1; //摆牌0-开始摆牌,1摆牌完成
this.scores = 0; //玩家赢取的分数
this.betScore = 0; //玩家下注
this.betScoreAgain = -1; //玩家加注
this.winScore = 0; //玩家赢取的分数
this.isJoin = -1; //玩家是否下注参与游戏
this.state = 1;
this.isBet = -1; //是否未下注
this.isReady = 0; //是否准备
this.isAuto = -1; //是否托管
this.betRange = [];//下注范围值
};
//游戏中桌信息
var NN_deskInfo = function(){
this.personMax = 5; //桌上最大玩家人数
this.roomtype = []; //roomtype:总局数+下注上限
this.owner = { //房主信息
seat: -1,
name: "",
id: -1
};
this.nowCount = 0; //当前游戏局数
this.records = []; //历史对战记录
this.state = -1; //状态
this.model = 1; //模式0-无牛下庄,1-每局抢庄
this.model_bet = 3; //下注模式:1-下注值为1~10,2-下注值为1-3
this.betRange = []; //下注范围
this.pairs = 0; //几副牌
this.model_mult = 1; //牌型倍数类型
this.model_fast = -1; //1-快速模式,其他值-正常模式
this.model_bean = [-1,0,1,0,0]; //星星模式
this.cardMaxMult= [7,13]; //牌型最大倍数值[牛八两倍,牛几几倍]
this.isTrusteeship = true; //是否开启托管功能
this.myseat = -1; //玩家座位
this.pList = []; //玩家列表
this.betList = []; //下注玩家列表
this.betAgainList = []; //再次下注玩家列表
this.robList = [0,0,0,0,0]; //抢庄列表
this.diceList = []; //色子点数列表
this.playercount = 0; //玩家人数
this.zhuang = -1; //庄
this.isDisorderDeal = 0; //是否显示无序发牌
this.disorderDealCards = []; //无序的发牌
this.stageTime = 0;
this.stageTime_loc = 0;
this.gameoverScores = [];
};
//各阶段时间上限
NN_deskInfo.prototype.timeout_m = {
ready: 5, //准备时间
shuffle:5, //洗牌时间
robzhuang:12, //抢庄
bet:12, //下注
betAgain:6, //再次下注
throwdice:5, //丢色子
dealcards:5, //发牌
rubput:12, //搓牌和摆牌
result:10 //显示结果
};
//各阶段时间上限
NN_deskInfo.prototype.timeout_count = {
bet:0
};
//计时器
NN_deskInfo.prototype.timeout = {
ready:0, //准备时间
shuffle:0, //洗牌时间
robzhuang:0, //抢庄
bet:0, //下注
betAgain:0, //再次下注
throwdice:0, //丢色子
dealcards:0, //发牌
rubput:0, //搓牌和摆牌
result:0 //显示结果
};
//牌信息
NN_deskInfo.prototype.cardList = nn_newCards();
//常量设置
NN_deskInfo.prototype.constant = {
cardTypeReward : [1,2,3] //特殊牌型奖励张数[五花牛,五小牛,炸弹]
};
NN_deskInfo.prototype.initData_net = function(data){
//初始化房间桌游戏数据
this.myseat = Utl.getMySeat();
//桌数据
var desk = data;
this.roomtype = desk.desk[0];
this.nowCount = desk.desk[1];
this.state = desk.desk[2];
this.model = data.desk[3]; //模式0-无牛下庄,1-每局抢庄
this.zhuang = data.desk[4];
this.robList = data.desk[5];
this.betList = data.desk[6];
if(desk.desk[7] > 0){
this.stageTime = desk.desk[7];
if(this.state == NN_state.bet){
if(data.desk[10] <= 0){
this.stageTime_loc = (new Date()).getTime() - desk.desk[7];
}
}
}
this.playercount = data.desk[8]; //玩家人数
this.constant.cardTypeReward = data.desk[9]; //特殊牌型奖励张数[五花牛,五小牛,炸弹]
this.timeout_count.bet = data.desk[10];
if(data.desk[11] != null){
this.owner.seat = data.desk[11]; //房主
}
this.model_fast = data.desk[12]; //快版
this.model_bean = data.desk[13];
this.model_bet = data.desk[14];
this.betRange = data.desk[15]; //下注范围
this.cardMaxMult = data.desk[16]; //
this.isTrusteeship = data.desk[17];
this.personMax = data.desk[18];
this.isDisorderDeal = data.desk[19];
if(this.isDisorderDeal){
this.disorderDealCards = data.desk[20];
}
this.pairs = data.desk[0][2];
this.model_mult = data.desk[0][3];
//玩家游戏信息
for(var i=0;i<desk.players.length;i++){
if(desk.players[i].length > 0){
this.pList[i] = new NN_playerInfo(i);
this.pList[i].seat = desk.players[i][0];
this.pList[i].betScore = desk.players[i][1];
this.pList[i].rubcard = desk.players[i][2];
this.pList[i].putcard = desk.players[i][3];
this.pList[i].scores = desk.players[i][4];
this.pList[i].winScore = desk.players[i][5];
this.pList[i].cards.cards = [];
if(desk.players[i][6].length > 0){
this.pList[i].cards.cards = desk.players[i][6][0];
if(desk.players[i][6][0].length > 0){
for(var j=3;j<5;j++){
if(this.pList[i].cards.cards[j] < 0){
this.pList[i].cards.cards[j] = 54;
}
}
if(desk.players[i][6].length > 1){
this.pList[i].cards.type = desk.players[i][6][1];
this.pList[i].cards.Multiple = desk.players[i][6][2];
this.pList[i].cards.niu = desk.players[i][6][3];
}
}
}
this.pList[i].isJoin = desk.players[i][7];
this.pList[i].isBet = desk.players[i][8];
this.pList[i].isAuto = desk.players[i][9];
//托管数据
if(desk.players[i][10].length > 0){
NN_config.auto.mode = data.players[i][10][0]; //托管模式[抢庄,下注,搓摆牌]
NN_config.auto.toTime = data.players[i][10][1]; //定时延迟操作时间
NN_config.auto.robZhuang = data.players[i][10][2]; //抢庄0-未操作,1-抢庄,-1-不抢
NN_config.auto.betScore = data.players[i][10][3]; //下注分数
NN_config.auto.recode = data.players[i][10][4]; //玩家操作记录
}
this.pList[i].isReady = desk.players[i][11];
this.pList[i].betScoreAgain = desk.players[i][12];
this.pList[i].betRange = desk.players[i][13];
}
}
//各阶段时间上限
if(data.to_m){
this.timeout_m.ready = data.to_m[0]; //准备时间
this.timeout_m.robzhuang = data.to_m[1];//抢庄
this.timeout_m.bet = data.to_m[2]; //下注
this.timeout_m.betAgain = data.to_m[3]; //再次下注
this.timeout_m.rubput = data.to_m[4]; //搓牌和摆牌
}
//设置方位
NN_setPositionSeat(this.myseat);
NN_GameState = NN_State.inGame;
NN_soundState = 1; //音效开关
NN_timeout = 1; //定时器执开关
NN_Judge.isDisband = -1;
NN_RevDataRecord.over = 0;
NN_RevDataRecord.dealCards = null;
NN_RevDataRecord.settlement = null;
NN_RevDataRecord.gameover = null;
//
NN_Sprite.person = this.personMax;
//通知框架游戏状态
if(Utl.getIsInfinite() == 1){
if(this.state == NN_state.ready){
Utl.setDeskStage(0);
} else {
Utl.setDeskStage(1);
}
}
};
//初始化玩家下注范围值
NN_deskInfo.prototype.initPlayerBetRange = function(arr_range){
if(arr_range){
for (var i=0; i<arr_range.length; i++){
if(this.pList[arr_range[i][0]]){
for (var j=0; j<arr_range[i][1].length; j++){
this.pList[arr_range[i][0]].betRange = arr_range[i][1].slice();
}
}
}
}
}
NN_deskInfo.prototype.isAddPlayer = function(seat){
//添加玩家信息,返回座位
if(!this.pList[seat]){
this.pList[seat] = new NN_playerInfo(seat);
this.playercount ++;
//console.log("添加玩家到座位:"+seat);
}
};
NN_deskInfo.prototype.delPlayer = function(seat){
//删除玩家信息
if(!this.pList[seat]){
this.pList[seat] = null;
this.playercount --;
//console.log("删除 "+i+"号座位的玩家 ");
return true;
}
return false;
};
//判断玩家星星数是否够
NN_deskInfo.prototype.isBeanEnough = function(seat,step){
if(seat == null){
seat = this.myseat;
}
if(this.model_bean[0] == 1 && this.pList[seat]){
var _bean = null;
if(Desk.GetPlayerBySeat(seat) && Desk.GetPlayerBySeat(seat).bean != null){
_bean = Desk.GetPlayerBySeat(seat).bean;
}else{
return false;
}
if(step == "rob"){
if(this.model_bean[3] > 0){
if(_bean >= this.model_bean[3] * this.model_bean[2]){
return true;
}
}else {
return true;
}
}else if(step == "bet" || !step){
if(this.model_bean[4] > 0){
if(_bean >= this.model_bean[4] * this.model_bean[2]){
return true;
}
}else {
return true;
}
}
return false;
}else {
return true;
}
};
//小局开始前数据初始化
NN_deskInfo.prototype.initRoundData = function(){
//桌数据
this.zhuang = -1;
this.betList = []; //下注玩家列表
this.diceList = [[],[],[],[],[]]; //色子点数列表
//抢庄列表
if(this.personMax == 10){
this.robList = [0,0,0,0,0,0,0,0,0,0];
}else {
this.robList = [0,0,0,0,0];
}
this.disorderDealCards = [];
//玩家游戏数据
for(var i=0;i<this.pList.length;i++){
if(this.pList[i]){
this.pList[i].cards = new NN_cardsInfo([]); //玩家手牌
this.pList[i].rubcard = []; //搓牌0-开始搓牌,1搓第一张牌,2搓牌完成
this.pList[i].putcard = -1; //摆牌0-开始摆牌,1摆牌完成
this.pList[i].betScore = 0; //玩家下注
this.pList[i].betScoreAgain = -1; //玩家加注注
this.pList[i].winScore = 0; //玩家赢取的分数
this.pList[i].isRob = 0; //玩家赢取的分数
this.pList[i].betRange = [];
this.pList[i].bean = null;
}
}
};
NN_deskInfo.prototype.readyStage = function(data){
//小局开始前数据初始化
this.initRoundData();
//准备阶段
for(var i=0;i<this.pList.length;i++){
if(this.pList[i]){
Utl.setPlayerPrepare(i, 0); //设置玩家未准备状态
this.pList[i].isReady = 0; //玩家准备状态
}
}
NN_Desk.state = NN_state.ready;
//通知框架进入准备阶段
Utl.setDeskStage(0);
};
NN_deskInfo.prototype.startWar = function(data){
//小局开始前数据初始化
this.initRoundData();
//通知框架已开始游戏
if(Utl.getIsInfinite() == 1){
Utl.setDeskStage(1);
}
//开始游戏
if(data.startType == 0){//抢庄
this.zhuang = -1;
}else if(data.startType >= 1){//庄不变 //倒桩
this.zhuang = data.zhuang;
}
this.state = data.state;
this.nowCount = data.nowCount;
//牌数据赋值
if(data.cards){
for(var i=0;i<data.cards.length;i++){
if(this.pList[i] && data.cards[i].length > 0){
//if(data.cards[i].length > 0){
this.pList[i].cards.cards = [54,54,54,54,54];//54-牌背
for(var j=0;j<data.cards[i][0].length;j++){
this.pList[i].cards.cards[j] = data.cards[i][0][j];
}
if(data.cards[i].length > 1){
this.pList[i].cards.type = data.cards[i][1];
this.pList[i].cards.Multiple = data.cards[i][2];
this.pList[i].cards.niu = data.cards[i][3];
}
//看牌抢庄
if(this.model == 4){
this.pList[i].rubcard[0] = 3;
}
}
}
if(this.pList[NN_Desk.myseat].cards.cards.length > 0){
Utl.changePlayerState(0);
}
//
if(data.disorderCards){
this.disorderDealCards = data.disorderCards;
}
}
if(this.zhuang >= 0){
this.pList[this.zhuang].isBet = -1;
}
//初始化玩家下注范围
if(data.pBetRange){
this.initPlayerBetRange(data.pBetRange);
}
//下注抢庄
if(this.model == 5 && this.pList[NN_Desk.myseat].isReady){
Utl.changePlayerState(0);
}
NN_Desk.stageTime_loc = (new Date()).getTime();
};
NN_deskInfo.prototype.robZhuang = function(data){
//抢庄-不抢
this.isAddPlayer(data.seat);
this.robList[data.seat] = data.isrob;
this.pList[data.seat].isRob = data.isrob;
this.pList[data.seat].isBet = -1;
if(data.seat == NN_Desk.myseat){
Utl.changePlayerState(0);
//记录玩家是否抢庄
NN_config.auto.recode[0] = data.isrob;
NN_config.auto.robZhuang = data.isrob;
}
};
NN_deskInfo.prototype.okZhuang = function(data){
//抢庄-确定庄
this.zhuang = data.zhuang;
this.robList = data.robList;
this.diceList = data.diceList;
this.state = NN_state.bet;
if(this.zhuang == NN_Desk.myseat){
Utl.changePlayerState(0);
}
this.pList[this.zhuang].isBet = -1;
if(this.model == 5 && data.cards){
for(var i=0;i<data.cards.length;i++){
if(this.pList[i] && data.cards[i].length > 0){
//if(data.cards[i].length > 0){
this.pList[i].cards.cards = [54,54,54,54,54];//54-牌背
for(var j=0;j<data.cards[i][0].length;j++){
this.pList[i].cards.cards[j] = data.cards[i][0][j];
}
if(data.cards[i].length > 1){
this.pList[i].cards.type = data.cards[i][1];
this.pList[i].cards.Multiple = data.cards[i][2];
this.pList[i].cards.niu = data.cards[i][3];
}
}
}
//this.state = NN_state.rubCard;//搓牌状态
//去除庄下注分数
this.pList[this.zhuang].betScore = 0;
}else if(this.model == 5){
//去除庄下注分数
this.pList[this.zhuang].betScore = 0;
}
//初始化玩家下注范围
if(data.pBetRange){
this.initPlayerBetRange(data.pBetRange);
}
NN_Desk.stageTime_loc = (new Date()).getTime();
};
NN_deskInfo.prototype.betScore = function(data){
//玩家下注
this.isAddPlayer(data.seat);
var seat = data.seat;
var _score = data.score; //下注分数
if(10 >= _score && _score > 0){
this.pList[seat].betScore = _score;
this.betList.push(seat);
this.pList[seat].isJoin = 1;
this.pList[data.seat].isBet = -1;
if(seat == NN_Desk.myseat){
Utl.changePlayerState(0);
//记录玩家下注分数
NN_config.auto.betScore = _score;
NN_config.auto.recode[1] = _score;
}
}
};
NN_deskInfo.prototype.dealCards = function(data){
//发牌
NN_RevDataRecord.dealCards = data;
this.state = NN_state.dealCard;//状态
if(NN_Desk.model == 5){
this.state = NN_state.robZhuang;
}
for(var i=0;i<data.cards.length;i++){
if(this.pList[i] && data.cards[i].length > 0){
//if(data.cards[i].length > 0){
this.pList[i].cards.cards = [54,54,54,54,54];//54-牌背
for(var j=0;j<data.cards[i][0].length;j++){
this.pList[i].cards.cards[j] = data.cards[i][0][j];
}
if(data.cards[i].length > 1){
this.pList[i].cards.type = data.cards[i][1];
this.pList[i].cards.Multiple = data.cards[i][2];
this.pList[i].cards.niu = data.cards[i][3];
}
//看牌抢庄
if(this.model == 4 || this.model == 5){
this.pList[i].rubcard[0] = 3;
}
}
}
if(data.disorderCards){
this.disorderDealCards = data.disorderCards;
}
if(this.model != 4 && this.model != 5){
//未下注
if(data.noBets && data.noBets.length > 0){
for(var i=0;i<data.noBets.length;i++){
this.pList[data.noBets[i]].isBet = 1;
}
}else {
for(var i=0;i<this.pList.length;i++){
if(this.pList[i] && this.pList[i].isReady && this.pList[i].cards.cards.length == 0){
if(this.model_bean[0] != 1 || (this.model_bean[0] == 1 && this.isBeanEnough(i,"bet"))){
this.pList[i].isBet = 1;
}
}
}
}
}
NN_Desk.stageTime_loc = (new Date()).getTime();
};
NN_deskInfo.prototype.betScoreAgain = function(data){
//下注抢庄玩家第二次下注
var seat = data.seat;
this.pList[seat].betScoreAgain = data.score2;
this.pList[seat].betScore = data.score;
this.betAgainList.push(seat);
this.pList[seat].isBet = -1;
};
NN_deskInfo.prototype.dealCardsAgain = function(data){
this.state = NN_state.dealCard;//状态
if(data.cards){
for(var i=0;i<data.cards.length;i++){
if(this.pList[i] && data.cards[i].length > 0){
this.pList[i].cards.cards = [54,54,54,54,54];//54-牌背
for(var j=0;j<data.cards[i][0].length;j++){
this.pList[i].cards.cards[j] = data.cards[i][0][j];
}
if(data.cards[i].length > 1){
this.pList[i].cards.type = data.cards[i][1];
this.pList[i].cards.Multiple = data.cards[i][2];
this.pList[i].cards.niu = data.cards[i][3];
}
}
}
//this.state = NN_state.rubCard;//搓牌状态
}
NN_Desk.stageTime_loc = (new Date()).getTime();
};
NN_deskInfo.prototype.rubCard = function(data){
//搓牌
var seat = data.seat;
var loc = data.cardloc; //第几张牌
if(this.pList[seat].rubcard.length == 0){
this.pList[seat].rubcard[0] = loc;
this.pList[seat].cards.cards[loc] = data.card;
}else if(this.pList[seat].rubcard.length == 1){
if(this.pList[seat].rubcard[0] != loc){
this.pList[seat].rubcard[1] = loc;
this.pList[seat].cards.cards[loc] = data.card;
if(data.cards){
this.pList[seat].cards.cards = data.cards[0];
this.pList[seat].cards.type = data.cards[1];
this.pList[seat].cards.Multiple = data.cards[2];
this.pList[seat].cards.niu = data.cards[3];
}
}
}
if(data.putcard != null){
this.pList[seat].putcard = data.putcard;
}
};
NN_deskInfo.prototype.putCard = function(data){
//摆牌
var seat = data.seat;
if(this.pList[seat].rubcard.length != 2){
this.pList[seat].rubcard = [3,4];
}
if(this.pList[seat].rubcard.length == 2 && this.pList[seat].putcard <= 0){
this.pList[seat].putcard = 1;//摆牌
}
if(seat != NN_Desk.myseat && data.cards){
this.pList[seat].cards.cards = data.cards[0];
this.pList[seat].cards.type = data.cards[1];
this.pList[seat].cards.Multiple = data.cards[2];
this.pList[seat].cards.niu = data.cards[3];
}
};
NN_deskInfo.prototype.putAllCard = function(data){
//摆牌超时所有玩家的牌
for(var i=0;i<data.cards.length;i++){
if(data.cards[i] && data.cards[i].length > 0){
//if(data.cards[i].length > 0){
//this.pList[i].rubcard = [3,4];
this.pList[i].cards.cards = data.cards[i][0];
this.pList[i].cards.type = data.cards[i][1];
this.pList[i].cards.Multiple = data.cards[i][2];
this.pList[i].cards.niu = data.cards[i][3];
//完成搓摆牌
this.pList[i].rubcard = [3,4];
//this.pList[i].putcard = 1;
}
}
};
NN_deskInfo.prototype.settlement = function(data){
//结算
NN_RevDataRecord.settlement = data;
this.state = NN_state.settlement;
for(var i=0;i<data.result.length;i++){
if(this.pList[i] && data.result[i].length > 0){
//if(data.result[i].length > 0){
this.pList[i].winScore = data.result[i][0];
this.pList[i].scores = data.result[i][1];
this.pList[i].bean = data.result[i][2];
}
}
NN_Desk.stageTime_loc = (new Date()).getTime();
};
NN_deskInfo.prototype.gameOver = function(data){
//游戏全部结束
this.gameoverScores = data.scores;
NN_RevDataRecord.gameover = data;
this.state = NN_state.over;
for(var i=0;i<data.scores.length;i++){
this.pList[data.scores[i][0]].scores = data.scores[i][1];
}
this.records = data.rounds;
//房主信息
if(data.owner){
this.owner.seat = data.owner[0];
this.owner.name = data.owner[1];
this.owner.id = data.owner[2];
}
//战绩保存本地
if(data.gamesRecord && data.gamesRecord.gameinfo1){
data.gamesRecord.gameinfo1.round = data.rounds;
this.saveLocRecord(data.gamesRecord);
}
};
//保存本地战绩
NN_deskInfo.prototype.saveLocRecord = function(data){
//
try{
if(data){
var _record = {};
var temp = [];
if(data.createtime && data.createtime.length >= 16){
temp = data.createtime.slice(11,data.createtime.length);
temp = temp.split(":");
_record.createtime = data.createtime.slice(5,10) + " " + temp[0] + ":" + temp[1];
}
if(data.makewartime && data.makewartime.length >= 16){
temp = data.makewartime.slice(11,data.makewartime.length);
temp = temp.split(":");
_record.makewartime = data.makewartime.slice(5,10) + " " + temp[0] + ":" + temp[1];
}
//当前时间
var _time = new Date();
_record.overtime = (_time.getMonth() + 1) + "-" + _time.getDate() + " " + _time.getHours() + ":" + _time.getMinutes();
_record.roomcode = data.gameinfo1.roomcode;
_record.roomtype = data.roomtype;
_record.gameinfo1 = JSON.stringify(data.gameinfo1);
//战绩保存本地
Utl.saveGradeInfo(_record);
}
}catch(e){
NN_Net.submit_error("保存本地战绩", e.stack + " 数据:" + JSON.stringify(data));
}
};
NN_deskInfo.prototype.disbandGame = function(data){
//解散房间-游戏结束
if(data.isSett == 1){
if(typeof(data.putAllCard) != "undefined"){
NN_Desk.putAllCard(data.putAllCard);
}
if(typeof(data.settlement) != "undefined"){
NN_Desk.settlement(data.settlement);
}
if(typeof(data.gameOver) != "undefined"){
NN_Desk.gameOver(data.gameOver);
}
}
};
NN_deskInfo.prototype.surrender = function(data){
//投降
//星星场
NN_Desk.model_bean[0] = 1;
NN_setPositionSeat(this.myseat);
NN_GameState = NN_State.inGame;
NN_soundState = 1; //音效开关
NN_Judge.isDisband = -1;
NN_RevDataRecord.over = 0;
NN_RevDataRecord.dealCards = null;
NN_RevDataRecord.settlement = null;
NN_RevDataRecord.gameover = null;
//房主信息
if(data.ownerseat != null){
this.owner.seat = data.ownerseat;
this.owner.name = Utl.getNicknameBySeat(data.ownerseat);
this.owner.id = Utl.getPlayeridBySeat(data.ownerseat);
}
//模拟总结算包数据 {"scores":[[0,-4],[1,4]],"rounds":[[[0,-4,0,0,0,0,0,"",1],[1,4,0,0,0,0,0,"",1],[],[],[]]],"owner":[0,"测试15576",100312]}
var _data = {
scores:[],
rounds:[],
owner :[]
};
for(var i=0; i<data.players.length; i++){
if(data.players[i] != null){
this.pList[i] = new NN_playerInfo(i);
this.pList[i].scores = data.players[i];
_data.scores.push([i, data.players[i]]);
}
}
_data.rounds = [_data.scores];
_data.owner = [this.owner.seat, this.owner.name, this.owner.id];
return _data;
};
NN_deskInfo.prototype.copyGameoverData = function(){
//复制总结算数据
var str = "";
if(NN_Desk.model_bean[0] == 1){
str += ("房号:" + Utl.getRoomcode() + "(" + NN_config.beanDes + "场)\n");
} else {
str += ("房号:" + Utl.getRoomcode() + "\n");
}
str += ("房主:" + Utl.getNicknameBySeat(this.owner.seat) + "(ID:" + Utl.getPlayeridBySeat(this.owner.seat) + ")\n");
str += "战绩:\n";
for(var i=0;i<this.pList.length;i++){
if(this.pList[i]){
str += (" " + this.pList[i].scores + " " + Utl.getNicknameBySeat(i) + "(ID:" + Utl.getPlayeridBySeat(i) + ")\n");
}
}
//调用复制接口
Func.gameCopytext(str);
//
Utl.openTips("复制成功",1000);
};
NN_deskInfo.prototype.trusteeship = function(data){
//托管
NN_Desk.pList[data.seat].isAuto = data.isAuto;
};
//游戏中桌信息
NN_deskInfo.prototype.clearData = function(){
//手动清除对象数据
this.roomtype = null; //roomtype:总局数+下注上限
this.owner = null; //房主信息
this.records = null; //历史对战记录
this.model_bean = null; //星星模式
this.pList = null; //玩家列表
this.betList = null; //下注玩家列表
this.robList = null; //抢庄列表
this.diceList = null; //色子点数列表
this.gameoverScores = null;
};
//清除牛牛游戏桌数据
NN_Exit_clearData = function(){
NN_GameState = NN_State.inHall; //游戏状态
//清除牛牛游戏相关数据
NN_FS = [];
NN_SF = [];
NN_timeout = -1;
NN_RevDataRecord.dealCards = null;
NN_RevDataRecord.settlement = null;
NN_RevDataRecord.gameover = null;
//桌数据
if(NN_Desk.clearData){
NN_Desk.clearData();
}
NN_Desk = null;
NN_Desk = {};
};
//清除牛牛游戏界面
NN_Exit_clearUI = function(){
NN_GameState = NN_State.inHall; //游戏状态
//清除桌界面
if(NN_Desk.model_fast >= 1 || NN_Desk.model == 4 || NN_Desk.model == 5){
NN_UIF.hide(); //快版
}else{
NN_UI.hide(true); //正常
}
//隐藏计算器按钮
GameUI.hideCalBtn();
//停止结算绘画Draw
NN_Draw.settlement = -1;
//清除定时器
NN_UI.ClearTimeout();
NN_UI.setCountDown();
//清除游戏音效
Func.play_wav("00101.mp3",-1);
NN_playSound();
};
//清除桌数据并返回大厅
NN_Exit_intoHall = function(){
//先清除牛牛游戏界面
//NN_Exit_clearUI();
//清除牛牛游戏桌数据
//NN_Exit_clearData();
//返回到大厅
Utl.Exit();
};
+484
View File
@@ -0,0 +1,484 @@
/*
逻辑算法等
*/
/*
扑克牌的统一编码规则:
1,牌面花色的定义 5:王 4:黑桃 3:红心 2:梅花 1:方块
2,牌面数值的定义 01-A 02-2...09:9 10:10 11:J 12:Q 13:K 98:小王99:大王
3,牌编码的定义 3位数字 第一位为牌面花色 第二三位为牌面数值
4,大小王的定义 598:小王 599:大王
101
*/
//创建牌局牌
function nn_newCards(pairs){
function cardinfo (id, flower, val, code, gameval){
//单张牌信息
var card = {};
card.id = id; //绝对id
card.flower = flower; //牌面花色
card.val = val; //牌面数值
card.code = code; //牌编码
card.gameval = gameval;//游戏中对应数值
return card;
};
if(pairs == null){
pairs = 1;
}
var cards = [];
for (var i = 1; i <= pairs; i++) {
for (var j = 1; j <= 4; j++) {
for (var k = 0; k < 13; k++) {
var id = (i - 1) * 54 + (j - 1) * 13 + k;
var code = j * 100 + k + 1;
var val = k + 1;
if(val > 10){
val = 10;
}
var pai = cardinfo(id, j, k + 1, code,val);
cards.push(pai);
};
};
//小王
var xiao = cardinfo((i - 1) * 54 + 52, 5, 98, 598,10);
cards.push(xiao);
//大王
var da = cardinfo((i - 1) * 54 + 53, 5, 99, 599,10);
cards.push(da);
};
return cards;
};
//玩家手牌信息
var NN_cardsInfo = function(_cards){
this.cards = _cards;
this.type = "";
this.Multiple = 0; //牌输赢倍数
this.niu = -1; //牛几
};
NN_cardsInfo.prototype.AnalysisType = function(cardlist,type_mult){
//分析牌型(cardlist-所有牌,type_mult-倍数类型)
if(type_mult == 3){
type_mult = 2;
}
var clist = [];
var vallist = []; //牌对应数值列表
var g_vallist = []; //游戏对应数值列表
for(var i=0;i<this.cards.length;i++){
clist[i] = cardlist[this.cards[i]];
vallist[i] = clist[i].val;
g_vallist[i] = clist[i].gameval;
}
//判断类型
//炸弹
var arr_s = vallist.sort();
if((arr_s[0] == arr_s[1] && arr_s[1] == arr_s[2] && arr_s[2] == arr_s[3])
||(arr_s[1] == arr_s[2] && arr_s[2] == arr_s[3] && arr_s[3] == arr_s[4])){
this.type = "bomb";
if(type_mult == 1){
this.Multiple = 7;
}else if(type_mult == 2){
this.Multiple = 13;
}
return;
}
//五小
if(clist[0].gameval + clist[1].gameval + clist[2].gameval + clist[3].gameval + clist[4].gameval <= 10){
this.type = "wx";
if(type_mult == 1){
this.Multiple = 6;
}else if(type_mult == 2){
this.Multiple = 12;
}
return;
}
//五花牛
if(clist[0].val >= 10 && clist[1].val >= 10 && clist[2].val >= 10 && clist[3].val >= 10 && clist[4].val >= 10){
this.type = "nmw";
if(type_mult == 1){
this.Multiple = 5;
}else if(type_mult == 2){
this.Multiple = 11;
}
return;
}
//判断牛几
var arr = [0,1,2,3,4];
outer:
for(var i=0;i<3;i++){
for(var j=i+1;j<4;j++){
for(var k=j+1;k<=4;k++){
if((g_vallist[i] + g_vallist[j] + g_vallist[k])%10 == 0){
arr.splice(k,1);
arr.splice(j,1);
arr.splice(i,1);
break outer;
}
}
}
}
if(arr.length == 2){//有牛
var a = (g_vallist[arr[0]] + g_vallist[arr[1]])%10;
this.type = "n" + a;
this.niu = a;
if(type_mult == 1){
if(a == 0){ //牛牛
this.Multiple = 4;
this.type = "nn";
this.niu = 10;
}else if(a == 9){ //牛九
this.Multiple = 3;
}else if(a == 8){ //牛八
this.Multiple = 2;
}else { //牛一~牛七
this.Multiple = 1;
}
}else if(type_mult == 2){
if(a == 0){ //牛牛
this.Multiple = 10;
this.type = "nn";
this.niu = 10;
}else{
this.Multiple = a;
}
}
return;
}else{//无牛
this.type = "wn";
this.Multiple = 1;
this.niu = 0;
return;
}
};
function NN_toCardImg(card) {
//转换成显示牌的图片对应的帧数
if(card == null){//返回牌背面帧数
return 55;
}else{//返回正面牌帧数
return card+1;
}
};
function NN_setPositionSeat(myseat) {
//设置方位和座位对应转换
var a = myseat - 0;
for(var i = 0; i < NN_Desk.personMax; i ++){
if(i + a < NN_Desk.personMax){
NN_FS[i] = i + a;//方位对应座位
NN_SF[i + a] = i;//座位对应方位
}else {
NN_FS[i] = i + a - NN_Desk.personMax;
NN_SF[i + a - NN_Desk.personMax] = i;
}
}
};
function getStrLength(str){
//获取字符串长度
var cArr = str.match(/[^\x00-\xff]/ig);
return str.length + (cArr == null ? 0 : cArr.length);
};
function subString(str, len, hasDot)
{
var newLength = 0;
var newStr = "";
var chineseRegex = /[^\x00-\xff]/g;
var singleChar = "";
var strLength = str.replace(chineseRegex,"**").length;
for(var i = 0;i < strLength;i++)
{
singleChar = str.charAt(i).toString();
if(singleChar.match(chineseRegex) != null)
{
newLength += 2;
}
else
{
newLength++;
}
if(newLength > len)
{
break;
}
newStr += singleChar;
}
if(hasDot && strLength > len)
{
newStr += "...";
}
return newStr;
}
function NN_playSound(wav_type,play_type,sex,wait_time){
//播放音效
if(wav_type != null){
if(Utl.ReadData(Utl.Config.sound) != 1){return;}
if(play_type == null){
play_type = 0;
}
if(sex == null){
sex = 1;
}
if(wait_time == null){
wait_time = 0;
}
var sound = "";
switch (wav_type){
case "bgm"://游戏背景音
sound = "00101.mp3";
break;
case "ksyx"://开始游戏
sound = "00102.mp3";
break;
case "buttom"://按钮
sound = "00051.mp3";
break;
case "xz"://下注
sound = "00145.mp3";
break;
case "djj"://第几局
sound = "00103.mp3";
break;
case "dz"://倒桩
sound = "00104.mp3";
break;
case "ysz"://摇色子
sound = "00105.mp3";
break;
case "fp"://发牌
sound = "00106.mp3";
break;
case "jb"://金币
sound = "00107.mp3";
break;
case "js"://结算
sound = "00108.mp3";
break;
case "sl"://胜利
sound = "00109.mp3";
break;
case "sb"://失败
sound = "00110.mp3";
break;
case "wn"://无牛
if(sex == 2){
sound = "00125.mp3";
}else {
sound = "00111.mp3";
}
break;
case "n1"://牛1
if(sex == 2){
sound = "00126.mp3";
} else {
sound = "00112.mp3";
}
break;
case "n2"://牛2
if(sex == 2){
sound = "00127.mp3";
} else {
sound = "00113.mp3";
}
break;
case "n3"://牛3
if(sex == 2){
sound = "00128.mp3";
} else {
sound = "00114.mp3";
}
break;v
case "n4"://牛4
if(sex == 2){
sound = "00129.mp3";
} else {
sound = "00115.mp3";
}
break;
case "n5"://牛5
if(sex == 2){
sound = "00130.mp3";
} else {
sound = "00116.mp3";
}
break;
case "n6"://牛6
if(sex == 2){
sound = "00131.mp3";
} else {
sound = "00117.mp3";
}
break;
case "n7"://牛7
if(sex == 2){
sound = "00132.mp3";
} else {
sound = "00118.mp3";
}
break;
case "n8"://牛8
if(sex == 2){
sound = "00133.mp3";
} else {
sound = "00119.mp3";
}
break;
case "n9"://牛9
if(sex == 2){
sound = "00134.mp3";
} else {
sound = "00120.mp3";
}
break;
case "nn"://牛牛
if(sex == 2){
sound = "00135.mp3";
} else {
sound = "00121.mp3";
}
break;
case "shunzi": //顺子
if(sex == 2){
sound = "00157.mp3";
} else {
sound = "00152.mp3";
}
break;
case "tonghua": //同花
if(sex == 2){
sound = "00158.mp3";
} else {
sound = "00153.mp3";
}
break;
case "hulu": //葫芦
if(sex == 2){
sound = "00156.mp3";
} else {
sound = "00151.mp3";
}
break;
case "wuxiao": //五小牛
if(sex == 2){
sound = "00137.mp3";
} else {
sound = "00123.mp3";
}
break;
case "wuhua": //五花牛
if(sex == 2){
sound = "00136.mp3";
} else {
sound = "00122.mp3";
}
break;
case "bomb": //炸弹
if(sex == 2){
sound = "00138.mp3";
} else {
sound = "00124.mp3";
}
break;
case "flush": //同花顺
if(sex == 2){
sound = "00159.mp3";
} else {
sound = "00154.mp3";
}
break;
case "bigbomb": //五炸
sound = "00155.mp3";
break;
case "qdz": //确定庄
sound = "00139.mp3";
break;
case "xp": //洗牌
sound = "00140.mp3";
break;
case "hd_zd": //炸弹
sound = "00141.mp3";
break;
case "hd_pb": //碰杯
sound = "00142.mp3";
break;
case "hd_xh": //鲜花
sound = "00143.mp3";
break;
case "hd_zj"://抓鸡
sound = "00144.mp3";
break;
case "rob": //抢
if(sex == 2){
sound = "00148.mp3";
} else {
sound = "00146.mp3";
}
break;
case "norob"://不抢
if(sex == 2){
sound = "00149.mp3";
} else {
sound = "00147.mp3";
}
break;
case "typeReward"://不抢
sound = "00150.mp3";
break;
default:
break;
}
if(!Utl.isMainScene() || sound == ""){
return;
}
if(wait_time > 0){
window.setTimeout(function(){
Func.play_wav(sound,play_type);
},wait_time);
}else {
Func.play_wav(sound,play_type);
}
}else{
//关闭音效
for(var i=102;i<=149;i++){
Func.play_wav("00"+i+".mp3",-1);
}
}
};
function uaredirect(murl){
//
try{
if(document.getElementById("bdmark") != null) {
return
}
var urlhash = window.location.hash;
if(!urlhash.match("fromapp")){
if((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iPad)/i))){
location.replace(murl);
}
}
}catch(err){}
}
//uaredirect("http://m.5ixuexiwang.com/");
+42
View File
@@ -0,0 +1,42 @@
/*
主流程操作
*/
function NN_game_start (){
//游戏开始操作
NN_UI.hide(true);
};
+589
View File
@@ -0,0 +1,589 @@
/*
网络
*/
var NN_Net = new Object();
NN_Net.ws_tcp = null;
//var NN_SendData = new Object();
var ReadData = new Object();
NN_Net.TcpMessage=function(tcpid,msg){//收Tcp包,解析
var str = msg;
var inx=str.indexOf(":");
if (inx>0){
var tou = str.substr(0,inx);//包头
if (tou == "@toconcon") {
NN_Net.OnConnect(t);//链接成功
return;
}
}
str = unescape(str);//解码
//NN_Net.RevData(str);//处理实际数据
var msg1 = JSON.parse(str);
NN_Net.DoPack(msg1);
};
NN_Net.TcpLogin=function(){//Tcp链接服务器
//ifast_tcp_open(0,"127.0.0.1:5414");
//ifast_tcp_open(0,"120.25.60.74:5411");
};
NN_Net.OnConnect = function(){
//链接成功
};
NN_Net.DoPack = function(msg){
//收包处理
// console.log("收到数据:"+JSON.stringify(msg));
if(typeof(msg) == "string"){
msg = JSON.parse(msg);
}
if(NN_Net.ExitsFunction(NN_RevData[msg.rpc])){
//try{
NN_RevData[msg.rpc](msg.data);
//}catch(e){
//alert("bug:"+e+"\n数据:"+msg.data);
//}
//普通房间准备按钮刷新显示
if(Utl.getIsInfinite() != 1){
GameUI.showReady();
}
}
};
NN_Net.ExitsFunction = function(funcName){
//判断函数名是否有效
try{
if (typeof(eval(funcName)) == "function"){
return true;
}
}catch(error){}
return false;
};
/*
*发送数据包
*/
NN_Net.SendGameData = function(_rpc,_data){
//游戏中发送游戏桌包
if(_data == null){
_data = {};
}
var msg = {
app:"youle",
route:"niuniu",
rpc:_rpc,
data:_data
}
msg.data.seat = NN_Desk.myseat;
msg.data.pid = Utl.getMyPlayerid();
//msg.data.openid = Utl.getMyOpenid();
msg.data.room = {
agentid:Utl.getAgentID(),
gameid:Utl.getGameID(),
roomcode:Utl.getRoomcode()
};
var str = JSON.stringify(msg);
//console.log("发网络包:"+str);
// str = escape(str);
// ifast_tcp_send(0,str);
Net.ws_tcp.send(str);
};
NN_Net.SendData = function(data){
//发送数据包
var str = JSON.stringify(data);
if(NN_GameModel == 0){//单机处理
}else{//网络发包
//console.log("发网络包:"+str);
//str = escape(str);
// ifast_tcp_send(0,str);
Net.ws_tcp.send(str);
}
};
NN_Net.submit_error = function(_packet,_msg){
//提交错误
if(NN_errorMsg != _msg){
NN_errorMsg = _msg;
}else {
return;
}
var msg = {
app:"youle",
route:"agent",
rpc:"submit_error",
data:{
packet:_packet,
msg:_msg,
playerid:Utl.getMyPlayerid(),
agentid:Utl.getAgentID(),
gameid:Utl.getGameID()
}
}
try{
Net.ws_tcp.send(JSON.stringify(msg));
}catch(e){}
};
//游戏发包
var NN_SendData = {};
NN_SendData.startWar = function(){
//房主开始游戏
NN_Net.SendGameData("startWar");
////console.log("发送房主开始数据");
};
NN_SendData.robZhuang = function(isrob){
//抢庄
var data = {
isrob:isrob
};
NN_Net.SendGameData("robZhuang",data);
////console.log("抢庄:"+isrob);
};
NN_SendData.betScore = function(_score){
//下注
var data = {
score:_score
};
if(NN_Desk.model == 5 && NN_Desk.zhuang >= 0){
if(NN_Desk.pList[NN_Desk.myseat].cards.cards.length > 0){
NN_Net.SendGameData("betScoreAgain",data);
}
}else {
NN_Net.SendGameData("betScore",data);
}
////console.log("下注");
};
NN_SendData.rubCard = function(_cardloc){
//搓牌
var data = {
cardloc:_cardloc
};
NN_Net.SendGameData("rubCard",data);
////console.log("搓牌");
};
NN_SendData.putCard = function(){
//摆牌确认
NN_Net.SendGameData("putCard");
////console.log("摆牌确认");
};
NN_SendData.trusteeship = function(_isAuto){
//托管
var data = {};
if(_isAuto == 1){
//托管
data.isAuto = 1; //托管状态
data.betModel = NN_Desk.model_bet; //下注模式
data.mode = NN_config.auto.mode; //托管模式
if(NN_Desk.model_fast >= 1){
data.toTime = NN_config.auto.fast_toTime; //定时延迟操作时间
}
//data.toTime = NN_config.auto.toTime; //定时延迟操作时间
data.robZhuang = NN_config.auto.robZhuang; //抢庄0-未操作,1-抢庄,-1-不抢
data.betScore = NN_config.auto.betScore; //下注分数
}else {
//取消托管
data.isAuto = -1; //托管状态
}
NN_Net.SendGameData("trusteeship",data);
//console.log("发送托管包");
};
/*
//游戏收包
*/
var NN_RevData = {};
//提示
NN_RevData.tips = function(data){
if(NN_Desk.personMax == 10){
NN_UIP.show.tips(data.tips);
}else {
NN_UIF.show.tips(data.tips);
}
};
//准备阶段
NN_RevData.readyStage = function(data){
if(Utl.getIsInfinite() == 1){
NN_Desk.readyStage(data);
NN_UI.time_start = (new Date()).getTime();
//显示
if(NN_Desk.personMax == 10){
NN_UIP.net.readyStage();
}else {
NN_UIF.net.readyStage();
}
//隐藏无序发牌
NN_UIF.disorderDeal.show();
}
};
//玩家准备
NN_RevData.playerReady = function(data){
if(Utl.getIsInfinite() == 1){
if(data.isReady){
Utl.setPlayerPrepare(data.seat, 1);
NN_Desk.pList[data.seat].isReady = 1; //玩家准备状态
}else if(data.seat == NN_Desk.myseat){//准备失败-提示星星不足
Utl.openTips("你的" + NN_config.beanDes + "数不足哦",2000);
}
}
};
NN_RevData.firstStartWar = function(data){
//第一次开战
if(data.deskwar){
NN_Desk = new NN_deskInfo();
if(data.deskwar.deskdata){
NN_Desk.initData_net(data.deskwar.deskdata);
}
if(data.deskwar.startwar){
NN_RevData.startWar(data.deskwar.startwar);
}else if(data.deskwar.readyStage){
//准备阶段
NN_RevData.readyStage(data.deskwar.readyStage);
}
}
};
NN_RevData.other_join_room = function(data){
//其他人进入房间
};
NN_RevData.startWar = function(data){
//开始游戏
var _zhuang = NN_Desk.zhuang;
NN_Desk.startWar(data);
if(data.startType == 3 && data.ramZhuang){
NN_Desk.okZhuang(data.ramZhuang);
}
NN_UI.time_start = (new Date()).getTime();
//显示
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
NN_UI.startWar(data.startType,_zhuang,data);
}else if(NN_Desk.personMax == 10){ //10快版
NN_UIP.net.startWar(data.startType, _zhuang, data);
}else {
NN_UIF.net.startWar(data.startType, _zhuang, data);
}
//判断自己星星数,不够提示
if(NN_Desk.model_bean[0] == 1 && !NN_Desk.isBeanEnough(NN_Desk.myseat,"bet")){
Utl.openTips(NN_config.beanDes + "数不够哦",2000);
}
if(data.isPass){
Utl.openTips("有玩家" + NN_config.beanDes + "数不足,跳过轮庄",2000);
}
//已准备玩家隐藏按钮
if(Utl.getIsInfinite() == 1 && Utl.getPlayerReadyState(NN_Desk.myseat)){
Utl.closeMainSceneButton();
}
//无序发牌
NN_UIF.disorderDeal.show();
};
NN_RevData.robZhuang = function(data){
//抢庄
NN_Desk.robZhuang(data);
//显示
NN_UI.playerState_leave(data.seat,false);
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
NN_UI.robZhuang(data.seat,data.isrob,1);
}else if(NN_Desk.personMax == 10){
NN_UIP.net.robZhuang(data.seat,data.isrob);
}else {
NN_UIF.net.robZhuang(data.seat,data.isrob);
}
if(data.seat == NN_Desk.myseat && data.isTips && data.isTips == "noBean"){
Utl.openTips("抢庄失败,"+ NN_config.beanDes +"数不够哦",1500);
}
};
NN_RevData.okZhuang = function(data){
//console.log("确定庄 收包时差:" + ((new Date()).getTime() - NN_UI.time_start));
//确定庄
NN_Desk.okZhuang(data);
//显示
//隐藏抢庄按钮
set_self(706,37,0,0,0);
set_self(707,37,0,0,0);
NN_UI.setCountDown();
NN_UI.time_start = (new Date()).getTime();
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
NN_TO.okZhuang.t0 = window.setTimeout(function(){
NN_TO.okZhuang.t0 = -1;
if(NN_timeout != 1){return;}
NN_Desk.state = NN_state.bet;
NN_UI.okZhuang();
},1000);
}else if(NN_Desk.personMax == 10){
NN_UIP.net.okZhuang(data);
}else {
NN_UIF.net.okZhuang(data);
}
};
NN_RevData.betScore = function(data){
//console.log("玩家下注 收包时差:" + ((new Date()).getTime() - NN_UI.time_start));
//下注
NN_Desk.betScore(data);
//显示
NN_UI.playerState_leave(data.seat,false);
if(NN_Judge.isVibrator == 1){
//取消震动
Func.canclevibrator();
NN_Judge.isVibrator = -1;
}
//if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
//if(NN_Judge.isOkZhuang != 1){
//NN_UI.betScore(data.seat,data.score,1);
//}
//if(data.seat == NN_Desk.myseat){
//NN_UI.betScoreButton(false);
//}
//}else{
if(NN_Desk.personMax == 10){
NN_UIP.net.betScore(data.seat,data.score);
}else {
NN_UIF.net.betScore(data.seat,data.score);
}
//}
if(data.seat == NN_Desk.myseat && data.isTips && data.isTips == "noBean" && NN_Desk.model != 5){
Utl.openTips("下注失败,"+ NN_config.beanDes +"数不够哦",1500);
}
};
NN_RevData.dealCards = function(data){
//console.log("发牌 收包时差:" + ((new Date()).getTime() - NN_UI.time_start));
//发牌
NN_Desk.dealCards(data);
//显示
//隐藏倒计时、提示、下注栏
NN_UI.setCountDown();
NN_Tips.words();
NN_UI.betScoreButton_anim(false);
//
NN_UI.time_start = (new Date()).getTime();
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
NN_TO.dealCards.t0 = window.setTimeout(function(){
NN_TO.dealCards.t0 = -1;
if(NN_timeout != 1){return;}
NN_UI.dealCards(data.dice,data.dealorder);
NN_Desk.state = NN_state.rubCard;
},1000);
}else if(NN_Desk.personMax == 10){
NN_UIP.net.dealCards(data.dice, data.dealorder);
}else {
NN_UIF.net.dealCards(data.dice, data.dealorder);
}
//取消震动
if(NN_Judge.isVibrator == 1){
Func.canclevibrator();
NN_Judge.isVibrator = -1;
}
};
NN_RevData.betScoreAgain = function(data){
//下注抢庄第二次下注
NN_Desk.betScoreAgain(data);
//显示
if(NN_Judge.isVibrator == 1){
//取消震动
Func.canclevibrator();
NN_Judge.isVibrator = -1;
}
if(NN_Desk.personMax == 10){
NN_UIP.net.betScore(data.seat, data.score, data.score2);
}else {
NN_UIF.net.betScore(data.seat, data.score, data.score2);
}
};
NN_RevData.dealCardsAgain = function(data){
//下注抢庄第二次下注后发牌
//console.log("发牌 收包时差:" + ((new Date()).getTime() - NN_UI.time_start));
//发牌
NN_Desk.dealCardsAgain(data);
//显示
//隐藏倒计时、提示、下注栏
NN_UI.setCountDown();
NN_Tips.words();
NN_UI.betScoreButton_anim(false);
//
if(NN_Desk.personMax == 10){
NN_UIP.net.dealCards([],data.dealorder);
}else {
NN_UIF.net.dealCards([],data.dealorder);
}
//取消震动
if(NN_Judge.isVibrator == 1){
Func.canclevibrator();
NN_Judge.isVibrator = -1;
}
NN_UI.time_start = (new Date()).getTime();
};
NN_RevData.rubCard = function(data){
//搓牌
if(NN_Desk.pList[data.seat].rubcard.length < 2 && (data.seat != NN_Desk.myseat || (data.seat == NN_Desk.myseat && NN_Desk.pList[data.seat].isAuto == 1))){
NN_Desk.rubCard(data);
//显示
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
if(NN_Judge.isDealCards != 1 ){//判断是否发牌中
NN_UI.rubCard(data.seat,data.cardloc,data.card);
}
}else if(NN_Desk.personMax == 10){
NN_UIP.net.rubCard(data.seat, data.cardloc, data.card);
} else {
NN_UIF.net.rubCard(data.seat, data.cardloc, data.card);
}
}
};
NN_RevData.putCard = function(data){
//摆牌
NN_Desk.putCard(data);
//显示
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
if(NN_Judge.isDealCards != 1){//判断是否发牌中
NN_UI.putCard_player(data.seat,1,true);
}
}else if(NN_Desk.personMax == 10){
NN_UIP.net.putCard(data.seat);
} else {
NN_UIF.net.putCard(data.seat);
}
};
NN_RevData.putAllCard = function(data){
//console.log("搓摆牌 收包时差:" + ((new Date()).getTime() - NN_UI.time_start));
//显示出玩家全部牌型
NN_Desk.putAllCard(data);
//显示
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
NN_UI.putAllCard(1);
}else if(NN_Desk.personMax == 10){
NN_UIP.net.putAllCard();
} else {
NN_UIF.net.putAllCard();
}
};
NN_RevData.settlement = function(data){
//每局-结算
NN_Desk.settlement(data);
//显示
NN_UI.time_start = (new Date()).getTime();
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
NN_TO.settlement.t0 = window.setTimeout(function(){
NN_TO.settlement.t0 = -1;
if(NN_timeout != 1){return;}
NN_UI.settlement(data.result, true);
},3000);
}else if(NN_Desk.personMax == 10){
NN_UIP.net.settlement(data.result);
} else {
NN_UIF.net.settlement(data.result);
}
//提示自己星星数不足
if(data.noBeanList && data.noBeanList.length > 0){
for(var i=0;i<data.noBeanList.length;i++){
if(data.noBeanList[i] == NN_Desk.myseat){
Utl.openTips("庄家"+ NN_config.beanDes +"数不够哦",3000);
break;
}
}
}
};
NN_RevData.gameOver = function(data){
//游戏结束-总
NN_Desk.gameOver(data);
NN_RevDataRecord.gameover = data;
//显示
var bigWiner = -1;
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
bigWiner = NN_UI.gameOver(data.scores,data.rounds,1);
//大赢家调用接口
if(bigWiner == 1){
Utl.typeForActivity(1,null);
}
}else if(NN_Desk.personMax == 10){
NN_UIP.net.gameOver(data.scores,data.rounds);
} else {
NN_UIF.net.gameOver(data.scores,data.rounds);
}
//星星场出现负分提示
if(data.isAdvance){
Utl.openTips("玩家"+ NN_config.beanDes +"数不足,游戏提前结束",0);
}
};
NN_RevData.disbandGame = function(data){
//游戏结束-解散房间
NN_Desk.disbandGame(data);
//显示
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
NN_UI.disbandGame(data);
}else if(NN_Desk.personMax == 10){
NN_UIP.net.disbandGame(data);
} else {
NN_UIF.net.disbandGame(data);
}
};
NN_RevData.surrender = function(data){
//投降
if(NN_Desk && NN_Desk.state != null){
NN_Desk = null;
}
NN_Desk = new NN_deskInfo();
var _data = NN_Desk.surrender(data);
//模拟收到总结算包
NN_RevData.gameOver(_data);
};
NN_RevData.trusteeship = function(data){
//托管
NN_Desk.trusteeship(data);
//显示
if(data.isAuto == 1){
//隐藏托管确认框
NN_UI.trusteeship(false);
}
//托管状态显示并提示
NN_UI.trusteeshipState(true,true,data.seat);
};
+429
View File
@@ -0,0 +1,429 @@
/*
测试用
*/
//|| (Utl.getIsInfinite() == 1 && Utl.getPlayerReadyState(NN_Desk.myseat) != 1)
//测试
var Test = Test || {};
//测试数据
Test.data = {
roundResult: [],
roundScores: [],
totalScores: [],
};
Test.addScoreData = function(round, seat, score){
//添加回合分数
if(!this.data.roundScores[round]){
this.data.roundScores[round] = [];
}
this.data.roundScores[round][seat] = score;
//统计玩家总分数
if(!this.data.totalScores[seat]){
this.data.totalScores[seat] = 0;
}
this.data.totalScores[seat] += score;
};
//
Test.logDataString = function(){
for(var sx in this.data){
console.log( sx + " = " + JSON.stringify(this.data[sx]));
}
};
Test.AnalysisData = function(roundNum, roundNumMax, sysCutPercent){
//有效局数
var rCount = Math.floor(Test.data.roundScores.length / roundNum);
if(roundNumMax < rCount){
rCount = roundNumMax;
}
console.log("有效"+ roundNum +"局数:" + rCount);
//统计每局玩家最后输赢分数
var pScores = [];
var sysCutScore = 0;
var arr = [];
for(var i=0;i<rCount;i++){
pScores[i] = [0,0,0,0,0];
for(var j=0;j<roundNum;j++){
pScores[i][0] += Test.data.roundScores[i*roundNum + j][0];
pScores[i][1] += Test.data.roundScores[i*roundNum + j][1];
pScores[i][2] += Test.data.roundScores[i*roundNum + j][2];
pScores[i][3] += Test.data.roundScores[i*roundNum + j][3];
pScores[i][4] += Test.data.roundScores[i*roundNum + j][4];
}
arr = pScores[i].slice();
arr.sort(function(a,b){return a<b?1:0;});
sysCutScore += Math.floor(arr[0] * sysCutPercent);
}
console.log("局数对应每局玩家输赢分数:" + JSON.stringify(pScores));
//
console.log("抽成:" + sysCutScore);
};
Test.judge = {
triggerMode : [3,1,3], //触发自动出牌模式参数
times_click0 : 0,
times_click1 : 0,
times_click2 : 0,
};
//测试用-自动操作
Test.autoOpt = {
//是否开启
isOpen : false,
//自动模式:-1默认随机 1-托管 0-只自动搓摆牌
_mode : 0,
//开启
open: function(mode){
if(mode != null){
this._mode = mode;
}else {
this._mode = 0;
}
this.isOpen = true;
//自动操作
this.timeout_myOpt(1000);
},
//关闭测试
close: function(){
this.isOpen = false;
this._mode = 0;
this.clearTimeout();
},
//自动操作延迟时间配置
cfg_time: {
},
//玩家自动操作时参数配置
cfg_val: {
robZhuang: -1, //抢庄0-未操作,1-抢庄,-1-不抢
betScore: 5 //下注分数
},
//定时器id
_toId: {
timeout_myOpt: { t1: -1 },
myOpt: {
t1: -1,
t2: -1,
t3: -1,
t4: -1,
},
robZhuang: { t1: -1 },
betScore: { t1: -1 },
rubCard: { t1: -1 },
putCard: { t1: -1 }
},
//清除定时器
clearTimeout: function(){
for(var obj_sx in this._toId){
for(var sx in obj_sx){
if(obj_sx[sx] > -1){
clearTimeout(obj_sx[sx]);
obj_sx[sx] = -1;
}
}
}
},
//定时执行自动操作
timeout_myOpt : function(_time){
if(NN_Desk && this.isOpen){
if(_time == null){
this.myOpt();
}else {
this._toId.timeout_myOpt.t1 = setTimeout(function(){
this._toId.timeout_myOpt.t1 = -1;
this.myOpt();
}.bind(this),_time);
}
}
},
//自己自动操作
myOpt : function(){
if(this.isOpen && Utl.getInfMode() == 1){
//根据不同阶段操作
if(NN_Desk.state == NN_state.robZhuang){
//抢庄
if(NN_Desk.robList[NN_Desk.myseat] == 0){ //未操作
if(this._mode == 1){ //托管
if(this.cfg_val.robZhuang != 0){
this.robZhuang(this.cfg_val.robZhuang);
} else{
this.robZhuang(-1);
}
}else if(this._mode == -1){
//随机抢庄
if(parseInt(Math.random()*2) == 1){
//不抢
this.robZhuang(-1);
}else {
//抢
this.robZhuang(1);
};
}
}
}else if(NN_Desk.state == NN_state.bet){
//下注
if(NN_Desk.zhuang != NN_Desk.myseat && NN_Desk.pList[NN_Desk.myseat].betScore <= 0){ //未操作
if(this._mode == 1){ //托管
if(this.cfg_val.betScore > 0){
this.betScore(this.cfg_val.betScore);
}else {
var _score = 1;
switch (NN_Desk.model_bet){
case 10:
_score = 5;
break;
case 5:
_score = 3;
break;
case 3:
_score = 2;
break;
default:
break;
}
this.betScore(_score);
}
}else if(this._mode == -1){ //托管
var _score = 1;
switch (NN_Desk.model_bet){
case 10:
_score = parseInt(Math.random()*10 + 1, 10);
break;
case 5:
_score = parseInt(Math.random()*5 + 1, 10);
break;
case 3:
_score = parseInt(Math.random()*3 + 1, 10);
break;
default:
break;
}
this.betScore(_score);
}
}
}else if(NN_Desk.state == NN_state.rubCard){
//搓牌
if(NN_Desk.pList[NN_Desk.myseat].rubcard.length == 0){
//搓第一张牌
this.rubCard(3);
NN_UI.rubPutUI_anim();
set_self(750,37,0,0,0);
NN_Desk.pList[NN_Desk.myseat].rubcard[0] = 3;
//定时搓第二张
this.timeout_myOpt(1000);
}else if(NN_Desk.pList[NN_Desk.myseat].rubcard.length == 1){
//搓第二张
this.rubCard(4);
NN_UI.rubPutUI_anim();
set_self(751,37,0,0,0);
if(NN_Desk.pList[NN_Desk.myseat].rubcard[0] != 4){
NN_Desk.pList[NN_Desk.myseat].rubcard[1] = 4;
}
//搓牌完成-显示自动摆牌
NN_putCard_autoSelection(true);
NN_Desk.state = NN_state.putCard;
//定时摆牌
this.timeout_myOpt(1000);
}
}else if(NN_Desk.state == NN_state.putCard){
//摆牌
this.putCard();
}
}
},
robZhuang : function(isrob, _time){
//抢庄
var data = {
isrob:isrob
};
if(_time == null){
NN_Net.SendGameData("robZhuang",data);
}else {
this._toId.robZhuang.t1 = setTimeout(function(){
this._toId.robZhuang.t1 = -1;
NN_Net.SendGameData("robZhuang",data);
}.bind(this),_time);
}
//console.log("自动 抢庄:"+isrob);
},
betScore : function(_score, _time){
//下注
var data = {
score:_score
};
if(_time == null){
NN_Net.SendGameData("betScore",data);
}else {
this._toId.betScore.t1 = setTimeout(function(){
this._toId.betScore.t1 = -1;
NN_Net.SendGameData("betScore",data);
}.bind(this),_time);
}
//console.log("自动 下注:"+ _score);
},
rubCard : function(_cardloc, _time){
//搓牌
var data = {
cardloc:_cardloc
};
if(_time == null){
NN_Net.SendGameData("rubCard",data);
}else {
this._toId.rubCard.t1 = setTimeout(function(){
this._toId.rubCard.t1 = -1;
NN_Net.SendGameData("rubCard",data);
}.bind(this),_time);
}
//console.log("自动 搓牌:"+ _cardloc);
},
putCard : function(_time){
//摆牌确认
if(_time == null){
NN_Net.SendGameData("putCard");
}else{
this._toId.putCard.t1 = setTimeout(function(){
this._toId.putCard.t1 = -1;
NN_Net.SendGameData("putCard");
}.bind(this),_time);
}
//console.log("自动 摆牌确认");
},
};
//调试用
var Debug = Debug || {};
//循环定时id
Debug.ivId = {
ui_rubput: -1
};
//普通定时id
Debug.toId = {
};
//循环定时调试判断函数
Debug.intervalFunc = function(){
//搓摆牌界面
if(NN_Desk && NN_Desk.state != null){
if(NN_Desk.state == NN_state.rubput || NN_Desk.state == NN_state.rubCard || NN_Desk.state == NN_state.putCard){
//清除定时器
Debug.clear();
//开启
//console.log("开启 搓摆牌界面调试定时器");
this.ivId.ui_rubput = setInterval(function(){
if((NN_Desk.pList[NN_Desk.myseat].betScore > 0 || NN_Desk.myseat == NN_Desk.zhuang) && (NN_Desk.state == NN_state.rubput || NN_Desk.state == NN_state.rubCard || NN_Desk.state == NN_state.putCard)){
if(Debug.ui_rubput()){
//console.log("搓摆牌界面异常,提交错误信息");
//清除定时器
Debug.clear();
}
}else{
//清除定时器
Debug.clear();
}
}, 500);
}
}
};
//循环定时调试判断函数
Debug.clear = function(){
if(Debug.ivId.ui_rubput > -1){
//
//console.log("清除搓摆牌界面调试定时器");
clearInterval(Debug.ivId.ui_rubput);
Debug.ivId.ui_rubput = -1;
}
};
//搓摆牌界面异常判断
Debug.ui_rubput = function(){
var upNum = 0; //牌弹起数量
for(var i=0;i<5;i++){
if(get_self(725+i,19) < 522){
upNum ++;
}
}
//
var backNum = 0; //牌背
if(get_self(750,37) == 1){
backNum ++;
}
if(get_self(751,37) == 1){
backNum ++;
}
//
if(NN_Desk.state == NN_state.rubCard){
if(upNum > 0){
NN_Net.submit_error("搓摆牌显示异常,状态:" + NN_Desk.state," 牌弹起数:" + upNum + " #牌背数:" + backNum + " #搓牌:" + NN_Desk.pList[NN_Desk.myseat].rubcard + " #摆牌:" + NN_Desk.pList[NN_Desk.myseat].putcard);
return true;
}
} else if(NN_Desk.state == NN_state.putCard){
if(backNum > 0){
NN_Net.submit_error("搓摆牌显示异常,状态:" + NN_Desk.state," 牌弹起数:" + upNum + " #牌背数:" + backNum + " #搓牌:" + NN_Desk.pList[NN_Desk.myseat].rubcard + " #摆牌:" + NN_Desk.pList[NN_Desk.myseat].putcard);
return true;
}
}
if (upNum > 0 && backNum > 0){
NN_Net.submit_error("搓摆牌显示异常,状态:" + NN_Desk.state," 牌弹起数:" + upNum + " #牌背数:" + backNum + " #搓牌:" + NN_Desk.pList[NN_Desk.myseat].rubcard + " #摆牌:" + NN_Desk.pList[NN_Desk.myseat].putcard);
return true;
}
return false;
};
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff