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
9eb9affd
Commit
9eb9affd
authored
May 04, 2016
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
format
parent
4614147a
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
116 additions
and
128 deletions
+116
-128
room.coffee
room.coffee
+19
-15
room.js
room.js
+31
-39
ygopro-server.coffee
ygopro-server.coffee
+26
-26
ygopro-server.js
ygopro-server.js
+40
-48
No files found.
room.coffee
View file @
9eb9affd
_
=
require
'underscore'
_
.
str
=
require
'underscore.string'
_
.
mixin
(
_
.
str
.
exports
())
;
_
.
mixin
(
_
.
str
.
exports
())
spawn
=
require
(
'child_process'
).
spawn
spawnSync
=
require
(
'child_process'
).
spawnSync
settings
=
require
'./config.json'
...
...
@@ -70,7 +70,7 @@ class Room
bannedplayer
.
time
=
if
moment
()
<
bannedplayer
.
time
then
moment
(
bannedplayer
.
time
).
add
(
bantime
,
'm'
)
else
moment
().
add
(
bantime
,
'm'
)
bannedplayer
.
reasons
.
push
(
reason
)
if
not
_
.
find
bannedplayer
.
reasons
,
(
bannedreason
)
->
bannedreason
==
reason
bannedplayer
.
need_tip
=
true
;
bannedplayer
.
need_tip
=
true
else
bannedplayer
=
{
"ip"
:
ip
,
"time"
:
moment
(),
"count"
:
1
,
"reasons"
:
[
reason
],
"need_tip"
:
true
}
Room
.
players_banned
.
push
(
bannedplayer
)
...
...
@@ -104,7 +104,11 @@ class Room
max_player
=
if
type
==
'T'
then
4
else
2
playerbanned
=
(
bannedplayer
and
bannedplayer
.
count
>
3
and
moment
()
<
bannedplayer
.
time
)
result
=
_
.
find
@
all
,
(
room
)
->
return
room
.
random_type
!=
''
and
!
room
.
started
and
((
type
==
''
and
room
.
random_type
!=
'T'
)
or
room
.
random_type
==
type
)
and
room
.
get_playing_player
().
length
<
max_player
and
(
room
.
get_host
()
==
null
or
room
.
get_host
().
remoteAddress
!=
Room
.
players_oppentlist
[
player_ip
])
and
(
playerbanned
==
room
.
deprecated
)
return
room
.
random_type
!=
''
and
!
room
.
started
and
((
type
==
''
and
room
.
random_type
!=
'T'
)
or
room
.
random_type
==
type
)
and
room
.
get_playing_player
().
length
<
max_player
and
(
room
.
get_host
()
==
null
or
room
.
get_host
().
remoteAddress
!=
Room
.
players_oppentlist
[
player_ip
])
and
(
playerbanned
==
room
.
deprecated
)
if
result
result
.
welcome
=
'对手已经在等你了,开始决斗吧!'
#log.info 'found room', player_name
...
...
@@ -321,7 +325,7 @@ class Room
roomlist
.
create
(
this
)
if
!
@
private
and
settings
.
modules
.
enable_websocket_roomlist
@
port
=
parseInt
data
_
.
each
@
players
,
(
player
)
=>
player
.
server
.
connect
@
port
,
'127.0.0.1'
,
=
>
player
.
server
.
connect
@
port
,
'127.0.0.1'
,
-
>
player
.
server
.
write
buffer
for
buffer
in
player
.
pre_establish_buffers
player
.
established
=
true
player
.
pre_establish_buffers
=
[]
...
...
@@ -339,10 +343,10 @@ class Room
YGOPRO_DIALOG
:
@
windbot
.
dialog
}
}
@
ai_process
.
stdout
.
on
'data'
,
(
data
)
=
>
@
ai_process
.
stdout
.
on
'data'
,
(
data
)
-
>
#log.info "AI stdout: " + data
return
@
ai_process
.
stderr
.
on
'data'
,
(
data
)
=
>
@
ai_process
.
stderr
.
on
'data'
,
(
data
)
-
>
log
.
info
"AI stderr: "
+
data
return
return
...
...
@@ -358,11 +362,11 @@ class Room
(
if
@
player_datas
[
1
]
then
@
player_datas
[
1
].
name
else
"AI"
)
+
(
if
@
player_datas
[
3
]
then
"+"
+
@
player_datas
[
3
].
name
else
""
)
player_ips
=
[]
_
.
each
@
player_datas
,
(
player
)
=
>
_
.
each
@
player_datas
,
(
player
)
-
>
player_ips
.
push
(
player
.
ip
)
return
recorder_buffer
=
Buffer
.
concat
(
@
recorder_buffers
)
zlib
.
deflate
recorder_buffer
,
(
err
,
replay_buffer
)
=
>
zlib
.
deflate
recorder_buffer
,
(
err
,
replay_buffer
)
-
>
replay_buffer
=
replay_buffer
.
toString
(
'binary'
)
#log.info err, replay_buffer
date_time
=
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
)
...
...
@@ -374,7 +378,7 @@ class Room
"date_time"
,
date_time
)
redisdb
.
expire
(
"replay:"
+
replay_id
,
60
*
60
*
24
)
recorded_ip
=
[]
_
.
each
player_ips
,
(
player_ip
)
=
>
_
.
each
player_ips
,
(
player_ip
)
-
>
return
if
_
.
contains
(
recorded_ip
,
player_ip
)
recorded_ip
.
push
player_ip
redisdb
.
lpush
(
player_ip
+
":replays"
,
replay_id
)
...
...
@@ -393,14 +397,14 @@ class Room
get_playing_player
:
->
playing_player
=
[]
_
.
each
@
players
,
(
player
)
=
>
_
.
each
@
players
,
(
player
)
-
>
if
player
.
pos
<
4
then
playing_player
.
push
player
return
return
playing_player
get_host
:
->
host_player
=
null
_
.
each
@
players
,
(
player
)
=
>
_
.
each
@
players
,
(
player
)
-
>
if
player
.
is_host
then
host_player
=
player
return
return
host_player
...
...
@@ -429,7 +433,7 @@ class Room
disconnect
:
(
client
,
error
)
->
if
client
.
is_post_watcher
ygopro
.
stoc_send_chat_to_room
this
,
"
#{
client
.
name
}
#{
'退出了观战'
}#{
if
error
then
":
#{
error
}
"
else
''
}
"
ygopro
.
stoc_send_chat_to_room
this
,
"
#{
client
.
name
}
退出了观战"
+
if
error
then
":
#{
error
}
"
else
''
index
=
_
.
indexOf
(
@
watchers
,
client
)
@
watchers
.
splice
(
index
,
1
)
unless
index
==
-
1
#client.room = null
...
...
@@ -440,7 +444,7 @@ class Room
if
@
started
and
@
disconnector
!=
'server'
and
client
.
room
.
random_type
Room
.
ban_player
(
client
.
name
,
client
.
ip
,
"强退"
)
if
@
players
.
length
ygopro
.
stoc_send_chat_to_room
this
,
"
#{
client
.
name
}
#{
'离开了游戏'
}#{
if
error
then
":
#{
error
}
"
else
''
}
"
ygopro
.
stoc_send_chat_to_room
this
,
"
#{
client
.
name
}
离开了游戏"
+
if
error
then
":
#{
error
}
"
else
''
roomlist
.
update
(
this
)
if
!
@
private
and
!
@
started
and
settings
.
modules
.
enable_websocket_roomlist
#client.room = null
else
...
...
room.js
View file @
9eb9affd
...
...
@@ -465,14 +465,11 @@
if
(
this
.
player_datas
.
length
&&
settings
.
modules
.
enable_cloud_replay
)
{
player_names
=
this
.
player_datas
[
0
].
name
+
(
this
.
player_datas
[
2
]
?
"
+
"
+
this
.
player_datas
[
2
].
name
:
""
)
+
"
VS
"
+
(
this
.
player_datas
[
1
]
?
this
.
player_datas
[
1
].
name
:
"
AI
"
)
+
(
this
.
player_datas
[
3
]
?
"
+
"
+
this
.
player_datas
[
3
].
name
:
""
);
player_ips
=
[];
_
.
each
(
this
.
player_datas
,
(
function
(
_this
)
{
return
function
(
player
)
{
_
.
each
(
this
.
player_datas
,
function
(
player
)
{
player_ips
.
push
(
player
.
ip
);
};
})(
this
));
});
recorder_buffer
=
Buffer
.
concat
(
this
.
recorder_buffers
);
zlib
.
deflate
(
recorder_buffer
,
(
function
(
_this
)
{
return
function
(
err
,
replay_buffer
)
{
zlib
.
deflate
(
recorder_buffer
,
function
(
err
,
replay_buffer
)
{
var
date_time
,
recorded_ip
,
replay_id
;
replay_buffer
=
replay_buffer
.
toString
(
'
binary
'
);
date_time
=
moment
().
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
...
...
@@ -487,8 +484,7 @@
recorded_ip
.
push
(
player_ip
);
redisdb
.
lpush
(
player_ip
+
"
:replays
"
,
replay_id
);
});
};
})(
this
));
});
}
this
.
watcher_buffers
=
[];
this
.
recorder_buffers
=
[];
...
...
@@ -509,26 +505,22 @@
Room
.
prototype
.
get_playing_player
=
function
()
{
var
playing_player
;
playing_player
=
[];
_
.
each
(
this
.
players
,
(
function
(
_this
)
{
return
function
(
player
)
{
_
.
each
(
this
.
players
,
function
(
player
)
{
if
(
player
.
pos
<
4
)
{
playing_player
.
push
(
player
);
}
};
})(
this
));
});
return
playing_player
;
};
Room
.
prototype
.
get_host
=
function
()
{
var
host_player
;
host_player
=
null
;
_
.
each
(
this
.
players
,
(
function
(
_this
)
{
return
function
(
player
)
{
_
.
each
(
this
.
players
,
function
(
player
)
{
if
(
player
.
is_host
)
{
host_player
=
player
;
}
};
})(
this
));
});
return
host_player
;
};
...
...
@@ -565,7 +557,7 @@
Room
.
prototype
.
disconnect
=
function
(
client
,
error
)
{
var
index
;
if
(
client
.
is_post_watcher
)
{
ygopro
.
stoc_send_chat_to_room
(
this
,
client
.
name
+
"
"
+
'
退出了观战
'
+
(
error
?
"
:
"
+
error
:
''
));
ygopro
.
stoc_send_chat_to_room
(
this
,
(
client
.
name
+
"
退出了观战
"
)
+
(
error
?
"
:
"
+
error
:
''
));
index
=
_
.
indexOf
(
this
.
watchers
,
client
);
if
(
index
!==
-
1
)
{
this
.
watchers
.
splice
(
index
,
1
);
...
...
@@ -579,7 +571,7 @@
Room
.
ban_player
(
client
.
name
,
client
.
ip
,
"
强退
"
);
}
if
(
this
.
players
.
length
)
{
ygopro
.
stoc_send_chat_to_room
(
this
,
client
.
name
+
"
"
+
'
离开了游戏
'
+
(
error
?
"
:
"
+
error
:
''
));
ygopro
.
stoc_send_chat_to_room
(
this
,
(
client
.
name
+
"
离开了游戏
"
)
+
(
error
?
"
:
"
+
error
:
''
));
if
(
!
this
[
"
private
"
]
&&
!
this
.
started
&&
settings
.
modules
.
enable_websocket_roomlist
)
{
roomlist
.
update
(
this
);
}
...
...
ygopro-server.coffee
View file @
9eb9affd
...
...
@@ -11,7 +11,7 @@ execFile = require('child_process').execFile
#三方库
_
=
require
'underscore'
_
.
str
=
require
'underscore.string'
_
.
mixin
(
_
.
str
.
exports
())
;
_
.
mixin
(
_
.
str
.
exports
())
request
=
require
'request'
...
...
@@ -135,7 +135,7 @@ net.createServer (client) ->
return
redisdb
.
expire
(
"replay:"
+
replay
.
replay_id
,
60
*
60
*
48
)
buffer
=
new
Buffer
(
replay
.
replay_buffer
,
'binary'
)
zlib
.
unzip
buffer
,
(
err
,
replay_buffer
)
=
>
zlib
.
unzip
buffer
,
(
err
,
replay_buffer
)
-
>
if
err
log
.
info
err
ygopro
.
stoc_send_chat
(
client
,
"播放录像出错"
,
ygopro
.
constants
.
COLORS
.
RED
)
...
...
@@ -268,7 +268,7 @@ net.createServer (client) ->
#功能模块
ygopro
.
ctos_follow
'PLAYER_INFO'
,
true
,
(
buffer
,
info
,
client
,
server
)
->
name
=
info
.
name
.
split
(
"$"
)[
0
]
;
name
=
info
.
name
.
split
(
"$"
)[
0
]
struct
=
ygopro
.
structs
[
"CTOS_PlayerInfo"
]
struct
.
_setBuff
(
buffer
)
struct
.
set
(
"name"
,
name
)
...
...
@@ -289,9 +289,9 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
else
if
info
.
pass
.
toUpperCase
()
==
"R"
and
settings
.
modules
.
enable_cloud_replay
ygopro
.
stoc_send_chat
(
client
,
"以下是您近期的云录像,密码处输入 R#录像编号 即可观看"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
)
redisdb
.
lrange
client
.
remoteAddress
+
":replays"
,
0
,
2
,
(
err
,
result
)
=
>
_
.
each
result
,
(
replay_id
,
id
)
=
>
redisdb
.
hgetall
"replay:"
+
replay_id
,
(
err
,
replay
)
=
>
redisdb
.
lrange
client
.
remoteAddress
+
":replays"
,
0
,
2
,
(
err
,
result
)
-
>
_
.
each
result
,
(
replay_id
,
id
)
-
>
redisdb
.
hgetall
"replay:"
+
replay_id
,
(
err
,
replay
)
-
>
if
err
or
!
replay
log
.
info
err
return
...
...
@@ -300,7 +300,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
return
return
#强行等待异步执行完毕_(:з」∠)_
setTimeout
(()
=>
setTimeout
(()
->
ygopro
.
stoc_send
client
,
'ERROR_MSG'
,{
msg
:
1
code
:
2
...
...
@@ -310,7 +310,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
else
if
info
.
pass
[
0
...
2
].
toUpperCase
()
==
"R#"
and
settings
.
modules
.
enable_cloud_replay
replay_id
=
info
.
pass
.
split
(
"#"
)[
1
]
if
(
replay_id
>
0
and
replay_id
<=
9
)
redisdb
.
lindex
client
.
remoteAddress
+
":replays"
,
replay_id
-
1
,
(
err
,
replay_id
)
=
>
redisdb
.
lindex
client
.
remoteAddress
+
":replays"
,
replay_id
-
1
,
(
err
,
replay_id
)
-
>
if
err
or
!
replay_id
log
.
info
err
ygopro
.
stoc_send_chat
(
client
,
"没有找到录像"
,
ygopro
.
constants
.
COLORS
.
RED
)
...
...
@@ -417,7 +417,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
# 4 join match
switch
action
when
1
,
2
name
=
crypto
.
createHash
(
'md5'
).
update
(
info
.
pass
+
client
.
name
).
digest
(
'base64'
)[
0
...
10
].
replace
(
'+'
,
'-'
).
replace
(
'/'
,
'_'
)
;
name
=
crypto
.
createHash
(
'md5'
).
update
(
info
.
pass
+
client
.
name
).
digest
(
'base64'
)[
0
...
10
].
replace
(
'+'
,
'-'
).
replace
(
'/'
,
'_'
)
if
Room
.
find_by_name
(
name
)
ygopro
.
stoc_send_chat
(
client
,
'主机密码不正确 (Already Existed)'
,
ygopro
.
constants
.
COLORS
.
RED
)
ygopro
.
stoc_send
client
,
'ERROR_MSG'
,
{
...
...
@@ -472,7 +472,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
client
.
room
.
connect
(
client
)
if
id
=
users_cache
[
client
.
name
]
secret
=
id
%
65535
+
1
;
secret
=
id
%
65535
+
1
decrypted_buffer
=
new
Buffer
(
6
)
for
i
in
[
0
,
2
,
4
]
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
)
...
...
@@ -490,7 +490,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
json
:
true
,
(
error
,
response
,
body
)
->
if
body
and
body
.
user
secret
=
body
.
user
.
id
%
65535
+
1
;
secret
=
body
.
user
.
id
%
65535
+
1
decrypted_buffer
=
new
Buffer
(
6
)
for
i
in
[
0
,
2
,
4
]
decrypted_buffer
.
writeUInt16LE
(
buffer
.
readUInt16LE
(
i
)
^
secret
,
i
)
...
...
@@ -668,7 +668,7 @@ ygopro.stoc_follow 'GAME_MSG', false, (buffer, info, client, server)->
#log.info 'MSG', ygopro.constants.MSG[msg]
if
ygopro
.
constants
.
MSG
[
msg
]
==
'START'
playertype
=
buffer
.
readUInt8
(
1
)
client
.
is_first
=
!
(
playertype
&
0xf
)
;
client
.
is_first
=
!
(
playertype
&
0xf
)
client
.
lp
=
client
.
room
.
hostinfo
.
start_lp
#ygopro.stoc_send_chat_to_room(client.room, "LP跟踪调试信息: #{client.name} 初始LP #{client.lp}")
...
...
@@ -728,8 +728,8 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server)->
return
false
ygopro
.
stoc_follow
'TYPE_CHANGE'
,
false
,
(
buffer
,
info
,
client
,
server
)
->
selftype
=
info
.
type
&
0xf
;
is_host
=
((
info
.
type
>>
4
)
&
0xf
)
!=
0
;
selftype
=
info
.
type
&
0xf
is_host
=
((
info
.
type
>>
4
)
&
0xf
)
!=
0
client
.
is_host
=
is_host
client
.
pos
=
selftype
#console.log "TYPE_CHANGE to #{client.name}:", info, selftype, is_host
...
...
@@ -737,8 +737,8 @@ ygopro.stoc_follow 'TYPE_CHANGE', false, (buffer, info, client, server)->
ygopro
.
stoc_follow
'HS_PLAYER_CHANGE'
,
false
,
(
buffer
,
info
,
client
,
server
)
->
return
unless
client
.
room
and
client
.
room
.
max_player
and
client
.
is_host
pos
=
info
.
status
>>
4
;
is_ready
=
(
info
.
status
&
0xf
)
==
9
;
pos
=
info
.
status
>>
4
is_ready
=
(
info
.
status
&
0xf
)
==
9
if
pos
<
client
.
room
.
max_player
client
.
room
.
ready_player_count_without_host
=
0
for
player
in
client
.
room
.
players
...
...
@@ -790,12 +790,12 @@ if settings.modules.tips
return
if
settings
.
modules
.
mycard_auth
and
process
.
env
.
MYCARD_AUTH_DATABASE
pg
=
require
(
'pg'
)
;
pg
=
require
(
'pg'
)
pg
.
connect
process
.
env
.
MYCARD_AUTH_DATABASE
,
(
error
,
client
,
done
)
->
throw
error
if
error
client
.
query
'SELECT username, id from users'
,
(
error
,
result
)
->
throw
error
if
error
done
()
;
done
()
for
row
in
result
.
rows
users_cache
[
row
.
username
]
=
row
.
id
console
.
log
(
"users loaded"
,
_
.
keys
(
users_cache
).
length
)
...
...
@@ -928,10 +928,10 @@ if settings.modules.http
if
u
.
pathname
==
'/api/getrooms'
if
!
pass_validated
response
.
writeHead
(
200
)
;
response
.
writeHead
(
200
)
response
.
end
(
u
.
query
.
callback
+
'( {"rooms":[{"roomid":"0","roomname":"密码错误","needpass":"true"}]} );'
)
else
response
.
writeHead
(
200
)
;
response
.
writeHead
(
200
)
roomsjson
=
JSON
.
stringify
rooms
:
(
for
room
in
Room
.
all
when
room
.
established
pid
:
room
.
process
.
pid
.
toString
(),
roomid
:
room
.
port
.
toString
(),
...
...
@@ -948,8 +948,8 @@ if settings.modules.http
else
if
u
.
pathname
==
'/api/message'
if
!
pass_validated
response
.
writeHead
(
200
)
;
response
.
end
(
u
.
query
.
callback
+
"( '密码错误', 0 );"
)
;
response
.
writeHead
(
200
)
response
.
end
(
u
.
query
.
callback
+
"( '密码错误', 0 );"
)
return
if
u
.
query
.
shout
...
...
@@ -976,12 +976,12 @@ if settings.modules.http
response
.
end
(
u
.
query
.
callback
+
"( 'ban ok', '"
+
u
.
query
.
ban
+
"' );"
)
else
response
.
writeHead
(
404
)
;
response
.
end
()
;
response
.
writeHead
(
404
)
response
.
end
()
else
response
.
writeHead
(
404
)
;
response
.
end
()
;
response
.
writeHead
(
404
)
response
.
end
()
return
http_server
=
http
.
createServer
(
requestListener
)
...
...
ygopro-server.js
View file @
9eb9affd
...
...
@@ -184,8 +184,7 @@
}
redisdb
.
expire
(
"
replay:
"
+
replay
.
replay_id
,
60
*
60
*
48
);
buffer
=
new
Buffer
(
replay
.
replay_buffer
,
'
binary
'
);
zlib
.
unzip
(
buffer
,
(
function
(
_this
)
{
return
function
(
err
,
replay_buffer
)
{
zlib
.
unzip
(
buffer
,
function
(
err
,
replay_buffer
)
{
if
(
err
)
{
log
.
info
(
err
);
ygopro
.
stoc_send_chat
(
client
,
"
播放录像出错
"
,
ygopro
.
constants
.
COLORS
.
RED
);
...
...
@@ -195,8 +194,7 @@
ygopro
.
stoc_send_chat
(
client
,
"
正在观看云录像:R#
"
+
replay
.
replay_id
+
"
"
+
replay
.
player_names
+
"
"
+
replay
.
date_time
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
client
.
write
(
replay_buffer
);
client
.
end
();
};
})(
this
));
});
};
}
ctos_buffer
=
new
Buffer
(
0
);
...
...
@@ -344,8 +342,7 @@
client
.
end
();
}
else
if
(
info
.
pass
.
toUpperCase
()
===
"
R
"
&&
settings
.
modules
.
enable_cloud_replay
)
{
ygopro
.
stoc_send_chat
(
client
,
"
以下是您近期的云录像,密码处输入 R#录像编号 即可观看
"
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
redisdb
.
lrange
(
client
.
remoteAddress
+
"
:replays
"
,
0
,
2
,
(
function
(
_this
)
{
return
function
(
err
,
result
)
{
redisdb
.
lrange
(
client
.
remoteAddress
+
"
:replays
"
,
0
,
2
,
function
(
err
,
result
)
{
_
.
each
(
result
,
function
(
replay_id
,
id
)
{
redisdb
.
hgetall
(
"
replay:
"
+
replay_id
,
function
(
err
,
replay
)
{
if
(
err
||
!
replay
)
{
...
...
@@ -355,22 +352,18 @@
ygopro
.
stoc_send_chat
(
client
,
"
<
"
+
(
id
-
0
+
1
)
+
"
> R#
"
+
replay_id
+
"
"
+
replay
.
player_names
+
"
"
+
replay
.
date_time
,
ygopro
.
constants
.
COLORS
.
BABYBLUE
);
});
});
};
})(
this
));
setTimeout
(((
function
(
_this
)
{
return
function
()
{
});
setTimeout
((
function
()
{
ygopro
.
stoc_send
(
client
,
'
ERROR_MSG
'
,
{
msg
:
1
,
code
:
2
});
return
client
.
end
();
};
})(
this
)),
500
);
}),
500
);
}
else
if
(
info
.
pass
.
slice
(
0
,
2
).
toUpperCase
()
===
"
R#
"
&&
settings
.
modules
.
enable_cloud_replay
)
{
replay_id
=
info
.
pass
.
split
(
"
#
"
)[
1
];
if
(
replay_id
>
0
&&
replay_id
<=
9
)
{
redisdb
.
lindex
(
client
.
remoteAddress
+
"
:replays
"
,
replay_id
-
1
,
(
function
(
_this
)
{
return
function
(
err
,
replay_id
)
{
redisdb
.
lindex
(
client
.
remoteAddress
+
"
:replays
"
,
replay_id
-
1
,
function
(
err
,
replay_id
)
{
if
(
err
||
!
replay_id
)
{
log
.
info
(
err
);
ygopro
.
stoc_send_chat
(
client
,
"
没有找到录像
"
,
ygopro
.
constants
.
COLORS
.
RED
);
...
...
@@ -382,8 +375,7 @@
return
;
}
redisdb
.
hgetall
(
"
replay:
"
+
replay_id
,
client
.
open_cloud_replay
);
};
})(
this
));
});
}
else
if
(
replay_id
)
{
redisdb
.
hgetall
(
"
replay:
"
+
replay_id
,
client
.
open_cloud_replay
);
}
else
{
...
...
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