Commit 75cee3b5 authored by nanahira's avatar nanahira

Merge branch 'master' into tcg_random

parents aae57da1 2868ddf1
...@@ -47,6 +47,9 @@ ...@@ -47,6 +47,9 @@
"bad_name_level3": "Your ID contains illegal words.", "bad_name_level3": "Your ID contains illegal words.",
"bad_name_level2": "Your ID contains illegal words.", "bad_name_level2": "Your ID contains illegal words.",
"bad_name_level1": "Your ID contains inappropriate words.", "bad_name_level1": "Your ID contains inappropriate words.",
"bad_roomname_level3": "Your room name contains illegal words.",
"bad_roomname_level2": "Your room name contains illegal words.",
"bad_roomname_level1": "Your room name contains inappropriate words.",
"invalid_password_room": "Password incorrect", "invalid_password_room": "Password incorrect",
"outdated_client": "You are currently using an outdated client, unknown errors may occur, please update.", "outdated_client": "You are currently using an outdated client, unknown errors may occur, please update.",
"watch_join": "joined as spectator.", "watch_join": "joined as spectator.",
...@@ -386,6 +389,9 @@ ...@@ -386,6 +389,9 @@
"bad_name_level3": "您的用户名存在不适当的内容", "bad_name_level3": "您的用户名存在不适当的内容",
"bad_name_level2": "您的用户名存在不适当的内容", "bad_name_level2": "您的用户名存在不适当的内容",
"bad_name_level1": "您的用户名存在不适当的内容,请注意更改", "bad_name_level1": "您的用户名存在不适当的内容,请注意更改",
"bad_roomname_level3": "您的房间名存在不适当的内容",
"bad_roomname_level2": "您的房间名存在不适当的内容",
"bad_roomname_level1": "您的房间名存在不适当的内容,请注意更改",
"invalid_password_room": "房间密码不正确", "invalid_password_room": "房间密码不正确",
"outdated_client": "您的版本号过低,可能出现未知问题,请升级版本", "outdated_client": "您的版本号过低,可能出现未知问题,请升级版本",
"watch_join": "加入了观战", "watch_join": "加入了观战",
......
...@@ -2117,9 +2117,31 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)-> ...@@ -2117,9 +2117,31 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
auto_death: false auto_death: false
} }
options.lflist = _.findIndex lflists, (list)-> ((options.rule == 1) == list.tcg) and list.date.isBefore() options.lflist = _.findIndex lflists, (list)-> ((options.rule == 1) == list.tcg) and list.date.isBefore()
room_title = info.pass.slice(8).replace(String.fromCharCode(0xFEFF), ' ')
if _.any(badwords.level3, (badword) ->
regexp = new RegExp(badword, 'i')
return room_title.match(regexp)
, room_title)
log.warn("BAD ROOM NAME LEVEL 3", room_title, client.name, client.ip)
ygopro.stoc_die(client, "${bad_roomname_level3}")
return
else if _.any(badwords.level2, (badword) ->
regexp = new RegExp(badword, 'i')
return room_title.match(regexp)
, room_title)
log.warn("BAD ROOM NAME LEVEL 2", room_title, client.name, client.ip)
ygopro.stoc_die(client, "${bad_roomname_level2}")
return
else if _.any(badwords.level1, (badword) ->
regexp = new RegExp(badword, 'i')
return room_title.match(regexp)
, room_title)
log.warn("BAD ROOM NAME LEVEL 1", room_title, client.name, client.ip)
ygopro.stoc_die(client, "${bad_roomname_level1}")
return
room = new Room(name, options) room = new Room(name, options)
if room if room
room.title = info.pass.slice(8).replace(String.fromCharCode(0xFEFF), ' ') room.title = room_title
room.private = action == 2 room.private = action == 2
when 3 when 3
name = info.pass.slice(8) name = info.pass.slice(8)
...@@ -2359,21 +2381,21 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)-> ...@@ -2359,21 +2381,21 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
log.warn("BANNED IP LOGIN", client.name, client.ip) log.warn("BANNED IP LOGIN", client.name, client.ip)
ygopro.stoc_die(client, "${banned_ip_login}") ygopro.stoc_die(client, "${banned_ip_login}")
else if _.any(badwords.level3, (badword) -> else if !settings.modules.tournament_mode.enabled and !settings.modules.challonge.enabled and _.any(badwords.level3, (badword) ->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return name.match(regexp) return name.match(regexp)
, name = client.name) , name = client.name)
log.warn("BAD NAME LEVEL 3", client.name, client.ip) log.warn("BAD NAME LEVEL 3", client.name, client.ip)
ygopro.stoc_die(client, "${bad_name_level3}") ygopro.stoc_die(client, "${bad_name_level3}")
else if _.any(badwords.level2, (badword) -> else if !settings.modules.tournament_mode.enabled and !settings.modules.challonge.enabled and _.any(badwords.level2, (badword) ->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return name.match(regexp) return name.match(regexp)
, name = client.name) , name = client.name)
log.warn("BAD NAME LEVEL 2", client.name, client.ip) log.warn("BAD NAME LEVEL 2", client.name, client.ip)
ygopro.stoc_die(client, "${bad_name_level2}") ygopro.stoc_die(client, "${bad_name_level2}")
else if _.any(badwords.level1, (badword) -> else if !settings.modules.tournament_mode.enabled and !settings.modules.challonge.enabled and _.any(badwords.level1, (badword) ->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return name.match(regexp) return name.match(regexp)
, name = client.name) , name = client.name)
...@@ -3072,6 +3094,12 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server, datas)-> ...@@ -3072,6 +3094,12 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server, datas)->
ROOM_players_oppentlist[player.ip] = null ROOM_players_oppentlist[player.ip] = null
if room.hostinfo.auto_death if room.hostinfo.auto_death
ygopro.stoc_send_chat_to_room(room, "${auto_death_part1}#{room.hostinfo.auto_death}${auto_death_part2}", ygopro.constants.COLORS.BABYBLUE) ygopro.stoc_send_chat_to_room(room, "${auto_death_part1}#{room.hostinfo.auto_death}${auto_death_part2}", ygopro.constants.COLORS.BABYBLUE)
else if room.duel_stage == ygopro.constants.DUEL_STAGE.SIDING and client.pos < 4 # side deck verified
client.selected_preduel = true
if client.side_tcount
clearInterval client.side_interval
client.side_interval = null
client.side_tcount = null
if settings.modules.hide_name and room.duel_count == 0 if settings.modules.hide_name and room.duel_count == 0
for player in room.get_playing_player() when player != client for player in room.get_playing_player() when player != client
ygopro.stoc_send(client, 'HS_PLAYER_ENTER', { ygopro.stoc_send(client, 'HS_PLAYER_ENTER', {
...@@ -3452,13 +3480,7 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)-> ...@@ -3452,13 +3480,7 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)->
buff_side = (info.deckbuf[i] for i in [info.mainc...info.mainc + info.sidec]) buff_side = (info.deckbuf[i] for i in [info.mainc...info.mainc + info.sidec])
client.main = buff_main client.main = buff_main
client.side = buff_side client.side = buff_side
if room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN if room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN
client.selected_preduel = true
if client.side_tcount
clearInterval client.side_interval
client.side_interval = null
client.side_tcount = null
else
client.start_deckbuf = Buffer.from(buffer) client.start_deckbuf = Buffer.from(buffer)
oppo_pos = if room.hostinfo.mode == 2 then 2 else 1 oppo_pos = if room.hostinfo.mode == 2 then 2 else 1
if settings.modules.http.quick_death_rule >= 2 and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and room.death and room.scores[room.dueling_players[0].name_vpass] != room.scores[room.dueling_players[oppo_pos].name_vpass] if settings.modules.http.quick_death_rule >= 2 and room.duel_stage != ygopro.constants.DUEL_STAGE.BEGIN and room.death and room.scores[room.dueling_players[0].name_vpass] != room.scores[room.dueling_players[oppo_pos].name_vpass]
......
...@@ -2649,7 +2649,7 @@ ...@@ -2649,7 +2649,7 @@
return (checksum & 0xFF) === 0; return (checksum & 0xFF) === 0;
}; };
buffer_handle_callback = function(buffer, decrypted_buffer, match_permit) { buffer_handle_callback = function(buffer, decrypted_buffer, match_permit) {
var action, len2, len3, len4, len5, line, m, n, name, o, opt1, opt2, opt3, options, p, player, ref3, ref4, ref5, ref6, room, title; var action, len2, len3, len4, len5, line, m, n, name, o, opt1, opt2, opt3, options, p, player, ref3, ref4, ref5, ref6, room, room_title, title;
if (client.closed) { if (client.closed) {
return; return;
} }
...@@ -2686,9 +2686,35 @@ ...@@ -2686,9 +2686,35 @@
options.lflist = _.findIndex(lflists, function(list) { options.lflist = _.findIndex(lflists, function(list) {
return ((options.rule === 1) === list.tcg) && list.date.isBefore(); return ((options.rule === 1) === list.tcg) && list.date.isBefore();
}); });
room_title = info.pass.slice(8).replace(String.fromCharCode(0xFEFF), ' ');
if (_.any(badwords.level3, function(badword) {
var regexp;
regexp = new RegExp(badword, 'i');
return room_title.match(regexp);
}, room_title)) {
log.warn("BAD ROOM NAME LEVEL 3", room_title, client.name, client.ip);
ygopro.stoc_die(client, "${bad_roomname_level3}");
return;
} else if (_.any(badwords.level2, function(badword) {
var regexp;
regexp = new RegExp(badword, 'i');
return room_title.match(regexp);
}, room_title)) {
log.warn("BAD ROOM NAME LEVEL 2", room_title, client.name, client.ip);
ygopro.stoc_die(client, "${bad_roomname_level2}");
return;
} else if (_.any(badwords.level1, function(badword) {
var regexp;
regexp = new RegExp(badword, 'i');
return room_title.match(regexp);
}, room_title)) {
log.warn("BAD ROOM NAME LEVEL 1", room_title, client.name, client.ip);
ygopro.stoc_die(client, "${bad_roomname_level1}");
return;
}
room = new Room(name, options); room = new Room(name, options);
if (room) { if (room) {
room.title = info.pass.slice(8).replace(String.fromCharCode(0xFEFF), ' '); room.title = room_title;
room["private"] = action === 2; room["private"] = action === 2;
} }
break; break;
...@@ -2993,21 +3019,21 @@ ...@@ -2993,21 +3019,21 @@
} else if (_.indexOf(settings.ban.banned_ip, client.ip) > -1) { } else if (_.indexOf(settings.ban.banned_ip, client.ip) > -1) {
log.warn("BANNED IP LOGIN", client.name, client.ip); log.warn("BANNED IP LOGIN", client.name, client.ip);
ygopro.stoc_die(client, "${banned_ip_login}"); ygopro.stoc_die(client, "${banned_ip_login}");
} else if (_.any(badwords.level3, function(badword) { } else if (!settings.modules.tournament_mode.enabled && !settings.modules.challonge.enabled && _.any(badwords.level3, function(badword) {
var regexp; var regexp;
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return name.match(regexp); return name.match(regexp);
}, name = client.name)) { }, name = client.name)) {
log.warn("BAD NAME LEVEL 3", client.name, client.ip); log.warn("BAD NAME LEVEL 3", client.name, client.ip);
ygopro.stoc_die(client, "${bad_name_level3}"); ygopro.stoc_die(client, "${bad_name_level3}");
} else if (_.any(badwords.level2, function(badword) { } else if (!settings.modules.tournament_mode.enabled && !settings.modules.challonge.enabled && _.any(badwords.level2, function(badword) {
var regexp; var regexp;
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return name.match(regexp); return name.match(regexp);
}, name = client.name)) { }, name = client.name)) {
log.warn("BAD NAME LEVEL 2", client.name, client.ip); log.warn("BAD NAME LEVEL 2", client.name, client.ip);
ygopro.stoc_die(client, "${bad_name_level2}"); ygopro.stoc_die(client, "${bad_name_level2}");
} else if (_.any(badwords.level1, function(badword) { } else if (!settings.modules.tournament_mode.enabled && !settings.modules.challonge.enabled && _.any(badwords.level1, function(badword) {
var regexp; var regexp;
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return name.match(regexp); return name.match(regexp);
...@@ -3961,6 +3987,13 @@ ...@@ -3961,6 +3987,13 @@
if (room.hostinfo.auto_death) { if (room.hostinfo.auto_death) {
ygopro.stoc_send_chat_to_room(room, "${auto_death_part1}" + room.hostinfo.auto_death + "${auto_death_part2}", ygopro.constants.COLORS.BABYBLUE); ygopro.stoc_send_chat_to_room(room, "${auto_death_part1}" + room.hostinfo.auto_death + "${auto_death_part2}", ygopro.constants.COLORS.BABYBLUE);
} }
} else if (room.duel_stage === ygopro.constants.DUEL_STAGE.SIDING && client.pos < 4) {
client.selected_preduel = true;
if (client.side_tcount) {
clearInterval(client.side_interval);
client.side_interval = null;
client.side_tcount = null;
}
} }
if (settings.modules.hide_name && room.duel_count === 0) { if (settings.modules.hide_name && room.duel_count === 0) {
ref4 = room.get_playing_player(); ref4 = room.get_playing_player();
...@@ -4467,14 +4500,7 @@ ...@@ -4467,14 +4500,7 @@
})(); })();
client.main = buff_main; client.main = buff_main;
client.side = buff_side; client.side = buff_side;
if (room.duel_stage !== ygopro.constants.DUEL_STAGE.BEGIN) { if (room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN) {
client.selected_preduel = true;
if (client.side_tcount) {
clearInterval(client.side_interval);
client.side_interval = null;
client.side_tcount = null;
}
} else {
client.start_deckbuf = Buffer.from(buffer); client.start_deckbuf = Buffer.from(buffer);
} }
oppo_pos = room.hostinfo.mode === 2 ? 2 : 1; oppo_pos = room.hostinfo.mode === 2 ? 2 : 1;
......
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