Commit 9c6b6df1 authored by nanahira's avatar nanahira

Merge branch 'mc'

parents 7bb45ae3 43738d22
......@@ -939,7 +939,7 @@ CLIENT_heartbeat_unregister = (client) ->
return true
CLIENT_heartbeat_register = (client, send) ->
if !settings.modules.heartbeat_detection.enabled or client.closed or client.is_post_watcher or client.pre_reconnecting or client.reconnecting or client.waiting_for_last or client.pos > 3 or client.heartbeat_protected
if !settings.modules.heartbeat_detection.enabled or client.closed or client.is_post_watcher or client.pre_reconnecting or client.reconnecting or client.pos > 3 or client.heartbeat_protected
return false
if client.heartbeat_timeout
CLIENT_heartbeat_unregister(client)
......@@ -991,6 +991,12 @@ CLIENT_send_replays = (client, room) ->
ygopro.stoc_send(client, "REPLAY", buffer)
return true
SOCKET_flush_data = (sk, datas) ->
for buffer in datas
sk.write(buffer)
datas.splice(0, datas.length)
return
class Room
constructor: (name, @hostinfo) ->
@name = name
......@@ -1568,9 +1574,9 @@ net.createServer (client) ->
struct._setBuff(b)
info = _.clone(struct.fields)
if ygopro.ctos_follows[ctos_proto].synchronous
cancel = ygopro.ctos_follows[ctos_proto].callback b, info, client, client.server
cancel = ygopro.ctos_follows[ctos_proto].callback b, info, client, client.server, datas
else
ygopro.ctos_follows[ctos_proto].callback b, info, client, client.server
ygopro.ctos_follows[ctos_proto].callback b, info, client, client.server, datas
datas.push ctos_buffer.slice(0, 2 + ctos_message_length) unless cancel
ctos_buffer = ctos_buffer.slice(2 + ctos_message_length)
ctos_message_length = 0
......@@ -1637,9 +1643,9 @@ net.createServer (client) ->
struct._setBuff(b)
info = _.clone(struct.fields)
if ygopro.stoc_follows[stoc_proto].synchronous
cancel = ygopro.stoc_follows[stoc_proto].callback b, info, server.client, server
cancel = ygopro.stoc_follows[stoc_proto].callback b, info, server.client, server, datas
else
ygopro.stoc_follows[stoc_proto].callback b, info, server.client, server
ygopro.stoc_follows[stoc_proto].callback b, info, server.client, server, datas
datas.push stoc_buffer.slice(0, 2 + stoc_message_length) unless cancel
stoc_buffer = stoc_buffer.slice(2 + stoc_message_length)
stoc_message_length = 0
......@@ -1669,7 +1675,7 @@ if settings.modules.stop
# 功能模块
# return true to cancel a synchronous message
ygopro.ctos_follow 'PLAYER_INFO', true, (buffer, info, client, server)->
ygopro.ctos_follow 'PLAYER_INFO', true, (buffer, info, client, server, datas)->
# checkmate use username$password, but here don't
# so remove the password
name_full =info.name.split("$")
......@@ -1728,7 +1734,7 @@ ygopro.ctos_follow 'PLAYER_INFO', true, (buffer, info, client, server)->
client.lang=settings.modules.i18n.fallback
return false
ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
#log.info info
info.pass=info.pass.trim()
client.pass = info.pass
......@@ -2196,7 +2202,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
room.connect(client)
return
ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server)->
ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
#欢迎信息
room=ROOM_all[client.rid]
return unless room and !client.reconnecting
......@@ -2332,7 +2338,7 @@ if settings.modules.dialogues.get
if settings.modules.dialogues.get_custom
load_dialogues_custom()
ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server)->
ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room and !client.reconnecting
msg = buffer.readInt8(0)
......@@ -2601,7 +2607,7 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server)->
return false
#房间管理
ygopro.ctos_follow 'HS_TOOBSERVER', true, (buffer, info, client, server)->
ygopro.ctos_follow 'HS_TOOBSERVER', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
if room.no_watch
......@@ -2615,7 +2621,7 @@ ygopro.ctos_follow 'HS_TOOBSERVER', true, (buffer, info, client, server)->
return true
return false
ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server)->
ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
for player in room.players
......@@ -2633,7 +2639,7 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server)->
ygopro.stoc_send_chat_to_room(room, "#{player.name} ${kicked_by_player}", ygopro.constants.COLORS.RED)
return false
ygopro.stoc_follow 'TYPE_CHANGE', true, (buffer, info, client, server)->
ygopro.stoc_follow 'TYPE_CHANGE', true, (buffer, info, client, server, datas)->
selftype = info.type & 0xf
is_host = ((info.type >> 4) & 0xf) != 0
# if room and room.no_watch and selftype == 7
......@@ -2644,7 +2650,7 @@ ygopro.stoc_follow 'TYPE_CHANGE', true, (buffer, info, client, server)->
#console.log "TYPE_CHANGE to #{client.name}:", info, selftype, is_host
return false
ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server)->
ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room and room.max_player and client.is_host
pos = info.status >> 4
......@@ -2690,29 +2696,32 @@ ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server)->
setTimeout (()-> wait_room_start(ROOM_all[client.rid], settings.modules.random_duel.ready_time);return), 1000
return
ygopro.ctos_follow 'REQUEST_FIELD', true, (buffer, info, client, server)->
ygopro.ctos_follow 'REQUEST_FIELD', true, (buffer, info, client, server, datas)->
return true
ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server)->
ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return true unless room and settings.modules.reconnect.enabled
client.reconnecting = false
if client.time_confirm_required # client did not send TIME_CONFIRM
client.waiting_for_last = true
else if client.last_game_msg and client.last_game_msg_title != 'WAITING' # client sent TIME_CONFIRM
#if client.time_confirm_required # client did not send TIME_CONFIRM
# client.waiting_for_last = true
#else
if client.last_game_msg and client.last_game_msg_title != 'WAITING' # client sent TIME_CONFIRM
SOCKET_flush_data(client, datas)
if client.last_hint_msg
ygopro.stoc_send(client, 'GAME_MSG', client.last_hint_msg)
ygopro.stoc_send(client, 'GAME_MSG', client.last_game_msg)
return true
ygopro.stoc_follow 'DUEL_END', false, (buffer, info, client, server)->
ygopro.stoc_follow 'DUEL_END', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room and settings.modules.replay_delay and room.hostinfo.mode == 1
SOCKET_flush_data(client, datas)
CLIENT_send_replays(client, room)
if !room.replays_sent_to_watchers
room.replays_sent_to_watchers = true
for player in room.players when player and player.pos > 3
CLIENT_send_replays(player, room)
# for player in room.players when player and player.pos > 3
# CLIENT_send_replays(player, room)
for player in room.watchers when player
CLIENT_send_replays(player, room)
......@@ -2802,7 +2811,7 @@ if settings.modules.tips.enabled
return
, 30000
ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room and !client.reconnecting
unless room.started #first start
......@@ -2861,7 +2870,7 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
client.deck_saved = true
return
ygopro.ctos_follow 'SURRENDER', true, (buffer, info, client, server)->
ygopro.ctos_follow 'SURRENDER', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
if !room.started
......@@ -2901,7 +2910,7 @@ report_to_big_brother = (roomname, sender, ip, level, content, match) ->
return
return
ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
msg = _.trim(info.msg)
......@@ -3157,7 +3166,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
ROOM_ban_player(client.name, client.ip, "${random_ban_reason_abuse}")
return cancel
ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server)->
ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)->
if settings.modules.reconnect.enabled and client.pre_reconnecting
if !CLIENT_is_able_to_reconnect(client) and !CLIENT_is_able_to_kick_reconnect(client)
ygopro.stoc_send_chat(client, "${reconnect_failed}", ygopro.constants.COLORS.RED)
......@@ -3248,13 +3257,13 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server)->
ygopro.stoc_send_chat(client, "#{client.name}${deck_not_found}", ygopro.constants.COLORS.RED)
return false
ygopro.ctos_follow 'RESPONSE', false, (buffer, info, client, server)->
ygopro.ctos_follow 'RESPONSE', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room and (room.random_type or room.arena)
room.last_active_time = moment()
return
ygopro.stoc_follow 'TIME_LIMIT', true, (buffer, info, client, server)->
ygopro.stoc_follow 'TIME_LIMIT', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
if settings.modules.reconnect.enabled
......@@ -3290,16 +3299,16 @@ ygopro.stoc_follow 'TIME_LIMIT', true, (buffer, info, client, server)->
CLIENT_heartbeat_register(client, false)
return false
ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server)->
ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
if settings.modules.reconnect.enabled
if client.waiting_for_last
client.waiting_for_last = false
if client.last_game_msg and client.last_game_msg_title != 'WAITING'
if client.last_hint_msg
ygopro.stoc_send(client, 'GAME_MSG', client.last_hint_msg)
ygopro.stoc_send(client, 'GAME_MSG', client.last_game_msg)
#if client.waiting_for_last
# client.waiting_for_last = false
# if client.last_game_msg and client.last_game_msg_title != 'WAITING'
# if client.last_hint_msg
# ygopro.stoc_send(client, 'GAME_MSG', client.last_hint_msg)
# ygopro.stoc_send(client, 'GAME_MSG', client.last_game_msg)
client.time_confirm_required = false
if settings.modules.heartbeat_detection.enabled
client.heartbeat_protected = false
......@@ -3307,7 +3316,7 @@ ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server)->
CLIENT_heartbeat_unregister(client)
return
ygopro.ctos_follow 'HAND_RESULT', false, (buffer, info, client, server)->
ygopro.ctos_follow 'HAND_RESULT', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
client.selected_preduel = true
......@@ -3317,7 +3326,7 @@ ygopro.ctos_follow 'HAND_RESULT', false, (buffer, info, client, server)->
room.last_active_time = moment().subtract(settings.modules.random_duel.hang_timeout - 19, 's')
return
ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server)->
ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
client.selected_preduel = true
......@@ -3326,7 +3335,7 @@ ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server)->
room.last_active_time = moment()
return
ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server)->
ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
pid = info.player
return unless room and pid < 4 and settings.modules.chat_color.enabled
......@@ -3352,7 +3361,7 @@ ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server)->
return true
return
ygopro.stoc_follow 'SELECT_HAND', false, (buffer, info, client, server)->
ygopro.stoc_follow 'SELECT_HAND', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
client.selected_preduel = false
......@@ -3367,7 +3376,7 @@ ygopro.stoc_follow 'SELECT_HAND', false, (buffer, info, client, server)->
room.last_active_time = moment().subtract(settings.modules.random_duel.hang_timeout - 19, 's')
return
ygopro.stoc_follow 'SELECT_TP', false, (buffer, info, client, server)->
ygopro.stoc_follow 'SELECT_TP', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
client.selected_preduel = false
......@@ -3379,7 +3388,7 @@ ygopro.stoc_follow 'SELECT_TP', false, (buffer, info, client, server)->
room.last_active_time = moment()
return
ygopro.stoc_follow 'CHANGE_SIDE', false, (buffer, info, client, server)->
ygopro.stoc_follow 'CHANGE_SIDE', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return unless room
room.changing_side = true
......@@ -3425,7 +3434,7 @@ ygopro.stoc_follow 'CHANGE_SIDE', false, (buffer, info, client, server)->
room.last_active_time = moment()
return
ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server)->
ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid]
return settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.replay_safe and settings.modules.tournament_mode.block_replay_to_player or settings.modules.replay_delay and room.hostinfo.mode == 1 unless room
if settings.modules.cloud_replay.enabled and room.random_type
......
// Generated by CoffeeScript 1.12.7
(function() {
var CLIENT_check_vip, 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_vip_status, CLIENT_use_cdkey, Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, 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_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_banned, ROOM_players_oppentlist, ROOM_players_scores, ROOM_unwelcome, ROOM_validate, Room, SERVER_clear_disconnect, VIP_generate_cdkeys, _, addCallback, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_queue_callbacks, chat_color, concat_name, config, cppversion, crypto, date, default_config, default_data, dialogues, disconnect_list, duel_log, e, exec, execFile, fs, geoip, get_callback, get_memory_usage, http, http_server, https, https_server, import_datas, imported, is_requesting, j, k, l, len, len1, lflists, list, loadJSON, load_dialogues, load_dialogues_custom, load_tips, load_tips_zh, load_words, log, long_resolve_cards, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, oldwords, options, os, path, pgClient, pg_client, pg_query, redis, redisdb, ref, ref1, ref2, refresh_challonge_cache, release_disconnect, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, url, users_cache, v, vip_info, wait_room_start, wait_room_start_arena, windbot_looplimit, windbots, words, ygopro, zlib;
var CLIENT_check_vip, 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_vip_status, CLIENT_use_cdkey, Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, 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_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_banned, ROOM_players_oppentlist, ROOM_players_scores, ROOM_unwelcome, ROOM_validate, Room, SERVER_clear_disconnect, SOCKET_flush_data, VIP_generate_cdkeys, _, addCallback, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_queue_callbacks, chat_color, concat_name, config, cppversion, crypto, date, default_config, default_data, dialogues, disconnect_list, duel_log, e, exec, execFile, fs, geoip, get_callback, get_memory_usage, http, http_server, https, https_server, import_datas, imported, is_requesting, j, k, l, len, len1, lflists, list, loadJSON, load_dialogues, load_dialogues_custom, load_tips, load_tips_zh, load_words, log, long_resolve_cards, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, oldwords, options, os, path, pgClient, pg_client, pg_query, redis, redisdb, ref, ref1, ref2, refresh_challonge_cache, release_disconnect, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, url, users_cache, v, vip_info, wait_room_start, wait_room_start_arena, windbot_looplimit, windbots, words, ygopro, zlib;
net = require('net');
......@@ -1221,7 +1221,7 @@
};
CLIENT_heartbeat_register = function(client, send) {
if (!settings.modules.heartbeat_detection.enabled || client.closed || client.is_post_watcher || client.pre_reconnecting || client.reconnecting || client.waiting_for_last || client.pos > 3 || client.heartbeat_protected) {
if (!settings.modules.heartbeat_detection.enabled || client.closed || client.is_post_watcher || client.pre_reconnecting || client.reconnecting || client.pos > 3 || client.heartbeat_protected) {
return false;
}
if (client.heartbeat_timeout) {
......@@ -1292,6 +1292,15 @@
return true;
};
SOCKET_flush_data = function(sk, datas) {
var buffer, len2, m;
for (m = 0, len2 = datas.length; m < len2; m++) {
buffer = datas[m];
sk.write(buffer);
}
datas.splice(0, datas.length);
};
Room = (function() {
function Room(name, hostinfo) {
var draw_count, lflist, param, rule, start_hand, start_lp, time_limit;
......@@ -1729,18 +1738,18 @@
};
Room.prototype.send_replays = function() {
var len2, len3, m, n, player, ref2, ref3;
var len2, len3, m, n, player, ref3, ref4;
if (!(settings.modules.replay_delay && this.replays.length && this.hostinfo.mode === 1)) {
return false;
}
ref2 = this.players;
for (m = 0, len2 = ref2.length; m < len2; m++) {
player = ref2[m];
ref3 = this.players;
for (m = 0, len2 = ref3.length; m < len2; m++) {
player = ref3[m];
CLIENT_send_replays(player, this);
}
ref3 = this.watchers;
for (n = 0, len3 = ref3.length; n < len3; n++) {
player = ref3[n];
ref4 = this.watchers;
for (n = 0, len3 = ref4.length; n < len3; n++) {
player = ref4[n];
CLIENT_send_replays(player, this);
}
return true;
......@@ -2016,9 +2025,9 @@
info = _.clone(struct.fields);
}
if (ygopro.ctos_follows[ctos_proto].synchronous) {
cancel = ygopro.ctos_follows[ctos_proto].callback(b, info, client, client.server);
cancel = ygopro.ctos_follows[ctos_proto].callback(b, info, client, client.server, datas);
} else {
ygopro.ctos_follows[ctos_proto].callback(b, info, client, client.server);
ygopro.ctos_follows[ctos_proto].callback(b, info, client, client.server, datas);
}
}
if (!cancel) {
......@@ -2098,9 +2107,9 @@
info = _.clone(struct.fields);
}
if (ygopro.stoc_follows[stoc_proto].synchronous) {
cancel = ygopro.stoc_follows[stoc_proto].callback(b, info, server.client, server);
cancel = ygopro.stoc_follows[stoc_proto].callback(b, info, server.client, server, datas);
} else {
ygopro.stoc_follows[stoc_proto].callback(b, info, server.client, server);
ygopro.stoc_follows[stoc_proto].callback(b, info, server.client, server, datas);
}
}
if (!cancel) {
......@@ -2136,7 +2145,7 @@
log.info("NOTE: server not open due to config, ", settings.modules.stop);
}
ygopro.ctos_follow('PLAYER_INFO', true, function(buffer, info, client, server) {
ygopro.ctos_follow('PLAYER_INFO', true, function(buffer, info, client, server, datas) {
var geo, lang, name, name_full, struct, vpass;
name_full = info.name.split("$");
name = name_full[0];
......@@ -2201,7 +2210,7 @@
return false;
});
ygopro.ctos_follow('JOIN_GAME', false, function(buffer, info, client, server) {
ygopro.ctos_follow('JOIN_GAME', false, function(buffer, info, client, server, datas) {
var buffer_pos, check, decrypted_buffer, finish, i, id, len2, len3, len4, len5, len6, len7, len8, len9, line, m, n, name, o, oppo_pos, p, player, player_string, pre_room, q, r, ref3, ref4, ref5, ref6, ref7, ref8, replay_id, room, room_buffer, room_players, room_showed, s, secret, t;
info.pass = info.pass.trim();
client.pass = info.pass;
......@@ -2738,7 +2747,7 @@
}
});
ygopro.stoc_follow('JOIN_GAME', false, function(buffer, info, client, server) {
ygopro.stoc_follow('JOIN_GAME', false, function(buffer, info, client, server, datas) {
var len2, len3, len4, line, m, n, o, player, recorder, ref3, ref4, ref5, room, watcher;
room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) {
......@@ -2902,7 +2911,7 @@
load_dialogues_custom();
}
ygopro.stoc_follow('GAME_MSG', true, function(buffer, info, client, server) {
ygopro.stoc_follow('GAME_MSG', true, function(buffer, info, client, server, datas) {
var act_pos, card, chain, check, count, cpos, deck_found, found, hint_type, i, id, len10, len2, len3, len4, len5, len6, len7, len8, len9, limbo_found, line, loc, m, max_loop, msg, n, o, oppo_pos, p, phase, player, playertype, pos, ppos, q, r, r_player, reason, ref10, ref11, ref12, ref13, ref3, ref4, ref5, ref6, ref7, ref8, ref9, room, s, t, trigger_location, val, win_pos, x, y;
room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) {
......@@ -3259,7 +3268,7 @@
return false;
});
ygopro.ctos_follow('HS_TOOBSERVER', true, function(buffer, info, client, server) {
ygopro.ctos_follow('HS_TOOBSERVER', true, function(buffer, info, client, server, datas) {
var len2, m, player, ref3, room;
room = ROOM_all[client.rid];
if (!room) {
......@@ -3283,7 +3292,7 @@
return false;
});
ygopro.ctos_follow('HS_KICK', true, function(buffer, info, client, server) {
ygopro.ctos_follow('HS_KICK', true, function(buffer, info, client, server, datas) {
var len2, m, player, ref3, room;
room = ROOM_all[client.rid];
if (!room) {
......@@ -3311,7 +3320,7 @@
return false;
});
ygopro.stoc_follow('TYPE_CHANGE', true, function(buffer, info, client, server) {
ygopro.stoc_follow('TYPE_CHANGE', true, function(buffer, info, client, server, datas) {
var is_host, selftype;
selftype = info.type & 0xf;
is_host = ((info.type >> 4) & 0xf) !== 0;
......@@ -3320,7 +3329,7 @@
return false;
});
ygopro.stoc_follow('HS_PLAYER_CHANGE', false, function(buffer, info, client, server) {
ygopro.stoc_follow('HS_PLAYER_CHANGE', false, function(buffer, info, client, server, datas) {
var is_ready, len2, len3, m, n, p1, p2, player, pos, ref3, ref4, room;
room = ROOM_all[client.rid];
if (!(room && room.max_player && client.is_host)) {
......@@ -3390,20 +3399,19 @@
}
});
ygopro.ctos_follow('REQUEST_FIELD', true, function(buffer, info, client, server) {
ygopro.ctos_follow('REQUEST_FIELD', true, function(buffer, info, client, server, datas) {
return true;
});
ygopro.stoc_follow('FIELD_FINISH', true, function(buffer, info, client, server) {
ygopro.stoc_follow('FIELD_FINISH', true, function(buffer, info, client, server, datas) {
var room;
room = ROOM_all[client.rid];
if (!(room && settings.modules.reconnect.enabled)) {
return true;
}
client.reconnecting = false;
if (client.time_confirm_required) {
client.waiting_for_last = true;
} else if (client.last_game_msg && client.last_game_msg_title !== 'WAITING') {
if (client.last_game_msg && client.last_game_msg_title !== 'WAITING') {
SOCKET_flush_data(client, datas);
if (client.last_hint_msg) {
ygopro.stoc_send(client, 'GAME_MSG', client.last_hint_msg);
}
......@@ -3412,26 +3420,20 @@
return true;
});
ygopro.stoc_follow('DUEL_END', false, function(buffer, info, client, server) {
var len2, len3, m, n, player, ref3, ref4, results, room;
ygopro.stoc_follow('DUEL_END', false, function(buffer, info, client, server, datas) {
var len2, m, player, ref3, results, room;
room = ROOM_all[client.rid];
if (!(room && settings.modules.replay_delay && room.hostinfo.mode === 1)) {
return;
}
SOCKET_flush_data(client, datas);
CLIENT_send_replays(client, room);
if (!room.replays_sent_to_watchers) {
room.replays_sent_to_watchers = true;
ref3 = room.players;
ref3 = room.watchers;
results = [];
for (m = 0, len2 = ref3.length; m < len2; m++) {
player = ref3[m];
if (player && player.pos > 3) {
CLIENT_send_replays(player, room);
}
}
ref4 = room.watchers;
results = [];
for (n = 0, len3 = ref4.length; n < len3; n++) {
player = ref4[n];
if (player) {
results.push(CLIENT_send_replays(player, room));
}
......@@ -3568,7 +3570,7 @@
}, 30000);
}
ygopro.stoc_follow('DUEL_START', false, function(buffer, info, client, server) {
ygopro.stoc_follow('DUEL_START', false, function(buffer, info, client, server, datas) {
var deck_arena, deck_name, deck_text, len2, m, player, ref3, room;
room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) {
......@@ -3651,7 +3653,7 @@
}
});
ygopro.ctos_follow('SURRENDER', true, function(buffer, info, client, server) {
ygopro.ctos_follow('SURRENDER', true, function(buffer, info, client, server, datas) {
var room, sur_player;
room = ROOM_all[client.rid];
if (!room) {
......@@ -3704,7 +3706,7 @@
});
};
ygopro.ctos_follow('CHAT', true, function(buffer, info, client, server) {
ygopro.ctos_follow('CHAT', true, function(buffer, info, client, server, datas) {
var buy_result, cancel, ccolor, cip, cmd, cmsg, cname, code, color, cvalue, key, msg, name, oldmsg, ref3, room, struct, sur_player, uname, windbot, word;
room = ROOM_all[client.rid];
if (!room) {
......@@ -4035,7 +4037,7 @@
return cancel;
});
ygopro.ctos_follow('UPDATE_DECK', true, function(buffer, info, client, server) {
ygopro.ctos_follow('UPDATE_DECK', true, function(buffer, info, client, server, datas) {
var buff_main, buff_side, card, current_deck, deck, deck_array, deck_main, deck_side, deck_text, deckbuf, decks, found_deck, i, len2, len3, line, m, n, oppo_pos, room, struct, win_pos;
if (settings.modules.reconnect.enabled && client.pre_reconnecting) {
if (!CLIENT_is_able_to_reconnect(client) && !CLIENT_is_able_to_kick_reconnect(client)) {
......@@ -4166,7 +4168,7 @@
return false;
});
ygopro.ctos_follow('RESPONSE', false, function(buffer, info, client, server) {
ygopro.ctos_follow('RESPONSE', false, function(buffer, info, client, server, datas) {
var room;
room = ROOM_all[client.rid];
if (!(room && (room.random_type || room.arena))) {
......@@ -4175,7 +4177,7 @@
room.last_active_time = moment();
});
ygopro.stoc_follow('TIME_LIMIT', true, function(buffer, info, client, server) {
ygopro.stoc_follow('TIME_LIMIT', true, function(buffer, info, client, server, datas) {
var check, cur_players, room;
room = ROOM_all[client.rid];
if (!room) {
......@@ -4226,22 +4228,13 @@
return false;
});
ygopro.ctos_follow('TIME_CONFIRM', false, function(buffer, info, client, server) {
ygopro.ctos_follow('TIME_CONFIRM', false, function(buffer, info, client, server, datas) {
var room;
room = ROOM_all[client.rid];
if (!room) {
return;
}
if (settings.modules.reconnect.enabled) {
if (client.waiting_for_last) {
client.waiting_for_last = false;
if (client.last_game_msg && client.last_game_msg_title !== 'WAITING') {
if (client.last_hint_msg) {
ygopro.stoc_send(client, 'GAME_MSG', client.last_hint_msg);
}
ygopro.stoc_send(client, 'GAME_MSG', client.last_game_msg);
}
}
client.time_confirm_required = false;
}
if (settings.modules.heartbeat_detection.enabled) {
......@@ -4251,7 +4244,7 @@
}
});
ygopro.ctos_follow('HAND_RESULT', false, function(buffer, info, client, server) {
ygopro.ctos_follow('HAND_RESULT', false, function(buffer, info, client, server, datas) {
var room;
room = ROOM_all[client.rid];
if (!room) {
......@@ -4267,7 +4260,7 @@
room.last_active_time = moment().subtract(settings.modules.random_duel.hang_timeout - 19, 's');
});
ygopro.ctos_follow('TP_RESULT', false, function(buffer, info, client, server) {
ygopro.ctos_follow('TP_RESULT', false, function(buffer, info, client, server, datas) {
var room;
room = ROOM_all[client.rid];
if (!room) {
......@@ -4280,7 +4273,7 @@
room.last_active_time = moment();
});
ygopro.stoc_follow('CHAT', true, function(buffer, info, client, server) {
ygopro.stoc_follow('CHAT', true, function(buffer, info, client, server, datas) {
var len2, m, pid, player, ref3, room, tcolor, tplayer;
room = ROOM_all[client.rid];
pid = info.player;
......@@ -4319,7 +4312,7 @@
}
});
ygopro.stoc_follow('SELECT_HAND', false, function(buffer, info, client, server) {
ygopro.stoc_follow('SELECT_HAND', false, function(buffer, info, client, server, datas) {
var room;
room = ROOM_all[client.rid];
if (!room) {
......@@ -4341,7 +4334,7 @@
room.last_active_time = moment().subtract(settings.modules.random_duel.hang_timeout - 19, 's');
});
ygopro.stoc_follow('SELECT_TP', false, function(buffer, info, client, server) {
ygopro.stoc_follow('SELECT_TP', false, function(buffer, info, client, server, datas) {
var room;
room = ROOM_all[client.rid];
if (!room) {
......@@ -4357,7 +4350,7 @@
}
});
ygopro.stoc_follow('CHANGE_SIDE', false, function(buffer, info, client, server) {
ygopro.stoc_follow('CHANGE_SIDE', false, function(buffer, info, client, server, datas) {
var room, sinterval, temp_log;
room = ROOM_all[client.rid];
if (!room) {
......@@ -4412,7 +4405,7 @@
}
});
ygopro.stoc_follow('REPLAY', true, function(buffer, info, client, server) {
ygopro.stoc_follow('REPLAY', true, function(buffer, info, client, server, datas) {
var duellog, dueltime, i, len2, len3, m, n, player, ref3, ref4, replay_filename, room;
room = ROOM_all[client.rid];
if (!room) {
......
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