Commit 27a922fd authored by JoyJ's avatar JoyJ

AI update

parent 57d97b02
ygopro.ctos_follow_after( ygopro.ctos_follow_after("UPDATE_DECK", true, async (buffer, info, client, server, datas) => {
"UPDATE_DECK",
true,
async (buffer, info, client, server, datas) => {
var room = ROOM_all[client.rid]; var room = ROOM_all[client.rid];
if (!room) { if (!room) {
return null; return null;
...@@ -9,19 +6,30 @@ ygopro.ctos_follow_after( ...@@ -9,19 +6,30 @@ ygopro.ctos_follow_after(
if (room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN) { if (room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN) {
return null; return null;
} }
if (client.is_local) { // if (client.is_local) {
return null; // return null;
} // }
var room_parameters = room.name.split("#", 2)[0].split(/[,,]/); //房间名的参数 var room_parameters = room.name.split('#', 2)[0].split(/[,,]/); //房间名的参数
var MirrorMode = false; var MirrorMode = false;
for (var parameter of room_parameters) { for(var parameter of room_parameters) {
if (parameter.toUpperCase() == "MM") { if (parameter.toUpperCase() == "MM") { //关键字[MM]
//关键字[MM]
MirrorMode = true; MirrorMode = true;
break; break;
} }
} }
var AllowSelfDeck = false;
for(var parameter of room_parameters) {
if (parameter.toUpperCase() == "MD") { //关键字[MD]
AllowSelfDeck = true;
break;
}
}
if (AllowSelfDeck && client.name.substr(0,4)=="[MM]") {
return;
}
var deckindex = global.dc_decks_index; var deckindex = global.dc_decks_index;
if (MirrorMode) { if (MirrorMode) {
if (room.mm_deck == undefined) { if (room.mm_deck == undefined) {
...@@ -32,13 +40,14 @@ ygopro.ctos_follow_after( ...@@ -32,13 +40,14 @@ ygopro.ctos_follow_after(
room.mm_deck = global.dc_decks_main[deckindex]; room.mm_deck = global.dc_decks_main[deckindex];
room.mm_side = global.dc_decks_side[deckindex]; room.mm_side = global.dc_decks_side[deckindex];
room.mm_md5 = global.dc_decks_md5[deckindex]; room.mm_md5 = global.dc_decks_md5[deckindex];
MirrorMode = false; MirrorMode=false;
} }
client.main = room.mm_deck; client.main = room.mm_deck;
client.side = room.mm_side; client.side = room.mm_side;
var compat_deckbuf = client.main.concat(client.side); var compat_deckbuf = client.main.concat(client.side);
client.deckMd5 = room.mm_md5; client.deckMd5 = room.mm_md5;
} else { }
else {
global.dc_decks_index++; global.dc_decks_index++;
if (global.dc_decks_index == global.dc_decks_index_max) { if (global.dc_decks_index == global.dc_decks_index_max) {
global.dc_decks_index = 0; global.dc_decks_index = 0;
...@@ -52,21 +61,18 @@ ygopro.ctos_follow_after( ...@@ -52,21 +61,18 @@ ygopro.ctos_follow_after(
ygopro.ctos_send(server, "UPDATE_DECK", { ygopro.ctos_send(server, "UPDATE_DECK", {
mainc: client.main.length, mainc: client.main.length,
sidec: client.side.length, sidec: client.side.length,
deckbuf: compat_deckbuf, deckbuf: compat_deckbuf
}); });
if (MirrorMode) { if (MirrorMode) {
return true; return true;
} }
var sql = var sql = "SELECT * FROM RandomDecks AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM RandomDecks)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;"
"SELECT * FROM RandomDecks AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM RandomDecks)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;";
global.mysqldb.query(sql, null, function (err, result) { global.mysqldb.query(sql, null, function(err, result) {
if (err) { if (err) {
global.mysqldb = mysql.createConnection( global.mysqldb=mysql.createConnection(global.settings.modules.cloud_replay.mysql);
global.settings.modules.cloud_replay.mysql
);
log.info(err); log.info(err);
return; return;
} }
...@@ -84,10 +90,12 @@ ygopro.ctos_follow_after( ...@@ -84,10 +90,12 @@ ygopro.ctos_follow_after(
if (!side) { if (!side) {
buff_main.push(code); buff_main.push(code);
valid = true; valid = true;
} else { }
else {
buff_side.push(code); buff_side.push(code);
} }
} else if (cards[i].substring(0, 5) == "!side") { }
else if (cards[i].substring(0, 5) == "!side") {
side = true; side = true;
} }
} }
...@@ -98,16 +106,9 @@ ygopro.ctos_follow_after( ...@@ -98,16 +106,9 @@ ygopro.ctos_follow_after(
} }
}); });
return true; return true;
} });
);
ygopro.ctos_follow_before("CHAT", true, async function ( ygopro.ctos_follow_before('CHAT', true, async function(buffer, info, client, server, datas) {
buffer,
info,
client,
server,
datas
) {
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
return; return;
...@@ -126,139 +127,86 @@ ygopro.ctos_follow_before("CHAT", true, async function ( ...@@ -126,139 +127,86 @@ ygopro.ctos_follow_before("CHAT", true, async function (
msg = msg.substring(7); msg = msg.substring(7);
msg = _.trim(msg); msg = _.trim(msg);
if (msg.length < 2) { if (msg.length < 2) {
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "请以【/report 举报原因】的格式写明举报原因", ygopro.constants.COLORS.YELLOW);
client,
"请以【/report 举报原因】的格式写明举报原因",
ygopro.constants.COLORS.YELLOW
);
return; return;
} }
//"CREATE TABLE DCReportServer(reporterIp varchar(255),reportDate DateTime)"; //"CREATE TABLE DCReportServer(reporterIp varchar(255),reportDate DateTime)";
var sql = var sql = "SELECT * FROM `DCReportServer` WHERE reporterIp=? AND reportDate > date_sub(now(), interval 5 minute)";
"SELECT * FROM `DCReportServer` WHERE reporterIp=? AND reportDate > date_sub(now(), interval 5 minute)";
sqlParams = [client.ip]; sqlParams = [client.ip];
mysqldb.query(sql, sqlParams, function (err, result) { mysqldb.query(sql, sqlParams, function(err, result) {
if (err) { if (err) {
mysql.createConnection(settings.modules.cloud_replay.mysql); mysql.createConnection(settings.modules.cloud_replay.mysql);
log.info(err); log.info(err);
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "服务器出现异常,请重试", ygopro.constants.COLORS.RED);
client,
"服务器出现异常,请重试",
ygopro.constants.COLORS.RED
);
return; return;
} }
if (result.length > 0) { if (result.length > 0) {
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "服务器端的举报在5分钟内只能进行一次,请稍后再试", ygopro.constants.COLORS.YELLOW);
client,
"服务器端的举报在5分钟内只能进行一次,请稍后再试",
ygopro.constants.COLORS.YELLOW
);
return; return;
} }
sql = "INSERT INTO `DCReportServer` VALUES(?,now())"; sql = "INSERT INTO `DCReportServer` VALUES(?,now())";
sqlParams = [client.ip]; sqlParams = [client.ip];
mysqldb.query(sql, sqlParams, function (err, result) { mysqldb.query(sql, sqlParams, function(err, result) {
if (err) { if (err) {
global.mysqldb = mysql.createConnection( global.mysqldb=mysql.createConnection(global.settings.modules.cloud_replay.mysql);
global.settings.modules.cloud_replay.mysql
);
log.info(err); log.info(err);
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "出现异常,请重试", ygopro.constants.COLORS.RED);
client,
"出现异常,请重试",
ygopro.constants.COLORS.RED
);
return; return;
} }
sql = "SELECT * FROM DCDeckNoChangeList WHERE deckMd5=?"; sql = "SELECT * FROM DCDeckNoChangeList WHERE deckMd5=?";
sqlParams = [md5]; sqlParams = [md5];
mysqldb.query(sql, sqlParams, function (err, result) { mysqldb.query(sql, sqlParams, function(err, result) {
if (err) { if (err) {
global.mysqldb = mysql.createConnection( global.mysqldb=mysql.createConnection(global.settings.modules.cloud_replay.mysql);
global.settings.modules.cloud_replay.mysql
);
log.info(err); log.info(err);
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "例外库无法检索卡组,提交失败", ygopro.constants.COLORS.RED);
client,
"例外库无法检索卡组,提交失败",
ygopro.constants.COLORS.RED
);
return; return;
} }
if (result.length > 0) { if (result.length > 0) {
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "此卡组已被判定为无需修改,提交失败", ygopro.constants.COLORS.RED);
client,
"此卡组已被判定为无需修改,提交失败",
ygopro.constants.COLORS.RED
);
return; return;
} }
msg = msg = (new Date().toString()) + " - 由服务器端提交(提交者:" + client.name + "\r\n\r\n" + msg;
new Date().toString() +
" - 由服务器端提交(提交者:" +
client.name +
"\r\n\r\n" +
msg;
sql = "INSERT INTO DCReport VALUES(?,?,?,'')"; sql = "INSERT INTO DCReport VALUES(?,?,?,'')";
sqlParams = [md5, client.ip, msg]; sqlParams = [md5, client.ip, msg];
mysqldb.query(sql, sqlParams, function (err, result) { mysqldb.query(sql, sqlParams, function(err, result) {
if (err) { if (err) {
global.mysqldb = mysql.createConnection( global.mysqldb=mysql.createConnection(global.settings.modules.cloud_replay.mysql);
global.settings.modules.cloud_replay.mysql
);
log.info(err); log.info(err);
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "提交失败", ygopro.constants.COLORS.RED);
client,
"提交失败",
ygopro.constants.COLORS.RED
);
return; return;
} }
ygopro.stoc_send_chat( ygopro.stoc_send_chat(client, "提交成功,感谢您的举报。\n举报ID为"+md5+",可用编年史客户端查看并修改。", ygopro.constants.COLORS.YELLOW);
client,
"提交成功,感谢您的举报。\n举报ID为" +
md5 +
",可用编年史客户端查看并修改。",
ygopro.constants.COLORS.YELLOW
);
}); });
}); });
}); });
}); });
return true; return true;
}); });
ygopro.stoc_follow_after( ygopro.stoc_follow_after("DUEL_START", false, (buffer, info, client, server, datas) => {
"DUEL_START",
false,
(buffer, info, client, server, datas) => {
var room = ROOM_all[client.rid]; var room = ROOM_all[client.rid];
room.mm_deck = null; room.mm_deck = null;
} });
);
ygopro.stoc_follow_after( ygopro.stoc_follow_after("CHANGE_SIDE", true, (buffer, info, client, server, datas) => {
"CHANGE_SIDE",
true,
(buffer, info, client, server, datas) => {
var room = ROOM_all[client.rid]; var room = ROOM_all[client.rid];
if (!room) { if (!room) {
return false; return false;
} }
if (client.is_local) { // if (client.is_local) {
return false; // return false;
} // }
var room_parameters = room.name.split("#", 2)[0].split(/[,,]/); //房间名的参数 var room_parameters = room.name.split('#', 2)[0].split(/[,,]/); //房间名的参数
var MirrorMode = false; var MirrorMode = false;
for (var parameter of room_parameters) { for(var parameter of room_parameters) {
if (parameter.toUpperCase() == "MM") { if (parameter.toUpperCase() == "MM") { //关键字[MM]
//关键字[MM]
MirrorMode = true; MirrorMode = true;
break; break;
} }
} }
var deckindex = global.dc_decks_index; var deckindex = global.dc_decks_index;
if (MirrorMode) { if (MirrorMode) {
if (room.mm_deck == null) { if (room.mm_deck == null) {
...@@ -269,13 +217,14 @@ ygopro.stoc_follow_after( ...@@ -269,13 +217,14 @@ ygopro.stoc_follow_after(
room.mm_deck = global.dc_decks_main[deckindex]; room.mm_deck = global.dc_decks_main[deckindex];
room.mm_side = global.dc_decks_side[deckindex]; room.mm_side = global.dc_decks_side[deckindex];
room.mm_md5 = global.dc_decks_md5[deckindex]; room.mm_md5 = global.dc_decks_md5[deckindex];
MirrorMode = false; MirrorMode=false;
} }
client.main = room.mm_deck; client.main = room.mm_deck;
client.side = room.mm_side; client.side = room.mm_side;
var compat_deckbuf = client.main.concat(client.side); var compat_deckbuf = client.main.concat(client.side);
client.deckMd5 = room.mm_md5; client.deckMd5 = room.mm_md5;
} else { }
else {
global.dc_decks_index++; global.dc_decks_index++;
if (global.dc_decks_index == global.dc_decks_index_max) { if (global.dc_decks_index == global.dc_decks_index_max) {
global.dc_decks_index = 0; global.dc_decks_index = 0;
...@@ -289,21 +238,18 @@ ygopro.stoc_follow_after( ...@@ -289,21 +238,18 @@ ygopro.stoc_follow_after(
ygopro.ctos_send(server, "UPDATE_DECK", { ygopro.ctos_send(server, "UPDATE_DECK", {
mainc: client.main.length, mainc: client.main.length,
sidec: client.side.length, sidec: client.side.length,
deckbuf: compat_deckbuf, deckbuf: compat_deckbuf
}); });
if (MirrorMode) { if (MirrorMode) {
return true; return true;
} }
var sql = var sql = "SELECT * FROM RandomDecks AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM RandomDecks)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;"
"SELECT * FROM RandomDecks AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM RandomDecks)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;";
global.mysqldb.query(sql, null, function (err, result) { global.mysqldb.query(sql, null, function(err, result) {
if (err) { if (err) {
global.mysqldb = mysql.createConnection( global.mysqldb=mysql.createConnection(global.settings.modules.cloud_replay.mysql);
global.settings.modules.cloud_replay.mysql
);
log.info(err); log.info(err);
return; return;
} }
...@@ -321,10 +267,12 @@ ygopro.stoc_follow_after( ...@@ -321,10 +267,12 @@ ygopro.stoc_follow_after(
if (!side) { if (!side) {
buff_main.push(code); buff_main.push(code);
valid = true; valid = true;
} else { }
else {
buff_side.push(code); buff_side.push(code);
} }
} else if (cards[i].substring(0, 5) == "!side") { }
else if (cards[i].substring(0, 5) == "!side") {
side = true; side = true;
} }
} }
...@@ -335,5 +283,4 @@ ygopro.stoc_follow_after( ...@@ -335,5 +283,4 @@ ygopro.stoc_follow_after(
} }
}); });
return true; return true;
} });
);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment