Commit 15bfd325 authored by nanahira's avatar nanahira

Merge branch 'master' of ../srvpro

parents a674c8b9 e8491dbe
This diff is collapsed.
This diff is collapsed.
......@@ -20,7 +20,6 @@
"ip6addr": "^0.2.5",
"jszip": "^3.5.0",
"load-json-file": "^6.2.0",
"lzma": "^2.3.2",
"moment": "^2.29.1",
"mustache": "^4.2.0",
"mysql": "^2.18.1",
......@@ -36,14 +35,14 @@
"underscore": "^1.11.0",
"underscore.string": "^3.3.6",
"ws": "^8.9.0",
"ygopro-deck-encode": "^1.0.14"
"ygopro-deck-encode": "^1.0.15",
"ygopro-yrp-encode": "^1.0.1"
},
"devDependencies": {
"@types/async": "^3.2.25",
"@types/bunyan": "^1.8.8",
"@types/formidable": "^3.4.6",
"@types/ip6addr": "^0.2.3",
"@types/lzma": "^2.3.0",
"@types/node": "^16.18.126",
"@types/underscore": "^1.13.0",
"@types/ws": "^8.5.3",
......@@ -80,6 +79,15 @@
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==",
"license": "MIT"
},
"node_modules/@nanahira/lzma1": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nanahira/lzma1/-/lzma1-0.2.1.tgz",
"integrity": "sha512-PDJjw4lhD/Lx3RmwqYVpB3nDfmFr2NjdJzK9aazTVxSTJ/JCNzcKB9nxdYTHOwVugMi5FcEnwoSrL26OZkXhyg==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/purerosefallen"
}
},
"node_modules/@sesamecare-oss/redlock": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@sesamecare-oss/redlock/-/redlock-1.4.0.tgz",
......@@ -129,16 +137,6 @@
"integrity": "sha512-oe7hzc+P9DU6+gql8+bLKuUf4WL4aakyCSXZMZq2cjhhGK75qYwH1zJ4s94XOlnb4cAhrGKwnbrmMBaqDK8+Ww==",
"dev": true
},
"node_modules/@types/lzma": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@types/lzma/-/lzma-2.3.0.tgz",
"integrity": "sha512-z7TknP6ts5GPnN7P2bkZC1B/tMpoMJXG3UnPY1XDrwBq1OJQ2EpHtEypFwq5Q0A5iS37+oc+MT/o/B7x5lgl8Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/node": {
"version": "16.18.126",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz",
......@@ -1869,14 +1867,6 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
"integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
},
"node_modules/lzma": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/lzma/-/lzma-2.3.2.tgz",
"integrity": "sha1-N4OySFi5wOdHoN88vx+1/KqSxEE=",
"bin": {
"lzma.js": "bin/lzma.js"
}
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
......@@ -3725,10 +3715,20 @@
}
},
"node_modules/ygopro-deck-encode": {
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.14.tgz",
"integrity": "sha512-Q64f8U+okLBDKHw02eRYsdDMpALhYa55k0BhFqZ5k4ntRpPKFNvM9sNEbBlg2bmyi6LCf3rlEmISmLtlx9uDeA==",
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.15.tgz",
"integrity": "sha512-NMvgWuC3SKant50RDu0bHa3QIRlwBhdTR3bNDrMpNthTTQmCCq8i2HZaWFiCmYIBi9fR3W9CkFIgK6hI4d+PzQ==",
"license": "MIT"
},
"node_modules/ygopro-yrp-encode": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ygopro-yrp-encode/-/ygopro-yrp-encode-1.0.1.tgz",
"integrity": "sha512-BR36py0crUmhvdtponPmM2s9jNb1ufwpy4+MttUc5gEzxfJgN5ZSGLCLCuPQibMaj6kUtJi11akFHLTvhN79rA==",
"license": "MIT",
"dependencies": {
"@nanahira/lzma1": "^0.2.1",
"ygopro-deck-encode": "^1.0.15"
}
}
},
"dependencies": {
......@@ -3760,6 +3760,11 @@
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg=="
},
"@nanahira/lzma1": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nanahira/lzma1/-/lzma1-0.2.1.tgz",
"integrity": "sha512-PDJjw4lhD/Lx3RmwqYVpB3nDfmFr2NjdJzK9aazTVxSTJ/JCNzcKB9nxdYTHOwVugMi5FcEnwoSrL26OZkXhyg=="
},
"@sesamecare-oss/redlock": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@sesamecare-oss/redlock/-/redlock-1.4.0.tgz",
......@@ -3801,15 +3806,6 @@
"integrity": "sha512-oe7hzc+P9DU6+gql8+bLKuUf4WL4aakyCSXZMZq2cjhhGK75qYwH1zJ4s94XOlnb4cAhrGKwnbrmMBaqDK8+Ww==",
"dev": true
},
"@types/lzma": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@types/lzma/-/lzma-2.3.0.tgz",
"integrity": "sha512-z7TknP6ts5GPnN7P2bkZC1B/tMpoMJXG3UnPY1XDrwBq1OJQ2EpHtEypFwq5Q0A5iS37+oc+MT/o/B7x5lgl8Q==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/node": {
"version": "16.18.126",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz",
......@@ -5099,11 +5095,6 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
"integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
},
"lzma": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/lzma/-/lzma-2.3.2.tgz",
"integrity": "sha1-N4OySFi5wOdHoN88vx+1/KqSxEE="
},
"math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
......@@ -6510,9 +6501,18 @@
}
},
"ygopro-deck-encode": {
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.14.tgz",
"integrity": "sha512-Q64f8U+okLBDKHw02eRYsdDMpALhYa55k0BhFqZ5k4ntRpPKFNvM9sNEbBlg2bmyi6LCf3rlEmISmLtlx9uDeA=="
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.15.tgz",
"integrity": "sha512-NMvgWuC3SKant50RDu0bHa3QIRlwBhdTR3bNDrMpNthTTQmCCq8i2HZaWFiCmYIBi9fR3W9CkFIgK6hI4d+PzQ=="
},
"ygopro-yrp-encode": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ygopro-yrp-encode/-/ygopro-yrp-encode-1.0.1.tgz",
"integrity": "sha512-BR36py0crUmhvdtponPmM2s9jNb1ufwpy4+MttUc5gEzxfJgN5ZSGLCLCuPQibMaj6kUtJi11akFHLTvhN79rA==",
"requires": {
"@nanahira/lzma1": "^0.2.1",
"ygopro-deck-encode": "^1.0.15"
}
}
}
}
......@@ -22,7 +22,6 @@
"ip6addr": "^0.2.5",
"jszip": "^3.5.0",
"load-json-file": "^6.2.0",
"lzma": "^2.3.2",
"moment": "^2.29.1",
"mustache": "^4.2.0",
"mysql": "^2.18.1",
......@@ -38,7 +37,8 @@
"underscore": "^1.11.0",
"underscore.string": "^3.3.6",
"ws": "^8.9.0",
"ygopro-deck-encode": "^1.0.14"
"ygopro-deck-encode": "^1.0.15",
"ygopro-yrp-encode": "^1.0.1"
},
"license": "AGPL-3.0",
"scripts": {
......@@ -54,7 +54,6 @@
"@types/bunyan": "^1.8.8",
"@types/formidable": "^3.4.6",
"@types/ip6addr": "^0.2.3",
"@types/lzma": "^2.3.0",
"@types/node": "^16.18.126",
"@types/underscore": "^1.13.0",
"@types/ws": "^8.5.3",
......
......@@ -98,6 +98,7 @@ util = require("util")
Q = require("q")
YGOProDeck = require('ygopro-deck-encode').default
YGOProYrp = require('ygopro-yrp-encode').YGOProYrp
Aragami = require('aragami').Aragami
......@@ -586,7 +587,10 @@ init = () ->
long_resolve_cards = global.long_resolve_cards = await loadJSONAsync('./data/long_resolve_cards.json')
if settings.modules.tournament_mode.enable_recover
ReplayParser = global.ReplayParser = (require "./Replay.js").Replay
ReplayParser = global.ReplayParser =
fromFile: (filePath) ->
buffer = await fs.promises.readFile(filePath)
new YGOProYrp().fromYrp(buffer)
if settings.modules.athletic_check.enabled
AthleticChecker = require("./athletic-check.js").AthleticChecker
......@@ -2945,7 +2949,8 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server, datas)->
if (msg >= 10 and msg < 30) or msg == 132 or (msg >= 140 and msg <= 144) #SELECT和ANNOUNCE开头的消息
if room.recovering
ygopro.ctos_send(server, 'RESPONSE', room.recover_replay.responses.splice(0, 1)[0])
response = room.recover_replay.responses.splice(0, 1)[0]
ygopro.ctos_send(server, 'RESPONSE', Buffer.from(response))
if !room.recover_replay.responses.length
room.finish_recover()
return true
......
// Generated by CoffeeScript 2.7.0
(function() {
// 标准库
var Aragami, CLIENT_check_vip, CLIENT_get_absolute_pos, CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_get_partner, CLIENT_get_save_data, CLIENT_heartbeat_register, CLIENT_heartbeat_unregister, CLIENT_import_data, CLIENT_is_able_to_kick_reconnect, CLIENT_is_able_to_reconnect, CLIENT_is_banned_by_mc, CLIENT_is_player, CLIENT_kick, CLIENT_kick_reconnect, CLIENT_pre_reconnect, CLIENT_reconnect, CLIENT_reconnect_register, CLIENT_reconnect_unregister, CLIENT_send_pre_reconnect_info, CLIENT_send_reconnect_info, CLIENT_send_replays, CLIENT_send_replays_and_kick, CLIENT_send_vip_status, CLIENT_set_ip, CLIENT_use_cdkey, PQueue, Q, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_pid, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_kick, ROOM_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_oppentlist, ROOM_unwelcome, ROOM_validate, ReplayParser, ResolveData, Room, SERVER_clear_disconnect, SERVER_kick, SOCKET_flush_data, VIP_generate_cdkeys, YGOProDeck, _, _async, addCallback, aragami, aragami_classes, athleticChecker, auth, axios, badwordR, badwords, ban_user, bunyan, call_match_api, challonge, checkFileExists, concat_name, createDirectoryIfNotExists, crypto, dataManager, deck_name_match, dialogues, disconnect_list, exec, execFile, extra_mode_list, fs, geoip, getDuelLogQueryFromQs, getRealIp, get_memory_usage, gpt_tokenizer, http, httpRequestListener, importOldConfig, import_datas, init, ip6addr, isTrustedProxy, lflists, loadJSON, loadJSONAsync, loadLFList, loadRemoteData, load_dialogues, load_dialogues_custom, load_tips, load_tips_zh, load_words, log, long_resolve_cards, memory_usage, merge, moment, moment_long_ago_string, moment_now, moment_now_string, msg_polyfill, mustache, neosRequestListener, net, netRequestHandler, os, osu, path, qs, real_windbot_server_ip, release_disconnect, report_to_big_brother, request, roomlist, rooms_count, setting_change, setting_get, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, toIpv4, toIpv6, util, utility, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, words, ygopro, zlib;
var Aragami, CLIENT_check_vip, CLIENT_get_absolute_pos, CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_get_partner, CLIENT_get_save_data, CLIENT_heartbeat_register, CLIENT_heartbeat_unregister, CLIENT_import_data, CLIENT_is_able_to_kick_reconnect, CLIENT_is_able_to_reconnect, CLIENT_is_banned_by_mc, CLIENT_is_player, CLIENT_kick, CLIENT_kick_reconnect, CLIENT_pre_reconnect, CLIENT_reconnect, CLIENT_reconnect_register, CLIENT_reconnect_unregister, CLIENT_send_pre_reconnect_info, CLIENT_send_reconnect_info, CLIENT_send_replays, CLIENT_send_replays_and_kick, CLIENT_send_vip_status, CLIENT_set_ip, CLIENT_use_cdkey, PQueue, Q, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_pid, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_kick, ROOM_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_oppentlist, ROOM_unwelcome, ROOM_validate, ReplayParser, ResolveData, Room, SERVER_clear_disconnect, SERVER_kick, SOCKET_flush_data, VIP_generate_cdkeys, YGOProDeck, YGOProYrp, _, _async, addCallback, aragami, aragami_classes, athleticChecker, auth, axios, badwordR, badwords, ban_user, bunyan, call_match_api, challonge, checkFileExists, concat_name, createDirectoryIfNotExists, crypto, dataManager, deck_name_match, dialogues, disconnect_list, exec, execFile, extra_mode_list, fs, geoip, getDuelLogQueryFromQs, getRealIp, get_memory_usage, gpt_tokenizer, http, httpRequestListener, importOldConfig, import_datas, init, ip6addr, isTrustedProxy, lflists, loadJSON, loadJSONAsync, loadLFList, loadRemoteData, load_dialogues, load_dialogues_custom, load_tips, load_tips_zh, load_words, log, long_resolve_cards, memory_usage, merge, moment, moment_long_ago_string, moment_now, moment_now_string, msg_polyfill, mustache, neosRequestListener, net, netRequestHandler, os, osu, path, qs, real_windbot_server_ip, release_disconnect, report_to_big_brother, request, roomlist, rooms_count, setting_change, setting_get, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, toIpv4, toIpv6, util, utility, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, words, ygopro, zlib;
net = require('net');
......@@ -89,6 +89,8 @@
YGOProDeck = require('ygopro-deck-encode').default;
YGOProYrp = require('ygopro-yrp-encode').YGOProYrp;
Aragami = require('aragami').Aragami;
aragami = global.aragami = new Aragami(); // we use memory mode only
......@@ -745,7 +747,13 @@
long_resolve_cards = global.long_resolve_cards = (await loadJSONAsync('./data/long_resolve_cards.json'));
}
if (settings.modules.tournament_mode.enable_recover) {
ReplayParser = global.ReplayParser = (require("./Replay.js")).Replay;
ReplayParser = global.ReplayParser = {
fromFile: async function(filePath) {
var buffer;
buffer = (await fs.promises.readFile(filePath));
return new YGOProYrp().fromYrp(buffer);
}
};
}
if (settings.modules.athletic_check.enabled) {
AthleticChecker = require("./athletic-check.js").AthleticChecker;
......@@ -3784,7 +3792,7 @@
};
ygopro.stoc_follow('GAME_MSG', true, async function(buffer, info, client, server, datas) {
var act_pos, card, chain, check, count, cpos, deck_found, dialogText, found, hint_type, i, id, j, l, len, len1, len2, len3, limbo_found, loc, m, max_loop, msg, msg_name, n, new_buf, o, oppo_pos, phase, player, playertype, pos, ppos, r_player, reason, record_last_game_msg, ref, ref1, ref2, ref3, ref4, room, trigger_location, val, victoryWordPlayerList, win_pos;
var act_pos, card, chain, check, count, cpos, deck_found, dialogText, found, hint_type, i, id, j, l, len, len1, len2, len3, limbo_found, loc, m, max_loop, msg, msg_name, n, new_buf, o, oppo_pos, phase, player, playertype, pos, ppos, r_player, reason, record_last_game_msg, ref, ref1, ref2, ref3, ref4, response, room, trigger_location, val, victoryWordPlayerList, win_pos;
room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) {
return;
......@@ -3839,7 +3847,8 @@
// log.info(client.name, client.last_game_msg_title)
if ((msg >= 10 && msg < 30) || msg === 132 || (msg >= 140 && msg <= 144)) { //SELECT和ANNOUNCE开头的消息
if (room.recovering) {
ygopro.ctos_send(server, 'RESPONSE', room.recover_replay.responses.splice(0, 1)[0]);
response = room.recover_replay.responses.splice(0, 1)[0];
ygopro.ctos_send(server, 'RESPONSE', Buffer.from(response));
if (!room.recover_replay.responses.length) {
room.finish_recover();
}
......
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