Commit 6ddb626b authored by nanahira's avatar nanahira

improves

parent 4ed935df
...@@ -458,9 +458,10 @@ ban_user = global.ban_user = (name, callback) -> ...@@ -458,9 +458,10 @@ ban_user = global.ban_user = (name, callback) ->
settings.ban.banned_user.push(name) settings.ban.banned_user.push(name)
setting_save(settings) setting_save(settings)
bad_ip = [] bad_ip = []
_async.each(ROOM_all.filter((room)-> _async.each(ROOM_all, (room, done)->
return room and room.established if !(room and room.established)
), (room, done)-> done()
return
_async.each(["players", "watchers"], (player_type, _done)-> _async.each(["players", "watchers"], (player_type, _done)->
_async.each(room[player_type].filter((player)-> _async.each(room[player_type].filter((player)->
return player and (player.name == name or bad_ip.indexOf(player.ip) != -1) return player and (player.name == name or bad_ip.indexOf(player.ip) != -1)
...@@ -496,12 +497,12 @@ ROOM_ban_player = global.ROOM_ban_player = (name, ip, reason, countadd = 1)-> ...@@ -496,12 +497,12 @@ ROOM_ban_player = global.ROOM_ban_player = (name, ip, reason, countadd = 1)->
return return
ROOM_kick = (name, callback)-> ROOM_kick = (name, callback)->
rooms = ROOM_all.filter((room)-> found = false
return room and room.established and (name == "all" or name == room.process_pid.toString() or name == room.name) _async.each(ROOM_all, (room, done)->
) if !(room and room.established and (name == "all" or name == room.process_pid.toString() or name == room.name))
if !rooms.length done()
callback(null, false) return
_async.each(rooms, (room, done)-> found = true
if room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN if room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN
room.scores[room.dueling_players[0].name_vpass] = 0 room.scores[room.dueling_players[0].name_vpass] = 0
room.scores[room.dueling_players[1].name_vpass] = 0 room.scores[room.dueling_players[1].name_vpass] = 0
...@@ -512,7 +513,7 @@ ROOM_kick = (name, callback)-> ...@@ -512,7 +513,7 @@ ROOM_kick = (name, callback)->
done() done()
return return
, (err)-> , (err)->
callback(null, true) callback(null, found)
return return
) )
...@@ -3451,9 +3452,10 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)-> ...@@ -3451,9 +3452,10 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)->
if settings.modules.random_duel.enabled if settings.modules.random_duel.enabled
setInterval ()-> setInterval ()->
_async.each(ROOM_all.filter((room) -> _async.each(ROOM_all, (room, done) ->
return room and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and room.random_type and room.last_active_time and room.waiting_for_player and room.get_disconnected_count() == 0 and (!settings.modules.side_timeout or room.duel_stage != ygopro.constants.DUEL_STAGE.SIDING) if !(room and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and room.random_type and room.last_active_time and room.waiting_for_player and room.get_disconnected_count() == 0 and (!settings.modules.side_timeout or room.duel_stage != ygopro.constants.DUEL_STAGE.SIDING))
), (room, done) -> done()
return
time_passed = Math.floor((moment() - room.last_active_time) / 1000) time_passed = Math.floor((moment() - room.last_active_time) / 1000)
#log.info time_passed #log.info time_passed
if time_passed >= settings.modules.random_duel.hang_timeout if time_passed >= settings.modules.random_duel.hang_timeout
...@@ -3475,9 +3477,10 @@ if settings.modules.random_duel.enabled ...@@ -3475,9 +3477,10 @@ if settings.modules.random_duel.enabled
if settings.modules.mycard.enabled if settings.modules.mycard.enabled
setInterval ()-> setInterval ()->
_async.each(ROOM_all.filter((room) -> _async.each(ROOM_all, (room, done) ->
return room and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and room.arena and room.last_active_time and room.waiting_for_player and room.get_disconnected_count() == 0 and (!settings.modules.side_timeout or room.duel_stage != ygopro.constants.DUEL_STAGE.SIDING) if not (room and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and room.arena and room.last_active_time and room.waiting_for_player and room.get_disconnected_count() == 0 and (!settings.modules.side_timeout or room.duel_stage != ygopro.constants.DUEL_STAGE.SIDING))
), (room, done) -> done()
return
time_passed = Math.floor((moment() - room.last_active_time) / 1000) time_passed = Math.floor((moment() - room.last_active_time) / 1000)
#log.info time_passed #log.info time_passed
if time_passed >= settings.modules.random_duel.hang_timeout if time_passed >= settings.modules.random_duel.hang_timeout
...@@ -3494,9 +3497,10 @@ if settings.modules.mycard.enabled ...@@ -3494,9 +3497,10 @@ if settings.modules.mycard.enabled
) )
if settings.modules.arena_mode.punish_quit_before_match if settings.modules.arena_mode.punish_quit_before_match
_async.each(ROOM_all.filter((room) -> _async.each(ROOM_all, (room, done) ->
return room and room.arena and room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.get_playing_player().length < 2 if not (room and room.arena and room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.get_playing_player().length < 2)
), (room, done) -> done()
return
player = room.get_playing_player()[0] player = room.get_playing_player()[0]
if player and player.join_time and !player.arena_quit_free if player and player.join_time and !player.arena_quit_free
waited_time = moment() - player.join_time waited_time = moment() - player.join_time
...@@ -3822,14 +3826,15 @@ if settings.modules.http ...@@ -3822,14 +3826,15 @@ if settings.modules.http
response.writeHead(200) response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]")) response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return return
rooms = ROOM_all.filter((room)->
return room and (u.query.death == "all" or u.query.death == room.process_pid.toString() or u.query.death == room.name)
)
death_room_found = false death_room_found = false
_async.each(rooms, (room, done)-> _async.each(ROOM_all, (room, done)->
if !(room and (u.query.death == "all" or u.query.death == room.process_pid.toString() or u.query.death == room.name))
done()
return
if room.start_death() if room.start_death()
death_room_found = true death_room_found = true
done() done()
return
, () -> , () ->
response.writeHead(200) response.writeHead(200)
if death_room_found if death_room_found
...@@ -3843,11 +3848,11 @@ if settings.modules.http ...@@ -3843,11 +3848,11 @@ if settings.modules.http
response.writeHead(200) response.writeHead(200)
response.end(addCallback(u.query.callback, "['密码错误', 0]")) response.end(addCallback(u.query.callback, "['密码错误', 0]"))
return return
rooms = ROOM_all.filter((room)->
return room and (u.query.deathcancel == "all" or u.query.deathcancel == room.process_pid.toString() or u.query.deathcancel == room.name)
)
death_room_found = false death_room_found = false
_async.each(rooms, (room, done)-> _async.each(rooms, (room, done)->
if !(room and (u.query.deathcancel == "all" or u.query.deathcancel == room.process_pid.toString() or u.query.deathcancel == room.name))
done()
return
if room.cancel_death() if room.cancel_death()
death_room_found = true death_room_found = true
done() done()
......
...@@ -539,9 +539,11 @@ ...@@ -539,9 +539,11 @@
settings.ban.banned_user.push(name); settings.ban.banned_user.push(name);
setting_save(settings); setting_save(settings);
bad_ip = []; bad_ip = [];
_async.each(ROOM_all.filter(function(room) { _async.each(ROOM_all, function(room, done) {
return room && room.established; if (!(room && room.established)) {
}), function(room, done) { done();
return;
}
return _async.each(["players", "watchers"], function(player_type, _done) { return _async.each(["players", "watchers"], function(player_type, _done) {
return _async.each(room[player_type].filter(function(player) { return _async.each(room[player_type].filter(function(player) {
return player && (player.name === name || bad_ip.indexOf(player.ip) !== -1); return player && (player.name === name || bad_ip.indexOf(player.ip) !== -1);
...@@ -592,14 +594,14 @@ ...@@ -592,14 +594,14 @@
}; };
ROOM_kick = function(name, callback) { ROOM_kick = function(name, callback) {
var rooms; var found;
rooms = ROOM_all.filter(function(room) { found = false;
return room && room.established && (name === "all" || name === room.process_pid.toString() || name === room.name); return _async.each(ROOM_all, function(room, done) {
}); if (!(room && room.established && (name === "all" || name === room.process_pid.toString() || name === room.name))) {
if (!rooms.length) { done();
callback(null, false); return;
} }
return _async.each(rooms, function(room, done) { found = true;
if (room.duel_stage !== ygopro.constants.DUEL_STAGE.BEGIN) { if (room.duel_stage !== ygopro.constants.DUEL_STAGE.BEGIN) {
room.scores[room.dueling_players[0].name_vpass] = 0; room.scores[room.dueling_players[0].name_vpass] = 0;
room.scores[room.dueling_players[1].name_vpass] = 0; room.scores[room.dueling_players[1].name_vpass] = 0;
...@@ -610,7 +612,7 @@ ...@@ -610,7 +612,7 @@
room["delete"](); room["delete"]();
done(); done();
}, function(err) { }, function(err) {
callback(null, true); callback(null, found);
}); });
}; };
...@@ -4426,10 +4428,12 @@ ...@@ -4426,10 +4428,12 @@
if (settings.modules.random_duel.enabled) { if (settings.modules.random_duel.enabled) {
setInterval(function() { setInterval(function() {
_async.each(ROOM_all.filter(function(room) { _async.each(ROOM_all, function(room, done) {
return room && room.duel_stage !== ygopro.constants.DUEL_STAGE.BEGIN && room.random_type && room.last_active_time && room.waiting_for_player && room.get_disconnected_count() === 0 && (!settings.modules.side_timeout || room.duel_stage !== ygopro.constants.DUEL_STAGE.SIDING);
}), function(room, done) {
var time_passed; var time_passed;
if (!(room && room.duel_stage !== ygopro.constants.DUEL_STAGE.BEGIN && room.random_type && room.last_active_time && room.waiting_for_player && room.get_disconnected_count() === 0 && (!settings.modules.side_timeout || room.duel_stage !== ygopro.constants.DUEL_STAGE.SIDING))) {
done();
return;
}
time_passed = Math.floor((moment() - room.last_active_time) / 1000); time_passed = Math.floor((moment() - room.last_active_time) / 1000);
if (time_passed >= settings.modules.random_duel.hang_timeout) { if (time_passed >= settings.modules.random_duel.hang_timeout) {
room.last_active_time = moment(); room.last_active_time = moment();
...@@ -4449,10 +4453,12 @@ ...@@ -4449,10 +4453,12 @@
if (settings.modules.mycard.enabled) { if (settings.modules.mycard.enabled) {
setInterval(function() { setInterval(function() {
_async.each(ROOM_all.filter(function(room) { _async.each(ROOM_all, function(room, done) {
return room && room.duel_stage !== ygopro.constants.DUEL_STAGE.BEGIN && room.arena && room.last_active_time && room.waiting_for_player && room.get_disconnected_count() === 0 && (!settings.modules.side_timeout || room.duel_stage !== ygopro.constants.DUEL_STAGE.SIDING);
}), function(room, done) {
var time_passed; var time_passed;
if (!(room && room.duel_stage !== ygopro.constants.DUEL_STAGE.BEGIN && room.arena && room.last_active_time && room.waiting_for_player && room.get_disconnected_count() === 0 && (!settings.modules.side_timeout || room.duel_stage !== ygopro.constants.DUEL_STAGE.SIDING))) {
done();
return;
}
time_passed = Math.floor((moment() - room.last_active_time) / 1000); time_passed = Math.floor((moment() - room.last_active_time) / 1000);
if (time_passed >= settings.modules.random_duel.hang_timeout) { if (time_passed >= settings.modules.random_duel.hang_timeout) {
room.last_active_time = moment(); room.last_active_time = moment();
...@@ -4466,10 +4472,12 @@ ...@@ -4466,10 +4472,12 @@
done(); done();
}); });
if (settings.modules.arena_mode.punish_quit_before_match) { if (settings.modules.arena_mode.punish_quit_before_match) {
_async.each(ROOM_all.filter(function(room) { _async.each(ROOM_all, function(room, done) {
return room && room.arena && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.get_playing_player().length < 2;
}), function(room, done) {
var player, waited_time; var player, waited_time;
if (!(room && room.arena && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.get_playing_player().length < 2)) {
done();
return;
}
player = room.get_playing_player()[0]; player = room.get_playing_player()[0];
if (player && player.join_time && !player.arena_quit_free) { if (player && player.join_time && !player.arena_quit_free) {
waited_time = moment() - player.join_time; waited_time = moment() - player.join_time;
...@@ -4575,7 +4583,7 @@ ...@@ -4575,7 +4583,7 @@
return callback + "( " + text + " );"; return callback + "( " + text + " );";
}; };
requestListener = function(request, response) { requestListener = function(request, response) {
var archive_args, archive_name, archive_process, check, death_room_found, duellog, error, filename, getpath, len2, len3, m, n, parseQueryString, pass_validated, ref2, replay, room, rooms, roomsjson, u; var archive_args, archive_name, archive_process, check, death_room_found, duellog, error, filename, getpath, len2, len3, m, n, parseQueryString, pass_validated, ref2, replay, room, roomsjson, u;
parseQueryString = true; parseQueryString = true;
u = url.parse(request.url, parseQueryString); u = url.parse(request.url, parseQueryString);
if (u.pathname === '/api/getrooms') { if (u.pathname === '/api/getrooms') {
...@@ -4867,15 +4875,16 @@ ...@@ -4867,15 +4875,16 @@
response.end(addCallback(u.query.callback, "['密码错误', 0]")); response.end(addCallback(u.query.callback, "['密码错误', 0]"));
return; return;
} }
rooms = ROOM_all.filter(function(room) {
return room && (u.query.death === "all" || u.query.death === room.process_pid.toString() || u.query.death === room.name);
});
death_room_found = false; death_room_found = false;
_async.each(rooms, function(room, done) { _async.each(ROOM_all, function(room, done) {
if (!(room && (u.query.death === "all" || u.query.death === room.process_pid.toString() || u.query.death === room.name))) {
done();
return;
}
if (room.start_death()) { if (room.start_death()) {
death_room_found = true; death_room_found = true;
} }
return done(); done();
}, function() { }, function() {
response.writeHead(200); response.writeHead(200);
if (death_room_found) { if (death_room_found) {
...@@ -4890,11 +4899,12 @@ ...@@ -4890,11 +4899,12 @@
response.end(addCallback(u.query.callback, "['密码错误', 0]")); response.end(addCallback(u.query.callback, "['密码错误', 0]"));
return; return;
} }
rooms = ROOM_all.filter(function(room) {
return room && (u.query.deathcancel === "all" || u.query.deathcancel === room.process_pid.toString() || u.query.deathcancel === room.name);
});
death_room_found = false; death_room_found = false;
_async.each(rooms, function(room, done) { _async.each(rooms, function(room, done) {
if (!(room && (u.query.deathcancel === "all" || u.query.deathcancel === room.process_pid.toString() || u.query.deathcancel === room.name))) {
done();
return;
}
if (room.cancel_death()) { if (room.cancel_death()) {
death_room_found = true; death_room_found = 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