Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
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
YGOPRO-520DIY
ygopro
Commits
77cea9dd
Commit
77cea9dd
authored
Aug 09, 2017
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test
parent
fe0246a7
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
645 additions
and
330 deletions
+645
-330
gframe/netserver.h
gframe/netserver.h
+8
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+327
-171
gframe/single_duel.h
gframe/single_duel.h
+3
-2
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+304
-155
gframe/tag_duel.h
gframe/tag_duel.h
+3
-2
No files found.
gframe/netserver.h
View file @
77cea9dd
...
@@ -76,6 +76,14 @@ public:
...
@@ -76,6 +76,14 @@ public:
if
(
dp
)
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
}
}
#ifdef YGOPRO_SERVER_MODE
static
void
ReSendToPlayers
(
DuelPlayer
*
dp1
,
DuelPlayer
*
dp2
)
{
if
(
dp1
)
bufferevent_write
(
dp1
->
bev
,
net_server_write
,
last_sent
);
if
(
dp2
)
bufferevent_write
(
dp2
->
bev
,
net_server_write
,
last_sent
);
}
#endif //YGOPRO_SERVER_MODE
};
};
}
}
...
...
gframe/single_duel.cpp
View file @
77cea9dd
...
@@ -9,8 +9,9 @@
...
@@ -9,8 +9,9 @@
namespace
ygo
{
namespace
ygo
{
#ifdef YGOPRO_SERVER_MODE
extern
unsigned
short
replay_mode
;
extern
unsigned
short
replay_mode
;
#endif
SingleDuel
::
SingleDuel
(
bool
is_match
)
{
SingleDuel
::
SingleDuel
(
bool
is_match
)
{
game_started
=
false
;
game_started
=
false
;
match_mode
=
is_match
;
match_mode
=
is_match
;
...
@@ -21,6 +22,10 @@ SingleDuel::SingleDuel(bool is_match) {
...
@@ -21,6 +22,10 @@ SingleDuel::SingleDuel(bool is_match) {
}
}
duel_count
=
0
;
duel_count
=
0
;
memset
(
match_result
,
0
,
3
);
memset
(
match_result
,
0
,
3
);
#ifdef YGOPRO_SERVER_MODE
cache_recorder
=
0
;
replay_recorder
=
0
;
#endif
}
}
SingleDuel
::~
SingleDuel
()
{
SingleDuel
::~
SingleDuel
()
{
}
}
...
@@ -36,21 +41,23 @@ void SingleDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
...
@@ -36,21 +41,23 @@ void SingleDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
if
((
*
pit
)
!=
dp
)
if
((
*
pit
)
!=
dp
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
/*for(auto pit = recorders.begin(); pit != recorders.end(); ++pit)
if
(
cache_recorder
)
if((*pit) != dp)
NetServer
::
ReSendToPlayer
(
cache_recorder
);
NetServer::ReSendToPlayer(*pit);*/
#endif
#endif //YGOPRO_SERVER_MODE
}
else
{
}
else
{
NetServer
::
SendBufferToPlayer
(
players
[
1
-
dp
->
type
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
dp
->
type
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
/*for(auto pit = recorders.begin(); pit != recorders.end(); ++pit
)
if
(
cache_recorder
)
NetServer::ReSendToPlayer(
*pit);*/
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
//YGOPRO_SERVER_MODE
#endif
}
}
}
}
void
SingleDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
void
SingleDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
#ifdef YGOPRO_SERVER_MODE
bool
is_recorder
=
false
;
#endif
if
(
!
is_creater
)
{
if
(
!
is_creater
)
{
if
(
dp
->
game
&&
dp
->
type
!=
0xff
)
{
if
(
dp
->
game
&&
dp
->
type
!=
0xff
)
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
...
@@ -69,11 +76,18 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -69,11 +76,18 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
return
;
return
;
}
}
#ifdef YGOPRO_SERVER_MODE
#else
wchar_t
jpass
[
20
];
wchar_t
jpass
[
20
];
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
#ifdef YGOPRO_SERVER_MODE
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
is_recorder
=
true
;
cache_recorder
=
dp
;
}
if
(
!
wcscmp
(
jpass
,
L"Marshtomp"
)
&&
!
replay_recorder
)
{
is_recorder
=
true
;
replay_recorder
=
dp
;
}
#else
if
(
wcscmp
(
jpass
,
pass
))
{
if
(
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
msg
=
ERRMSG_JOINERROR
;
...
@@ -90,6 +104,13 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -90,6 +104,13 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
scjg
.
info
=
host_info
;
scjg
.
info
=
host_info
;
STOC_TypeChange
sctc
;
STOC_TypeChange
sctc
;
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
#ifdef YGOPRO_SERVER_MODE
if
(
is_recorder
)
{
dp
->
type
=
9
;
sctc
.
type
=
NETPLAYER_TYPE_OBSERVER
;
}
else
#endif //YGOPRO_SERVER_MODE
if
(
!
players
[
0
]
||
!
players
[
1
])
{
if
(
!
players
[
0
]
||
!
players
[
1
])
{
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
CopyWStr
(
dp
->
name
,
scpe
.
name
,
20
);
BufferIO
::
CopyWStr
(
dp
->
name
,
scpe
.
name
,
20
);
...
@@ -103,8 +124,12 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -103,8 +124,12 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
}
}
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
#endif
if
(
!
players
[
0
])
{
if
(
!
players
[
0
])
{
players
[
0
]
=
dp
;
players
[
0
]
=
dp
;
dp
->
type
=
NETPLAYER_TYPE_PLAYER1
;
dp
->
type
=
NETPLAYER_TYPE_PLAYER1
;
...
@@ -126,8 +151,12 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -126,8 +151,12 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
#endif
}
}
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_JOIN_GAME
,
scjg
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_JOIN_GAME
,
scjg
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
@@ -161,6 +190,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -161,6 +190,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
}
}
void
SingleDuel
::
LeaveGame
(
DuelPlayer
*
dp
)
{
void
SingleDuel
::
LeaveGame
(
DuelPlayer
*
dp
)
{
if
(
dp
==
host_player
)
{
if
(
dp
==
host_player
)
{
#ifdef YGOPRO_SERVER_MODE
int
host_pos
;
int
host_pos
;
if
(
players
[
0
]
&&
dp
->
type
!=
0
)
{
if
(
players
[
0
]
&&
dp
->
type
!=
0
)
{
host_pos
=
0
;
host_pos
=
0
;
...
@@ -179,6 +209,11 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -179,6 +209,11 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
host_pos
],
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
players
[
host_pos
],
STOC_TYPE_CHANGE
,
sctc
);
}
}
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
#else
EndDuel
();
NetServer
::
StopServer
();
}
else
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
#endif //YGOPRO_SERVER_MODE
observers
.
erase
(
dp
);
observers
.
erase
(
dp
);
if
(
!
game_started
)
{
if
(
!
game_started
)
{
STOC_HS_WatchChange
scwc
;
STOC_HS_WatchChange
scwc
;
...
@@ -189,8 +224,12 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -189,8 +224,12 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
#endif
}
}
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
}
else
{
...
@@ -205,8 +244,12 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -205,8 +244,12 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
#endif
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
}
else
{
if
(
!
game_started
)
{
if
(
!
game_started
)
{
...
@@ -218,20 +261,26 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -218,20 +261,26 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
unsigned
char
wbuf
[
3
];
unsigned
char
wbuf
[
3
];
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
1
]
=
1
-
dp
->
type
;
wbuf
[
1
]
=
1
-
dp
->
type
;
#ifdef YGOPRO_SERVER_MODE
wbuf
[
2
]
=
4
;
wbuf
[
2
]
=
4
;
#else
wbuf
[
2
]
=
0
;
#endif
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
EndDuel
();
EndDuel
();
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
NetServer
::
StopServer
();
NetServer
::
StopServer
();
}
}
}
}
...
@@ -265,10 +314,16 @@ void SingleDuel::ToDuelist(DuelPlayer* dp) {
...
@@ -265,10 +314,16 @@ void SingleDuel::ToDuelist(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
}
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
{
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
cache_recorder
)
{
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
}
if
(
replay_recorder
)
{
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
#endif
STOC_TypeChange
sctc
;
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
@@ -284,15 +339,16 @@ void SingleDuel::ToObserver(DuelPlayer* dp) {
...
@@ -284,15 +339,16 @@ void SingleDuel::ToObserver(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
#endif
players
[
dp
->
type
]
=
0
;
players
[
dp
->
type
]
=
0
;
ready
[
dp
->
type
]
=
false
;
ready
[
dp
->
type
]
=
false
;
dp
->
type
=
NETPLAYER_TYPE_OBSERVER
;
dp
->
type
=
NETPLAYER_TYPE_OBSERVER
;
if
(
recorders
.
size
()
==
0
&&
dp
->
name
[
0
]
==
77
)
observers
.
insert
(
dp
);
recorders
.
insert
(
dp
);
else
observers
.
insert
(
dp
);
STOC_TypeChange
sctc
;
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
@@ -325,8 +381,12 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
...
@@ -325,8 +381,12 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
NetServer
::
SendPacketToPlayer
(
players
[
1
-
dp
->
type
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
1
-
dp
->
type
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
#endif
}
}
void
SingleDuel
::
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{
void
SingleDuel
::
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{
if
(
pos
>
1
||
dp
!=
host_player
||
dp
==
players
[
pos
]
||
!
players
[
pos
])
if
(
pos
>
1
||
dp
!=
host_player
||
dp
==
players
[
pos
]
||
!
players
[
pos
])
...
@@ -372,10 +432,13 @@ void SingleDuel::StartDuel(DuelPlayer* dp) {
...
@@ -372,10 +432,13 @@ void SingleDuel::StartDuel(DuelPlayer* dp) {
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
}
}
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
{
#ifdef YGOPRO_SERVER_MODE
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
if
(
cache_recorder
)
NetServer
::
ReSendToPlayer
(
*
oit
);
cache_recorder
->
state
=
CTOS_LEAVE_GAME
;
}
if
(
replay_recorder
)
replay_recorder
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
hand_result
[
0
]
=
0
;
hand_result
[
0
]
=
0
;
...
@@ -396,8 +459,9 @@ void SingleDuel::HandResult(DuelPlayer* dp, unsigned char res) {
...
@@ -396,8 +459,9 @@ void SingleDuel::HandResult(DuelPlayer* dp, unsigned char res) {
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_HAND_RESULT
,
schr
);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_HAND_RESULT
,
schr
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
schr
.
res1
=
hand_result
[
1
];
schr
.
res1
=
hand_result
[
1
];
schr
.
res2
=
hand_result
[
0
];
schr
.
res2
=
hand_result
[
0
];
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HAND_RESULT
,
schr
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HAND_RESULT
,
schr
);
...
@@ -518,8 +582,12 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -518,8 +582,12 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
else
startbuf
[
1
]
=
0x11
;
else
startbuf
[
1
]
=
0x11
;
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
if
(
cache_recorder
)
NetServer
::
SendBufferToPlayer
(
cache_recorder
,
STOC_GAME_MSG
,
startbuf
,
18
);
if
(
replay_recorder
)
NetServer
::
SendBufferToPlayer
(
replay_recorder
,
STOC_GAME_MSG
,
startbuf
,
18
);
#endif
RefreshExtra
(
0
);
RefreshExtra
(
0
);
RefreshExtra
(
1
);
RefreshExtra
(
1
);
start_duel
(
pduel
,
opt
);
start_duel
(
pduel
,
opt
);
...
@@ -549,8 +617,9 @@ void SingleDuel::DuelEndProc() {
...
@@ -549,8 +617,9 @@ void SingleDuel::DuelEndProc() {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
NetServer
::
StopServer
();
NetServer
::
StopServer
();
}
else
{
}
else
{
int
winc
[
3
]
=
{
0
,
0
,
0
};
int
winc
[
3
]
=
{
0
,
0
,
0
};
...
@@ -564,8 +633,9 @@ void SingleDuel::DuelEndProc() {
...
@@ -564,8 +633,9 @@ void SingleDuel::DuelEndProc() {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
NetServer
::
StopServer
();
NetServer
::
StopServer
();
}
else
{
}
else
{
if
(
players
[
0
]
!=
pplayer
[
0
])
{
if
(
players
[
0
]
!=
pplayer
[
0
])
{
...
@@ -585,8 +655,12 @@ void SingleDuel::DuelEndProc() {
...
@@ -585,8 +655,12 @@ void SingleDuel::DuelEndProc() {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_CHANGE_SIDE
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_CHANGE_SIDE
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendPacketToPlayer
(
*
oit
,
STOC_WAITING_SIDE
);
NetServer
::
SendPacketToPlayer
(
*
oit
,
STOC_WAITING_SIDE
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
oit
,
STOC_WAITING_SIDE
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_WAITING_SIDE
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_WAITING_SIDE
);
#endif
}
}
}
}
}
}
...
@@ -602,8 +676,9 @@ void SingleDuel::Surrender(DuelPlayer* dp) {
...
@@ -602,8 +676,9 @@ void SingleDuel::Surrender(DuelPlayer* dp) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
if
(
players
[
player
]
==
pplayer
[
player
])
{
if
(
players
[
player
]
==
pplayer
[
player
])
{
match_result
[
duel_count
++
]
=
1
-
player
;
match_result
[
duel_count
++
]
=
1
-
player
;
tp_player
=
player
;
tp_player
=
player
;
...
@@ -647,8 +722,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -647,8 +722,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
10
:
{
case
10
:
{
...
@@ -656,8 +732,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -656,8 +732,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
1
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
1
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
}
}
...
@@ -670,8 +747,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -670,8 +747,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
if
(
player
>
1
)
{
if
(
player
>
1
)
{
match_result
[
duel_count
++
]
=
2
;
match_result
[
duel_count
++
]
=
2
;
tp_player
=
1
-
tp_player
;
tp_player
=
1
-
tp_player
;
...
@@ -827,8 +905,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -827,8 +905,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CONFIRM_CARDS
:
{
case
MSG_CONFIRM_CARDS
:
{
...
@@ -840,8 +919,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -840,8 +919,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
-
player
]);
NetServer
::
ReSendToPlayer
(
players
[
1
-
player
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
}
else
{
}
else
{
pbuf
+=
count
*
7
;
pbuf
+=
count
*
7
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
@@ -854,21 +934,26 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -854,21 +934,26 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SHUFFLE_HAND
:
{
case
MSG_SHUFFLE_HAND
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
(
pbuf
-
offset
)
+
count
*
4
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
(
pbuf
-
offset
)
+
count
*
4
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
count
;
++
i
)
for
(
int
i
=
0
;
i
<
count
;
++
i
)
BufferIO
::
WriteInt32
(
pbuf
,
0
);
BufferIO
::
WriteInt32
(
pbuf
,
0
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
RefreshHand
(
player
,
0x781fff
,
0
);
RefreshHand
(
player
,
0x781fff
,
0
);
break
;
break
;
}
}
...
@@ -878,8 +963,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -878,8 +963,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SWAP_GRAVE_DECK
:
{
case
MSG_SWAP_GRAVE_DECK
:
{
...
@@ -888,8 +974,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -888,8 +974,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshGrave
(
player
);
RefreshGrave
(
player
);
break
;
break
;
}
}
...
@@ -898,8 +985,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -898,8 +985,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DECK_TOP
:
{
case
MSG_DECK_TOP
:
{
...
@@ -908,8 +996,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -908,8 +996,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SHUFFLE_SET_CARD
:
{
case
MSG_SHUFFLE_SET_CARD
:
{
...
@@ -919,8 +1008,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -919,8 +1008,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
break
;
break
;
...
@@ -939,8 +1029,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -939,8 +1029,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_NEW_PHASE
:
{
case
MSG_NEW_PHASE
:
{
...
@@ -949,8 +1040,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -949,8 +1040,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -976,8 +1068,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -976,8 +1068,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
cc
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
cc
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
if
(
cl
!=
0
&&
(
cl
&
0x80
)
==
0
&&
(
cl
!=
pl
||
pc
!=
cc
))
if
(
cl
!=
0
&&
(
cl
&
0x80
)
==
0
&&
(
cl
!=
pl
||
pc
!=
cc
))
RefreshSingle
(
cc
,
cl
,
cs
);
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
break
;
...
@@ -993,8 +1086,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -993,8 +1086,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
if
((
pp
&
POS_FACEDOWN
)
&&
(
cp
&
POS_FACEUP
))
if
((
pp
&
POS_FACEDOWN
)
&&
(
cp
&
POS_FACEUP
))
RefreshSingle
(
cc
,
cl
,
cs
);
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
break
;
...
@@ -1006,8 +1100,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1006,8 +1100,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SWAP
:
{
case
MSG_SWAP
:
{
...
@@ -1022,8 +1117,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1022,8 +1117,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshSingle
(
c1
,
l1
,
s1
);
RefreshSingle
(
c1
,
l1
,
s1
);
RefreshSingle
(
c2
,
l2
,
s2
);
RefreshSingle
(
c2
,
l2
,
s2
);
break
;
break
;
...
@@ -1034,8 +1130,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1034,8 +1130,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SUMMONING
:
{
case
MSG_SUMMONING
:
{
...
@@ -1044,8 +1141,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1044,8 +1141,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SUMMONED
:
{
case
MSG_SUMMONED
:
{
...
@@ -1053,8 +1151,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1053,8 +1151,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1067,8 +1166,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1067,8 +1166,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SPSUMMONED
:
{
case
MSG_SPSUMMONED
:
{
...
@@ -1076,8 +1176,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1076,8 +1176,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1091,8 +1192,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1091,8 +1192,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_FLIPSUMMONED
:
{
case
MSG_FLIPSUMMONED
:
{
...
@@ -1100,8 +1202,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1100,8 +1202,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1114,8 +1217,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1114,8 +1217,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CHAINED
:
{
case
MSG_CHAINED
:
{
...
@@ -1124,8 +1228,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1124,8 +1228,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1140,8 +1245,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1140,8 +1245,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CHAIN_SOLVED
:
{
case
MSG_CHAIN_SOLVED
:
{
...
@@ -1150,8 +1256,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1150,8 +1256,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1165,8 +1272,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1165,8 +1272,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1181,8 +1289,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1181,8 +1289,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CHAIN_DISABLED
:
{
case
MSG_CHAIN_DISABLED
:
{
...
@@ -1191,8 +1300,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1191,8 +1300,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CARD_SELECTED
:
{
case
MSG_CARD_SELECTED
:
{
...
@@ -1209,8 +1319,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1209,8 +1319,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_BECOME_TARGET
:
{
case
MSG_BECOME_TARGET
:
{
...
@@ -1220,8 +1331,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1220,8 +1331,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DRAW
:
{
case
MSG_DRAW
:
{
...
@@ -1230,8 +1342,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1230,8 +1342,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
pbufw
=
pbuf
;
pbufw
=
pbuf
;
pbuf
+=
count
*
4
;
pbuf
+=
count
*
4
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
if
(
!
(
pbufw
[
3
]
&
0x80
))
if
(
!
(
pbufw
[
3
]
&
0x80
))
BufferIO
::
WriteInt32
(
pbufw
,
0
);
BufferIO
::
WriteInt32
(
pbufw
,
0
);
...
@@ -1241,6 +1354,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1241,6 +1354,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DAMAGE
:
{
case
MSG_DAMAGE
:
{
...
@@ -1249,8 +1365,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1249,8 +1365,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_RECOVER
:
{
case
MSG_RECOVER
:
{
...
@@ -1259,8 +1376,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1259,8 +1376,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_EQUIP
:
{
case
MSG_EQUIP
:
{
...
@@ -1269,8 +1387,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1269,8 +1387,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_LPUPDATE
:
{
case
MSG_LPUPDATE
:
{
...
@@ -1279,8 +1398,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1279,8 +1398,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_UNEQUIP
:
{
case
MSG_UNEQUIP
:
{
...
@@ -1289,8 +1409,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1289,8 +1409,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CARD_TARGET
:
{
case
MSG_CARD_TARGET
:
{
...
@@ -1299,8 +1420,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1299,8 +1420,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CANCEL_TARGET
:
{
case
MSG_CANCEL_TARGET
:
{
...
@@ -1309,8 +1431,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1309,8 +1431,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_PAY_LPCOST
:
{
case
MSG_PAY_LPCOST
:
{
...
@@ -1319,8 +1442,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1319,8 +1442,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ADD_COUNTER
:
{
case
MSG_ADD_COUNTER
:
{
...
@@ -1329,8 +1453,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1329,8 +1453,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_REMOVE_COUNTER
:
{
case
MSG_REMOVE_COUNTER
:
{
...
@@ -1339,8 +1464,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1339,8 +1464,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ATTACK
:
{
case
MSG_ATTACK
:
{
...
@@ -1349,8 +1475,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1349,8 +1475,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_BATTLE
:
{
case
MSG_BATTLE
:
{
...
@@ -1359,8 +1486,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1359,8 +1486,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ATTACK_DISABLED
:
{
case
MSG_ATTACK_DISABLED
:
{
...
@@ -1368,8 +1496,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1368,8 +1496,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DAMAGE_STEP_START
:
{
case
MSG_DAMAGE_STEP_START
:
{
...
@@ -1377,8 +1506,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1377,8 +1506,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
break
;
break
;
...
@@ -1388,8 +1518,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1388,8 +1518,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
break
;
break
;
...
@@ -1408,8 +1539,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1408,8 +1539,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_TOSS_DICE
:
{
case
MSG_TOSS_DICE
:
{
...
@@ -1420,8 +1552,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1420,8 +1552,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ROCK_PAPER_SCISSORS
:
{
case
MSG_ROCK_PAPER_SCISSORS
:
{
...
@@ -1474,8 +1607,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1474,8 +1607,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_PLAYER_HINT
:
{
case
MSG_PLAYER_HINT
:
{
...
@@ -1494,8 +1628,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1494,8 +1628,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
}
}
break
;
break
;
}
}
...
@@ -1528,12 +1663,16 @@ void SingleDuel::EndDuel() {
...
@@ -1528,12 +1663,16 @@ void SingleDuel::EndDuel() {
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_REPLAY
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_REPLAY
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
if
(
ygo
::
replay_mode
==
0
)
{
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
{
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
NetServer
::
ReSendToPlayer
(
*
oit
);
}
}
#else
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
#endif //YGOPRO_SERVER_MODE
end_duel
(
pduel
);
end_duel
(
pduel
);
pduel
=
0
;
pduel
=
0
;
}
}
...
@@ -1569,8 +1708,9 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1569,8 +1708,9 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_MZONE
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_MZONE
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_MZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_MZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
if
(
clen
==
4
)
...
@@ -1582,6 +1722,9 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1582,6 +1722,9 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
void
SingleDuel
::
RefreshSzone
(
int
player
,
int
flag
,
int
use_cache
)
{
void
SingleDuel
::
RefreshSzone
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1591,8 +1734,9 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1591,8 +1734,9 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_SZONE
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_SZONE
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_SZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_SZONE
,
flag
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
if
(
clen
==
4
)
...
@@ -1604,6 +1748,9 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1604,6 +1748,9 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
void
SingleDuel
::
RefreshHand
(
int
player
,
int
flag
,
int
use_cache
)
{
void
SingleDuel
::
RefreshHand
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1613,8 +1760,9 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1613,8 +1760,9 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_HAND
,
flag
|
QUERY_IS_PUBLIC
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_HAND
,
flag
|
QUERY_IS_PUBLIC
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
int
qlen
=
0
,
slen
;
int
qlen
=
0
,
slen
;
while
(
qlen
<
len
)
{
while
(
qlen
<
len
)
{
slen
=
BufferIO
::
ReadInt32
(
qbuf
);
slen
=
BufferIO
::
ReadInt32
(
qbuf
);
...
@@ -1632,6 +1780,9 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1632,6 +1780,9 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
void
SingleDuel
::
RefreshGrave
(
int
player
,
int
flag
,
int
use_cache
)
{
void
SingleDuel
::
RefreshGrave
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1644,6 +1795,9 @@ void SingleDuel::RefreshGrave(int player, int flag, int use_cache) {
...
@@ -1644,6 +1795,9 @@ void SingleDuel::RefreshGrave(int player, int flag, int use_cache) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
}
}
void
SingleDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
void
SingleDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1669,8 +1823,9 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
...
@@ -1669,8 +1823,9 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
NetServer
::
ReSendToPlayer
(
players
[
1
-
player
]);
NetServer
::
ReSendToPlayer
(
players
[
1
-
player
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
}
}
}
}
int
SingleDuel
::
MessageHandler
(
long
fduel
,
int
type
)
{
int
SingleDuel
::
MessageHandler
(
long
fduel
,
int
type
)
{
...
@@ -1694,8 +1849,9 @@ void SingleDuel::SingleTimer(evutil_socket_t fd, short events, void* arg) {
...
@@ -1694,8 +1849,9 @@ void SingleDuel::SingleTimer(evutil_socket_t fd, short events, void* arg) {
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
for
(
auto
oit
=
sd
->
observers
.
begin
();
oit
!=
sd
->
observers
.
end
();
++
oit
)
for
(
auto
oit
=
sd
->
observers
.
begin
();
oit
!=
sd
->
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
sd
->
recorders
.
begin
();
oit
!=
sd
->
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
sd
->
cache_recorder
,
sd
->
replay_recorder
);
#endif
if
(
sd
->
players
[
player
]
==
sd
->
pplayer
[
player
])
{
if
(
sd
->
players
[
player
]
==
sd
->
pplayer
[
player
])
{
sd
->
match_result
[
sd
->
duel_count
++
]
=
1
-
player
;
sd
->
match_result
[
sd
->
duel_count
++
]
=
1
-
player
;
sd
->
tp_player
=
player
;
sd
->
tp_player
=
player
;
...
...
gframe/single_duel.h
View file @
77cea9dd
...
@@ -50,8 +50,9 @@ protected:
...
@@ -50,8 +50,9 @@ protected:
unsigned
char
last_response
;
unsigned
char
last_response
;
std
::
set
<
DuelPlayer
*>
observers
;
std
::
set
<
DuelPlayer
*>
observers
;
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
std
::
set
<
DuelPlayer
*>
recorders
;
DuelPlayer
*
cache_recorder
;
#endif //YGOPRO_SERVER_MODE
DuelPlayer
*
replay_recorder
;
#endif
Replay
last_replay
;
Replay
last_replay
;
bool
match_mode
;
bool
match_mode
;
int
match_kill
;
int
match_kill
;
...
...
gframe/tag_duel.cpp
View file @
77cea9dd
...
@@ -9,14 +9,19 @@
...
@@ -9,14 +9,19 @@
namespace
ygo
{
namespace
ygo
{
#ifdef YGOPRO_SERVER_MODE
extern
unsigned
short
replay_mode
;
extern
unsigned
short
replay_mode
;
#endif
TagDuel
::
TagDuel
()
{
TagDuel
::
TagDuel
()
{
game_started
=
false
;
game_started
=
false
;
for
(
int
i
=
0
;
i
<
4
;
++
i
)
{
for
(
int
i
=
0
;
i
<
4
;
++
i
)
{
players
[
i
]
=
0
;
players
[
i
]
=
0
;
ready
[
i
]
=
false
;
ready
[
i
]
=
false
;
}
}
#ifdef YGOPRO_SERVER_MODE
cache_recorder
=
0
;
replay_recorder
=
0
;
#endif
}
}
TagDuel
::~
TagDuel
()
{
TagDuel
::~
TagDuel
()
{
}
}
...
@@ -30,6 +35,9 @@ void TagDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
...
@@ -30,6 +35,9 @@ void TagDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
}
}
void
TagDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
void
TagDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
#ifdef YGOPRO_SERVER_MODE
bool
is_recorder
=
false
;
#endif
if
(
!
is_creater
)
{
if
(
!
is_creater
)
{
if
(
dp
->
game
&&
dp
->
type
!=
0xff
)
{
if
(
dp
->
game
&&
dp
->
type
!=
0xff
)
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
...
@@ -48,11 +56,18 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -48,11 +56,18 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
return
;
return
;
}
}
#ifdef YGOPRO_SERVER_MODE
#else
wchar_t
jpass
[
20
];
wchar_t
jpass
[
20
];
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
#ifdef YGOPRO_SERVER_MODE
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
is_recorder
=
true
;
cache_recorder
=
dp
;
}
if
(
!
wcscmp
(
jpass
,
L"Marshtomp"
)
&&
!
replay_recorder
)
{
is_recorder
=
true
;
replay_recorder
=
dp
;
}
#else
if
(
wcscmp
(
jpass
,
pass
))
{
if
(
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
msg
=
ERRMSG_JOINERROR
;
...
@@ -69,6 +84,13 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -69,6 +84,13 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
scjg
.
info
=
host_info
;
scjg
.
info
=
host_info
;
STOC_TypeChange
sctc
;
STOC_TypeChange
sctc
;
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
sctc
.
type
=
(
host_player
==
dp
)
?
0x10
:
0
;
#ifdef YGOPRO_SERVER_MODE
if
(
is_recorder
)
{
dp
->
type
=
9
;
sctc
.
type
=
NETPLAYER_TYPE_OBSERVER
;
}
else
#endif //YGOPRO_SERVER_MODE
if
(
!
players
[
0
]
||
!
players
[
1
]
||
!
players
[
2
]
||
!
players
[
3
])
{
if
(
!
players
[
0
]
||
!
players
[
1
]
||
!
players
[
2
]
||
!
players
[
3
])
{
STOC_HS_PlayerEnter
scpe
;
STOC_HS_PlayerEnter
scpe
;
BufferIO
::
CopyWStr
(
dp
->
name
,
scpe
.
name
,
20
);
BufferIO
::
CopyWStr
(
dp
->
name
,
scpe
.
name
,
20
);
...
@@ -85,8 +107,12 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -85,8 +107,12 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_ENTER
,
scpe
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
#endif
players
[
scpe
.
pos
]
=
dp
;
players
[
scpe
.
pos
]
=
dp
;
dp
->
type
=
scpe
.
pos
;
dp
->
type
=
scpe
.
pos
;
sctc
.
type
|=
scpe
.
pos
;
sctc
.
type
|=
scpe
.
pos
;
...
@@ -101,8 +127,12 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -101,8 +127,12 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
#endif
}
}
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_JOIN_GAME
,
scjg
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_JOIN_GAME
,
scjg
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
@@ -126,6 +156,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -126,6 +156,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
}
}
void
TagDuel
::
LeaveGame
(
DuelPlayer
*
dp
)
{
void
TagDuel
::
LeaveGame
(
DuelPlayer
*
dp
)
{
if
(
dp
==
host_player
)
{
if
(
dp
==
host_player
)
{
#ifdef YGOPRO_SERVER_MODE
int
host_pos
;
int
host_pos
;
if
(
players
[
0
]
&&
dp
->
type
!=
0
)
{
if
(
players
[
0
]
&&
dp
->
type
!=
0
)
{
host_pos
=
0
;
host_pos
=
0
;
...
@@ -150,6 +181,11 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -150,6 +181,11 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
host_pos
],
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
players
[
host_pos
],
STOC_TYPE_CHANGE
,
sctc
);
}
}
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
#else
EndDuel
();
NetServer
::
StopServer
();
}
else
if
(
dp
->
type
==
NETPLAYER_TYPE_OBSERVER
)
{
#endif //YGOPRO_SERVER_MODE
observers
.
erase
(
dp
);
observers
.
erase
(
dp
);
if
(
!
game_started
)
{
if
(
!
game_started
)
{
STOC_HS_WatchChange
scwc
;
STOC_HS_WatchChange
scwc
;
...
@@ -159,8 +195,12 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -159,8 +195,12 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
#endif
}
}
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
}
else
{
...
@@ -174,8 +214,12 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -174,8 +214,12 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
#endif
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
}
else
{
EndDuel
();
EndDuel
();
...
@@ -211,10 +255,16 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
...
@@ -211,10 +255,16 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
}
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
{
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
cache_recorder
)
{
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
if
(
replay_recorder
)
{
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
}
#endif
STOC_TypeChange
sctc
;
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
@@ -231,8 +281,12 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
...
@@ -231,8 +281,12 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
#endif
STOC_TypeChange
sctc
;
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dptype
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dptype
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
@@ -251,15 +305,16 @@ void TagDuel::ToObserver(DuelPlayer* dp) {
...
@@ -251,15 +305,16 @@ void TagDuel::ToObserver(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
#endif
players
[
dp
->
type
]
=
0
;
players
[
dp
->
type
]
=
0
;
ready
[
dp
->
type
]
=
false
;
ready
[
dp
->
type
]
=
false
;
dp
->
type
=
NETPLAYER_TYPE_OBSERVER
;
dp
->
type
=
NETPLAYER_TYPE_OBSERVER
;
if
(
recorders
.
size
()
==
0
&&
dp
->
name
[
0
]
==
77
)
observers
.
insert
(
dp
);
recorders
.
insert
(
dp
);
else
observers
.
insert
(
dp
);
STOC_TypeChange
sctc
;
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
@@ -290,8 +345,12 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
...
@@ -290,8 +345,12 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
cache_recorder
)
NetServer
::
SendPacketToPlayer
(
cache_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
replay_recorder
)
NetServer
::
SendPacketToPlayer
(
replay_recorder
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
#endif
}
}
void
TagDuel
::
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{
void
TagDuel
::
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{
if
(
pos
>
3
||
dp
!=
host_player
||
dp
==
players
[
pos
]
||
!
players
[
pos
])
if
(
pos
>
3
||
dp
!=
host_player
||
dp
==
players
[
pos
]
||
!
players
[
pos
])
...
@@ -320,10 +379,13 @@ void TagDuel::StartDuel(DuelPlayer* dp) {
...
@@ -320,10 +379,13 @@ void TagDuel::StartDuel(DuelPlayer* dp) {
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
}
}
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
{
#ifdef YGOPRO_SERVER_MODE
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
if
(
cache_recorder
)
NetServer
::
ReSendToPlayer
(
*
oit
);
cache_recorder
->
state
=
CTOS_LEAVE_GAME
;
}
if
(
replay_recorder
)
replay_recorder
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
hand_result
[
0
]
=
0
;
hand_result
[
0
]
=
0
;
...
@@ -346,8 +408,9 @@ void TagDuel::HandResult(DuelPlayer* dp, unsigned char res) {
...
@@ -346,8 +408,9 @@ void TagDuel::HandResult(DuelPlayer* dp, unsigned char res) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
schr
.
res1
=
hand_result
[
1
];
schr
.
res1
=
hand_result
[
1
];
schr
.
res2
=
hand_result
[
0
];
schr
.
res2
=
hand_result
[
0
];
NetServer
::
SendPacketToPlayer
(
players
[
2
],
STOC_HAND_RESULT
,
schr
);
NetServer
::
SendPacketToPlayer
(
players
[
2
],
STOC_HAND_RESULT
,
schr
);
...
@@ -509,8 +572,12 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -509,8 +572,12 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
else
startbuf
[
1
]
=
0x11
;
else
startbuf
[
1
]
=
0x11
;
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
if
(
cache_recorder
)
NetServer
::
SendBufferToPlayer
(
cache_recorder
,
STOC_GAME_MSG
,
startbuf
,
18
);
if
(
replay_recorder
)
NetServer
::
SendBufferToPlayer
(
replay_recorder
,
STOC_GAME_MSG
,
startbuf
,
18
);
#endif
RefreshExtra
(
0
);
RefreshExtra
(
0
);
RefreshExtra
(
1
);
RefreshExtra
(
1
);
start_duel
(
pduel
,
opt
);
start_duel
(
pduel
,
opt
);
...
@@ -541,8 +608,9 @@ void TagDuel::DuelEndProc() {
...
@@ -541,8 +608,9 @@ void TagDuel::DuelEndProc() {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
NetServer
::
StopServer
();
NetServer
::
StopServer
();
}
}
void
TagDuel
::
Surrender
(
DuelPlayer
*
dp
)
{
void
TagDuel
::
Surrender
(
DuelPlayer
*
dp
)
{
...
@@ -583,8 +651,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -583,8 +651,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
}
}
...
@@ -599,8 +668,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -599,8 +668,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
EndDuel
();
EndDuel
();
return
2
;
return
2
;
}
}
...
@@ -748,8 +818,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -748,8 +818,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CONFIRM_CARDS
:
{
case
MSG_CONFIRM_CARDS
:
{
...
@@ -763,8 +834,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -763,8 +834,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
}
else
{
}
else
{
pbuf
+=
count
*
7
;
pbuf
+=
count
*
7
;
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
@@ -779,16 +851,18 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -779,16 +851,18 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SHUFFLE_HAND
:
{
case
MSG_SHUFFLE_HAND
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
(
pbuf
-
offset
)
+
count
*
4
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
(
pbuf
-
offset
)
+
count
*
4
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
count
;
++
i
)
for
(
int
i
=
0
;
i
<
count
;
++
i
)
BufferIO
::
WriteInt32
(
pbuf
,
0
);
BufferIO
::
WriteInt32
(
pbuf
,
0
);
for
(
int
i
=
0
;
i
<
4
;
++
i
)
for
(
int
i
=
0
;
i
<
4
;
++
i
)
...
@@ -807,8 +881,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -807,8 +881,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SWAP_GRAVE_DECK
:
{
case
MSG_SWAP_GRAVE_DECK
:
{
...
@@ -819,8 +894,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -819,8 +894,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshGrave
(
player
);
RefreshGrave
(
player
);
break
;
break
;
}
}
...
@@ -831,8 +907,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -831,8 +907,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DECK_TOP
:
{
case
MSG_DECK_TOP
:
{
...
@@ -843,8 +920,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -843,8 +920,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SHUFFLE_SET_CARD
:
{
case
MSG_SHUFFLE_SET_CARD
:
{
...
@@ -856,8 +934,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -856,8 +934,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
break
;
break
;
...
@@ -872,8 +951,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -872,8 +951,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
if
(
turn_count
>
0
)
{
if
(
turn_count
>
0
)
{
if
(
turn_count
%
2
==
0
)
{
if
(
turn_count
%
2
==
0
)
{
if
(
cur_player
[
0
]
==
players
[
0
])
if
(
cur_player
[
0
]
==
players
[
0
])
...
@@ -898,8 +978,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -898,8 +978,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -927,8 +1008,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -927,8 +1008,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
if
(
cl
!=
0
&&
(
cl
&
0x80
)
==
0
&&
(
cl
!=
pl
||
pc
!=
cc
))
if
(
cl
!=
0
&&
(
cl
&
0x80
)
==
0
&&
(
cl
!=
pl
||
pc
!=
cc
))
RefreshSingle
(
cc
,
cl
,
cs
);
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
break
;
...
@@ -946,8 +1028,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -946,8 +1028,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
if
((
pp
&
POS_FACEDOWN
)
&&
(
cp
&
POS_FACEUP
))
if
((
pp
&
POS_FACEDOWN
)
&&
(
cp
&
POS_FACEUP
))
RefreshSingle
(
cc
,
cl
,
cs
);
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
break
;
...
@@ -961,8 +1044,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -961,8 +1044,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SWAP
:
{
case
MSG_SWAP
:
{
...
@@ -979,8 +1063,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -979,8 +1063,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshSingle
(
c1
,
l1
,
s1
);
RefreshSingle
(
c1
,
l1
,
s1
);
RefreshSingle
(
c2
,
l2
,
s2
);
RefreshSingle
(
c2
,
l2
,
s2
);
break
;
break
;
...
@@ -993,8 +1078,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -993,8 +1078,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SUMMONING
:
{
case
MSG_SUMMONING
:
{
...
@@ -1005,8 +1091,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1005,8 +1091,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SUMMONED
:
{
case
MSG_SUMMONED
:
{
...
@@ -1016,8 +1103,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1016,8 +1103,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1032,8 +1120,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1032,8 +1120,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_SPSUMMONED
:
{
case
MSG_SPSUMMONED
:
{
...
@@ -1043,8 +1132,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1043,8 +1132,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1060,8 +1150,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1060,8 +1150,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_FLIPSUMMONED
:
{
case
MSG_FLIPSUMMONED
:
{
...
@@ -1071,8 +1162,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1071,8 +1162,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1087,8 +1179,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1087,8 +1179,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CHAINED
:
{
case
MSG_CHAINED
:
{
...
@@ -1099,8 +1192,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1099,8 +1192,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1117,8 +1211,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1117,8 +1211,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CHAIN_SOLVED
:
{
case
MSG_CHAIN_SOLVED
:
{
...
@@ -1129,8 +1224,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1129,8 +1224,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1146,8 +1242,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1146,8 +1242,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
RefreshSzone
(
0
);
...
@@ -1164,8 +1261,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1164,8 +1261,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CHAIN_DISABLED
:
{
case
MSG_CHAIN_DISABLED
:
{
...
@@ -1176,8 +1274,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1176,8 +1274,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CARD_SELECTED
:
{
case
MSG_CARD_SELECTED
:
{
...
@@ -1196,8 +1295,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1196,8 +1295,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_BECOME_TARGET
:
{
case
MSG_BECOME_TARGET
:
{
...
@@ -1209,8 +1309,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1209,8 +1309,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DRAW
:
{
case
MSG_DRAW
:
{
...
@@ -1219,8 +1320,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1219,8 +1320,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
pbufw
=
pbuf
;
pbufw
=
pbuf
;
pbuf
+=
count
*
4
;
pbuf
+=
count
*
4
;
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
if
(
!
(
pbufw
[
3
]
&
0x80
))
if
(
!
(
pbufw
[
3
]
&
0x80
))
BufferIO
::
WriteInt32
(
pbufw
,
0
);
BufferIO
::
WriteInt32
(
pbufw
,
0
);
...
@@ -1232,6 +1334,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1232,6 +1334,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DAMAGE
:
{
case
MSG_DAMAGE
:
{
...
@@ -1242,8 +1347,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1242,8 +1347,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_RECOVER
:
{
case
MSG_RECOVER
:
{
...
@@ -1254,8 +1360,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1254,8 +1360,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_EQUIP
:
{
case
MSG_EQUIP
:
{
...
@@ -1266,8 +1373,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1266,8 +1373,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_LPUPDATE
:
{
case
MSG_LPUPDATE
:
{
...
@@ -1278,8 +1386,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1278,8 +1386,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_UNEQUIP
:
{
case
MSG_UNEQUIP
:
{
...
@@ -1290,8 +1399,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1290,8 +1399,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CARD_TARGET
:
{
case
MSG_CARD_TARGET
:
{
...
@@ -1302,8 +1412,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1302,8 +1412,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_CANCEL_TARGET
:
{
case
MSG_CANCEL_TARGET
:
{
...
@@ -1314,8 +1425,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1314,8 +1425,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_PAY_LPCOST
:
{
case
MSG_PAY_LPCOST
:
{
...
@@ -1326,8 +1438,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1326,8 +1438,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ADD_COUNTER
:
{
case
MSG_ADD_COUNTER
:
{
...
@@ -1338,8 +1451,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1338,8 +1451,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_REMOVE_COUNTER
:
{
case
MSG_REMOVE_COUNTER
:
{
...
@@ -1350,8 +1464,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1350,8 +1464,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ATTACK
:
{
case
MSG_ATTACK
:
{
...
@@ -1362,8 +1477,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1362,8 +1477,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_BATTLE
:
{
case
MSG_BATTLE
:
{
...
@@ -1374,8 +1490,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1374,8 +1490,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ATTACK_DISABLED
:
{
case
MSG_ATTACK_DISABLED
:
{
...
@@ -1385,8 +1502,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1385,8 +1502,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_DAMAGE_STEP_START
:
{
case
MSG_DAMAGE_STEP_START
:
{
...
@@ -1396,8 +1514,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1396,8 +1514,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
break
;
break
;
...
@@ -1409,8 +1528,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1409,8 +1528,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshMzone
(
0
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshMzone
(
1
);
break
;
break
;
...
@@ -1431,8 +1551,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1431,8 +1551,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_TOSS_DICE
:
{
case
MSG_TOSS_DICE
:
{
...
@@ -1445,8 +1566,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1445,8 +1566,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_ROCK_PAPER_SCISSORS
:
{
case
MSG_ROCK_PAPER_SCISSORS
:
{
...
@@ -1503,8 +1625,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1503,8 +1625,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
break
;
break
;
}
}
case
MSG_PLAYER_HINT
:
{
case
MSG_PLAYER_HINT
:
{
...
@@ -1543,8 +1666,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1543,8 +1666,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
RefreshExtra
(
player
);
RefreshExtra
(
player
);
RefreshMzone
(
0
,
0x81fff
,
0
);
RefreshMzone
(
0
,
0x81fff
,
0
);
RefreshMzone
(
1
,
0x81fff
,
0
);
RefreshMzone
(
1
,
0x81fff
,
0
);
...
@@ -1590,12 +1714,16 @@ void TagDuel::EndDuel() {
...
@@ -1590,12 +1714,16 @@ void TagDuel::EndDuel() {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
#ifdef YGOPRO_SERVER_MODE
if
(
ygo
::
replay_mode
==
0
)
{
if
(
ygo
::
replay_mode
==
0
)
{
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
NetServer
::
ReSendToPlayer
(
*
oit
);
}
}
#else
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
#endif
end_duel
(
pduel
);
end_duel
(
pduel
);
pduel
=
0
;
pduel
=
0
;
}
}
...
@@ -1637,8 +1765,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1637,8 +1765,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
int
pid
=
(
player
==
0
)
?
0
:
2
;
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
if
(
clen
==
4
)
...
@@ -1652,6 +1781,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
...
@@ -1652,6 +1781,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
void
TagDuel
::
RefreshSzone
(
int
player
,
int
flag
,
int
use_cache
)
{
void
TagDuel
::
RefreshSzone
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1663,8 +1795,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1663,8 +1795,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
int
pid
=
(
player
==
0
)
?
0
:
2
;
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
if
(
clen
==
4
)
...
@@ -1678,6 +1811,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
...
@@ -1678,6 +1811,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
void
TagDuel
::
RefreshHand
(
int
player
,
int
flag
,
int
use_cache
)
{
void
TagDuel
::
RefreshHand
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1687,8 +1823,9 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1687,8 +1823,9 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_HAND
,
flag
|
QUERY_IS_PUBLIC
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
int
len
=
query_field_card
(
pduel
,
player
,
LOCATION_HAND
,
flag
|
QUERY_IS_PUBLIC
,
(
unsigned
char
*
)
qbuf
,
use_cache
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
int
qlen
=
0
,
slen
;
int
qlen
=
0
,
slen
;
while
(
qlen
<
len
)
{
while
(
qlen
<
len
)
{
slen
=
BufferIO
::
ReadInt32
(
qbuf
);
slen
=
BufferIO
::
ReadInt32
(
qbuf
);
...
@@ -1708,6 +1845,9 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
...
@@ -1708,6 +1845,9 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
void
TagDuel
::
RefreshGrave
(
int
player
,
int
flag
,
int
use_cache
)
{
void
TagDuel
::
RefreshGrave
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1722,8 +1862,9 @@ void TagDuel::RefreshGrave(int player, int flag, int use_cache) {
...
@@ -1722,8 +1862,9 @@ void TagDuel::RefreshGrave(int player, int flag, int use_cache) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayers
(
cache_recorder
,
replay_recorder
);
#endif
}
}
void
TagDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
void
TagDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
char
query_buffer
[
0x2000
];
...
@@ -1746,21 +1887,26 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
...
@@ -1746,21 +1887,26 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
int
pid
=
(
player
==
0
)
?
0
:
2
;
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
if
(
qbuf
[
15
]
&
POS_FACEUP
)
{
if
(
qbuf
[
15
]
&
POS_FACEUP
)
{
pid
=
2
-
pid
;
pid
=
2
-
pid
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
}
else
{
}
else
{
int
pid
=
(
player
==
0
)
?
0
:
2
;
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
replay_recorder
);
#endif
if
(
location
==
LOCATION_REMOVED
&&
(
qbuf
[
15
]
&
POS_FACEDOWN
))
if
(
location
==
LOCATION_REMOVED
&&
(
qbuf
[
15
]
&
POS_FACEDOWN
))
return
;
return
;
if
(
location
&
0x90
)
{
if
(
location
&
0x90
)
{
...
@@ -1769,6 +1915,9 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
...
@@ -1769,6 +1915,9 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
NetServer
::
ReSendToPlayer
(
players
[
i
]);
NetServer
::
ReSendToPlayer
(
players
[
i
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
NetServer
::
ReSendToPlayer
(
*
pit
);
#ifdef YGOPRO_SERVER_MODE
NetServer
::
ReSendToPlayer
(
cache_recorder
);
#endif
}
}
}
}
}
}
...
...
gframe/tag_duel.h
View file @
77cea9dd
...
@@ -47,8 +47,9 @@ protected:
...
@@ -47,8 +47,9 @@ protected:
DuelPlayer
*
cur_player
[
2
];
DuelPlayer
*
cur_player
[
2
];
std
::
set
<
DuelPlayer
*>
observers
;
std
::
set
<
DuelPlayer
*>
observers
;
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
std
::
set
<
DuelPlayer
*>
recorders
;
DuelPlayer
*
cache_recorder
;
#endif //YGOPRO_SERVER_MODE
DuelPlayer
*
replay_recorder
;
#endif
bool
ready
[
4
];
bool
ready
[
4
];
Deck
pdeck
[
4
];
Deck
pdeck
[
4
];
unsigned
char
hand_result
[
2
];
unsigned
char
hand_result
[
2
];
...
...
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