Commit e8491dbe authored by nanahira's avatar nanahira

migrate to ygopro-yrp-encode

parent 7ec0ee59
Pipeline #42723 passed with stages
in 8 minutes and 19 seconds
This diff is collapsed.
This diff is collapsed.
......@@ -19,7 +19,6 @@
"ip6addr": "^0.2.5",
"jszip": "^3.5.0",
"load-json-file": "^6.2.0",
"lzma": "^2.3.2",
"moment": "^2.29.1",
"mysql": "^2.18.1",
"node-os-utils": "^1.3.2",
......@@ -34,14 +33,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",
......@@ -78,6 +77,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",
......@@ -127,16 +135,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",
......@@ -1861,14 +1859,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",
......@@ -3708,10 +3698,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": {
......@@ -3743,6 +3743,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",
......@@ -3784,15 +3789,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",
......@@ -5077,11 +5073,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",
......@@ -6483,9 +6474,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"
}
}
}
}
......@@ -21,7 +21,6 @@
"ip6addr": "^0.2.5",
"jszip": "^3.5.0",
"load-json-file": "^6.2.0",
"lzma": "^2.3.2",
"moment": "^2.29.1",
"mysql": "^2.18.1",
"node-os-utils": "^1.3.2",
......@@ -36,7 +35,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": {
......@@ -52,7 +52,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",
......
......@@ -94,6 +94,7 @@ util = require("util")
Q = require("q")
YGOProDeck = require('ygopro-deck-encode').default
YGOProYrp = require('ygopro-yrp-encode').YGOProYrp
Aragami = require('aragami').Aragami
......@@ -485,7 +486,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
......@@ -2709,7 +2713,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_get_absolute_pos, CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_get_partner, 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_set_ip, 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, YGOProDeck, _, _async, addCallback, aragami, aragami_classes, athleticChecker, auth, axios, badwordR, badwords, ban_user, bunyan, call_match_api, challonge, checkFileExists, createDirectoryIfNotExists, crypto, dataManager, deck_name_match, dialogues, disconnect_list, exec, execFile, extra_mode_list, fs, geoip, getDuelLogQueryFromQs, getRealIp, get_memory_usage, http, httpRequestListener, importOldConfig, import_datas, init, ip6addr, isTrustedProxy, lflists, loadJSON, loadJSONAsync, loadLFList, loadRemoteData, load_dialogues, load_tips, log, long_resolve_cards, memory_usage, merge, moment, moment_long_ago_string, moment_now, moment_now_string, msg_polyfill, 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, ygopro, zlib;
var Aragami, CLIENT_get_absolute_pos, CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_get_partner, 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_set_ip, 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, YGOProDeck, YGOProYrp, _, _async, addCallback, aragami, aragami_classes, athleticChecker, auth, axios, badwordR, badwords, ban_user, bunyan, call_match_api, challonge, checkFileExists, createDirectoryIfNotExists, crypto, dataManager, deck_name_match, dialogues, disconnect_list, exec, execFile, extra_mode_list, fs, geoip, getDuelLogQueryFromQs, getRealIp, get_memory_usage, http, httpRequestListener, importOldConfig, import_datas, init, ip6addr, isTrustedProxy, lflists, loadJSON, loadJSONAsync, loadLFList, loadRemoteData, load_dialogues, load_tips, log, long_resolve_cards, memory_usage, merge, moment, moment_long_ago_string, moment_now, moment_now_string, msg_polyfill, 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, ygopro, zlib;
net = require('net');
......@@ -85,6 +85,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
......@@ -618,7 +620,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;
......@@ -3492,7 +3500,7 @@
};
ygopro.stoc_follow('GAME_MSG', true, async function(buffer, info, client, server, datas) {
var card, chain, check, count, cpos, deck_found, found, hint_type, i, id, j, l, len, len1, len2, len3, limbo_found, line, loc, m, max_loop, msg, msg_name, n, new_buf, o, oppo_pos, phase, player, playertype, pos, ppos, reason, record_last_game_msg, ref, ref1, ref2, ref3, ref4, ref5, room, trigger_location, val, win_pos;
var card, chain, check, count, cpos, deck_found, found, hint_type, i, id, j, l, len, len1, len2, len3, limbo_found, line, loc, m, max_loop, msg, msg_name, n, new_buf, o, oppo_pos, phase, player, playertype, pos, ppos, reason, record_last_game_msg, ref, ref1, ref2, ref3, ref4, ref5, response, room, trigger_location, val, win_pos;
room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) {
return;
......@@ -3547,7 +3555,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