Commit df26c9c8 authored by nanahira's avatar nanahira

Merge branch 'master' of ../srvpro

parents 707698ef 1a600d3a
......@@ -409,8 +409,8 @@
"bad_user_name": "请输入正确的用户名",
"server_full": "服务器已经爆满,请稍候再试",
"too_much_connection": "同时开启的客户端数量过多 ",
"banned_ip_login": "您的账号已被封禁",
"banned_user_login": "您的账号已被封禁",
"banned_ip_login": "您的账号已被封禁。如果您没有进行违规操作且用的是流量网络,可能过几小时就好。是IP撞了。",
"banned_user_login": "您的账号已被封禁。如果您没有进行违规操作且用的是流量网络,可能过几小时就好。是IP撞了。",
"bad_name_level3": "您的用户名存在不适当的内容",
"bad_name_level2": "您的用户名存在不适当的内容",
"bad_name_level1": "您的用户名存在不适当的内容,请注意更改",
......
......@@ -35,7 +35,7 @@
"underscore": "^1.11.0",
"underscore.string": "^3.3.6",
"ws": "^8.9.0",
"ygopro-deck-encode": "^1.0.9"
"ygopro-deck-encode": "^1.0.14"
},
"devDependencies": {
"@types/bunyan": "^1.8.8",
......@@ -3697,9 +3697,9 @@
}
},
"node_modules/ygopro-deck-encode": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.9.tgz",
"integrity": "sha512-2aw/Lr8Sg4cPXKgq71Zk/GQPTZy5GhmviptVHWqMGEW0E2qTaxwpGmsQAN2Q4OWaK1lP+3g3bZt9BaqmWYZQSw==",
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.14.tgz",
"integrity": "sha512-Q64f8U+okLBDKHw02eRYsdDMpALhYa55k0BhFqZ5k4ntRpPKFNvM9sNEbBlg2bmyi6LCf3rlEmISmLtlx9uDeA==",
"license": "MIT"
}
},
......@@ -6461,9 +6461,9 @@
}
},
"ygopro-deck-encode": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.9.tgz",
"integrity": "sha512-2aw/Lr8Sg4cPXKgq71Zk/GQPTZy5GhmviptVHWqMGEW0E2qTaxwpGmsQAN2Q4OWaK1lP+3g3bZt9BaqmWYZQSw=="
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.14.tgz",
"integrity": "sha512-Q64f8U+okLBDKHw02eRYsdDMpALhYa55k0BhFqZ5k4ntRpPKFNvM9sNEbBlg2bmyi6LCf3rlEmISmLtlx9uDeA=="
}
}
}
......@@ -37,7 +37,7 @@
"underscore": "^1.11.0",
"underscore.string": "^3.3.6",
"ws": "^8.9.0",
"ygopro-deck-encode": "^1.0.9"
"ygopro-deck-encode": "^1.0.14"
},
"license": "AGPL-3.0",
"scripts": {
......
......@@ -1722,6 +1722,7 @@ class Room
form_data.append 'start', @start_time
form_data.append 'end', end_time
form_data.append 'arena', @arena
form_data.append 'nonce', Math.random().toString()
post_score_process = () ->
axios.post settings.modules.arena_mode.post_score, form_data,
......@@ -3858,14 +3859,10 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)->
else
log.warn("GET ATHLETIC FAIL", client.name, athleticCheckResult.message)
if settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.deck_check
client_deck_obj = YGOProDeck.fromUpdateDeckPayload(buffer)
if settings.modules.challonge.enabled and client.challonge_info and client.challonge_info.deckbuf
trim_deckbuf = (buf) ->
mainc = buf.readUInt32LE(0)
sidec = buf.readUInt32LE(4)
# take first (2 + mainc + sidec) * 4 bytes
return buf.slice(0, (2 + mainc + sidec) * 4)
deckbuf_from_challonge = Buffer.from(client.challonge_info.deckbuf, "base64")
if trim_deckbuf(deckbuf_from_challonge).equals(trim_deckbuf(buffer))
deck_obj = YGOProDeck.fromUpdateDeckPayload(Buffer.from(client.challonge_info.deckbuf, "base64"))
if deck_obj.isEqual(client_deck_obj, { ignoreOrder: true })
#log.info("deck ok: " + client.name)
return deck_ok("${deck_correct_part1} #{client.challonge_info.name} ${deck_correct_part2}")
else
......@@ -3874,16 +3871,14 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)->
else
decks = await fs.promises.readdir(settings.modules.tournament_mode.deck_path)
if decks.length
found_deck=false
for deck in decks
if deck_name_match(deck, client.name)
found_deck=deck
found_deck = decks.find((deck) -> deck_name_match(deck, client.name))
if found_deck
deck_text = await fs.promises.readFile(settings.modules.tournament_mode.deck_path+found_deck,{encoding:"ASCII"})
deck_obj = YGOProDeck.fromYdkString(deck_text)
deck_main=deck_obj.main.concat(deck_obj.extra)
deck_side=deck_obj.side
if _.isEqual(buff_main, deck_main) and _.isEqual(buff_side, deck_side)
# put extra cards to main
deck_obj.main = deck_obj.main.concat(deck_obj.extra)
deck_obj.extra = []
if client_deck_obj.isEqual(deck_obj, { ignoreOrder: true })
#log.info("deck ok: " + client.name)
return deck_ok("${deck_correct_part1} #{found_deck} ${deck_correct_part2}")
else
......
......@@ -2229,6 +2229,7 @@
form_data.append('start', this.start_time);
form_data.append('end', end_time);
form_data.append('arena', this.arena);
form_data.append('nonce', Math.random().toString());
post_score_process = function() {
return axios.post(settings.modules.arena_mode.post_score, form_data, {
validateStatus: function(status) {
......@@ -5043,7 +5044,7 @@
});
ygopro.ctos_follow('UPDATE_DECK', true, async function(buffer, info, client, server, datas) {
var athleticCheckResult, buff_main, buff_side, deck, deck_bad, deck_main, deck_obj, deck_ok, deck_side, deck_text, deckbuf_from_challonge, decks, found_deck, i, j, len, oppo_pos, recover_player_data, recoveredDeck, room, trim_deckbuf, win_pos;
var athleticCheckResult, buff_main, buff_side, client_deck_obj, deck_bad, deck_obj, deck_ok, deck_text, decks, found_deck, i, oppo_pos, recover_player_data, recoveredDeck, room, win_pos;
if (settings.modules.reconnect.enabled && client.pre_reconnecting) {
if (!CLIENT_is_able_to_reconnect(client) && !CLIENT_is_able_to_kick_reconnect(client)) {
ygopro.stoc_send_chat(client, "${reconnect_failed}", ygopro.constants.COLORS.RED);
......@@ -5166,16 +5167,12 @@
}
}
if (settings.modules.tournament_mode.enabled && settings.modules.tournament_mode.deck_check) {
client_deck_obj = YGOProDeck.fromUpdateDeckPayload(buffer);
if (settings.modules.challonge.enabled && client.challonge_info && client.challonge_info.deckbuf) {
trim_deckbuf = function(buf) {
var mainc, sidec;
mainc = buf.readUInt32LE(0);
sidec = buf.readUInt32LE(4);
// take first (2 + mainc + sidec) * 4 bytes
return buf.slice(0, (2 + mainc + sidec) * 4);
};
deckbuf_from_challonge = Buffer.from(client.challonge_info.deckbuf, "base64");
if (trim_deckbuf(deckbuf_from_challonge).equals(trim_deckbuf(buffer))) {
deck_obj = YGOProDeck.fromUpdateDeckPayload(Buffer.from(client.challonge_info.deckbuf, "base64"));
if (deck_obj.isEqual(client_deck_obj, {
ignoreOrder: true
})) {
//log.info("deck ok: " + client.name)
return deck_ok(`\${deck_correct_part1} ${client.challonge_info.name} \${deck_correct_part2}`);
} else {
......@@ -5185,21 +5182,20 @@
} else {
decks = (await fs.promises.readdir(settings.modules.tournament_mode.deck_path));
if (decks.length) {
found_deck = false;
for (j = 0, len = decks.length; j < len; j++) {
deck = decks[j];
if (deck_name_match(deck, client.name)) {
found_deck = deck;
}
}
found_deck = decks.find(function(deck) {
return deck_name_match(deck, client.name);
});
if (found_deck) {
deck_text = (await fs.promises.readFile(settings.modules.tournament_mode.deck_path + found_deck, {
encoding: "ASCII"
}));
deck_obj = YGOProDeck.fromYdkString(deck_text);
deck_main = deck_obj.main.concat(deck_obj.extra);
deck_side = deck_obj.side;
if (_.isEqual(buff_main, deck_main) && _.isEqual(buff_side, deck_side)) {
// put extra cards to main
deck_obj.main = deck_obj.main.concat(deck_obj.extra);
deck_obj.extra = [];
if (client_deck_obj.isEqual(deck_obj, {
ignoreOrder: true
})) {
//log.info("deck ok: " + client.name)
return deck_ok(`\${deck_correct_part1} ${found_deck} \${deck_correct_part2}`);
} else {
......
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