Files
youle_cocos/projects/majiang_jx/js/flow/put/chu_pai.js
T
joywayerandClaude Opus 4.8 7ab748919a 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>
2026-06-28 11:55:13 +08:00

585 lines
16 KiB
JavaScript

//出牌点击
d.click_chu = function (spid_up) {
if (Desk.stage == 0 || !RoomFunc.clickpai_before(spid_up)) {
return;
}
else if (get_self(spid_up, 19, 0, 0, 0) > 585) {
play_ani123(0, spid_up, 19);
d.show_my13card();
d.show_14card();
set_self(spid_up, 19, 585, 0, 0);
d.chu_cilck = 0;
d.chu_move = 0;
}
else if (get_self(spid_up, 19, 0, 0, 0) == 585 || get_self(spid_up, 19) < 585 && get_self(spid_up, 19) >= (585 - get_self(spid_up, 21) + 40) && d.chu_move == 1) {
play_ani123(0, spid_up, 19);
d.show_my13card();
d.show_14card();
d.chu_cilck = spid_up;
d.chu_move = 0;
d.last_id=spid_up;
if(d.Ting_Tip.length && d.Ting_Tip.length>=0 || d.Ting_ui.length && d.Ting_ui.length>=0 && d.user_ctrl[2]==C_Player.seat && get_self(2489,37)==1){
set_self(2489,37,0,0,0);
set_self(2392,37,0,0,0);
d.ting_statu=-1;
}
if(d.Ting_Tip.length<=0 || d.Ting_ui.length<=0 && d.user_ctrl[2]==C_Player.seat){
d.ting_statu=0;
}
d.zhenshu = get_self(spid_up,43,0,0,0);
for (var i = 0; i < 19; i++) {
if (get_self(936 + i, 21, 0, 0, 0) > 120) {
set_self(936 + i, 19, 585, 0, 0);
}
}
if (d.clicks_an > 50 || !RoomFunc.Overtime_chupai()) {
var l = d.Ting_Tip.length;
if (l > 0) {
var pos = d.Ting_Tip.indexOf(get_self(spid_up, 43));
if (pos>-1) {
d.tips_tp = d.ting_pai.tip_ting[pos];
if (d.tips_tp.length > 0) {
d.show_hu_card(d.tips_tp);
}
}
else {
set_group(237, 37, 0, 0, 0);
}
}
} else {
set_group(237, 37, 0, 0, 0);
}
set_self(spid_up, 19, 565, 0, 0);
for (var i = 0; i < 14; i++) {
play_ani123(0, 1143 + i, 19);
}
set_group(212, 37, 0, 0, 0);
Utl.playSound("00" + 170 + ".mp3");
d.click_id = spid_up;
}
else if (d.chu_cilck == spid_up && get_self(spid_up, 19, 0, 0, 0) <= 565 || d.chu_cilck == 0 && get_self(spid_up, 19, 0, 0, 0) <= (585 - get_self(spid_up, 21) + 40))
{d.click_chu_down(spid_up, spid_up);}
}
//滑动出牌
d.move_chu = function (spid, offmovey, offmovex) {
if (offmovey == 0 && offmovex == 0 || Desk.stage == 0 || d.replay || !RoomFunc.clickpai_before(spid)) {
return;
}
if(d.final_hu[0]>-1 && d.continue_hu==0)
{return;}
if(RoomFunc.Overtime_chupai()&&d.last_id!=spid)
{return;}
if (d.status == 2 && spid >= 936 && spid <= 954 && get_self(spid, 44, 0, 0, 0) == 201 && get_self(spid, 21, 0, 0, 0) > 120 && d.user_ctrl[2] == C_Player.seat && d.click_ban == 1 && d.gang_option == 0 && d.final_hu[0] == -1) {
var y = get_self(spid, 19, 0, 0, 0);// && Math.abs(offmovey)>10
if (offmovey < 0 && y + offmovey >= 370 || offmovey > 0 && y + offmovey <= 585 + 70) {
set_self(spid, 19, offmovey, 1, 0);
//set_self(spid, 18, offmovex, 1, 0);
}
d.chu_cilck = 0;
d.chu_move = 1;
if (offmovey < 0 && Math.abs(offmovey) >= 20) {
play_ani123(0, spid, 19);
for (var i = 0; i < 19; i++) {
if (get_self(936 + i, 21, 0, 0, 0) > 120 && 936 + i != spid) {
set_self(936 + i, 19, 585, 0, 0);
}
}
}
}
}
//出牌成功
d.click_chu_down = function (spid_up, spid1) {
if (Desk.stage == 0 || !RoomFunc.clickpai_before(spid_up)) {
return;
}
if(d.final_hu[0]>-1 && d.continue_hu==0)
{return;}
if(d.last_id>0 && spid1==d.last_id)
{spid_up=spid1;d.last_id=0;}
if (d.status == 2 && d.user_ctrl[2] == C_Player.seat && d.click_ban == 1 && spid_up >= 936 && spid_up <= 954 && get_self(spid_up, 21, 0, 0, 0) > 120 && d.gang_option == 0 && d.final_hu[0] == -1) {
d.chu_cilck = 0;
d.chu_move = 0;
d.zhenshu=0;
if(d.Ting_Tip.length && d.Ting_Tip.length>=0 || d.Ting_ui.length && d.Ting_ui.length>=0 && d.user_ctrl[2]==C_Player.seat && get_self(2489,37)==1){
set_self(2489,37,0,0,0);
set_self(2392,37,0,0,0);
//set_self(2489,18,-200,0,0);
d.ting_statu=-1;
}
if(d.Ting_Tip.length<=0 || d.Ting_ui.length<=0 && d.user_ctrl[2]==C_Player.seat){
d.ting_statu=0;
}
if (get_self(spid_up, 19, 0, 0, 0) <= 565) {
set_group(206, 37, 0, 0, 0);
console.log(spid_up + "chu" + get_self(spid_up, 43, 0, 0, 0));
for (var i = 0; i < 14; i++) {
play_ani123(0, 1143 + i, 19);
}
play_ani123(0, spid_up, 18);
play_ani123(0, spid_up, 19);
set_group(212, 37, 0, 0, 0);
var put_pos = 0;
var n = 0;
for (var i = 0; i < 19; i++) {
if (get_self(936 + i, 21, 0, 0, 0) > 120 && get_self(936 + i, 37, 0, 0, 0) == 1) {
if (936 + i == spid_up) {
put_pos = n;
set_self(spid_up, 37, 0, 0, 0);
set_self(spid_up, 19, 585, 0, 0);
break;
}
n += 1;
}
}
var sex = C_Player.sex || 1;
var hand = d.a.arrange_pai(d.hand[C_Player.seat][0]);
var throw_card = 0;
var f = 0;
if (put_pos == hand.length && d.user_ctrl[3] > 0) {
throw_card = d.user_ctrl[3];
}
else {
throw_card = hand[put_pos];
if (d.user_ctrl[3] > 0) {
hand = hand.concat(d.user_ctrl[3]);
}
hand.splice(put_pos, 1);
d.hand[C_Player.seat][0] = d.c(hand);
d.ord(d.hand[C_Player.seat][0]);
}
f = throw_card;
/*
if (f > 0) {
d.sea[C_Player.seat][d.sea[C_Player.seat].length] = throw_card;
//d.show_sea();
var sid = 60 + (sex - 1) * 60 + f;
var tou = "00";
if (String(sid).length == 2) {
tou = "000";
}
else if (String(sid).length == 3) {
tou = "00";
}
if (sid) {
Utl.playSound(tou + sid + ".mp3");
}
}*/
if (d.replay == 0) {
var send = {
"app": "youle",
"route": d.route,
"rpc": "put",
"data": {
"agentid": GameData.AgentId,
"gameid": GameData.GameId,
"playerid": C_Player.playerid,
"roomcode": Desk.roomcode,
"seat": C_Player.seat,
"put_pos": put_pos
}
};
Net.ws_tcp.send(JSON.stringify(send));
}
//Utl.playSound("00306.mp3");
d.click_ban = 0;
d.user_ctrl[2] = -1;
//set_self(1289, 37, 0, 0, 0);
//set_self(1289, 7, -1);
for (var i = 0; i < 4; i++) {
d.act_put[2 + i] = 0;
}
d.act_put[2] = spid_up;
d.act[0] = 1;
d.act[1] = C_Player.seat;
d.act[2] = 1;
d.baoting[4] = [];
d.click_id = 0;
d.show_my13card(); //d.show_put_card_act(1);
//d.show_putcard();
set_self(2673, 37, 0, 0, 0);//等一等
set_group(237, 37, 0, 0, 0);
for (var i = 0; i < 4; i++) {
set_self(376 + i, 35, 255, 0, 0);
}
d.Ting_ui = d.hu_Judge(d.hand[C_Player.seat], d.jing);
d.Ting_Tip = [];
d.clicks_an = 0;
}
else if (get_self(spid_up, 19, 0, 0, 0) < 585) {
d.show_my13card();
d.show_14card();
set_self(spid_up, 19, 565, 0, 0);
d.chu_cilck = spid_up;
d.clicks_an = 0;
}
else if (get_self(spid_up, 19, 0, 0, 0) >= 585) {
d.show_my13card();
d.show_14card();
set_self(spid_up, 19, 585, 0, 0);
d.clicks_an = 0;
}
}
}
d.show_putcard = function () {
if (Desk.stage != 0 && d.recon != 1 && d.backstage != 1 && d.act[0] == 1)
{
if (Desk.roomtype[19]) {
return ;
}
var seat = d.act[1];
var z_b = [[550,365],[934,211],[550,60],[200,214]];
var throw_card_spid = 2916;
var persons = [4, 4, 3, 2];
var person = persons[Desk.roomtype[6]] || 4;
if (person == 2) {
z_b = [[550,365],[550,60],[550,60],[550,60]];
}
if(C_Player.seat!=seat){
AM.cls_id(throw_card_spid);
AM.add(throw_card_spid).wait(15, function () {
set_self(throw_card_spid, 37, 0, 0, 0);
set_self(throw_card_spid - 1, 37, 0, 0, 0);
d.show_sea();
//Utl.playSound("00306.mp3");
AM.cls_id(throw_card_spid);
Utl.playSound("00305.mp3");
}).start();
}else{
d.show_sea();
AM.cls_id(throw_card_spid);
AM.add(throw_card_spid).wait(3,function(){
Utl.playSound("00305.mp3");
AM.cls_id(throw_card_spid);
}).start();
}
if(C_Player.seat!=seat){
set_self(throw_card_spid,37,1,0,0);
}
set_self(throw_card_spid, 18, z_b[d.pos[seat]][0]+29, 0, 0);
set_self(throw_card_spid, 19, z_b[d.pos[seat]][1]+28, 0, 0);
set_self(throw_card_spid, 43, d.act[3][0], 0, 0);
}
}
//显示出牌动画
d.show_put_card_act = function (off) {
if (Desk.stage != 0 && d.recon != 1 && d.backstage != 1 && d.act[0] == 1 && d.act[2] > 0)
////牌桌阶段 0->未开局 1->已开局
{
d.rep[0] += 1;
var seat = d.act[1];
var freexy = d.get_sea_freexy(seat, off);
var throw_card_spid = freexy[2];
if (seat == C_Player.seat) {
set_self(throw_card_spid, 18, get_self(d.act_put[2], 18, 0, 0, 0), 0, 0);
set_self(throw_card_spid, 19, get_self(d.act_put[2], 19, 0, 0, 0), 0, 0);
set_self(throw_card_spid, 43, get_self(d.act_put[2], 43, 0, 0, 0), 0, 0);
}
else {
var throw_card_spid0 = d.get_rand_3handcard(seat)[0];
set_self(throw_card_spid, 18, get_self(throw_card_spid0, 18, 0, 0, 0), 0, 0);
set_self(throw_card_spid, 19, get_self(throw_card_spid0, 19, 0, 0, 0), 0, 0);
set_self(throw_card_spid, 43, d.throw_card, 0, 0);
}
d.act_put[2] = throw_card_spid;
set_self(throw_card_spid, 37, 1, 0, 0);
var light_pai_rec = [503, 500, 503, 501];
var rec_w = [41, 44, 41, 44];
var rec_h = [55, 44, 55, 44];
set_self(throw_card_spid, 1, light_pai_rec[d.pos[seat]], 0, 0);
set_self(throw_card_spid, 20, rec_w[d.pos[seat]], 0, 0);
set_self(throw_card_spid, 21, rec_h[d.pos[seat]], 0, 0);
if (freexy[5]) {
var throw_card_spid1 = freexy[5];
if (seat == C_Player.seat) {
set_self(throw_card_spid1, 18, get_self(d.act_put[5], 18, 0, 0, 0), 0, 0);
set_self(throw_card_spid1, 19, get_self(d.act_put[5], 19, 0, 0, 0), 0, 0);
set_self(throw_card_spid1, 43, get_self(d.act_put[5], 43, 0, 0, 0), 0, 0);
}
else {
var throw_card_spid0 = d.get_rand_3handcard(seat)[0];
set_self(throw_card_spid1, 18, get_self(throw_card_spid0, 18, 0, 0, 0), 0, 0);
set_self(throw_card_spid1, 19, get_self(throw_card_spid0, 19, 0, 0, 0), 0, 0);
set_self(throw_card_spid1, 43, d.throw_card, 0, 0);
}
d.act_put[5] = throw_card_spid1;
set_self(throw_card_spid1, 37, 1, 0, 0);
var light_pai_rec = [503, 500, 503, 501];
var rec_w = [41, 44, 41, 44];
var rec_h = [55, 44, 55, 44];
set_self(throw_card_spid1, 1, light_pai_rec[d.pos[seat]], 0, 0);
set_self(throw_card_spid1, 20, rec_w[d.pos[seat]], 0, 0);
set_self(throw_card_spid1, 21, rec_h[d.pos[seat]], 0, 0);
}
d.act[2] = -1;
d.click_ban = 0;
d.show_card_wall();
d.put_time = 11 + 6;
set_self(throw_card_spid, 37, 0, 0, 0);
if (d.act_put[5] > 0) {
set_self(d.act_put[5], 37, 0, 0, 0);
}
d.card_14 = 0;
d.act[2] = 0;
d.act_put[2] = -1;
d.act_put[5] = -1;
d.show_my13card();
d.show_you13card();
d.show_shang13card();
d.show_zuo13card();
d.show_14card();
//d.show_sea();
d.click_ban = 1;
d.put_time = 0;
}
}
//停止出牌动画
d.put_card_doend = function (id, sx, allend) {
if (id > 0 && Desk.stage != 0 && d.recon != 1 && d.backstage != 1 && d.act[2] != 0) {
var ban = 0;
var throw_card_spid = d.act_put[2];
if (d.act_put[2] > -1 && id == throw_card_spid && sx == 18 && allend == 1 || d.act_put[2] > -1 && id == throw_card_spid && sx == 19 && allend == 1) {
set_self(throw_card_spid, 37, 0, 0, 0);
if (d.act_put[5] > 0) {
set_self(d.act_put[5], 37, 0, 0, 0);
}
var x_throw = get_self(throw_card_spid, 18, 0, 0, 0), y_throw = get_self(throw_card_spid, 19, 0, 0, 0);
if (d.user_ctrl[2] == C_Player.seat) {
d.click_ban = 1;
}
{
//d.show_sea();
if (d.card_14 > 0 && d.act[1] == C_Player.seat) {
var l = d.hand[C_Player.seat][0].length;
var seat = C_Player.seat;
var l0 = d.hand[seat][0].length * 89 + 89 + 20;
for (var j = 1; j < d.hand[seat].length; j++) {
var l1 = d.hand[seat][j].length;
l0 = l0 + l1 * 48 + 5;
}
var l_s = 1280 - l0 - 10;
if (l_s < 0) {
l_s = 0;
}
var pos = l_s + 89 * l;
for (var i = 0; i < l; i++) {
if (d.hand[C_Player.seat][0][i] > get_self(d.card_14, 43, 0, 0, 0)) {
pos = 89 * i + l_s - 38;
}
}
if (pos != l_s + 89 * l) {
set_self(d.card_14, 19, 541, 0, 0);
}
var x0 = get_self(d.card_14, 18, 0, 0, 0);
var t = parseInt((x0 - pos) / 4);
if (t <= 50) {
t = 50;
}
play_ani123(1, d.card_14, 18, x0, pos, t, 1);
d.act_put[2] = -1;
}
else {
ban = 1;
}
}
}
if (ban == 1 || id == d.card_14 && sx == 18 && allend == 1) {
play_ani123(0, throw_card_spid, 18);
play_ani123(0, throw_card_spid, 19);
play_ani123(0, d.card_14, 18);
if (d.act_put[5] > 0) {
play_ani123(0, d.act_put[5], 18);
play_ani123(0, d.act_put[5], 19);
}
d.card_14 = 0;
d.act[2] = 0;
d.act_put[2] = -1;
d.act_put[5] = -1;
d.show_my13card();
d.show_you13card();
d.show_shang13card();
d.show_zuo13card();
d.show_14card();
//d.show_sea();
d.click_ban = 1;
d.put_time = 0;
}
}
if (id > 0 && Desk.stage != 0 && d.recon != 1) {
if (id == d.card_14 && sx == 19 && allend == 1) {
set_self(d.card_14, 19, 585, 0, 0);
}
if (id == 1848 && sx == 19 && allend == 1) {
d.jing_time = 0;
//play_ani123(0, 1848, 18);
//play_ani123(0, 1848, 19);
//set_self(1848, 37, 0, 0, 0);
}
}
if (id > 0) {//var id1s=[1954,1955,1956,1957];
//var id2s=[1958,1959,1960,1961];
if (id == 1954 && sx == 19 && allend == 1) {
play_ani123(0, 1954, 19);
play_ani123(0, 1958, 19);
set_self(1954, 37, 0);
set_self(1958, 37, 0);
}
if (id == 1954 && sx == 19 && allend == 1) {
play_ani123(0, 1955, 19);
play_ani123(0, 1959, 19);
set_self(1955, 37, 0);
set_self(1959, 37, 0);
}
if (id == 1954 && sx == 19 && allend == 1) {
play_ani123(0, 1956, 19);
play_ani123(0, 1960, 19);
set_self(1956, 37, 0);
set_self(1960, 37, 0);
}
if (id == 1954 && sx == 19 && allend == 1) {
play_ani123(0, 1957, 19);
play_ani123(0, 1961, 19);
set_self(1957, 37, 0);
set_self(1961, 37, 0);
}
}
}
//出牌胡牌提示相关
d.get_other_pai = function (get_card, throw_card) {
var my_card = [];
for (var i = 0; i < d.hand[C_Player.seat].length; i++) {
my_card = my_card.concat(d.hand[C_Player.seat][i]);
}
for (var i = 0; i < 4; i++) {
my_card = my_card.concat(d.sea[i]);
}
if (throw_card) {
var pos = my_card.indexOf(throw_card);
if (pos != -1) {
my_card.splice(pos, 1);
}
}
if (get_card) {
var pos = my_card.indexOf(get_card);
if (pos != -1) {
my_card.splice(pos, 1);
}
}
for (var i = 0; i < 4; i++) {
if (i != C_Player.seat) {
for (var j = 1; j < d.hand[i].length; j++) {
if (d.hand[i][j] && d.hand[i][j][0]) {
my_card = my_card.concat(d.hand[i][j]);
}
}
}
}
d.ord(my_card);
var arr_Contrast = [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29];
arr_Contrast = arr_Contrast.concat(arr_Contrast).concat(arr_Contrast).concat(arr_Contrast);
for (var i = 0; i < arr_Contrast.length; i++) {
var pos = my_card.indexOf(arr_Contrast[i]);
if (pos != -1) {
arr_Contrast[i] = 99;
my_card[pos] = 0;
}
}
d.ord(arr_Contrast);
var pos = arr_Contrast.indexOf(99);
if (pos != -1) {
arr_Contrast.splice(pos);
}
return arr_Contrast;
}
//移入出牌
d.set_click_chu = function (spid, movex, movey) {
if (get_self(2232, 37) || !RoomFunc.Overtime_chupai()) {
return;
}
var spid_in = d.get_click_id(movex, movey);
if (d.replay == 0 && spid_in && spid_in != d.last_id) {
d.last_id = spid_in;
d.clicks_an = -1;
var spid_up = spid_in;//d.user_ctrl[2] == C_Player.seat &&
if (d.status == 2 && spid_up >= 936 && spid_up <= 954 && get_self(spid_up, 21, 0, 0, 0) > 120 && d.gang_option == 0 && d.get_hua() == 0) {
d.chu_cilck = spid_up;
d.click_chu(spid_up);
}
}
else if (d.replay == 0 && spid_in && spid_in == d.last_id && d.clicks_an >= 0) {
d.clicks_an = -1;
}
//在move事件中,得出鼠标所在小区域。并返回对应牌的精灵id
}
//出牌区域
d.get_click_id=function (movex,movey)
{
//在move事件中,得出鼠标所在小区域。并返回对应牌的精灵id
var r=d.get_click_ids_xywh();
var spid_in=0;
var l=d.click_ids.length;
if(l>0 && movex>r[0] && movex<r[2] && movey>r[1] && movey<r[3])
{var n=parseInt((movex-r[0])/89);
spid_in=d.click_ids[0]+n;
}
else if(l>0 && d.card_14>0 && get_self(d.card_14,37) && movex>get_self(d.card_14,18,0,0) && movex<get_self(d.card_14,18,0,0)+89 && movey>r[1] && movey<r[3])
{spid_in=d.card_14;
}
if(get_self(spid_in,41,0,0,0)==0 || get_self(42,37) || get_self(189,37))
{spid_in=0;}
return spid_in;
}
//出牌区域
d.get_click_ids_xywh=function ()
{
//在d.show_my13card函数中设置出牌的区域和小区域
if(d.final_hu[0]>-1)
{d.click_ids=[];
}
var l=d.click_ids.length;
var r=[0,0,0,0];
if(l>0)
{var id0=d.click_ids[0];
var id1=d.click_ids[l-1];
var x=get_self(id0,18,0,0,0);
var y=get_self(id0,19,0,0,0);y=585;
var w=get_self(id0,20,0,0,0);
var h=get_self(id0,21,0,0,0);
var x1=get_self(id1,18,0,0,0);
r[0]=x;
r[1]=y;
r[2]=x1+w;
r[3]=y+h;
}
return r;
}