Commit 9365c21d authored by mercury233's avatar mercury233

save replay on ygopro error

parent 4b2524f4
...@@ -3457,7 +3457,7 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)-> ...@@ -3457,7 +3457,7 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)->
if !room.replays[room.duel_count - 1] if !room.replays[room.duel_count - 1]
# console.log("Replay saved: ", room.duel_count - 1, client.pos) # console.log("Replay saved: ", room.duel_count - 1, client.pos)
room.replays[room.duel_count - 1] = buffer room.replays[room.duel_count - 1] = buffer
if settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.replay_safe if settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.replay_safe or room.has_ygopro_error
if client.pos == 0 if client.pos == 0
dueltime=moment().format('YYYY-MM-DD HH-mm-ss') dueltime=moment().format('YYYY-MM-DD HH-mm-ss')
replay_filename=dueltime replay_filename=dueltime
...@@ -3468,20 +3468,21 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)-> ...@@ -3468,20 +3468,21 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)->
for player,i in room.dueling_players for player,i in room.dueling_players
replay_filename=replay_filename + (if i > 0 then (if i == 2 then " VS " else " & ") else " ") + player.name replay_filename=replay_filename + (if i > 0 then (if i == 2 then " VS " else " & ") else " ") + player.name
replay_filename=replay_filename.replace(/[\/\\\?\*]/g, '_')+".yrp" replay_filename=replay_filename.replace(/[\/\\\?\*]/g, '_')+".yrp"
duellog = { if settings.modules.tournament_mode.enabled
time: dueltime, duellog = {
name: room.name + (if settings.modules.tournament_mode.show_info then (" (Duel:" + room.duel_count + ")") else ""), time: dueltime,
roomid: room.process_pid.toString(), name: room.name + (if settings.modules.tournament_mode.show_info then (" (Duel:" + room.duel_count + ")") else ""),
cloud_replay_id: "R#"+room.cloud_replay_id, roomid: room.process_pid.toString(),
replay_filename: replay_filename, cloud_replay_id: "R#"+room.cloud_replay_id,
roommode: room.hostinfo.mode, replay_filename: replay_filename,
players: (for player in room.dueling_players roommode: room.hostinfo.mode,
name: player.name + (if settings.modules.tournament_mode.show_ip and !player.is_local then (" (IP: " + player.ip.slice(7) + ")") else "") + (if settings.modules.tournament_mode.show_info and not (room.hostinfo.mode == 2 and player.pos % 2 > 0) then (" (Score:" + room.scores[player.name_vpass] + " LP:" + (if player.lp? then player.lp else room.hostinfo.start_lp) + (if room.hostinfo.mode != 2 then (" Cards:" + (if player.card_count? then player.card_count else room.hostinfo.start_hand)) else "") + ")") else ""), players: (for player in room.dueling_players
winner: player.pos == room.winner name: player.name + (if settings.modules.tournament_mode.show_ip and !player.is_local then (" (IP: " + player.ip.slice(7) + ")") else "") + (if settings.modules.tournament_mode.show_info and not (room.hostinfo.mode == 2 and player.pos % 2 > 0) then (" (Score:" + room.scores[player.name_vpass] + " LP:" + (if player.lp? then player.lp else room.hostinfo.start_lp) + (if room.hostinfo.mode != 2 then (" Cards:" + (if player.card_count? then player.card_count else room.hostinfo.start_hand)) else "") + ")") else ""),
) winner: player.pos == room.winner
} )
duel_log.duel_log.unshift duellog }
setting_save(duel_log) duel_log.duel_log.unshift duellog
setting_save(duel_log)
fs.writeFile(settings.modules.tournament_mode.replay_path + replay_filename, buffer, (err)-> fs.writeFile(settings.modules.tournament_mode.replay_path + replay_filename, buffer, (err)->
if err then log.warn "SAVE REPLAY ERROR", replay_filename, err if err then log.warn "SAVE REPLAY ERROR", replay_filename, err
) )
......
...@@ -4623,7 +4623,7 @@ ...@@ -4623,7 +4623,7 @@
// console.log("Replay saved: ", room.duel_count - 1, client.pos) // console.log("Replay saved: ", room.duel_count - 1, client.pos)
room.replays[room.duel_count - 1] = buffer; room.replays[room.duel_count - 1] = buffer;
} }
if (settings.modules.tournament_mode.enabled && settings.modules.tournament_mode.replay_safe) { if (settings.modules.tournament_mode.enabled && settings.modules.tournament_mode.replay_safe || room.has_ygopro_error) {
if (client.pos === 0) { if (client.pos === 0) {
dueltime = moment().format('YYYY-MM-DD HH-mm-ss'); dueltime = moment().format('YYYY-MM-DD HH-mm-ss');
replay_filename = dueltime; replay_filename = dueltime;
...@@ -4641,29 +4641,31 @@ ...@@ -4641,29 +4641,31 @@
} }
} }
replay_filename = replay_filename.replace(/[\/\\\?\*]/g, '_') + ".yrp"; replay_filename = replay_filename.replace(/[\/\\\?\*]/g, '_') + ".yrp";
duellog = { if (settings.modules.tournament_mode.enabled) {
time: dueltime, duellog = {
name: room.name + (settings.modules.tournament_mode.show_info ? " (Duel:" + room.duel_count + ")" : ""), time: dueltime,
roomid: room.process_pid.toString(), name: room.name + (settings.modules.tournament_mode.show_info ? " (Duel:" + room.duel_count + ")" : ""),
cloud_replay_id: "R#" + room.cloud_replay_id, roomid: room.process_pid.toString(),
replay_filename: replay_filename, cloud_replay_id: "R#" + room.cloud_replay_id,
roommode: room.hostinfo.mode, replay_filename: replay_filename,
players: (function() { roommode: room.hostinfo.mode,
var len4, o, ref4, results; players: (function() {
ref4 = room.dueling_players; var len4, o, ref4, results;
results = []; ref4 = room.dueling_players;
for (o = 0, len4 = ref4.length; o < len4; o++) { results = [];
player = ref4[o]; for (o = 0, len4 = ref4.length; o < len4; o++) {
results.push({ player = ref4[o];
name: player.name + (settings.modules.tournament_mode.show_ip && !player.is_local ? " (IP: " + player.ip.slice(7) + ")" : "") + (settings.modules.tournament_mode.show_info && !(room.hostinfo.mode === 2 && player.pos % 2 > 0) ? " (Score:" + room.scores[player.name_vpass] + " LP:" + (player.lp != null ? player.lp : room.hostinfo.start_lp) + (room.hostinfo.mode !== 2 ? " Cards:" + (player.card_count != null ? player.card_count : room.hostinfo.start_hand) : "") + ")" : ""), results.push({
winner: player.pos === room.winner name: player.name + (settings.modules.tournament_mode.show_ip && !player.is_local ? " (IP: " + player.ip.slice(7) + ")" : "") + (settings.modules.tournament_mode.show_info && !(room.hostinfo.mode === 2 && player.pos % 2 > 0) ? " (Score:" + room.scores[player.name_vpass] + " LP:" + (player.lp != null ? player.lp : room.hostinfo.start_lp) + (room.hostinfo.mode !== 2 ? " Cards:" + (player.card_count != null ? player.card_count : room.hostinfo.start_hand) : "") + ")" : ""),
}); winner: player.pos === room.winner
} });
return results; }
})() return results;
}; })()
duel_log.duel_log.unshift(duellog); };
setting_save(duel_log); duel_log.duel_log.unshift(duellog);
setting_save(duel_log);
}
fs.writeFile(settings.modules.tournament_mode.replay_path + replay_filename, buffer, function(err) { fs.writeFile(settings.modules.tournament_mode.replay_path + replay_filename, buffer, function(err) {
if (err) { if (err) {
return log.warn("SAVE REPLAY ERROR", replay_filename, err); return log.warn("SAVE REPLAY ERROR", replay_filename, err);
......
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