Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
srvpro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
srvpro
Commits
24183ed8
Commit
24183ed8
authored
May 08, 2020
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
recover in challonge
parent
1bf648a2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
308 additions
and
307 deletions
+308
-307
data/i18n.json
data/i18n.json
+2
-2
ygopro-server.coffee
ygopro-server.coffee
+34
-34
ygopro-server.js
ygopro-server.js
+272
-271
No files found.
data/i18n.json
View file @
24183ed8
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
"cloud_replay_error"
:
"Replay opening failed."
,
"cloud_replay_error"
:
"Replay opening failed."
,
"cloud_replay_playing"
:
"Accessing cloud replay"
,
"cloud_replay_playing"
:
"Accessing cloud replay"
,
"cloud_replay_hint"
:
"These are the recent saved replay codes, please enter the replay code at the password column to access it."
,
"cloud_replay_hint"
:
"These are the recent saved replay codes, please enter the replay code at the password column to access it."
,
"recover_replay_hint"
:
"These are the recent duels, please enter the code RC[ID]
%
[TURN]#[ROOMNAME] at the password column to recover the duel."
,
"recover_replay_hint"
:
"These are the recent duels, please enter the code RC[ID]
T
[TURN]#[ROOMNAME] at the password column to recover the duel."
,
"recover_hint"
:
"You entered a recover room. Please be ready with your deck on that duel."
,
"recover_hint"
:
"You entered a recover room. Please be ready with your deck on that duel."
,
"recover_start_hint"
:
"Started recovering..."
,
"recover_start_hint"
:
"Started recovering..."
,
"recover_success"
:
"Recover success. Please wait until current turn."
,
"recover_success"
:
"Recover success. Please wait until current turn."
,
...
@@ -347,7 +347,7 @@
...
@@ -347,7 +347,7 @@
"cloud_replay_error"
:
"播放录像出错"
,
"cloud_replay_error"
:
"播放录像出错"
,
"cloud_replay_playing"
:
"正在观看云录像"
,
"cloud_replay_playing"
:
"正在观看云录像"
,
"cloud_replay_hint"
:
"以下是您近期的云录像,密码处输入 R#录像编号 即可观看"
,
"cloud_replay_hint"
:
"以下是您近期的云录像,密码处输入 R#录像编号 即可观看"
,
"recover_replay_hint"
:
"以下是您近期进行的决斗,密码处输入 RC决斗编号
%
回合数#房间号 即可创建复盘房间"
,
"recover_replay_hint"
:
"以下是您近期进行的决斗,密码处输入 RC决斗编号
T
回合数#房间号 即可创建复盘房间"
,
"recover_hint"
:
"你进入了一个复盘房间,请使用复盘局的卡组准备。"
,
"recover_hint"
:
"你进入了一个复盘房间,请使用复盘局的卡组准备。"
,
"recover_start_hint"
:
"开始复盘..."
,
"recover_start_hint"
:
"开始复盘..."
,
"recover_success"
:
"复盘成功。请耐心等待跳到当前回合。"
,
"recover_success"
:
"复盘成功。请耐心等待跳到当前回合。"
,
...
...
ygopro-server.coffee
View file @
24183ed8
...
@@ -377,47 +377,42 @@ if settings.modules.challonge.enabled
...
@@ -377,47 +377,42 @@ if settings.modules.challonge.enabled
challonge
=
global
.
challonge
=
require
(
challonge_module_name
).
createClient
(
settings
.
modules
.
challonge
.
options
)
challonge
=
global
.
challonge
=
require
(
challonge_module_name
).
createClient
(
settings
.
modules
.
challonge
.
options
)
if
settings
.
modules
.
challonge
.
cache_ttl
if
settings
.
modules
.
challonge
.
cache_ttl
challonge_cache
=
[]
challonge_cache
=
[]
challonge_queue_callbacks
=
[[],
[]]
challonge_queue_callbacks
=
{
is_requesting
=
[
null
,
null
]
participants
:
[]
matches
:
[]
}
is_challonge_requesting
=
{
participants
:
null
matches
:
null
}
get_callback
=
(
challonge_type
,
resolve_data
)
->
get_callback
=
(
challonge_type
,
resolve_data
)
->
return
((
err
,
data
)
->
return
((
err
,
data
)
->
if
settings
.
modules
.
challonge
.
cache_ttl
and
!
err
and
data
if
settings
.
modules
.
challonge
.
cache_ttl
and
!
err
and
data
challonge_cache
[
challonge_type
]
=
data
challonge_cache
[
challonge_type
]
=
data
is_
requesting
[
challonge_type
]
=
null
is_
challonge_requesting
[
challonge_type
]
=
null
resolve_data
.
resolve
(
err
,
data
)
resolve_data
.
resolve
(
err
,
data
)
while
challonge_queue_callbacks
[
challonge_type
].
length
while
challonge_queue_callbacks
[
challonge_type
].
length
cur_resolve_data
=
challonge_queue_callbacks
[
challonge_type
].
splice
(
0
,
1
)[
0
]
cur_resolve_data
=
challonge_queue_callbacks
[
challonge_type
].
splice
(
0
,
1
)[
0
]
cur_resolve_data
.
resolve
(
err
,
data
)
cur_resolve_data
.
resolve
(
err
,
data
)
return
return
)
)
challonge
.
participants
.
_index
=
(
_data
)
->
replaced_index
=
(
challonge_type
)
->
resolve_data
=
new
ResolveData
(
_data
.
callback
)
return
(
_data
)
->
if
settings
.
modules
.
challonge
.
cache_ttl
and
challonge_cache
[
0
]
resolve_data
=
new
ResolveData
(
_data
.
callback
)
resolve_data
.
resolve
(
null
,
challonge_cache
[
0
])
if
settings
.
modules
.
challonge
.
cache_ttl
and
!
_data
.
no_cache
and
challonge_cache
[
0
]
else
if
is_requesting
[
0
]
and
moment
()
-
is_requesting
[
0
]
<=
5000
resolve_data
.
resolve
(
null
,
challonge_cache
[
challonge_type
])
challonge_queue_callbacks
[
0
].
push
(
resolve_data
)
else
if
is_challonge_requesting
[
challonge_type
]
and
moment
()
-
is_challonge_requesting
[
challonge_type
]
<=
5000
else
challonge_queue_callbacks
[
challonge_type
].
push
(
resolve_data
)
_data
.
callback
=
get_callback
(
0
,
resolve_data
)
else
is_requesting
[
0
]
=
moment
()
_data
.
callback
=
get_callback
(
challonge_type
,
resolve_data
)
try
is_challonge_requesting
[
challonge_type
]
=
moment
()
challonge
.
participants
.
index
(
_data
)
try
catch
err
challonge
[
challonge_type
].
index
(
_data
)
_data
.
callback
(
err
,
null
)
catch
err
return
_data
.
callback
(
err
,
null
)
challonge
.
matches
.
_index
=
(
_data
)
->
return
resolve_data
=
new
ResolveData
(
_data
.
callback
)
for
challonge_type
in
[
"participants"
,
"matches"
]
if
settings
.
modules
.
challonge
.
cache_ttl
and
challonge_cache
[
1
]
challonge
[
challonge_type
].
_index
=
replaced_index
(
challonge_type
)
resolve_data
.
resolve
(
null
,
challonge_cache
[
1
])
else
if
is_requesting
[
1
]
and
moment
()
-
is_requesting
[
1
]
<=
5000
challonge_queue_callbacks
[
1
].
push
(
resolve_data
)
else
_data
.
callback
=
get_callback
(
1
,
resolve_data
)
is_requesting
[
1
]
=
moment
()
try
challonge
.
matches
.
index
(
_data
)
catch
err
_data
.
callback
(
err
,
null
)
return
challonge
.
matches
.
_update
=
(
_data
)
->
challonge
.
matches
.
_update
=
(
_data
)
->
try
try
challonge
.
matches
.
update
(
_data
)
challonge
.
matches
.
update
(
_data
)
...
@@ -1176,7 +1171,7 @@ class Room
...
@@ -1176,7 +1171,7 @@ class Room
else
else
@
hostinfo
.
auto_death
=
40
@
hostinfo
.
auto_death
=
40
if
settings
.
modules
.
tournament_mode
.
enable_recover
and
(
param
=
rule
.
match
/(^|,|,)(RC|RECOVER)(\d*)
%
(\d*)(,|,|$)/
)
if
settings
.
modules
.
tournament_mode
.
enable_recover
and
(
param
=
rule
.
match
/(^|,|,)(RC|RECOVER)(\d*)
T
(\d*)(,|,|$)/
)
@
recovered
=
true
@
recovered
=
true
@
recovering
=
true
@
recovering
=
true
@
recover_from_turn
=
parseInt
(
param
[
4
])
@
recover_from_turn
=
parseInt
(
param
[
4
])
...
@@ -2267,6 +2262,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
...
@@ -2267,6 +2262,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
else
else
ygopro
.
stoc_send_chat
(
client
,
'${loading_user_info}'
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
ygopro
.
stoc_send_chat
(
client
,
'${loading_user_info}'
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
client
.
setTimeout
(
300000
)
#连接后超时5分钟
client
.
setTimeout
(
300000
)
#连接后超时5分钟
recover_match
=
info
.
pass
.
match
(
/^(RC|RECOVER)(\d*)T(\d*)$/
)
_async
.
auto
({
_async
.
auto
({
participant_data
:
(
done
)
->
participant_data
:
(
done
)
->
challonge
.
participants
.
_index
({
challonge
.
participants
.
_index
({
...
@@ -2278,7 +2274,8 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
...
@@ -2278,7 +2274,8 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
match_data
:
(
done
)
->
match_data
:
(
done
)
->
challonge
.
matches
.
_index
({
challonge
.
matches
.
_index
({
id
:
settings
.
modules
.
challonge
.
tournament_id
,
id
:
settings
.
modules
.
challonge
.
tournament_id
,
callback
:
done
callback
:
done
,
no_cache
:
!!
recover_match
})
})
return
return
},
(
err
,
datas
)
->
},
(
err
,
datas
)
->
...
@@ -2308,7 +2305,10 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
...
@@ -2308,7 +2305,10 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
#if found.winnerId
#if found.winnerId
# ygopro.stoc_die(client, '${challonge_match_already_finished}')
# ygopro.stoc_die(client, '${challonge_match_already_finished}')
# return
# return
room
=
ROOM_find_or_create_by_name
(
'M#'
+
found
.
id
)
create_room_name
=
'M#'
+
found
.
id
if
recover_match
create_room_name
=
recover_match
[
0
]
+
','
+
create_room_name
room
=
ROOM_find_or_create_by_name
(
create_room_name
)
if
room
if
room
room
.
challonge_info
=
found
room
.
challonge_info
=
found
# room.max_player = 2
# room.max_player = 2
...
...
ygopro-server.js
View file @
24183ed8
// Generated by CoffeeScript 2.5.1
// Generated by CoffeeScript 2.5.1
(
function
()
{
(
function
()
{
// 标准库
// 标准库
var
CLIENT_get_authorize_key
,
CLIENT_get_kick_reconnect_target
,
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
,
Cloud_replay_ids
,
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_banned
,
ROOM_players_oppentlist
,
ROOM_players_scores
,
ROOM_unwelcome
,
ROOM_validate
,
ReplayParser
,
ResolveData
,
Room
,
SERVER_clear_disconnect
,
SERVER_kick
,
SOCKET_flush_data
,
_
,
_async
,
addCallback
,
auth
,
badwords
,
ban_user
,
bunyan
,
challonge
,
challonge_cache
,
challonge_module_name
,
challonge_queue_callbacks
,
cha
t_color
,
config
,
cppversion
,
crypto
,
date
,
deck_name_match
,
default_config
,
default_data
,
dialogues
,
disconnect_list
,
dns
,
duel_log
,
e
,
exec
,
execFile
,
fs
,
geoip
,
get_callback
,
get_memory_usage
,
http
,
http_server
,
https
,
https_server
,
import_datas
,
imported
,
is_requesting
,
j
,
l
,
len
,
len1
,
len2
,
lflists
,
list
,
loadJSON
,
load_dialogues
,
load_tips
,
log
,
long_resolve_cards
,
m
,
memory_usage
,
merge
,
moment
,
net
,
oldbadwords
,
oldconfig
,
olddialogues
,
oldduellog
,
oldtips
,
options
,
os
,
path
,
pgClient
,
pg_client
,
pg_query
,
plugin_filename
,
plugin_list
,
plugin_path
,
real_windbot_server_ip
,
redis
,
redisdb
,
ref
,
ref1
,
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
,
util
,
wait_room_start
,
wait_room_start_arena
,
windbot_looplimit
,
windbot_process
,
windbots
,
ygopro
,
zlib
;
var
CLIENT_get_authorize_key
,
CLIENT_get_kick_reconnect_target
,
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
,
Cloud_replay_ids
,
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_banned
,
ROOM_players_oppentlist
,
ROOM_players_scores
,
ROOM_unwelcome
,
ROOM_validate
,
ReplayParser
,
ResolveData
,
Room
,
SERVER_clear_disconnect
,
SERVER_kick
,
SOCKET_flush_data
,
_
,
_async
,
addCallback
,
auth
,
badwords
,
ban_user
,
bunyan
,
challonge
,
challonge_cache
,
challonge_module_name
,
challonge_queue_callbacks
,
cha
llonge_type
,
chat_color
,
config
,
cppversion
,
crypto
,
date
,
deck_name_match
,
default_config
,
default_data
,
dialogues
,
disconnect_list
,
dns
,
duel_log
,
e
,
exec
,
execFile
,
fs
,
geoip
,
get_callback
,
get_memory_usage
,
http
,
http_server
,
https
,
https_server
,
import_datas
,
imported
,
is_challonge_requesting
,
j
,
l
,
len
,
len1
,
len2
,
len3
,
lflists
,
list
,
loadJSON
,
load_dialogues
,
load_tips
,
log
,
long_resolve_cards
,
m
,
memory_usage
,
merge
,
moment
,
n
,
net
,
oldbadwords
,
oldconfig
,
olddialogues
,
oldduellog
,
oldtips
,
options
,
os
,
path
,
pgClient
,
pg_client
,
pg_query
,
plugin_filename
,
plugin_list
,
plugin_path
,
real_windbot_server_ip
,
redis
,
redisdb
,
ref
,
ref1
,
ref2
,
refresh_challonge_cache
,
release_disconnect
,
replaced_index
,
report_to_big_brother
,
request
,
requestListener
,
roomlist
,
setting_change
,
setting_save
,
settings
,
spawn
,
spawnSync
,
spawn_windbot
,
tips
,
url
,
users_cache
,
util
,
wait_room_start
,
wait_room_start_arena
,
windbot_looplimit
,
windbot_process
,
windbots
,
ygopro
,
zlib
;
net
=
require
(
'
net
'
);
net
=
require
(
'
net
'
);
...
@@ -493,15 +493,21 @@
...
@@ -493,15 +493,21 @@
if
(
settings
.
modules
.
challonge
.
cache_ttl
)
{
if
(
settings
.
modules
.
challonge
.
cache_ttl
)
{
challonge_cache
=
[];
challonge_cache
=
[];
}
}
challonge_queue_callbacks
=
[[],
[]];
challonge_queue_callbacks
=
{
is_requesting
=
[
null
,
null
];
participants
:
[],
matches
:
[]
};
is_challonge_requesting
=
{
participants
:
null
,
matches
:
null
};
get_callback
=
function
(
challonge_type
,
resolve_data
)
{
get_callback
=
function
(
challonge_type
,
resolve_data
)
{
return
(
function
(
err
,
data
)
{
return
(
function
(
err
,
data
)
{
var
cur_resolve_data
;
var
cur_resolve_data
;
if
(
settings
.
modules
.
challonge
.
cache_ttl
&&
!
err
&&
data
)
{
if
(
settings
.
modules
.
challonge
.
cache_ttl
&&
!
err
&&
data
)
{
challonge_cache
[
challonge_type
]
=
data
;
challonge_cache
[
challonge_type
]
=
data
;
}
}
is_requesting
[
challonge_type
]
=
null
;
is_
challonge_
requesting
[
challonge_type
]
=
null
;
resolve_data
.
resolve
(
err
,
data
);
resolve_data
.
resolve
(
err
,
data
);
while
(
challonge_queue_callbacks
[
challonge_type
].
length
)
{
while
(
challonge_queue_callbacks
[
challonge_type
].
length
)
{
cur_resolve_data
=
challonge_queue_callbacks
[
challonge_type
].
splice
(
0
,
1
)[
0
];
cur_resolve_data
=
challonge_queue_callbacks
[
challonge_type
].
splice
(
0
,
1
)[
0
];
...
@@ -509,42 +515,31 @@
...
@@ -509,42 +515,31 @@
}
}
});
});
};
};
challonge
.
participants
.
_index
=
function
(
_data
)
{
replaced_index
=
function
(
challonge_type
)
{
var
err
,
resolve_data
;
return
function
(
_data
)
{
resolve_data
=
new
ResolveData
(
_data
.
callback
);
var
err
,
resolve_data
;
if
(
settings
.
modules
.
challonge
.
cache_ttl
&&
challonge_cache
[
0
])
{
resolve_data
=
new
ResolveData
(
_data
.
callback
);
resolve_data
.
resolve
(
null
,
challonge_cache
[
0
]);
if
(
settings
.
modules
.
challonge
.
cache_ttl
&&
!
_data
.
no_cache
&&
challonge_cache
[
0
])
{
}
else
if
(
is_requesting
[
0
]
&&
moment
()
-
is_requesting
[
0
]
<=
5000
)
{
resolve_data
.
resolve
(
null
,
challonge_cache
[
challonge_type
]);
challonge_queue_callbacks
[
0
].
push
(
resolve_data
);
}
else
if
(
is_challonge_requesting
[
challonge_type
]
&&
moment
()
-
is_challonge_requesting
[
challonge_type
]
<=
5000
)
{
}
else
{
challonge_queue_callbacks
[
challonge_type
].
push
(
resolve_data
);
_data
.
callback
=
get_callback
(
0
,
resolve_data
);
}
else
{
is_requesting
[
0
]
=
moment
();
_data
.
callback
=
get_callback
(
challonge_type
,
resolve_data
);
try
{
is_challonge_requesting
[
challonge_type
]
=
moment
();
challonge
.
participants
.
index
(
_data
);
try
{
}
catch
(
error1
)
{
challonge
[
challonge_type
].
index
(
_data
);
err
=
error1
;
}
catch
(
error1
)
{
_data
.
callback
(
err
,
null
);
err
=
error1
;
}
_data
.
callback
(
err
,
null
);
}
}
};
challonge
.
matches
.
_index
=
function
(
_data
)
{
var
err
,
resolve_data
;
resolve_data
=
new
ResolveData
(
_data
.
callback
);
if
(
settings
.
modules
.
challonge
.
cache_ttl
&&
challonge_cache
[
1
])
{
resolve_data
.
resolve
(
null
,
challonge_cache
[
1
]);
}
else
if
(
is_requesting
[
1
]
&&
moment
()
-
is_requesting
[
1
]
<=
5000
)
{
challonge_queue_callbacks
[
1
].
push
(
resolve_data
);
}
else
{
_data
.
callback
=
get_callback
(
1
,
resolve_data
);
is_requesting
[
1
]
=
moment
();
try
{
challonge
.
matches
.
index
(
_data
);
}
catch
(
error1
)
{
err
=
error1
;
_data
.
callback
(
err
,
null
);
}
}
}
}
;
};
};
ref2
=
[
"
participants
"
,
"
matches
"
];
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
challonge_type
=
ref2
[
m
];
challonge
[
challonge_type
].
_index
=
replaced_index
(
challonge_type
);
}
challonge
.
matches
.
_update
=
function
(
_data
)
{
challonge
.
matches
.
_update
=
function
(
_data
)
{
var
err
;
var
err
;
try
{
try
{
...
@@ -954,13 +949,13 @@
...
@@ -954,13 +949,13 @@
};
};
ROOM_unwelcome
=
global
.
ROOM_unwelcome
=
function
(
room
,
bad_player
,
reason
)
{
ROOM_unwelcome
=
global
.
ROOM_unwelcome
=
function
(
room
,
bad_player
,
reason
)
{
var
len
2
,
m
,
player
,
ref2
;
var
len
3
,
n
,
player
,
ref3
;
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
}
}
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
&&
player
===
bad_player
)
{
if
(
player
&&
player
===
bad_player
)
{
ygopro
.
stoc_send_chat
(
player
,
`\${unwelcome_warn_part1}
${
reason
}
\${unwelcome_warn_part2}`
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
player
,
`\${unwelcome_warn_part1}
${
reason
}
\${unwelcome_warn_part2}`
,
ygopro
.
constants
.
COLORS
.
RED
);
}
else
if
(
player
&&
player
.
pos
!==
7
&&
player
!==
bad_player
)
{
}
else
if
(
player
&&
player
.
pos
!==
7
&&
player
!==
bad_player
)
{
...
@@ -1072,10 +1067,10 @@
...
@@ -1072,10 +1067,10 @@
};
};
CLIENT_import_data
=
global
.
CLIENT_import_data
=
function
(
client
,
old_client
,
room
)
{
CLIENT_import_data
=
global
.
CLIENT_import_data
=
function
(
client
,
old_client
,
room
)
{
var
index
,
key
,
len
2
,
len3
,
m
,
n
,
player
,
ref2
;
var
index
,
key
,
len
3
,
len4
,
n
,
o
,
player
,
ref3
;
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
index
=
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
index
=
++
m
)
{
for
(
index
=
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
index
=
++
n
)
{
player
=
ref
2
[
index
];
player
=
ref
3
[
index
];
if
(
player
===
old_client
)
{
if
(
player
===
old_client
)
{
room
.
players
[
index
]
=
client
;
room
.
players
[
index
]
=
client
;
break
;
break
;
...
@@ -1094,8 +1089,8 @@
...
@@ -1094,8 +1089,8 @@
if
(
room
.
determine_firstgo
===
old_client
)
{
if
(
room
.
determine_firstgo
===
old_client
)
{
room
.
determine_firstgo
=
client
;
room
.
determine_firstgo
=
client
;
}
}
for
(
n
=
0
,
len3
=
import_datas
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
import_datas
.
length
;
o
<
len4
;
o
++
)
{
key
=
import_datas
[
n
];
key
=
import_datas
[
o
];
client
[
key
]
=
old_client
[
key
];
client
[
key
]
=
old_client
[
key
];
}
}
old_client
.
had_new_reconnection
=
true
;
old_client
.
had_new_reconnection
=
true
;
...
@@ -1134,11 +1129,11 @@
...
@@ -1134,11 +1129,11 @@
};
};
CLIENT_is_player
=
global
.
CLIENT_is_player
=
function
(
client
,
room
)
{
CLIENT_is_player
=
global
.
CLIENT_is_player
=
function
(
client
,
room
)
{
var
is_player
,
len
2
,
m
,
player
,
ref2
;
var
is_player
,
len
3
,
n
,
player
,
ref3
;
is_player
=
false
;
is_player
=
false
;
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
client
===
player
)
{
if
(
client
===
player
)
{
is_player
=
true
;
is_player
=
true
;
break
;
break
;
...
@@ -1171,13 +1166,13 @@
...
@@ -1171,13 +1166,13 @@
};
};
CLIENT_get_kick_reconnect_target
=
global
.
CLIENT_get_kick_reconnect_target
=
function
(
client
,
deckbuf
)
{
CLIENT_get_kick_reconnect_target
=
global
.
CLIENT_get_kick_reconnect_target
=
function
(
client
,
deckbuf
)
{
var
len
2
,
len3
,
m
,
n
,
player
,
ref2
,
room
;
var
len
3
,
len4
,
n
,
o
,
player
,
ref3
,
room
;
for
(
m
=
0
,
len2
=
ROOM_all
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ROOM_all
.
length
;
n
<
len3
;
n
++
)
{
room
=
ROOM_all
[
m
];
room
=
ROOM_all
[
n
];
if
(
room
&&
room
.
duel_stage
!==
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
!
room
.
windbot
)
{
if
(
room
&&
room
.
duel_stage
!==
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
!
room
.
windbot
)
{
ref
2
=
room
.
get_playing_player
();
ref
3
=
room
.
get_playing_player
();
for
(
n
=
0
,
len3
=
ref2
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref3
.
length
;
o
<
len4
;
o
++
)
{
player
=
ref
2
[
n
];
player
=
ref
3
[
o
];
if
(
!
player
.
closed
&&
player
.
name
===
client
.
name
&&
(
settings
.
modules
.
challonge
.
enabled
||
player
.
pass
===
client
.
pass
)
&&
(
settings
.
modules
.
mycard
.
enabled
||
settings
.
modules
.
tournament_mode
.
enabled
||
player
.
ip
===
client
.
ip
||
(
client
.
vpass
&&
client
.
vpass
===
player
.
vpass
))
&&
(
!
deckbuf
||
_
.
isEqual
(
player
.
start_deckbuf
,
deckbuf
)))
{
if
(
!
player
.
closed
&&
player
.
name
===
client
.
name
&&
(
settings
.
modules
.
challonge
.
enabled
||
player
.
pass
===
client
.
pass
)
&&
(
settings
.
modules
.
mycard
.
enabled
||
settings
.
modules
.
tournament_mode
.
enabled
||
player
.
ip
===
client
.
ip
||
(
client
.
vpass
&&
client
.
vpass
===
player
.
vpass
))
&&
(
!
deckbuf
||
_
.
isEqual
(
player
.
start_deckbuf
,
deckbuf
)))
{
return
player
;
return
player
;
}
}
...
@@ -1198,7 +1193,7 @@
...
@@ -1198,7 +1193,7 @@
};
};
CLIENT_send_pre_reconnect_info
=
global
.
CLIENT_send_pre_reconnect_info
=
function
(
client
,
room
,
old_client
)
{
CLIENT_send_pre_reconnect_info
=
global
.
CLIENT_send_pre_reconnect_info
=
function
(
client
,
room
,
old_client
)
{
var
len
2
,
m
,
player
,
ref2
,
req_pos
;
var
len
3
,
n
,
player
,
ref3
,
req_pos
;
ygopro
.
stoc_send_chat
(
client
,
"
${pre_reconnecting_to_room}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${pre_reconnecting_to_room}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send
(
client
,
'
JOIN_GAME
'
,
room
.
join_game_buffer
);
ygopro
.
stoc_send
(
client
,
'
JOIN_GAME
'
,
room
.
join_game_buffer
);
req_pos
=
old_client
.
pos
;
req_pos
=
old_client
.
pos
;
...
@@ -1208,9 +1203,9 @@
...
@@ -1208,9 +1203,9 @@
ygopro
.
stoc_send
(
client
,
'
TYPE_CHANGE
'
,
{
ygopro
.
stoc_send
(
client
,
'
TYPE_CHANGE
'
,
{
type
:
req_pos
type
:
req_pos
});
});
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
ygopro
.
stoc_send
(
client
,
'
HS_PLAYER_ENTER
'
,
{
ygopro
.
stoc_send
(
client
,
'
HS_PLAYER_ENTER
'
,
{
name
:
player
.
name
,
name
:
player
.
name
,
pos
:
player
.
pos
pos
:
player
.
pos
...
@@ -1374,15 +1369,15 @@
...
@@ -1374,15 +1369,15 @@
};
};
CLIENT_send_replays
=
global
.
CLIENT_send_replays
=
function
(
client
,
room
)
{
CLIENT_send_replays
=
global
.
CLIENT_send_replays
=
function
(
client
,
room
)
{
var
buffer
,
i
,
len
2
,
m
,
ref2
;
var
buffer
,
i
,
len
3
,
n
,
ref3
;
if
(
!
(
settings
.
modules
.
replay_delay
&&
!
(
settings
.
modules
.
tournament_mode
.
enabled
&&
settings
.
modules
.
tournament_mode
.
block_replay_to_player
)
&&
room
.
replays
.
length
&&
room
.
hostinfo
.
mode
===
1
&&
!
client
.
replays_sent
&&
!
client
.
closed
))
{
if
(
!
(
settings
.
modules
.
replay_delay
&&
!
(
settings
.
modules
.
tournament_mode
.
enabled
&&
settings
.
modules
.
tournament_mode
.
block_replay_to_player
)
&&
room
.
replays
.
length
&&
room
.
hostinfo
.
mode
===
1
&&
!
client
.
replays_sent
&&
!
client
.
closed
))
{
return
false
;
return
false
;
}
}
client
.
replays_sent
=
true
;
client
.
replays_sent
=
true
;
i
=
0
;
i
=
0
;
ref
2
=
room
.
replays
;
ref
3
=
room
.
replays
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
buffer
=
ref
2
[
m
];
buffer
=
ref
3
[
n
];
++
i
;
++
i
;
if
(
buffer
)
{
if
(
buffer
)
{
ygopro
.
stoc_send_chat
(
client
,
"
${replay_hint_part1}
"
+
i
+
"
${replay_hint_part2}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${replay_hint_part1}
"
+
i
+
"
${replay_hint_part2}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
...
@@ -1393,12 +1388,12 @@
...
@@ -1393,12 +1388,12 @@
};
};
SOCKET_flush_data
=
global
.
SOCKET_flush_data
=
function
(
sk
,
datas
)
{
SOCKET_flush_data
=
global
.
SOCKET_flush_data
=
function
(
sk
,
datas
)
{
var
buffer
,
len
2
,
m
;
var
buffer
,
len
3
,
n
;
if
(
!
sk
||
sk
.
closed
)
{
if
(
!
sk
||
sk
.
closed
)
{
return
false
;
return
false
;
}
}
for
(
m
=
0
,
len2
=
datas
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
datas
.
length
;
n
<
len3
;
n
++
)
{
buffer
=
datas
[
m
];
buffer
=
datas
[
n
];
sk
.
write
(
buffer
);
sk
.
write
(
buffer
);
}
}
datas
.
splice
(
0
,
datas
.
length
);
datas
.
splice
(
0
,
datas
.
length
);
...
@@ -1558,7 +1553,7 @@
...
@@ -1558,7 +1553,7 @@
this
.
hostinfo
.
auto_death
=
40
;
this
.
hostinfo
.
auto_death
=
40
;
}
}
}
}
if
(
settings
.
modules
.
tournament_mode
.
enable_recover
&&
(
param
=
rule
.
match
(
/
(
^|,|,
)(
RC|RECOVER
)(\d
*
)
%
(\d
*
)(
,|,|$
)
/
)))
{
if
(
settings
.
modules
.
tournament_mode
.
enable_recover
&&
(
param
=
rule
.
match
(
/
(
^|,|,
)(
RC|RECOVER
)(\d
*
)
T
(\d
*
)(
,|,|$
)
/
)))
{
this
.
recovered
=
true
;
this
.
recovered
=
true
;
this
.
recovering
=
true
;
this
.
recovering
=
true
;
this
.
recover_from_turn
=
parseInt
(
param
[
4
]);
this
.
recover_from_turn
=
parseInt
(
param
[
4
]);
...
@@ -1612,10 +1607,10 @@
...
@@ -1612,10 +1607,10 @@
this
.
port
=
parseInt
(
data
);
this
.
port
=
parseInt
(
data
);
_
.
each
(
this
.
players
,
(
player
)
=>
{
_
.
each
(
this
.
players
,
(
player
)
=>
{
player
.
server
.
connect
(
this
.
port
,
'
127.0.0.1
'
,
function
()
{
player
.
server
.
connect
(
this
.
port
,
'
127.0.0.1
'
,
function
()
{
var
buffer
,
len
2
,
m
,
ref2
;
var
buffer
,
len
3
,
n
,
ref3
;
ref
2
=
player
.
pre_establish_buffers
;
ref
3
=
player
.
pre_establish_buffers
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
buffer
=
ref
2
[
m
];
buffer
=
ref
3
[
n
];
player
.
server
.
write
(
buffer
);
player
.
server
.
write
(
buffer
);
}
}
player
.
established
=
true
;
player
.
established
=
true
;
...
@@ -1646,15 +1641,15 @@
...
@@ -1646,15 +1641,15 @@
}
}
delete
()
{
delete
()
{
var
end_time
,
formatted_replays
,
index
,
len
2
,
log_rep_id
,
m
,
name
,
player_ips
,
player_names
,
recorder_buffer
,
ref2
,
ref3
,
repbuf
,
replay_id
,
room_name
,
score
,
score_array
,
score_form
;
var
end_time
,
formatted_replays
,
index
,
len
3
,
log_rep_id
,
n
,
name
,
player_ips
,
player_names
,
recorder_buffer
,
ref3
,
ref4
,
repbuf
,
replay_id
,
room_name
,
score
,
score_array
,
score_form
;
if
(
this
.
deleted
)
{
if
(
this
.
deleted
)
{
return
;
return
;
}
}
//log.info 'room-delete', this.name, ROOM_all.length
//log.info 'room-delete', this.name, ROOM_all.length
score_array
=
[];
score_array
=
[];
ref
2
=
this
.
scores
;
ref
3
=
this
.
scores
;
for
(
name
in
ref
2
)
{
for
(
name
in
ref
3
)
{
score
=
ref
2
[
name
];
score
=
ref
3
[
name
];
score_form
=
{
score_form
=
{
name
:
name
.
split
(
'
$
'
)[
0
],
name
:
name
.
split
(
'
$
'
)[
0
],
score
:
score
,
score
:
score
,
...
@@ -1709,9 +1704,9 @@
...
@@ -1709,9 +1704,9 @@
score_array
[
1
].
score
=
-
5
;
score_array
[
1
].
score
=
-
5
;
}
}
formatted_replays
=
[];
formatted_replays
=
[];
ref
3
=
this
.
replays
;
ref
4
=
this
.
replays
;
for
(
m
=
0
,
len2
=
ref3
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref4
.
length
;
n
<
len3
;
n
++
)
{
repbuf
=
ref
3
[
m
];
repbuf
=
ref
4
[
n
];
if
(
repbuf
)
{
if
(
repbuf
)
{
formatted_replays
.
push
(
repbuf
.
toString
(
"
base64
"
));
formatted_replays
.
push
(
repbuf
.
toString
(
"
base64
"
));
}
}
...
@@ -1839,14 +1834,14 @@
...
@@ -1839,14 +1834,14 @@
}
}
get_disconnected_count
()
{
get_disconnected_count
()
{
var
found
,
len
2
,
m
,
player
,
ref2
;
var
found
,
len
3
,
n
,
player
,
ref3
;
if
(
!
settings
.
modules
.
reconnect
.
enabled
)
{
if
(
!
settings
.
modules
.
reconnect
.
enabled
)
{
return
0
;
return
0
;
}
}
found
=
0
;
found
=
0
;
ref
2
=
this
.
get_playing_player
();
ref
3
=
this
.
get_playing_player
();
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
.
closed
)
{
if
(
player
.
closed
)
{
found
++
;
found
++
;
}
}
...
@@ -1896,20 +1891,20 @@
...
@@ -1896,20 +1891,20 @@
}
}
send_replays
()
{
send_replays
()
{
var
len
2
,
len3
,
m
,
n
,
player
,
ref2
,
ref3
;
var
len
3
,
len4
,
n
,
o
,
player
,
ref3
,
ref4
;
if
(
!
(
settings
.
modules
.
replay_delay
&&
this
.
replays
.
length
&&
this
.
hostinfo
.
mode
===
1
))
{
if
(
!
(
settings
.
modules
.
replay_delay
&&
this
.
replays
.
length
&&
this
.
hostinfo
.
mode
===
1
))
{
return
false
;
return
false
;
}
}
ref
2
=
this
.
players
;
ref
3
=
this
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
)
{
if
(
player
)
{
CLIENT_send_replays
(
player
,
this
);
CLIENT_send_replays
(
player
,
this
);
}
}
}
}
ref
3
=
this
.
watchers
;
ref
4
=
this
.
watchers
;
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
player
=
ref
3
[
n
];
player
=
ref
4
[
o
];
if
(
player
)
{
if
(
player
)
{
CLIENT_send_replays
(
player
,
this
);
CLIENT_send_replays
(
player
,
this
);
}
}
...
@@ -1952,10 +1947,10 @@
...
@@ -1952,10 +1947,10 @@
roomlist
.
update
(
this
);
roomlist
.
update
(
this
);
}
}
client
.
server
.
connect
(
this
.
port
,
'
127.0.0.1
'
,
function
()
{
client
.
server
.
connect
(
this
.
port
,
'
127.0.0.1
'
,
function
()
{
var
buffer
,
len
2
,
m
,
ref2
;
var
buffer
,
len
3
,
n
,
ref3
;
ref
2
=
client
.
pre_establish_buffers
;
ref
3
=
client
.
pre_establish_buffers
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
buffer
=
ref
2
[
m
];
buffer
=
ref
3
[
n
];
client
.
server
.
write
(
buffer
);
client
.
server
.
write
(
buffer
);
}
}
client
.
established
=
true
;
client
.
established
=
true
;
...
@@ -1965,7 +1960,7 @@
...
@@ -1965,7 +1960,7 @@
}
}
disconnect
(
client
,
error
)
{
disconnect
(
client
,
error
)
{
var
index
,
left_name
,
len
2
,
len3
,
m
,
n
,
player
,
ref2
,
ref3
;
var
index
,
left_name
,
len
3
,
len4
,
n
,
o
,
player
,
ref3
,
ref4
;
if
(
client
.
had_new_reconnection
)
{
if
(
client
.
had_new_reconnection
)
{
return
;
return
;
}
}
...
@@ -1981,18 +1976,18 @@
...
@@ -1981,18 +1976,18 @@
//log.info(client.name, @duel_stage != ygopro.constants.DUEL_STAGE.BEGIN, @disconnector, @random_type, @players.length)
//log.info(client.name, @duel_stage != ygopro.constants.DUEL_STAGE.BEGIN, @disconnector, @random_type, @players.length)
if
(
this
.
arena
&&
this
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
this
.
disconnector
!==
'
server
'
&&
!
this
.
arena_score_handled
)
{
if
(
this
.
arena
&&
this
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
this
.
disconnector
!==
'
server
'
&&
!
this
.
arena_score_handled
)
{
if
(
settings
.
modules
.
arena_mode
.
punish_quit_before_match
&&
this
.
players
.
length
===
2
&&
!
client
.
arena_quit_free
)
{
if
(
settings
.
modules
.
arena_mode
.
punish_quit_before_match
&&
this
.
players
.
length
===
2
&&
!
client
.
arena_quit_free
)
{
ref
2
=
this
.
players
;
ref
3
=
this
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
.
pos
!==
7
)
{
if
(
player
.
pos
!==
7
)
{
this
.
scores
[
player
.
name_vpass
]
=
0
;
this
.
scores
[
player
.
name_vpass
]
=
0
;
}
}
}
}
this
.
scores
[
client
.
name_vpass
]
=
-
9
;
this
.
scores
[
client
.
name_vpass
]
=
-
9
;
}
else
{
}
else
{
ref
3
=
this
.
players
;
ref
4
=
this
.
players
;
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
player
=
ref
3
[
n
];
player
=
ref
4
[
o
];
if
(
player
.
pos
!==
7
)
{
if
(
player
.
pos
!==
7
)
{
this
.
scores
[
player
.
name_vpass
]
=
-
5
;
this
.
scores
[
player
.
name_vpass
]
=
-
5
;
}
}
...
@@ -2117,23 +2112,23 @@
...
@@ -2117,23 +2112,23 @@
}
}
finish_recover
(
fail
)
{
finish_recover
(
fail
)
{
var
buffer
,
len
2
,
m
,
player
,
ref2
,
results
;
var
buffer
,
len
3
,
n
,
player
,
ref3
,
results
;
if
(
fail
)
{
if
(
fail
)
{
ygopro
.
stoc_send_chat_to_room
(
this
,
"
${recover_fail}
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
this
,
"
${recover_fail}
"
,
ygopro
.
constants
.
COLORS
.
RED
);
return
this
.
termiate
();
return
this
.
termiate
();
}
else
{
}
else
{
ygopro
.
stoc_send_chat_to_room
(
this
,
"
${recover_success}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat_to_room
(
this
,
"
${recover_success}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
this
.
recovering
=
false
;
this
.
recovering
=
false
;
ref
2
=
this
.
get_playing_player
();
ref
3
=
this
.
get_playing_player
();
results
=
[];
results
=
[];
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
results
.
push
((
function
()
{
results
.
push
((
function
()
{
var
len
3
,
n
,
ref3
,
results1
;
var
len
4
,
o
,
ref4
,
results1
;
ref
3
=
this
.
recover_buffers
[
player
.
pos
];
ref
4
=
this
.
recover_buffers
[
player
.
pos
];
results1
=
[];
results1
=
[];
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
buffer
=
ref
3
[
n
];
buffer
=
ref
4
[
o
];
results1
.
push
(
ygopro
.
stoc_send
(
player
,
"
GAME_MSG
"
,
buffer
));
results1
.
push
(
ygopro
.
stoc_send
(
player
,
"
GAME_MSG
"
,
buffer
));
}
}
return
results1
;
return
results1
;
...
@@ -2288,7 +2283,7 @@
...
@@ -2288,7 +2283,7 @@
// 客户端到服务端(ctos)协议分析
// 客户端到服务端(ctos)协议分析
client
.
pre_establish_buffers
=
new
Array
();
client
.
pre_establish_buffers
=
new
Array
();
client
.
on
(
'
data
'
,
function
(
ctos_buffer
)
{
client
.
on
(
'
data
'
,
function
(
ctos_buffer
)
{
var
b
,
bad_ip_count
,
buffer
,
cancel
,
ctos_event
,
ctos_message_length
,
ctos_proto
,
datas
,
info
,
len
2
,
len3
,
len4
,
len5
,
looplimit
,
m
,
n
,
o
,
p
,
ref2
,
ref3
,
result
,
room
,
struct
;
var
b
,
bad_ip_count
,
buffer
,
cancel
,
ctos_event
,
ctos_message_length
,
ctos_proto
,
datas
,
info
,
len
3
,
len4
,
len5
,
len6
,
looplimit
,
n
,
o
,
p
,
q
,
ref3
,
ref4
,
result
,
room
,
struct
;
if
(
client
.
is_post_watcher
)
{
if
(
client
.
is_post_watcher
)
{
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
room
&&
!
CLIENT_is_banned_by_mc
(
client
))
{
if
(
room
&&
!
CLIENT_is_banned_by_mc
(
client
))
{
...
@@ -2333,9 +2328,9 @@
...
@@ -2333,9 +2328,9 @@
info
=
_
.
clone
(
struct
.
fields
);
info
=
_
.
clone
(
struct
.
fields
);
}
}
if
(
ygopro
.
ctos_follows_before
[
ctos_proto
]
&&
!
cancel
)
{
if
(
ygopro
.
ctos_follows_before
[
ctos_proto
]
&&
!
cancel
)
{
ref
2
=
ygopro
.
ctos_follows_before
[
ctos_proto
];
ref
3
=
ygopro
.
ctos_follows_before
[
ctos_proto
];
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
ctos_event
=
ref
2
[
m
];
ctos_event
=
ref
3
[
n
];
result
=
ctos_event
.
callback
(
b
,
info
,
client
,
client
.
server
,
datas
);
result
=
ctos_event
.
callback
(
b
,
info
,
client
,
client
.
server
,
datas
);
if
(
result
&&
ctos_event
.
synchronous
)
{
if
(
result
&&
ctos_event
.
synchronous
)
{
cancel
=
true
;
cancel
=
true
;
...
@@ -2357,9 +2352,9 @@
...
@@ -2357,9 +2352,9 @@
info
=
_
.
clone
(
struct
.
fields
);
info
=
_
.
clone
(
struct
.
fields
);
}
}
if
(
ygopro
.
ctos_follows_after
[
ctos_proto
]
&&
!
cancel
)
{
if
(
ygopro
.
ctos_follows_after
[
ctos_proto
]
&&
!
cancel
)
{
ref
3
=
ygopro
.
ctos_follows_after
[
ctos_proto
];
ref
4
=
ygopro
.
ctos_follows_after
[
ctos_proto
];
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
ctos_event
=
ref
3
[
n
];
ctos_event
=
ref
4
[
o
];
result
=
ctos_event
.
callback
(
b
,
info
,
client
,
client
.
server
,
datas
);
result
=
ctos_event
.
callback
(
b
,
info
,
client
,
client
.
server
,
datas
);
if
(
result
&&
ctos_event
.
synchronous
)
{
if
(
result
&&
ctos_event
.
synchronous
)
{
cancel
=
true
;
cancel
=
true
;
...
@@ -2397,13 +2392,13 @@
...
@@ -2397,13 +2392,13 @@
return
;
return
;
}
}
if
(
client
.
established
)
{
if
(
client
.
established
)
{
for
(
o
=
0
,
len4
=
datas
.
length
;
o
<
len4
;
o
++
)
{
for
(
p
=
0
,
len5
=
datas
.
length
;
p
<
len5
;
p
++
)
{
buffer
=
datas
[
o
];
buffer
=
datas
[
p
];
client
.
server
.
write
(
buffer
);
client
.
server
.
write
(
buffer
);
}
}
}
else
{
}
else
{
for
(
p
=
0
,
len5
=
datas
.
length
;
p
<
len5
;
p
++
)
{
for
(
q
=
0
,
len6
=
datas
.
length
;
q
<
len6
;
q
++
)
{
buffer
=
datas
[
p
];
buffer
=
datas
[
q
];
client
.
pre_establish_buffers
.
push
(
buffer
);
client
.
pre_establish_buffers
.
push
(
buffer
);
}
}
}
}
...
@@ -2411,7 +2406,7 @@
...
@@ -2411,7 +2406,7 @@
});
});
// 服务端到客户端(stoc)
// 服务端到客户端(stoc)
server
.
on
(
'
data
'
,
function
(
stoc_buffer
)
{
server
.
on
(
'
data
'
,
function
(
stoc_buffer
)
{
var
b
,
buffer
,
cancel
,
datas
,
info
,
len
2
,
len3
,
len4
,
looplimit
,
m
,
n
,
o
,
ref2
,
ref3
,
result
,
stoc_event
,
stoc_message_length
,
stoc_proto
,
struct
;
var
b
,
buffer
,
cancel
,
datas
,
info
,
len
3
,
len4
,
len5
,
looplimit
,
n
,
o
,
p
,
ref3
,
ref4
,
result
,
stoc_event
,
stoc_message_length
,
stoc_proto
,
struct
;
//stoc_buffer = Buffer.alloc(0)
//stoc_buffer = Buffer.alloc(0)
stoc_message_length
=
0
;
stoc_message_length
=
0
;
stoc_proto
=
0
;
stoc_proto
=
0
;
...
@@ -2450,9 +2445,9 @@
...
@@ -2450,9 +2445,9 @@
info
=
_
.
clone
(
struct
.
fields
);
info
=
_
.
clone
(
struct
.
fields
);
}
}
if
(
ygopro
.
stoc_follows_before
[
stoc_proto
]
&&
!
cancel
)
{
if
(
ygopro
.
stoc_follows_before
[
stoc_proto
]
&&
!
cancel
)
{
ref
2
=
ygopro
.
stoc_follows_before
[
stoc_proto
];
ref
3
=
ygopro
.
stoc_follows_before
[
stoc_proto
];
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
stoc_event
=
ref
2
[
m
];
stoc_event
=
ref
3
[
n
];
result
=
stoc_event
.
callback
(
b
,
info
,
server
.
client
,
server
,
datas
);
result
=
stoc_event
.
callback
(
b
,
info
,
server
.
client
,
server
,
datas
);
if
(
result
&&
stoc_event
.
synchronous
)
{
if
(
result
&&
stoc_event
.
synchronous
)
{
cancel
=
true
;
cancel
=
true
;
...
@@ -2474,9 +2469,9 @@
...
@@ -2474,9 +2469,9 @@
info
=
_
.
clone
(
struct
.
fields
);
info
=
_
.
clone
(
struct
.
fields
);
}
}
if
(
ygopro
.
stoc_follows_after
[
stoc_proto
]
&&
!
cancel
)
{
if
(
ygopro
.
stoc_follows_after
[
stoc_proto
]
&&
!
cancel
)
{
ref
3
=
ygopro
.
stoc_follows_after
[
stoc_proto
];
ref
4
=
ygopro
.
stoc_follows_after
[
stoc_proto
];
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
stoc_event
=
ref
3
[
n
];
stoc_event
=
ref
4
[
o
];
result
=
stoc_event
.
callback
(
b
,
info
,
server
.
client
,
server
,
datas
);
result
=
stoc_event
.
callback
(
b
,
info
,
server
.
client
,
server
,
datas
);
if
(
result
&&
stoc_event
.
synchronous
)
{
if
(
result
&&
stoc_event
.
synchronous
)
{
cancel
=
true
;
cancel
=
true
;
...
@@ -2503,8 +2498,8 @@
...
@@ -2503,8 +2498,8 @@
}
}
}
}
if
(
server
.
client
&&
!
server
.
client
.
closed
)
{
if
(
server
.
client
&&
!
server
.
client
.
closed
)
{
for
(
o
=
0
,
len4
=
datas
.
length
;
o
<
len4
;
o
++
)
{
for
(
p
=
0
,
len5
=
datas
.
length
;
p
<
len5
;
p
++
)
{
buffer
=
datas
[
o
];
buffer
=
datas
[
p
];
server
.
client
.
write
(
buffer
);
server
.
client
.
write
(
buffer
);
}
}
}
}
...
@@ -2596,7 +2591,7 @@
...
@@ -2596,7 +2591,7 @@
});
});
ygopro
.
ctos_follow
(
'
JOIN_GAME
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
ctos_follow
(
'
JOIN_GAME
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
available_logs
,
check_buffer_indentity
,
create_room_with_action
,
len
2
,
len3
,
m
,
n
,
name
,
pre_room
,
ref2
,
ref3
,
replay_id
,
room
;
var
available_logs
,
check_buffer_indentity
,
create_room_with_action
,
len
3
,
len4
,
n
,
name
,
o
,
pre_room
,
recover_match
,
ref3
,
ref4
,
replay_id
,
room
;
//log.info info
//log.info info
info
.
pass
=
info
.
pass
.
trim
();
info
.
pass
=
info
.
pass
.
trim
();
client
.
pass
=
info
.
pass
;
client
.
pass
=
info
.
pass
;
...
@@ -2698,15 +2693,15 @@
...
@@ -2698,15 +2693,15 @@
return
;
return
;
}
}
check_buffer_indentity
=
function
(
buf
)
{
check_buffer_indentity
=
function
(
buf
)
{
var
checksum
,
i
,
m
,
ref2
;
var
checksum
,
i
,
n
,
ref3
;
checksum
=
0
;
checksum
=
0
;
for
(
i
=
m
=
0
,
ref2
=
buf
.
length
;
(
0
<=
ref2
?
m
<
ref2
:
m
>
ref2
);
i
=
0
<=
ref2
?
++
m
:
--
m
)
{
for
(
i
=
n
=
0
,
ref3
=
buf
.
length
;
(
0
<=
ref3
?
n
<
ref3
:
n
>
ref3
);
i
=
0
<=
ref3
?
++
n
:
--
n
)
{
checksum
+=
buf
.
readUInt8
(
i
);
checksum
+=
buf
.
readUInt8
(
i
);
}
}
return
(
checksum
&
0xFF
)
===
0
;
return
(
checksum
&
0xFF
)
===
0
;
};
};
create_room_with_action
=
function
(
buffer
,
decrypted_buffer
,
match_permit
)
{
create_room_with_action
=
function
(
buffer
,
decrypted_buffer
,
match_permit
)
{
var
action
,
len
2
,
len3
,
m
,
n
,
name
,
opt1
,
opt2
,
opt3
,
options
,
player
,
ref2
,
ref3
,
room
,
room_title
,
title
;
var
action
,
len
3
,
len4
,
n
,
name
,
o
,
opt1
,
opt2
,
opt3
,
options
,
player
,
ref3
,
ref4
,
room
,
room_title
,
title
;
if
(
client
.
closed
)
{
if
(
client
.
closed
)
{
return
;
return
;
}
}
...
@@ -2795,9 +2790,9 @@
...
@@ -2795,9 +2790,9 @@
}
}
room
=
ROOM_find_or_create_by_name
(
'
M#
'
+
info
.
pass
.
slice
(
8
));
room
=
ROOM_find_or_create_by_name
(
'
M#
'
+
info
.
pass
.
slice
(
8
));
if
(
room
)
{
if
(
room
)
{
ref
2
=
room
.
get_playing_player
();
ref
3
=
room
.
get_playing_player
();
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
!
(
player
&&
player
.
name
===
client
.
name
))
{
if
(
!
(
player
&&
player
.
name
===
client
.
name
))
{
continue
;
continue
;
}
}
...
@@ -2836,9 +2831,9 @@
...
@@ -2836,9 +2831,9 @@
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
room
.
watchers
.
push
(
client
);
room
.
watchers
.
push
(
client
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ref
3
=
room
.
watcher_buffers
;
ref
4
=
room
.
watcher_buffers
;
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
buffer
=
ref
3
[
n
];
buffer
=
ref
4
[
o
];
client
.
write
(
buffer
);
client
.
write
(
buffer
);
}
}
}
else
{
}
else
{
...
@@ -2885,7 +2880,7 @@
...
@@ -2885,7 +2880,7 @@
});
});
},
},
get_user
:
function
(
done
)
{
get_user
:
function
(
done
)
{
var
decrypted_buffer
,
i
,
id
,
len
2
,
m
,
ref2
,
secret
;
var
decrypted_buffer
,
i
,
id
,
len
3
,
n
,
ref3
,
secret
;
if
(
client
.
closed
)
{
if
(
client
.
closed
)
{
done
();
done
();
return
;
return
;
...
@@ -2893,9 +2888,9 @@
...
@@ -2893,9 +2888,9 @@
if
(
id
=
users_cache
[
client
.
name
])
{
if
(
id
=
users_cache
[
client
.
name
])
{
secret
=
id
%
65535
+
1
;
secret
=
id
%
65535
+
1
;
decrypted_buffer
=
Buffer
.
allocUnsafe
(
6
);
decrypted_buffer
=
Buffer
.
allocUnsafe
(
6
);
ref
2
=
[
0
,
2
,
4
];
ref
3
=
[
0
,
2
,
4
];
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
i
=
ref
2
[
m
];
i
=
ref
3
[
n
];
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
}
}
if
(
check_buffer_indentity
(
decrypted_buffer
))
{
if
(
check_buffer_indentity
(
decrypted_buffer
))
{
...
@@ -2917,14 +2912,14 @@
...
@@ -2917,14 +2912,14 @@
},
},
json
:
true
json
:
true
},
function
(
error
,
response
,
body
)
{
},
function
(
error
,
response
,
body
)
{
var
len
3
,
n
,
ref3
;
var
len
4
,
o
,
ref4
;
if
(
!
error
&&
body
&&
body
.
user
)
{
if
(
!
error
&&
body
&&
body
.
user
)
{
users_cache
[
client
.
name
]
=
body
.
user
.
id
;
users_cache
[
client
.
name
]
=
body
.
user
.
id
;
secret
=
body
.
user
.
id
%
65535
+
1
;
secret
=
body
.
user
.
id
%
65535
+
1
;
decrypted_buffer
=
Buffer
.
allocUnsafe
(
6
);
decrypted_buffer
=
Buffer
.
allocUnsafe
(
6
);
ref
3
=
[
0
,
2
,
4
];
ref
4
=
[
0
,
2
,
4
];
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
i
=
ref
3
[
n
];
i
=
ref
4
[
o
];
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
);
}
}
if
(
check_buffer_indentity
(
decrypted_buffer
))
{
if
(
check_buffer_indentity
(
decrypted_buffer
))
{
...
@@ -2965,14 +2960,15 @@
...
@@ -2965,14 +2960,15 @@
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
room
.
watchers
.
push
(
client
);
room
.
watchers
.
push
(
client
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ref
2
=
room
.
watcher_buffers
;
ref
3
=
room
.
watcher_buffers
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
buffer
=
ref
2
[
m
];
buffer
=
ref
3
[
n
];
client
.
write
(
buffer
);
client
.
write
(
buffer
);
}
}
}
else
{
}
else
{
ygopro
.
stoc_send_chat
(
client
,
'
${loading_user_info}
'
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
'
${loading_user_info}
'
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
client
.
setTimeout
(
300000
);
//连接后超时5分钟
client
.
setTimeout
(
300000
);
//连接后超时5分钟
recover_match
=
info
.
pass
.
match
(
/^
(
RC|RECOVER
)(\d
*
)
T
(\d
*
)
$/
);
_async
.
auto
({
_async
.
auto
({
participant_data
:
function
(
done
)
{
participant_data
:
function
(
done
)
{
challonge
.
participants
.
_index
({
challonge
.
participants
.
_index
({
...
@@ -2983,11 +2979,12 @@
...
@@ -2983,11 +2979,12 @@
match_data
:
function
(
done
)
{
match_data
:
function
(
done
)
{
challonge
.
matches
.
_index
({
challonge
.
matches
.
_index
({
id
:
settings
.
modules
.
challonge
.
tournament_id
,
id
:
settings
.
modules
.
challonge
.
tournament_id
,
callback
:
done
callback
:
done
,
no_cache
:
!!
recover_match
});
});
}
}
},
function
(
err
,
datas
)
{
},
function
(
err
,
datas
)
{
var
found
,
k
,
len3
,
len4
,
match
,
n
,
o
,
player
,
ref3
,
ref4
,
ref5
,
ref6
,
user
;
var
create_room_name
,
found
,
k
,
len4
,
len5
,
match
,
o
,
p
,
player
,
ref4
,
ref5
,
ref6
,
ref7
,
user
;
if
(
client
.
closed
)
{
if
(
client
.
closed
)
{
return
;
return
;
}
}
...
@@ -2997,9 +2994,9 @@
...
@@ -2997,9 +2994,9 @@
return
;
return
;
}
}
found
=
false
;
found
=
false
;
ref
3
=
datas
.
participant_data
;
ref
4
=
datas
.
participant_data
;
for
(
k
in
ref
3
)
{
for
(
k
in
ref
4
)
{
user
=
ref
3
[
k
];
user
=
ref
4
[
k
];
if
(
user
.
participant
&&
user
.
participant
.
name
&&
deck_name_match
(
user
.
participant
.
name
,
client
.
name
))
{
if
(
user
.
participant
&&
user
.
participant
.
name
&&
deck_name_match
(
user
.
participant
.
name
,
client
.
name
))
{
found
=
user
.
participant
;
found
=
user
.
participant
;
break
;
break
;
...
@@ -3011,9 +3008,9 @@
...
@@ -3011,9 +3008,9 @@
}
}
client
.
challonge_info
=
found
;
client
.
challonge_info
=
found
;
found
=
false
;
found
=
false
;
ref
4
=
datas
.
match_data
;
ref
5
=
datas
.
match_data
;
for
(
k
in
ref
4
)
{
for
(
k
in
ref
5
)
{
match
=
ref
4
[
k
];
match
=
ref
5
[
k
];
if
(
match
&&
match
.
match
&&
!
match
.
match
.
winnerId
&&
match
.
match
.
state
!==
"
complete
"
&&
match
.
match
.
player1Id
&&
match
.
match
.
player2Id
&&
(
match
.
match
.
player1Id
===
client
.
challonge_info
.
id
||
match
.
match
.
player2Id
===
client
.
challonge_info
.
id
))
{
if
(
match
&&
match
.
match
&&
!
match
.
match
.
winnerId
&&
match
.
match
.
state
!==
"
complete
"
&&
match
.
match
.
player1Id
&&
match
.
match
.
player2Id
&&
(
match
.
match
.
player1Id
===
client
.
challonge_info
.
id
||
match
.
match
.
player2Id
===
client
.
challonge_info
.
id
))
{
found
=
match
.
match
;
found
=
match
.
match
;
break
;
break
;
...
@@ -3026,7 +3023,11 @@
...
@@ -3026,7 +3023,11 @@
//if found.winnerId
//if found.winnerId
// ygopro.stoc_die(client, '${challonge_match_already_finished}')
// ygopro.stoc_die(client, '${challonge_match_already_finished}')
// return
// return
room
=
ROOM_find_or_create_by_name
(
'
M#
'
+
found
.
id
);
create_room_name
=
'
M#
'
+
found
.
id
;
if
(
recover_match
)
{
create_room_name
=
recover_match
[
0
]
+
'
,
'
+
create_room_name
;
}
room
=
ROOM_find_or_create_by_name
(
create_room_name
);
if
(
room
)
{
if
(
room
)
{
room
.
challonge_info
=
found
;
room
.
challonge_info
=
found
;
// room.max_player = 2
// room.max_player = 2
...
@@ -3044,9 +3045,9 @@
...
@@ -3044,9 +3045,9 @@
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
room
.
watchers
.
push
(
client
);
room
.
watchers
.
push
(
client
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ref
5
=
room
.
watcher_buffers
;
ref
6
=
room
.
watcher_buffers
;
for
(
n
=
0
,
len3
=
ref5
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref6
.
length
;
o
<
len4
;
o
++
)
{
buffer
=
ref
5
[
n
];
buffer
=
ref
6
[
o
];
client
.
write
(
buffer
);
client
.
write
(
buffer
);
}
}
}
else
{
}
else
{
...
@@ -3055,9 +3056,9 @@
...
@@ -3055,9 +3056,9 @@
}
else
if
(
room
.
hostinfo
.
no_watch
&&
room
.
players
.
length
>=
(
room
.
hostinfo
.
mode
===
2
?
4
:
2
))
{
}
else
if
(
room
.
hostinfo
.
no_watch
&&
room
.
players
.
length
>=
(
room
.
hostinfo
.
mode
===
2
?
4
:
2
))
{
ygopro
.
stoc_die
(
client
,
"
${watch_denied_room}
"
);
ygopro
.
stoc_die
(
client
,
"
${watch_denied_room}
"
);
}
else
{
}
else
{
ref
6
=
room
.
get_playing_player
();
ref
7
=
room
.
get_playing_player
();
for
(
o
=
0
,
len4
=
ref6
.
length
;
o
<
len4
;
o
++
)
{
for
(
p
=
0
,
len5
=
ref7
.
length
;
p
<
len5
;
p
++
)
{
player
=
ref
6
[
o
];
player
=
ref
7
[
p
];
if
(
!
(
player
&&
player
!==
client
&&
player
.
challonge_info
.
id
===
client
.
challonge_info
.
id
))
{
if
(
!
(
player
&&
player
!==
client
&&
player
.
challonge_info
.
id
===
client
.
challonge_info
.
id
))
{
continue
;
continue
;
}
}
...
@@ -3130,9 +3131,9 @@
...
@@ -3130,9 +3131,9 @@
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${watch_join}`
);
room
.
watchers
.
push
(
client
);
room
.
watchers
.
push
(
client
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${watch_watching}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ref
3
=
room
.
watcher_buffers
;
ref
4
=
room
.
watcher_buffers
;
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
buffer
=
ref
3
[
n
];
buffer
=
ref
4
[
o
];
client
.
write
(
buffer
);
client
.
write
(
buffer
);
}
}
}
else
{
}
else
{
...
@@ -3149,7 +3150,7 @@
...
@@ -3149,7 +3150,7 @@
});
});
ygopro
.
stoc_follow
(
'
JOIN_GAME
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
stoc_follow
(
'
JOIN_GAME
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
len
2
,
m
,
player
,
recorder
,
ref2
,
room
,
watcher
;
var
len
3
,
n
,
player
,
recorder
,
ref3
,
room
,
watcher
;
//欢迎信息
//欢迎信息
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
(
room
&&
!
client
.
reconnecting
))
{
if
(
!
(
room
&&
!
client
.
reconnecting
))
{
...
@@ -3187,9 +3188,9 @@
...
@@ -3187,9 +3188,9 @@
//client.score_shown = true
//client.score_shown = true
if
(
settings
.
modules
.
random_duel
.
record_match_scores
&&
room
.
random_type
===
'
M
'
)
{
if
(
settings
.
modules
.
random_duel
.
record_match_scores
&&
room
.
random_type
===
'
M
'
)
{
ygopro
.
stoc_send_chat_to_room
(
room
,
ROOM_player_get_score
(
client
),
ygopro
.
constants
.
COLORS
.
GREEN
);
ygopro
.
stoc_send_chat_to_room
(
room
,
ROOM_player_get_score
(
client
),
ygopro
.
constants
.
COLORS
.
GREEN
);
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
.
pos
!==
7
&&
player
!==
client
)
{
if
(
player
.
pos
!==
7
&&
player
!==
client
)
{
ygopro
.
stoc_send_chat
(
client
,
ROOM_player_get_score
(
player
),
ygopro
.
constants
.
COLORS
.
GREEN
);
ygopro
.
stoc_send_chat
(
client
,
ROOM_player_get_score
(
player
),
ygopro
.
constants
.
COLORS
.
GREEN
);
}
}
...
@@ -3227,15 +3228,15 @@
...
@@ -3227,15 +3228,15 @@
ygopro
.
ctos_send
(
watcher
,
'
HS_TOOBSERVER
'
);
ygopro
.
ctos_send
(
watcher
,
'
HS_TOOBSERVER
'
);
});
});
watcher
.
on
(
'
data
'
,
function
(
data
)
{
watcher
.
on
(
'
data
'
,
function
(
data
)
{
var
len
3
,
n
,
ref3
,
w
;
var
len
4
,
o
,
ref4
,
w
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
}
}
room
.
watcher_buffers
.
push
(
data
);
room
.
watcher_buffers
.
push
(
data
);
ref
3
=
room
.
watchers
;
ref
4
=
room
.
watchers
;
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
w
=
ref
3
[
n
];
w
=
ref
4
[
o
];
if
(
w
)
{
//a WTF fix
if
(
w
)
{
//a WTF fix
w
.
write
(
data
);
w
.
write
(
data
);
}
}
...
@@ -3272,7 +3273,7 @@
...
@@ -3272,7 +3273,7 @@
}
}
ygopro
.
stoc_follow
(
'
GAME_MSG
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
stoc_follow
(
'
GAME_MSG
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
card
,
chain
,
check
,
count
,
cpos
,
deck_found
,
found
,
hint_type
,
i
,
id
,
len
2
,
len3
,
len4
,
len5
,
limbo_found
,
line
,
loc
,
m
,
max_loop
,
msg
,
n
,
o
,
oppo_pos
,
p
,
phase
,
player
,
playertype
,
pos
,
ppos
,
q
,
reason
,
ref2
,
ref3
,
ref4
,
ref5
,
ref6
,
ref7
,
room
,
trigger_location
,
val
,
win_pos
;
var
card
,
chain
,
check
,
count
,
cpos
,
deck_found
,
found
,
hint_type
,
i
,
id
,
len
3
,
len4
,
len5
,
len6
,
limbo_found
,
line
,
loc
,
max_loop
,
msg
,
n
,
o
,
oppo_pos
,
p
,
phase
,
player
,
playertype
,
pos
,
ppos
,
q
,
r
,
reason
,
ref3
,
ref4
,
ref5
,
ref6
,
ref7
,
ref8
,
room
,
trigger_location
,
val
,
win_pos
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
(
room
&&
!
client
.
reconnecting
))
{
if
(
!
(
room
&&
!
client
.
reconnecting
))
{
return
;
return
;
...
@@ -3449,9 +3450,9 @@
...
@@ -3449,9 +3450,9 @@
room
.
turn
=
0
;
room
.
turn
=
0
;
room
.
duel_stage
=
ygopro
.
constants
.
DUEL_STAGE
.
END
;
room
.
duel_stage
=
ygopro
.
constants
.
DUEL_STAGE
.
END
;
if
(
settings
.
modules
.
heartbeat_detection
.
enabled
)
{
if
(
settings
.
modules
.
heartbeat_detection
.
enabled
)
{
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
player
.
heartbeat_protected
=
false
;
player
.
heartbeat_protected
=
false
;
}
}
delete
room
.
long_resolve_card
;
delete
room
.
long_resolve_card
;
...
@@ -3491,7 +3492,7 @@
...
@@ -3491,7 +3492,7 @@
if
(
room
.
dueling_players
[
pos
].
lp
<
0
)
{
if
(
room
.
dueling_players
[
pos
].
lp
<
0
)
{
room
.
dueling_players
[
pos
].
lp
=
0
;
room
.
dueling_players
[
pos
].
lp
=
0
;
}
}
if
((
0
<
(
ref
3
=
room
.
dueling_players
[
pos
].
lp
)
&&
ref3
<=
100
))
{
if
((
0
<
(
ref
4
=
room
.
dueling_players
[
pos
].
lp
)
&&
ref4
<=
100
))
{
ygopro
.
stoc_send_chat_to_room
(
room
,
"
${lp_low_opponent}
"
,
ygopro
.
constants
.
COLORS
.
PINK
);
ygopro
.
stoc_send_chat_to_room
(
room
,
"
${lp_low_opponent}
"
,
ygopro
.
constants
.
COLORS
.
PINK
);
}
}
}
}
...
@@ -3530,7 +3531,7 @@
...
@@ -3530,7 +3531,7 @@
if
(
room
.
dueling_players
[
pos
].
lp
<
0
)
{
if
(
room
.
dueling_players
[
pos
].
lp
<
0
)
{
room
.
dueling_players
[
pos
].
lp
=
0
;
room
.
dueling_players
[
pos
].
lp
=
0
;
}
}
if
((
0
<
(
ref
4
=
room
.
dueling_players
[
pos
].
lp
)
&&
ref4
<=
100
))
{
if
((
0
<
(
ref
5
=
room
.
dueling_players
[
pos
].
lp
)
&&
ref5
<=
100
))
{
ygopro
.
stoc_send_chat_to_room
(
room
,
"
${lp_low_self}
"
,
ygopro
.
constants
.
COLORS
.
PINK
);
ygopro
.
stoc_send_chat_to_room
(
room
,
"
${lp_low_self}
"
,
ygopro
.
constants
.
COLORS
.
PINK
);
}
}
}
}
...
@@ -3571,7 +3572,7 @@
...
@@ -3571,7 +3572,7 @@
max_loop
=
3
+
(
count
-
1
)
*
7
;
max_loop
=
3
+
(
count
-
1
)
*
7
;
deck_found
=
0
;
deck_found
=
0
;
limbo_found
=
0
;
// support custom cards which may be in location 0 in KoishiPro or EdoPro
limbo_found
=
0
;
// support custom cards which may be in location 0 in KoishiPro or EdoPro
for
(
i
=
n
=
3
,
ref5
=
max_loop
;
n
<=
ref5
;
i
=
n
+=
7
)
{
for
(
i
=
o
=
3
,
ref6
=
max_loop
;
o
<=
ref6
;
i
=
o
+=
7
)
{
loc
=
buffer
.
readInt8
(
i
+
5
);
loc
=
buffer
.
readInt8
(
i
+
5
);
if
((
loc
&
0x41
)
>
0
)
{
if
((
loc
&
0x41
)
>
0
)
{
deck_found
++
;
deck_found
++
;
...
@@ -3593,8 +3594,8 @@
...
@@ -3593,8 +3594,8 @@
if
(
ygopro
.
constants
.
MSG
[
msg
]
===
'
CHAINING
'
)
{
if
(
ygopro
.
constants
.
MSG
[
msg
]
===
'
CHAINING
'
)
{
card
=
buffer
.
readUInt32LE
(
1
);
card
=
buffer
.
readUInt32LE
(
1
);
found
=
false
;
found
=
false
;
for
(
o
=
0
,
len3
=
long_resolve_cards
.
length
;
o
<
len3
;
o
++
)
{
for
(
p
=
0
,
len4
=
long_resolve_cards
.
length
;
p
<
len4
;
p
++
)
{
id
=
long_resolve_cards
[
o
];
id
=
long_resolve_cards
[
p
];
if
(
!
(
id
===
card
))
{
if
(
!
(
id
===
card
))
{
continue
;
continue
;
}
}
...
@@ -3619,9 +3620,9 @@
...
@@ -3619,9 +3620,9 @@
chain
=
buffer
.
readInt8
(
1
);
chain
=
buffer
.
readInt8
(
1
);
// console.log(2,chain)
// console.log(2,chain)
if
(
room
.
long_resolve_chain
[
chain
])
{
if
(
room
.
long_resolve_chain
[
chain
])
{
ref
6
=
room
.
get_playing_player
();
ref
7
=
room
.
get_playing_player
();
for
(
p
=
0
,
len4
=
ref6
.
length
;
p
<
len4
;
p
++
)
{
for
(
q
=
0
,
len5
=
ref7
.
length
;
q
<
len5
;
q
++
)
{
player
=
ref
6
[
p
];
player
=
ref
7
[
q
];
player
.
heartbeat_protected
=
true
;
player
.
heartbeat_protected
=
true
;
}
}
}
}
...
@@ -3641,9 +3642,9 @@
...
@@ -3641,9 +3642,9 @@
card
=
buffer
.
readUInt32LE
(
1
);
card
=
buffer
.
readUInt32LE
(
1
);
trigger_location
=
buffer
.
readUInt8
(
6
);
trigger_location
=
buffer
.
readUInt8
(
6
);
if
(
dialogues
.
dialogues
[
card
]
&&
(
ygopro
.
constants
.
MSG
[
msg
]
!==
'
CHAINING
'
||
(
trigger_location
&
0x8
)
&&
client
.
ready_trap
))
{
if
(
dialogues
.
dialogues
[
card
]
&&
(
ygopro
.
constants
.
MSG
[
msg
]
!==
'
CHAINING
'
||
(
trigger_location
&
0x8
)
&&
client
.
ready_trap
))
{
ref
7
=
_
.
lines
(
dialogues
.
dialogues
[
card
][
Math
.
floor
(
Math
.
random
()
*
dialogues
.
dialogues
[
card
].
length
)]);
ref
8
=
_
.
lines
(
dialogues
.
dialogues
[
card
][
Math
.
floor
(
Math
.
random
()
*
dialogues
.
dialogues
[
card
].
length
)]);
for
(
q
=
0
,
len5
=
ref7
.
length
;
q
<
len5
;
q
++
)
{
for
(
r
=
0
,
len6
=
ref8
.
length
;
r
<
len6
;
r
++
)
{
line
=
ref
7
[
q
];
line
=
ref
8
[
r
];
ygopro
.
stoc_send_chat
(
client
,
line
,
ygopro
.
constants
.
COLORS
.
PINK
);
ygopro
.
stoc_send_chat
(
client
,
line
,
ygopro
.
constants
.
COLORS
.
PINK
);
}
}
}
}
...
@@ -3668,7 +3669,7 @@
...
@@ -3668,7 +3669,7 @@
//房间管理
//房间管理
ygopro
.
ctos_follow
(
'
HS_TOOBSERVER
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
ctos_follow
(
'
HS_TOOBSERVER
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
len
2
,
m
,
player
,
ref2
,
room
;
var
len
3
,
n
,
player
,
ref3
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
...
@@ -3680,9 +3681,9 @@
...
@@ -3680,9 +3681,9 @@
if
((
!
room
.
arena
&&
!
settings
.
modules
.
challonge
.
enabled
)
||
client
.
is_local
)
{
if
((
!
room
.
arena
&&
!
settings
.
modules
.
challonge
.
enabled
)
||
client
.
is_local
)
{
return
false
;
return
false
;
}
}
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
===
client
)
{
if
(
player
===
client
)
{
ygopro
.
stoc_send_chat
(
client
,
"
${cannot_to_observer}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${cannot_to_observer}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
return
true
;
return
true
;
...
@@ -3692,14 +3693,14 @@
...
@@ -3692,14 +3693,14 @@
});
});
ygopro
.
ctos_follow
(
'
HS_KICK
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
ctos_follow
(
'
HS_KICK
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
len
2
,
m
,
player
,
ref2
,
room
;
var
len
3
,
n
,
player
,
ref3
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
}
}
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
&&
player
.
pos
===
info
.
pos
&&
player
!==
client
)
{
if
(
player
&&
player
.
pos
===
info
.
pos
&&
player
!==
client
)
{
if
(
room
.
arena
===
"
athletic
"
||
settings
.
modules
.
challonge
.
enabled
)
{
if
(
room
.
arena
===
"
athletic
"
||
settings
.
modules
.
challonge
.
enabled
)
{
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${kicked_by_system}`
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
client
.
name
}
\${kicked_by_system}`
,
ygopro
.
constants
.
COLORS
.
RED
);
...
@@ -3749,7 +3750,7 @@
...
@@ -3749,7 +3750,7 @@
});
});
ygopro
.
stoc_follow
(
'
HS_PLAYER_CHANGE
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
stoc_follow
(
'
HS_PLAYER_CHANGE
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
is_ready
,
len
2
,
len3
,
m
,
n
,
p1
,
p2
,
player
,
pos
,
ref2
,
ref3
,
room
;
var
is_ready
,
len
3
,
len4
,
n
,
o
,
p1
,
p2
,
player
,
pos
,
ref3
,
ref4
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
(
room
&&
room
.
max_player
&&
client
.
is_host
))
{
if
(
!
(
room
&&
room
.
max_player
&&
client
.
is_host
))
{
return
;
return
;
...
@@ -3759,9 +3760,9 @@
...
@@ -3759,9 +3760,9 @@
if
(
pos
<
room
.
max_player
)
{
if
(
pos
<
room
.
max_player
)
{
if
(
room
.
arena
)
{
if
(
room
.
arena
)
{
room
.
ready_player_count
=
0
;
room
.
ready_player_count
=
0
;
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
.
pos
===
pos
)
{
if
(
player
.
pos
===
pos
)
{
player
.
is_ready
=
is_ready
;
player
.
is_ready
=
is_ready
;
}
}
...
@@ -3799,9 +3800,9 @@
...
@@ -3799,9 +3800,9 @@
}
}
}
else
{
}
else
{
room
.
ready_player_count_without_host
=
0
;
room
.
ready_player_count_without_host
=
0
;
ref
3
=
room
.
players
;
ref
4
=
room
.
players
;
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
player
=
ref
3
[
n
];
player
=
ref
4
[
o
];
if
(
player
.
pos
===
pos
)
{
if
(
player
.
pos
===
pos
)
{
player
.
is_ready
=
is_ready
;
player
.
is_ready
=
is_ready
;
}
}
...
@@ -3842,7 +3843,7 @@
...
@@ -3842,7 +3843,7 @@
});
});
ygopro
.
stoc_follow
(
'
DUEL_END
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
stoc_follow
(
'
DUEL_END
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
len
2
,
len3
,
m
,
n
,
player
,
ref2
,
ref3
,
results
,
room
;
var
len
3
,
len4
,
n
,
o
,
player
,
ref3
,
ref4
,
results
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
(
room
&&
settings
.
modules
.
replay_delay
&&
room
.
hostinfo
.
mode
===
1
))
{
if
(
!
(
room
&&
settings
.
modules
.
replay_delay
&&
room
.
hostinfo
.
mode
===
1
))
{
return
;
return
;
...
@@ -3851,17 +3852,17 @@
...
@@ -3851,17 +3852,17 @@
CLIENT_send_replays
(
client
,
room
);
CLIENT_send_replays
(
client
,
room
);
if
(
!
room
.
replays_sent_to_watchers
)
{
if
(
!
room
.
replays_sent_to_watchers
)
{
room
.
replays_sent_to_watchers
=
true
;
room
.
replays_sent_to_watchers
=
true
;
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
&&
player
.
pos
>
3
)
{
if
(
player
&&
player
.
pos
>
3
)
{
CLIENT_send_replays
(
player
,
room
);
CLIENT_send_replays
(
player
,
room
);
}
}
}
}
ref
3
=
room
.
watchers
;
ref
4
=
room
.
watchers
;
results
=
[];
results
=
[];
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
player
=
ref
3
[
n
];
player
=
ref
4
[
o
];
if
(
player
)
{
if
(
player
)
{
results
.
push
(
CLIENT_send_replays
(
player
,
room
));
results
.
push
(
CLIENT_send_replays
(
player
,
room
));
}
}
...
@@ -3871,7 +3872,7 @@
...
@@ -3871,7 +3872,7 @@
});
});
wait_room_start
=
function
(
room
,
time
)
{
wait_room_start
=
function
(
room
,
time
)
{
var
len
2
,
m
,
player
,
ref2
;
var
len
3
,
n
,
player
,
ref3
;
if
(
room
&&
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
room
.
ready_player_count_without_host
>=
room
.
max_player
-
1
)
{
if
(
room
&&
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
room
.
ready_player_count_without_host
>=
room
.
max_player
-
1
)
{
time
-=
1
;
time
-=
1
;
if
(
time
)
{
if
(
time
)
{
...
@@ -3882,9 +3883,9 @@
...
@@ -3882,9 +3883,9 @@
wait_room_start
(
room
,
time
);
wait_room_start
(
room
,
time
);
}),
1000
);
}),
1000
);
}
else
{
}
else
{
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
&&
player
.
is_host
)
{
if
(
player
&&
player
.
is_host
)
{
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"
${random_ban_reason_zombie}
"
);
ROOM_ban_player
(
player
.
name
,
player
.
ip
,
"
${random_ban_reason_zombie}
"
);
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
player
.
name
}
\${kicked_by_system}`
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat_to_room
(
room
,
`
${
player
.
name
}
\${kicked_by_system}`
,
ygopro
.
constants
.
COLORS
.
RED
);
...
@@ -3896,14 +3897,14 @@
...
@@ -3896,14 +3897,14 @@
};
};
wait_room_start_arena
=
function
(
room
)
{
wait_room_start_arena
=
function
(
room
)
{
var
display_name
,
len
2
,
m
,
player
,
ref2
;
var
display_name
,
len
3
,
n
,
player
,
ref3
;
if
(
room
&&
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
room
.
waiting_for_player
)
{
if
(
room
&&
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
&&
room
.
waiting_for_player
)
{
room
.
waiting_for_player_time
=
room
.
waiting_for_player_time
-
1
;
room
.
waiting_for_player_time
=
room
.
waiting_for_player_time
-
1
;
if
(
room
.
waiting_for_player_time
>
0
)
{
if
(
room
.
waiting_for_player_time
>
0
)
{
if
(
!
(
room
.
waiting_for_player_time
%
5
))
{
if
(
!
(
room
.
waiting_for_player_time
%
5
))
{
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
!
(
player
))
{
if
(
!
(
player
))
{
continue
;
continue
;
}
}
...
@@ -3957,9 +3958,9 @@
...
@@ -3957,9 +3958,9 @@
if
(
settings
.
modules
.
tips
.
get
)
{
if
(
settings
.
modules
.
tips
.
get
)
{
load_tips
();
load_tips
();
setInterval
(
function
()
{
setInterval
(
function
()
{
var
len
2
,
m
,
room
;
var
len
3
,
n
,
room
;
for
(
m
=
0
,
len2
=
ROOM_all
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ROOM_all
.
length
;
n
<
len3
;
n
++
)
{
room
=
ROOM_all
[
m
];
room
=
ROOM_all
[
n
];
if
(
room
&&
room
.
established
)
{
if
(
room
&&
room
.
established
)
{
if
(
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
SIDING
||
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
)
{
if
(
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
SIDING
||
room
.
duel_stage
===
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
)
{
ygopro
.
stoc_send_random_tip_to_room
(
room
);
ygopro
.
stoc_send_random_tip_to_room
(
room
);
...
@@ -3970,7 +3971,7 @@
...
@@ -3970,7 +3971,7 @@
}
}
ygopro
.
stoc_follow
(
'
DUEL_START
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
stoc_follow
(
'
DUEL_START
'
,
false
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
deck_arena
,
deck_name
,
deck_text
,
len
2
,
len3
,
m
,
n
,
player
,
ref2
,
ref3
,
room
;
var
deck_arena
,
deck_name
,
deck_text
,
len
3
,
len4
,
n
,
o
,
player
,
ref3
,
ref4
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
(
room
&&
!
client
.
reconnecting
))
{
if
(
!
(
room
&&
!
client
.
reconnecting
))
{
return
;
return
;
...
@@ -3984,9 +3985,9 @@
...
@@ -3984,9 +3985,9 @@
}
}
//room.duels = []
//room.duels = []
room
.
dueling_players
=
[];
room
.
dueling_players
=
[];
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
!
(
player
.
pos
!==
7
))
{
if
(
!
(
player
.
pos
!==
7
))
{
continue
;
continue
;
}
}
...
@@ -4013,9 +4014,9 @@
...
@@ -4013,9 +4014,9 @@
}
}
}
}
if
(
settings
.
modules
.
hide_name
&&
room
.
duel_count
===
0
)
{
if
(
settings
.
modules
.
hide_name
&&
room
.
duel_count
===
0
)
{
ref
3
=
room
.
get_playing_player
();
ref
4
=
room
.
get_playing_player
();
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
player
=
ref
3
[
n
];
player
=
ref
4
[
o
];
if
(
player
!==
client
)
{
if
(
player
!==
client
)
{
ygopro
.
stoc_send
(
client
,
'
HS_PLAYER_ENTER
'
,
{
ygopro
.
stoc_send
(
client
,
'
HS_PLAYER_ENTER
'
,
{
name
:
player
.
name
,
name
:
player
.
name
,
...
@@ -4124,7 +4125,7 @@
...
@@ -4124,7 +4125,7 @@
//else
//else
//log.info 'BIG BROTHER OK', response.statusCode, roomname, body
//log.info 'BIG BROTHER OK', response.statusCode, roomname, body
ygopro
.
ctos_follow
(
'
CHAT
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
ctos_follow
(
'
CHAT
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
cancel
,
ccolor
,
cip
,
cmd
,
cmsg
,
cname
,
color
,
cvalue
,
msg
,
name
,
oldmsg
,
ref
2
,
room
,
struct
,
windbot
;
var
cancel
,
ccolor
,
cip
,
cmd
,
cmsg
,
cname
,
color
,
cvalue
,
msg
,
name
,
oldmsg
,
ref
3
,
room
,
struct
,
windbot
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
;
return
;
...
@@ -4209,9 +4210,9 @@
...
@@ -4209,9 +4210,9 @@
if
(
cmsg
=
cmd
[
1
])
{
if
(
cmsg
=
cmd
[
1
])
{
if
(
cmsg
.
toLowerCase
()
===
"
help
"
)
{
if
(
cmsg
.
toLowerCase
()
===
"
help
"
)
{
ygopro
.
stoc_send_chat
(
client
,
"
${show_color_list}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ygopro
.
stoc_send_chat
(
client
,
"
${show_color_list}
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
ref
2
=
ygopro
.
constants
.
COLORS
;
ref
3
=
ygopro
.
constants
.
COLORS
;
for
(
cname
in
ref
2
)
{
for
(
cname
in
ref
3
)
{
cvalue
=
ref
2
[
cname
];
cvalue
=
ref
3
[
cname
];
if
(
cvalue
>
10
)
{
if
(
cvalue
>
10
)
{
ygopro
.
stoc_send_chat
(
client
,
cname
,
cvalue
);
ygopro
.
stoc_send_chat
(
client
,
cname
,
cvalue
);
}
}
...
@@ -4336,7 +4337,7 @@
...
@@ -4336,7 +4337,7 @@
});
});
ygopro
.
ctos_follow
(
'
UPDATE_DECK
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
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
,
len
2
,
len3
,
line
,
m
,
n
,
oppo_pos
,
recover_player_data
,
room
,
struct
,
win_pos
;
var
buff_main
,
buff_side
,
card
,
current_deck
,
deck
,
deck_array
,
deck_main
,
deck_side
,
deck_text
,
deckbuf
,
decks
,
found_deck
,
i
,
len
3
,
len4
,
line
,
n
,
o
,
oppo_pos
,
recover_player_data
,
room
,
struct
,
win_pos
;
if
(
settings
.
modules
.
reconnect
.
enabled
&&
client
.
pre_reconnecting
)
{
if
(
settings
.
modules
.
reconnect
.
enabled
&&
client
.
pre_reconnecting
)
{
if
(
!
CLIENT_is_able_to_reconnect
(
client
)
&&
!
CLIENT_is_able_to_kick_reconnect
(
client
))
{
if
(
!
CLIENT_is_able_to_reconnect
(
client
)
&&
!
CLIENT_is_able_to_kick_reconnect
(
client
))
{
ygopro
.
stoc_send_chat
(
client
,
"
${reconnect_failed}
"
,
ygopro
.
constants
.
COLORS
.
RED
);
ygopro
.
stoc_send_chat
(
client
,
"
${reconnect_failed}
"
,
ygopro
.
constants
.
COLORS
.
RED
);
...
@@ -4367,17 +4368,17 @@
...
@@ -4367,17 +4368,17 @@
return
true
;
return
true
;
}
}
buff_main
=
(
function
()
{
buff_main
=
(
function
()
{
var
m
,
ref2
,
results
;
var
n
,
ref3
,
results
;
results
=
[];
results
=
[];
for
(
i
=
m
=
0
,
ref2
=
info
.
mainc
;
(
0
<=
ref2
?
m
<
ref2
:
m
>
ref2
);
i
=
0
<=
ref2
?
++
m
:
--
m
)
{
for
(
i
=
n
=
0
,
ref3
=
info
.
mainc
;
(
0
<=
ref3
?
n
<
ref3
:
n
>
ref3
);
i
=
0
<=
ref3
?
++
n
:
--
n
)
{
results
.
push
(
info
.
deckbuf
[
i
]);
results
.
push
(
info
.
deckbuf
[
i
]);
}
}
return
results
;
return
results
;
})();
})();
buff_side
=
(
function
()
{
buff_side
=
(
function
()
{
var
m
,
ref2
,
ref3
,
results
;
var
n
,
ref3
,
ref4
,
results
;
results
=
[];
results
=
[];
for
(
i
=
m
=
ref2
=
info
.
mainc
,
ref3
=
info
.
mainc
+
info
.
sidec
;
(
ref2
<=
ref3
?
m
<
ref3
:
m
>
ref3
);
i
=
ref2
<=
ref3
?
++
m
:
--
m
)
{
for
(
i
=
n
=
ref3
=
info
.
mainc
,
ref4
=
info
.
mainc
+
info
.
sidec
;
(
ref3
<=
ref4
?
n
<
ref4
:
n
>
ref4
);
i
=
ref3
<=
ref4
?
++
n
:
--
n
)
{
results
.
push
(
info
.
deckbuf
[
i
]);
results
.
push
(
info
.
deckbuf
[
i
]);
}
}
return
results
;
return
results
;
...
@@ -4435,8 +4436,8 @@
...
@@ -4435,8 +4436,8 @@
buffer
=
struct
.
buffer
;
buffer
=
struct
.
buffer
;
found_deck
=
false
;
found_deck
=
false
;
decks
=
fs
.
readdirSync
(
settings
.
modules
.
tournament_mode
.
deck_path
);
decks
=
fs
.
readdirSync
(
settings
.
modules
.
tournament_mode
.
deck_path
);
for
(
m
=
0
,
len2
=
decks
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
decks
.
length
;
n
<
len3
;
n
++
)
{
deck
=
decks
[
m
];
deck
=
decks
[
n
];
if
(
deck_name_match
(
deck
,
client
.
name
))
{
if
(
deck_name_match
(
deck
,
client
.
name
))
{
found_deck
=
deck
;
found_deck
=
deck
;
}
}
...
@@ -4449,8 +4450,8 @@
...
@@ -4449,8 +4450,8 @@
deck_main
=
[];
deck_main
=
[];
deck_side
=
[];
deck_side
=
[];
current_deck
=
deck_main
;
current_deck
=
deck_main
;
for
(
n
=
0
,
len3
=
deck_array
.
length
;
n
<
len3
;
n
++
)
{
for
(
o
=
0
,
len4
=
deck_array
.
length
;
o
<
len4
;
o
++
)
{
line
=
deck_array
[
n
];
line
=
deck_array
[
o
];
if
(
line
.
indexOf
(
"
!side
"
)
>=
0
)
{
if
(
line
.
indexOf
(
"
!side
"
)
>=
0
)
{
current_deck
=
deck_side
;
current_deck
=
deck_side
;
}
}
...
@@ -4603,7 +4604,7 @@
...
@@ -4603,7 +4604,7 @@
});
});
ygopro
.
stoc_follow
(
'
CHAT
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
stoc_follow
(
'
CHAT
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
len
2
,
m
,
pid
,
player
,
ref2
,
room
,
tcolor
,
tplayer
;
var
len
3
,
n
,
pid
,
player
,
ref3
,
room
,
tcolor
,
tplayer
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
pid
=
info
.
player
;
pid
=
info
.
player
;
if
(
!
(
room
&&
pid
<
4
&&
settings
.
modules
.
chat_color
.
enabled
&&
(
!
settings
.
modules
.
hide_name
||
room
.
duel_stage
!==
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
)))
{
if
(
!
(
room
&&
pid
<
4
&&
settings
.
modules
.
chat_color
.
enabled
&&
(
!
settings
.
modules
.
hide_name
||
room
.
duel_stage
!==
ygopro
.
constants
.
DUEL_STAGE
.
BEGIN
)))
{
...
@@ -4621,9 +4622,9 @@
...
@@ -4621,9 +4622,9 @@
pid
=
1
-
pid
;
pid
=
1
-
pid
;
}
}
}
}
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
&&
player
.
pos
===
pid
)
{
if
(
player
&&
player
.
pos
===
pid
)
{
tplayer
=
player
;
tplayer
=
player
;
}
}
...
@@ -4761,7 +4762,7 @@
...
@@ -4761,7 +4762,7 @@
});
});
ygopro
.
stoc_follow
(
'
REPLAY
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
ygopro
.
stoc_follow
(
'
REPLAY
'
,
true
,
function
(
buffer
,
info
,
client
,
server
,
datas
)
{
var
duellog
,
dueltime
,
i
,
len
2
,
len3
,
m
,
n
,
player
,
ref2
,
ref3
,
replay_filename
,
room
;
var
duellog
,
dueltime
,
i
,
len
3
,
len4
,
n
,
o
,
player
,
ref3
,
ref4
,
replay_filename
,
room
;
room
=
ROOM_all
[
client
.
rid
];
room
=
ROOM_all
[
client
.
rid
];
if
(
!
room
)
{
if
(
!
room
)
{
return
settings
.
modules
.
tournament_mode
.
enabled
&&
settings
.
modules
.
tournament_mode
.
block_replay_to_player
||
settings
.
modules
.
replay_delay
;
return
settings
.
modules
.
tournament_mode
.
enabled
&&
settings
.
modules
.
tournament_mode
.
block_replay_to_player
||
settings
.
modules
.
replay_delay
;
...
@@ -4778,15 +4779,15 @@
...
@@ -4778,15 +4779,15 @@
dueltime
=
moment
().
format
(
'
YYYY-MM-DD HH-mm-ss
'
);
dueltime
=
moment
().
format
(
'
YYYY-MM-DD HH-mm-ss
'
);
replay_filename
=
dueltime
;
replay_filename
=
dueltime
;
if
(
room
.
hostinfo
.
mode
!==
2
)
{
if
(
room
.
hostinfo
.
mode
!==
2
)
{
ref2
=
room
.
dueling_players
;
for
(
i
=
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
i
=
++
m
)
{
player
=
ref2
[
i
];
replay_filename
=
replay_filename
+
(
i
>
0
?
"
VS
"
:
"
"
)
+
player
.
name
;
}
}
else
{
ref3
=
room
.
dueling_players
;
ref3
=
room
.
dueling_players
;
for
(
i
=
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
i
=
++
n
)
{
for
(
i
=
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
i
=
++
n
)
{
player
=
ref3
[
i
];
player
=
ref3
[
i
];
replay_filename
=
replay_filename
+
(
i
>
0
?
"
VS
"
:
"
"
)
+
player
.
name
;
}
}
else
{
ref4
=
room
.
dueling_players
;
for
(
i
=
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
i
=
++
o
)
{
player
=
ref4
[
i
];
replay_filename
=
replay_filename
+
(
i
>
0
?
(
i
===
2
?
"
VS
"
:
"
&
"
)
:
"
"
)
+
player
.
name
;
replay_filename
=
replay_filename
+
(
i
>
0
?
(
i
===
2
?
"
VS
"
:
"
&
"
)
:
"
"
)
+
player
.
name
;
}
}
}
}
...
@@ -4800,11 +4801,11 @@
...
@@ -4800,11 +4801,11 @@
replay_filename
:
replay_filename
,
replay_filename
:
replay_filename
,
roommode
:
room
.
hostinfo
.
mode
,
roommode
:
room
.
hostinfo
.
mode
,
players
:
(
function
()
{
players
:
(
function
()
{
var
len
4
,
o
,
ref4
,
results
;
var
len
5
,
p
,
ref5
,
results
;
ref
4
=
room
.
dueling_players
;
ref
5
=
room
.
dueling_players
;
results
=
[];
results
=
[];
for
(
o
=
0
,
len4
=
ref4
.
length
;
o
<
len4
;
o
++
)
{
for
(
p
=
0
,
len5
=
ref5
.
length
;
p
<
len5
;
p
++
)
{
player
=
ref
4
[
o
];
player
=
ref
5
[
p
];
results
.
push
({
results
.
push
({
real_name
:
player
.
name_vpass
,
real_name
:
player
.
name_vpass
,
deckbuf
:
player
.
start_deckbuf
.
toString
(
"
base64
"
),
deckbuf
:
player
.
start_deckbuf
.
toString
(
"
base64
"
),
...
@@ -4993,7 +4994,7 @@
...
@@ -4993,7 +4994,7 @@
return
callback
+
"
(
"
+
text
+
"
);
"
;
return
callback
+
"
(
"
+
text
+
"
);
"
;
};
};
requestListener
=
async
function
(
request
,
response
)
{
requestListener
=
async
function
(
request
,
response
)
{
var
archive_args
,
archive_name
,
archive_process
,
check
,
death_room_found
,
duellog
,
err
,
error
,
filename
,
getpath
,
len
2
,
m
,
parseQueryString
,
pass_validated
,
ref2
,
replay
,
roomsjson
,
u
;
var
archive_args
,
archive_name
,
archive_process
,
check
,
death_room_found
,
duellog
,
err
,
error
,
filename
,
getpath
,
len
3
,
n
,
parseQueryString
,
pass_validated
,
ref3
,
replay
,
roomsjson
,
u
;
parseQueryString
=
true
;
parseQueryString
=
true
;
u
=
url
.
parse
(
request
.
url
,
parseQueryString
);
u
=
url
.
parse
(
request
.
url
,
parseQueryString
);
//pass_validated = u.query.pass == settings.modules.http.password
//pass_validated = u.query.pass == settings.modules.http.password
...
@@ -5018,11 +5019,11 @@
...
@@ -5018,11 +5019,11 @@
roommode
:
room
.
hostinfo
.
mode
,
roommode
:
room
.
hostinfo
.
mode
,
needpass
:
(
room
.
name
.
indexOf
(
'
$
'
)
!==
-
1
).
toString
(),
needpass
:
(
room
.
name
.
indexOf
(
'
$
'
)
!==
-
1
).
toString
(),
users
:
_
.
sortBy
((
function
()
{
users
:
_
.
sortBy
((
function
()
{
var
len
2
,
m
,
ref2
,
results
;
var
len
3
,
n
,
ref3
,
results
;
ref
2
=
room
.
players
;
ref
3
=
room
.
players
;
results
=
[];
results
=
[];
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
player
=
ref
2
[
m
];
player
=
ref
3
[
n
];
if
(
player
.
pos
!=
null
)
{
if
(
player
.
pos
!=
null
)
{
results
.
push
({
results
.
push
({
id
:
(
-
1
).
toString
(),
id
:
(
-
1
).
toString
(),
...
@@ -5069,9 +5070,9 @@
...
@@ -5069,9 +5070,9 @@
archive_name
=
moment
().
format
(
'
YYYY-MM-DD HH-mm-ss
'
)
+
"
.zip
"
;
archive_name
=
moment
().
format
(
'
YYYY-MM-DD HH-mm-ss
'
)
+
"
.zip
"
;
archive_args
=
[
"
a
"
,
"
-mx0
"
,
"
-y
"
,
archive_name
];
archive_args
=
[
"
a
"
,
"
-mx0
"
,
"
-y
"
,
archive_name
];
check
=
false
;
check
=
false
;
ref
2
=
duel_log
.
duel_log
;
ref
3
=
duel_log
.
duel_log
;
for
(
m
=
0
,
len2
=
ref2
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
ref3
.
length
;
n
<
len3
;
n
++
)
{
replay
=
ref
2
[
m
];
replay
=
ref
3
[
n
];
check
=
true
;
check
=
true
;
archive_args
.
push
(
replay
.
replay_filename
);
archive_args
.
push
(
replay
.
replay_filename
);
}
}
...
@@ -5370,8 +5371,8 @@
...
@@ -5370,8 +5371,8 @@
plugin_list
=
fs
.
readdirSync
(
"
./plugins
"
);
plugin_list
=
fs
.
readdirSync
(
"
./plugins
"
);
for
(
m
=
0
,
len2
=
plugin_list
.
length
;
m
<
len2
;
m
++
)
{
for
(
n
=
0
,
len3
=
plugin_list
.
length
;
n
<
len3
;
n
++
)
{
plugin_filename
=
plugin_list
[
m
];
plugin_filename
=
plugin_list
[
n
];
plugin_path
=
process
.
cwd
()
+
"
/plugins/
"
+
plugin_filename
;
plugin_path
=
process
.
cwd
()
+
"
/plugins/
"
+
plugin_filename
;
require
(
plugin_path
);
require
(
plugin_path
);
log
.
info
(
"
Plugin loaded:
"
,
plugin_filename
);
log
.
info
(
"
Plugin loaded:
"
,
plugin_filename
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment