Files
youlegames/codes/games/server/games/Doudizhu/mod.js
2026-02-04 23:47:45 +08:00

384 lines
11 KiB
JavaScript

var mod_doudizhu= mod_doudizhu || cls_mod.new("mod_doudizhu", "doudizhu", youle_app);
////////////////////////////////
min_loadJsFile("games7/Doudizhu/class.import.js", function(){
min_loadJsFile("games7/Doudizhu/class.export.js", function(){
min_loadJsFile("games7/Doudizhu/class.aset2.ddz.js", function(){
min_loadJsFile("games7/Doudizhu/class.card2.ddz.js", function(){
min_loadJsFile("games7/Doudizhu/desk.ddz.js", function(){
});
});
});
});
});
min_loadJsFile("games7/Doudizhu/arith/arith.ddz.playcards.js", function(){
min_loadJsFile("games7/Doudizhu/arith/arith.ddz.score.js", function(){
min_loadJsFile("games7/Doudizhu/send/ddz.send.js", function(){
min_loadJsFile("games7/Doudizhu/save/ddz.save.js", function(){
min_loadJsFile("games7/Doudizhu/arith/arith.ddz.robot.js", function(){
});
});
});
});
});
min_loadJsFile("games7/Doudizhu/method/method.ddz.enough.js", function(){
min_loadJsFile("games7/Doudizhu/method/method.ddz.time.js", function(){
});
});
min_loadJsFile("games7/Doudizhu/process/process.ddz.begin.js", function(){
min_loadJsFile("games7/Doudizhu/process/process.ddz.dealcards.js", function(){
min_loadJsFile("games7/Doudizhu/process/process.ddz.end.js", function(){
min_loadJsFile("games7/Doudizhu/process/process.ddz.lootbanket.js", function(){
min_loadJsFile("games7/Doudizhu/process/process.ddz.playcards.js", function(){
min_loadJsFile("games7/Doudizhu/process/process.ddz.help_play.js", function(){
min_loadJsFile("games7/Doudizhu/process/process.ddz.control.js", function(){
});
});
});
});
});
});
});
mod_doudizhu.import = null;
mod_doudizhu.export = null;
mod_doudizhu.zidong = 1;
mod_doudizhu.sudu = 1;
//抢庄
mod_doudizhu.lootbanket = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var score = pack.data.score;
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
if(o_aset.playerlist[3][seat]!=-1){//抢了庄
return ;
}
if(o_aset.stage!=0){ //是不是抢庄阶段
return ;
}
if(score<o_aset.down_score[0]&&score>0){ //
return ;
}
clearTimeout(o_desk.timer.ds[1]);
//
o_desk.flow.lootbanket(seat,score);
}
//加倍
mod_doudizhu.more = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var more = pack.data.more;
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
if(o_aset.playerlist[4][seat]!=-1){//加倍了
return ;
}
if(o_aset.stage!=1){ //是不是加倍阶段
return ;
}
clearTimeout(o_desk.timer.dingshi[seat]);
//
o_desk.flow.more(seat,more);
}
//包庄
mod_doudizhu.baozhuang = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var more = pack.data.more;
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
if(o_aset.playerlist[4][seat]!=-1){//加倍了
return ;
}
if(o_aset.stage!=1){ //是不是加倍阶段
return ;
}
clearTimeout(o_desk.timer.dingshi[seat]);
//
o_desk.flow.baozhuang(seat,more);
}
//出牌
mod_doudizhu.playcards = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var cards = pack.data.cards;
var caozuo = pack.data.caozuo;
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
if(o_aset.stage!=2){ //是不是当前阶段
return ;
}
if(caozuo!=o_aset.caozuo){//是不是当前操作
return;
}
if(seat!=o_aset.control){//控制权不是自己
return;
}
//
o_desk.flow.playcards(seat,cards);
}
//不出
mod_doudizhu.display = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var caozuo = pack.data.caozuo;
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
if(o_aset.stage!=2){ //是不是当前阶段
return ;
}
if(caozuo!=o_aset.caozuo){//是不是当前操作
return;
}
if(seat!=o_aset.control){//控制权不是自己
return;
}
if(seat==o_aset.maxplayer){//自己是最大
return ;
}
//
o_desk.flow.display(seat);
}
//托管
mod_doudizhu.help_play = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
if(o_aset.stage!=2){ //不是打牌
return;
}
//
o_desk.flow.help_play(seat);
}
//明牌
mod_doudizhu.mingpai = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
if(o_aset.stage!=2){ //是不是当前阶段
return ;
}
var result = false ;
for(var i=0;i<o_aset.maxman;i++){
if(o_desk.data.mp_zt[i]==1){
result = true ;
}
}
//之前叫过地主了
if(result){
return ;
}
//
o_desk.flow.mingpai(seat);
}
//准备
mod_doudizhu.ready = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var mingpai = pack.data.mingpai;
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
//通过房间找牌桌
var o_desk = o_room.o_desk;
if (!o_desk){
//没找到牌桌
return;
}
//找到牌桌后一定要调用牌桌的.method.save_receivepack方法
o_desk.debug.save_receivepack(pack, seat, playerid);
if(o_room.battlestate!=1){ ////不是开战
return;
}
//获取当前小局对象
var o_aset=o_desk.method.CurrAset();
//
if(o_aset.playerlist[1][seat]!=-1){//是不是准备状态
return;
}
if(o_desk.o_room.infinite!=1){
if(o_aset.stage!=3){ //是不是当前阶段
return ;
}
}
var guo = false;
if(mingpai==1){
for(var i=0;i<3;i++){
if(o_desk.data.mp_zt[i]==1){
guo = true;
}
}
if(guo){
return;
}
}
clearTimeout(o_room.o_desk.timer.own[seat]);
//
o_desk.flow.ready(seat,mingpai);
}
//玩家准备
mod_doudizhu.wx_zb = function(pack){
var agentid = pack.data.agentid;
var playerid = parseInt(pack.data.playerid);
var gameid = pack.data.gameid;
var roomcode = parseInt(pack.data.roomcode);
var seat = parseInt(pack.data.seat);
var o_room = mod_doudizhu.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
if (!o_room){
return;
}
var o_desk = o_room.o_desk;
if (!o_desk){
return;
}
var o_aset = o_desk.method.CurrAset();
o_desk.debug.save_receivepack(pack, seat, playerid);
//
if(o_room.seatlist[seat].gameinfo.isprepare == 0){
o_room.seatlist[seat].gameinfo.isprepare = 1;
}
mod_doudizhu.export.player_prepare(o_room, seat);
o_desk.debug.save_sendpack(pack, seat, playerid);
}