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
wyykak
ygopro
Commits
09ded696
Commit
09ded696
authored
Dec 12, 2016
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge
parent
c6c9201d
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
548 additions
and
87 deletions
+548
-87
.gitignore
.gitignore
+10
-0
.gitmodules
.gitmodules
+2
-2
README.md
README.md
+7
-4
appveyor.yml
appveyor.yml
+39
-0
cards.cdb
cards.cdb
+0
-0
gframe/game.cpp
gframe/game.cpp
+8
-0
gframe/game.h
gframe/game.h
+4
-3
gframe/gframe.cpp
gframe/gframe.cpp
+4
-1
gframe/network.h
gframe/network.h
+1
-0
gframe/premake4.lua
gframe/premake4.lua
+5
-2
gframe/replay.cpp
gframe/replay.cpp
+66
-45
gframe/single_duel.cpp
gframe/single_duel.cpp
+173
-14
gframe/single_duel.h
gframe/single_duel.h
+1
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+160
-14
gframe/tag_duel.h
gframe/tag_duel.h
+1
-0
ocgcore
ocgcore
+1
-1
premake5.lua
premake5.lua
+65
-0
script
script
+1
-1
No files found.
.gitignore
View file @
09ded696
/expansions
/specials
/obj
/bin
/build
/event
/lua
/sqlite3
/replay
/deck
/.vscode
/gframe/ygopro.ico
/gframe/ygopro.rc
/gframe/ygopro.aps
/gframe/dirent.h
ygopro
premake5.exe
.gitmodules
View file @
09ded696
[submodule "ocgcore"]
path = ocgcore
url = https://github.com/
Fluorohydride/ygopro-core.git
url = https://github.com/
mycard/ygopro-core
[submodule "script"]
path = script
url = https://github.com/
Fluorohydride/ygopro-scripts.git
url = https://github.com/
mycard/ygopro-scripts
README.md
View file @
09ded696
## ygopro(server)
一个linux版的ygopro服务端。
一个linux版的ygopro服务端,基于mycard代码修改。
现用于
[
YGOPRO 233服
](
http://mercury233.me/ygosrv233/
)
。
###编译
*
需要以下组件
*
需要以下组件或工具
*
gcc
*
premake4
*
libevent
*
sqlite3
*
lua5.2
*
gcc
*
可参考 https://github.com/mercury233/ygopro-server/wiki 中的脚本
###运行
*
使用
[
ygopro-server-lite
](
https://github.com/mercury233/ygopro-server
)
运行
*
手动运行的参数是
*
./ygopro 0 0 0 1 F F F 8000 5 1 180
*
./ygopro 0 0 0 1 F F F 8000 5 1 180
0
*
端口(0为随机)
*
禁卡表编号
*
卡片允许
...
...
@@ -25,3 +27,4 @@
*
初始手牌数
*
每回合抽卡
*
每回合时间
*
录像保存模式
appveyor.yml
0 → 100644
View file @
09ded696
version
:
'
{build}'
install
:
-
git submodule update --init --recursive
# environment and system dependency
-
appveyor DownloadFile https://github.com/premake/premake-core/releases/download/v5.0.0-alpha10/premake-5.0.0-alpha10-windows.zip
-
7z x premake-5.0.0-alpha10-windows.zip
-
appveyor DownloadFile https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
-
tar xf libevent-2.0.22-stable.tar.gz
-
move libevent-2.0.22-stable event
-
xcopy /E event\WIN32-Code event\include
-
appveyor DownloadFile https://www.lua.org/ftp/lua-5.2.4.tar.gz
-
tar xf lua-5.2.4.tar.gz
-
move lua-5.2.4\src lua
-
appveyor DownloadFile https://www.sqlite.org/2016/sqlite-amalgamation-3150200.zip
-
7z x sqlite-amalgamation-3150200.zip
-
move sqlite-amalgamation-3150200 sqlite3
-
appveyor DownloadFile https://github.com/tronkko/dirent/raw/master/include/dirent.h
-
move dirent.h gframe\
# let premake happy
-
xcopy /E premake\* .
# premake
-
premake5 vs2015
configuration
:
Release
build
:
project
:
build/ygo.sln
parallel
:
true
after_build
:
-
ps
:
move bin\release\ygopro.exe .
artifacts
:
-
path
:
ygopro.exe
name
:
ygopro(server)
cards.cdb
View file @
09ded696
No preview for this file type
gframe/game.cpp
View file @
09ded696
...
...
@@ -9,6 +9,11 @@
#include "netserver.h"
//#include "single_mode.h"
#ifdef _WIN32
#define strcasecmp _stricmp
#include "dirent.h"
#endif // _WIN32
#ifndef _WIN32
#include <sys/types.h>
#include <dirent.h>
...
...
@@ -30,6 +35,7 @@ bool no_check_deck;
bool
no_shuffle_deck
;
unsigned
int
start_lp
;
unsigned
short
time_limit
;
unsigned
short
replay_mode
;
unsigned
char
start_hand
;
unsigned
char
draw_count
;
...
...
@@ -1204,6 +1210,7 @@ int Game::LocalPlayer(int player) {
const
wchar_t
*
Game
::
LocalName
(
int
local_player
)
{
return
local_player
==
0
?
dInfo
.
hostname
:
dInfo
.
clientname
;
}
/*
void Game::SetWindowsIcon() {
#ifdef _WIN32
HINSTANCE hInstance = (HINSTANCE)GetModuleHandleW(NULL);
...
...
@@ -1224,5 +1231,6 @@ void Game::FlashWindow() {
FlashWindowEx(&fi);
#endif
}
*/
}
gframe/game.h
View file @
09ded696
...
...
@@ -116,10 +116,10 @@ public:
//irr::gui::IGUIElement* focus = env->getFocus();
return focus && focus->hasType(type);
}
void SetWindowsIcon();
void SetWindowsIcon();
void FlashWindow();
*/
*/
Mutex
gMutex
;
Mutex
gBuffer
;
...
...
@@ -423,6 +423,7 @@ extern bool no_check_deck;
extern
bool
no_shuffle_deck
;
extern
unsigned
int
start_lp
;
extern
unsigned
short
time_limit
;
extern
unsigned
short
replay_mode
;
extern
unsigned
char
start_hand
;
extern
unsigned
char
draw_count
;
...
...
gframe/gframe.cpp
View file @
09ded696
...
...
@@ -3,7 +3,7 @@
#include "data_manager.h"
#include <event2/thread.h>
int
enable_log
=
0
;
int
enable_log
=
1
;
bool
exit_on_return
=
false
;
bool
runasserver
=
true
;
...
...
@@ -23,6 +23,7 @@ int main(int argc, char* argv[]) {
ygo
::
aServerPort
=
atoi
(
argv
[
1
]);
ygo
::
lflist
=
atoi
(
argv
[
2
]);
ygo
::
start_hand
=
0
;
ygo
::
replay_mode
=
0
;
if
(
argc
>
2
)
{
ygo
::
rule
=
atoi
(
argv
[
3
]);
ygo
::
mode
=
atoi
(
argv
[
4
]);
...
...
@@ -42,6 +43,8 @@ int main(int argc, char* argv[]) {
ygo
::
start_hand
=
atoi
(
argv
[
9
]);
ygo
::
draw_count
=
atoi
(
argv
[
10
]);
ygo
::
time_limit
=
atoi
(
argv
[
11
]);
if
(
argc
>
12
)
ygo
::
replay_mode
=
atoi
(
argv
[
12
]);
}
ygo
::
mainGame
=
&
_game
;
ygo
::
mainGame
->
MainServerLoop
(
ygo
::
mode
,
ygo
::
lflist
);
...
...
gframe/network.h
View file @
09ded696
...
...
@@ -22,6 +22,7 @@ struct HostInfo {
unsigned
char
start_hand
;
unsigned
char
draw_count
;
unsigned
short
time_limit
;
unsigned
short
replay_mode
;
};
struct
HostPacket
{
unsigned
short
identifier
;
...
...
gframe/premake4.lua
View file @
09ded696
...
...
@@ -12,13 +12,16 @@ project "ygopro"
"single_duel.cpp"
,
"single_duel.h"
,
"tag_duel.cpp"
,
"tag_duel.h"
,
"**.cc"
,
"**.c"
}
excludes
"lzma/**"
includedirs
{
"../ocgcore"
}
links
{
"ocgcore"
,
"clzma"
,
"sqlite3"
,
"lua"
,
"event"
}
configuration
"windows"
files
"ygopro.rc"
includedirs
{
"../event/include"
,
"../sqlite3"
}
links
{
"ws2_32"
}
configuration
"not vs*"
buildoptions
{
"-std=gnu++0x"
,
"-fno-rtti"
}
configuration
"not windows"
includedirs
{
"/usr/include/lua"
,
"/usr/include/lua5.2"
,
"/usr/include/lua/5.2"
}
excludes
{
"COSOperator.*"
}
links
{
"event_pthreads"
,
"dl"
,
"pthread"
}
gframe/replay.cpp
View file @
09ded696
...
...
@@ -8,6 +8,7 @@
namespace
ygo
{
extern
unsigned
short
aServerPort
;
extern
unsigned
short
replay_mode
;
Replay
::
Replay
()
{
is_recording
=
false
;
...
...
@@ -42,115 +43,135 @@ std::wstring SA2W(std::string& strA)
void
Replay
::
BeginRecord
()
{
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
if
(
is_recording
)
CloseHandle
(
recording_fp
);
std
::
stringstream
ss
;
ss
<<
ygo
::
aServerPort
;
std
::
string
ssss
;
ssss
=
ss
.
str
();
if
(
is_recording
)
CloseHandle
(
recording_fp
);
std
::
stringstream
ss
;
ss
<<
ygo
::
aServerPort
;
std
::
string
ssss
;
ssss
=
ss
.
str
();
std
::
wstring
comPrefix
=
L"./replay/"
;
std
::
wstring
comPrefix
=
L"./replay/"
;
std
::
wstring
comID
=
comPrefix
+
SA2W
(
ssss
)
+
L"Replay.yrp"
;
std
::
wstring
comID
=
comPrefix
+
SA2W
(
ssss
)
+
L"Replay.yrp"
;
recording_fp
=
CreateFileW
(
comID
.
c_str
(),
GENERIC_WRITE
,
0
,
NULL
,
CREATE_ALWAYS
,
FILE_FLAG_WRITE_THROUGH
,
NULL
);
if
(
recording_fp
==
INVALID_HANDLE_VALUE
)
return
;
recording_fp
=
CreateFileW
(
comID
.
c_str
(),
GENERIC_WRITE
,
0
,
NULL
,
CREATE_ALWAYS
,
FILE_FLAG_WRITE_THROUGH
,
NULL
);
if
(
recording_fp
==
INVALID_HANDLE_VALUE
)
return
;
#else
if
(
is_recording
)
fclose
(
fp
);
char
path
[
20
];
sprintf
(
path
,
"./replay/%u.yrp"
,
ygo
::
aServerPort
);
fp
=
fopen
(
path
,
"wb"
);
if
(
!
fp
)
return
;
if
(
is_recording
)
fclose
(
fp
);
time_t
nowtime
=
time
(
NULL
);
struct
tm
*
localedtime
=
localtime
(
&
nowtime
);
char
tmppath
[
40
];
strftime
(
tmppath
,
40
,
"./replay/%Y-%m-%d %H-%M-%S %%u.yrp"
,
localedtime
);
char
path
[
40
];
sprintf
(
path
,
tmppath
,
ygo
::
aServerPort
);
fp
=
fopen
(
path
,
"wb"
);
if
(
!
fp
)
return
;
#endif
}
pdata
=
replay_data
;
is_recording
=
true
;
}
void
Replay
::
WriteHeader
(
ReplayHeader
&
header
)
{
pheader
=
header
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
&
header
,
sizeof
(
header
),
&
size
,
NULL
);
DWORD
size
;
WriteFile
(
recording_fp
,
&
header
,
sizeof
(
header
),
&
size
,
NULL
);
#else
fwrite
(
&
header
,
sizeof
(
header
),
1
,
fp
);
fflush
(
fp
);
fwrite
(
&
header
,
sizeof
(
header
),
1
,
fp
);
fflush
(
fp
);
#endif
}
}
void
Replay
::
WriteData
(
const
void
*
data
,
unsigned
int
length
,
bool
flush
)
{
if
(
!
is_recording
)
return
;
memcpy
(
pdata
,
data
,
length
);
pdata
+=
length
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
data
,
length
,
&
size
,
NULL
);
DWORD
size
;
WriteFile
(
recording_fp
,
data
,
length
,
&
size
,
NULL
);
#else
fwrite
(
data
,
length
,
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
fwrite
(
data
,
length
,
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
#endif
}
}
void
Replay
::
WriteInt32
(
int
data
,
bool
flush
)
{
if
(
!
is_recording
)
return
;
*
((
int
*
)(
pdata
))
=
data
;
pdata
+=
4
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
int
),
&
size
,
NULL
);
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
int
),
&
size
,
NULL
);
#else
fwrite
(
&
data
,
sizeof
(
int
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
fwrite
(
&
data
,
sizeof
(
int
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
#endif
}
}
void
Replay
::
WriteInt16
(
short
data
,
bool
flush
)
{
if
(
!
is_recording
)
return
;
*
((
short
*
)(
pdata
))
=
data
;
pdata
+=
2
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
short
),
&
size
,
NULL
);
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
short
),
&
size
,
NULL
);
#else
fwrite
(
&
data
,
sizeof
(
short
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
fwrite
(
&
data
,
sizeof
(
short
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
#endif
}
}
void
Replay
::
WriteInt8
(
char
data
,
bool
flush
)
{
if
(
!
is_recording
)
return
;
*
pdata
=
data
;
pdata
++
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
char
),
&
size
,
NULL
);
DWORD
size
;
WriteFile
(
recording_fp
,
&
data
,
sizeof
(
char
),
&
size
,
NULL
);
#else
fwrite
(
&
data
,
sizeof
(
char
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
fwrite
(
&
data
,
sizeof
(
char
),
1
,
fp
);
if
(
flush
)
fflush
(
fp
);
#endif
}
}
void
Replay
::
Flush
()
{
if
(
!
is_recording
)
return
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
#else
fflush
(
fp
);
fflush
(
fp
);
#endif
}
}
void
Replay
::
EndRecord
()
{
if
(
!
is_recording
)
return
;
if
(
ygo
::
replay_mode
>
0
)
{
#ifdef _WIN32
CloseHandle
(
recording_fp
);
CloseHandle
(
recording_fp
);
#else
fclose
(
fp
);
fclose
(
fp
);
#endif
}
pheader
.
datasize
=
pdata
-
replay_data
;
pheader
.
flag
|=
REPLAY_COMPRESSED
;
size_t
propsize
=
5
;
...
...
gframe/single_duel.cpp
View file @
09ded696
...
...
@@ -17,6 +17,7 @@ extern bool no_check_deck;
extern
bool
no_shuffle_deck
;
extern
unsigned
int
start_lp
;
extern
unsigned
short
time_limit
;
extern
unsigned
short
replay_mode
;
extern
unsigned
char
start_hand
;
extern
unsigned
char
draw_count
;
bool
runasserver
=
true
;
...
...
@@ -45,10 +46,15 @@ void SingleDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
if
((
*
pit
)
!=
dp
)
NetServer
::
ReSendToPlayer
(
*
pit
);
/*for(auto pit = recorders.begin(); pit != recorders.end(); ++pit)
if((*pit) != dp)
NetServer::ReSendToPlayer(*pit);*/
}
else
{
NetServer
::
SendBufferToPlayer
(
players
[
1
-
dp
->
type
],
STOC_CHAT
,
&
scc
,
4
+
msglen
*
2
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
/*for(auto pit = recorders.begin(); pit != recorders.end(); ++pit)
NetServer::ReSendToPlayer(*pit);*/
}
}
void
SingleDuel
::
JoinGame
(
DuelPlayer
*
dp
,
void
*
pdata
,
bool
is_creater
)
{
...
...
@@ -81,6 +87,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
host_info
.
enable_priority
=
false
;
host_info
.
rule
=
0
;
host_info
.
time_limit
=
180
;
host_info
.
replay_mode
=
0
;
if
(
ygo
::
start_hand
!=
0
){
host_info
.
start_hand
=
ygo
::
start_hand
;
...
...
@@ -92,6 +99,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
host_info
.
enable_priority
=
ygo
::
enable_priority
;
host_info
.
rule
=
ygo
::
rule
;
host_info
.
time_limit
=
ygo
::
time_limit
;
host_info
.
replay_mode
=
ygo
::
replay_mode
;
}
}
else
{
...
...
@@ -126,6 +134,8 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
}
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
if
(
!
players
[
0
])
{
players
[
0
]
=
dp
;
dp
->
type
=
NETPLAYER_TYPE_PLAYER1
;
...
...
@@ -147,6 +157,8 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_JOIN_GAME
,
scjg
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
...
@@ -206,6 +218,8 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
...
...
@@ -220,6 +234,8 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
if
(
!
game_started
)
{
...
...
@@ -236,11 +252,15 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
EndDuel
();
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
}
...
...
@@ -274,6 +294,10 @@ void SingleDuel::ToDuelist(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
{
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
...
@@ -289,10 +313,15 @@ void SingleDuel::ToObserver(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
players
[
dp
->
type
]
=
0
;
ready
[
dp
->
type
]
=
false
;
dp
->
type
=
NETPLAYER_TYPE_OBSERVER
;
observers
.
insert
(
dp
);
if
(
recorders
.
size
()
==
0
&&
dp
->
name
[
0
]
==
77
)
recorders
.
insert
(
dp
);
else
observers
.
insert
(
dp
);
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
...
@@ -324,6 +353,8 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
NetServer
::
SendPacketToPlayer
(
players
[
1
-
dp
->
type
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
}
void
SingleDuel
::
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{
if
(
pos
>
1
||
dp
!=
host_player
||
dp
==
players
[
pos
]
||
!
players
[
pos
])
...
...
@@ -369,6 +400,10 @@ void SingleDuel::StartDuel(DuelPlayer* dp) {
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayer
(
*
oit
);
}
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
{
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayer
(
*
oit
);
}
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
hand_result
[
0
]
=
0
;
...
...
@@ -389,6 +424,8 @@ void SingleDuel::HandResult(DuelPlayer* dp, unsigned char res) {
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_HAND_RESULT
,
schr
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
schr
.
res1
=
hand_result
[
1
];
schr
.
res2
=
hand_result
[
0
];
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HAND_RESULT
,
schr
);
...
...
@@ -511,6 +548,8 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
else
startbuf
[
1
]
=
0x11
;
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
RefreshExtra
(
0
);
RefreshExtra
(
1
);
start_duel
(
pduel
,
opt
);
...
...
@@ -540,6 +579,8 @@ void SingleDuel::DuelEndProc() {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
else
{
int
winc
[
3
]
=
{
0
,
0
,
0
};
...
...
@@ -553,6 +594,8 @@ void SingleDuel::DuelEndProc() {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
else
{
if
(
players
[
0
]
!=
pplayer
[
0
])
{
...
...
@@ -572,6 +615,8 @@ void SingleDuel::DuelEndProc() {
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_CHANGE_SIDE
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendPacketToPlayer
(
*
oit
,
STOC_WAITING_SIDE
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
SendPacketToPlayer
(
*
oit
,
STOC_WAITING_SIDE
);
}
}
}
...
...
@@ -587,6 +632,8 @@ void SingleDuel::Surrender(DuelPlayer* dp) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
players
[
player
]
==
pplayer
[
player
])
{
match_result
[
duel_count
++
]
=
1
-
player
;
tp_player
=
player
;
...
...
@@ -630,6 +677,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
10
:
{
...
...
@@ -637,6 +686,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
1
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
}
...
...
@@ -649,6 +700,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
player
>
1
)
{
match_result
[
duel_count
++
]
=
2
;
tp_player
=
1
-
tp_player
;
...
...
@@ -804,6 +857,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CONFIRM_CARDS
:
{
...
...
@@ -815,6 +870,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
-
player
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
}
else
{
pbuf
+=
count
*
7
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
...
@@ -827,12 +884,16 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SHUFFLE_HAND
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
(
pbuf
-
offset
)
+
count
*
4
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
BufferIO
::
WriteInt32
(
pbuf
,
0
);
NetServer
::
SendBufferToPlayer
(
players
[
1
-
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
...
@@ -847,6 +908,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SWAP_GRAVE_DECK
:
{
...
...
@@ -855,6 +918,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshGrave
(
player
);
break
;
}
...
...
@@ -863,6 +928,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_DECK_TOP
:
{
...
...
@@ -871,6 +938,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
...
...
@@ -880,6 +949,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
break
;
...
...
@@ -898,6 +969,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_NEW_PHASE
:
{
...
...
@@ -906,6 +979,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -931,6 +1006,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
1
-
cc
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
cl
!=
0
&&
(
cl
&
0x80
)
==
0
&&
(
cl
!=
pl
||
pc
!=
cc
))
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
...
...
@@ -946,6 +1023,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
((
pp
&
POS_FACEDOWN
)
&&
(
cp
&
POS_FACEUP
))
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
...
...
@@ -957,6 +1036,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SWAP
:
{
...
...
@@ -971,6 +1052,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshSingle
(
c1
,
l1
,
s1
);
RefreshSingle
(
c2
,
l2
,
s2
);
break
;
...
...
@@ -981,6 +1064,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SUMMONING
:
{
...
...
@@ -989,6 +1074,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SUMMONED
:
{
...
...
@@ -996,6 +1083,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1008,6 +1097,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SPSUMMONED
:
{
...
...
@@ -1015,6 +1106,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1028,6 +1121,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_FLIPSUMMONED
:
{
...
...
@@ -1035,6 +1130,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1047,6 +1144,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CHAINED
:
{
...
...
@@ -1055,6 +1154,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1069,6 +1170,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CHAIN_SOLVED
:
{
...
...
@@ -1077,6 +1180,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1090,6 +1195,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1104,6 +1211,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CHAIN_DISABLED
:
{
...
...
@@ -1112,6 +1221,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CARD_SELECTED
:
{
...
...
@@ -1128,6 +1239,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_BECOME_TARGET
:
{
...
...
@@ -1137,6 +1250,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_DRAW
:
{
...
...
@@ -1145,6 +1260,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
pbufw
=
pbuf
;
pbuf
+=
count
*
4
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
if
(
!
(
pbufw
[
3
]
&
0x80
))
BufferIO
::
WriteInt32
(
pbufw
,
0
);
...
...
@@ -1162,6 +1279,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_RECOVER
:
{
...
...
@@ -1170,6 +1289,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_EQUIP
:
{
...
...
@@ -1178,6 +1299,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_LPUPDATE
:
{
...
...
@@ -1186,6 +1309,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_UNEQUIP
:
{
...
...
@@ -1194,6 +1319,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CARD_TARGET
:
{
...
...
@@ -1202,6 +1329,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CANCEL_TARGET
:
{
...
...
@@ -1210,6 +1339,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_PAY_LPCOST
:
{
...
...
@@ -1218,6 +1349,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ADD_COUNTER
:
{
...
...
@@ -1226,6 +1359,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_REMOVE_COUNTER
:
{
...
...
@@ -1234,6 +1369,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ATTACK
:
{
...
...
@@ -1242,6 +1379,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_BATTLE
:
{
...
...
@@ -1250,6 +1389,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ATTACK_DISABLED
:
{
...
...
@@ -1257,6 +1398,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_DAMAGE_STEP_START
:
{
...
...
@@ -1264,6 +1407,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
break
;
...
...
@@ -1273,6 +1418,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
break
;
...
...
@@ -1291,6 +1438,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_TOSS_DICE
:
{
...
...
@@ -1301,6 +1450,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ANNOUNCE_RACE
:
{
...
...
@@ -1339,6 +1490,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_PLAYER_HINT
:
{
...
...
@@ -1357,6 +1510,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
}
break
;
}
...
...
@@ -1389,8 +1544,12 @@ void SingleDuel::EndDuel() {
memcpy
(
pbuf
,
last_replay
.
comp_data
,
last_replay
.
comp_size
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_REPLAY
,
replaybuf
,
sizeof
(
ReplayHeader
)
+
last_replay
.
comp_size
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
host_info
.
replay_mode
==
0
)
{
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
}
end_duel
(
pduel
);
pduel
=
0
;
}
...
...
@@ -1426,6 +1585,8 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_MZONE
);
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
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
...
...
@@ -1446,6 +1607,8 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_SZONE
);
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
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
...
...
@@ -1466,6 +1629,8 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
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
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
int
qlen
=
0
,
slen
;
while
(
qlen
<
len
)
{
slen
=
BufferIO
::
ReadInt32
(
qbuf
);
...
...
@@ -1520,6 +1685,8 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
NetServer
::
ReSendToPlayer
(
players
[
1
-
player
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
}
int
SingleDuel
::
MessageHandler
(
long
fduel
,
int
type
)
{
...
...
@@ -1527,17 +1694,7 @@ int SingleDuel::MessageHandler(long fduel, int type) {
return
0
;
char
msgbuf
[
1024
];
get_log_message
(
fduel
,
(
byte
*
)
msgbuf
);
if
(
enable_log
==
1
)
{
wchar_t
wbuf
[
1024
];
BufferIO
::
DecodeUTF8
(
msgbuf
,
wbuf
);
//mainGame->AddChatMsg(wbuf, 9);
}
else
if
(
enable_log
==
2
)
{
FILE
*
fp
=
fopen
(
"error.log"
,
"at"
);
if
(
!
fp
)
return
0
;
fprintf
(
fp
,
"[Script error:] %s
\n
"
,
msgbuf
);
fclose
(
fp
);
}
fprintf
(
stderr
,
"%s
\n
"
,
msgbuf
);
return
0
;
}
void
SingleDuel
::
SingleTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
)
{
...
...
@@ -1553,6 +1710,8 @@ void SingleDuel::SingleTimer(evutil_socket_t fd, short events, void* arg) {
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
for
(
auto
oit
=
sd
->
observers
.
begin
();
oit
!=
sd
->
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
sd
->
recorders
.
begin
();
oit
!=
sd
->
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
sd
->
players
[
player
]
==
sd
->
pplayer
[
player
])
{
sd
->
match_result
[
sd
->
duel_count
++
]
=
1
-
player
;
sd
->
tp_player
=
player
;
...
...
gframe/single_duel.h
View file @
09ded696
...
...
@@ -49,6 +49,7 @@ protected:
unsigned
char
hand_result
[
2
];
unsigned
char
last_response
;
std
::
set
<
DuelPlayer
*>
observers
;
std
::
set
<
DuelPlayer
*>
recorders
;
Replay
last_replay
;
bool
match_mode
;
int
match_kill
;
...
...
gframe/tag_duel.cpp
View file @
09ded696
...
...
@@ -17,6 +17,7 @@ extern bool no_check_deck;
extern
bool
no_shuffle_deck
;
extern
unsigned
int
start_lp
;
extern
unsigned
short
time_limit
;
extern
unsigned
short
replay_mode
;
extern
unsigned
char
start_hand
;
extern
unsigned
char
draw_count
;
...
...
@@ -67,6 +68,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
host_info
.
enable_priority
=
false
;
host_info
.
rule
=
0
;
host_info
.
time_limit
=
180
;
host_info
.
replay_mode
=
0
;
if
(
ygo
::
start_hand
!=
0
){
host_info
.
start_hand
=
ygo
::
start_hand
;
...
...
@@ -78,6 +80,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
host_info
.
enable_priority
=
ygo
::
enable_priority
;
host_info
.
rule
=
ygo
::
rule
;
host_info
.
time_limit
=
ygo
::
time_limit
;
host_info
.
replay_mode
=
ygo
::
replay_mode
;
}
}
else
{
...
...
@@ -115,6 +118,8 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_ENTER
,
scpe
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
players
[
scpe
.
pos
]
=
dp
;
dp
->
type
=
scpe
.
pos
;
sctc
.
type
|=
scpe
.
pos
;
...
...
@@ -129,6 +134,8 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_JOIN_GAME
,
scjg
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
...
@@ -183,6 +190,8 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
...
...
@@ -196,6 +205,8 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
EndDuel
();
...
...
@@ -231,6 +242,10 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
{
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_ENTER
,
scpe
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_WATCH_CHANGE
,
scwc
);
}
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
...
@@ -247,6 +262,8 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dptype
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
...
@@ -265,10 +282,15 @@ void TagDuel::ToObserver(DuelPlayer* dp) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
players
[
dp
->
type
]
=
0
;
ready
[
dp
->
type
]
=
false
;
dp
->
type
=
NETPLAYER_TYPE_OBSERVER
;
observers
.
insert
(
dp
);
if
(
recorders
.
size
()
==
0
&&
dp
->
name
[
0
]
==
77
)
recorders
.
insert
(
dp
);
else
observers
.
insert
(
dp
);
STOC_TypeChange
sctc
;
sctc
.
type
=
(
dp
==
host_player
?
0x10
:
0
)
|
dp
->
type
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_TYPE_CHANGE
,
sctc
);
...
...
@@ -299,6 +321,8 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
NetServer
::
SendPacketToPlayer
(
players
[
i
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
}
void
TagDuel
::
PlayerKick
(
DuelPlayer
*
dp
,
unsigned
char
pos
)
{
if
(
pos
>
3
||
dp
!=
host_player
||
dp
==
players
[
pos
]
||
!
players
[
pos
])
...
...
@@ -327,6 +351,10 @@ void TagDuel::StartDuel(DuelPlayer* dp) {
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayer
(
*
oit
);
}
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
{
(
*
oit
)
->
state
=
CTOS_LEAVE_GAME
;
NetServer
::
ReSendToPlayer
(
*
oit
);
}
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_SELECT_HAND
);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
hand_result
[
0
]
=
0
;
...
...
@@ -349,6 +377,8 @@ void TagDuel::HandResult(DuelPlayer* dp, unsigned char res) {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
schr
.
res1
=
hand_result
[
1
];
schr
.
res2
=
hand_result
[
0
];
NetServer
::
SendPacketToPlayer
(
players
[
2
],
STOC_HAND_RESULT
,
schr
);
...
...
@@ -512,6 +542,8 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
else
startbuf
[
1
]
=
0x11
;
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
SendBufferToPlayer
(
*
oit
,
STOC_GAME_MSG
,
startbuf
,
18
);
RefreshExtra
(
0
);
RefreshExtra
(
1
);
start_duel
(
pduel
,
opt
);
...
...
@@ -542,6 +574,8 @@ void TagDuel::DuelEndProc() {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
void
TagDuel
::
Surrender
(
DuelPlayer
*
dp
)
{
...
...
@@ -582,6 +616,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
}
...
...
@@ -596,6 +632,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
EndDuel
();
return
2
;
}
...
...
@@ -743,6 +781,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CONFIRM_CARDS
:
{
...
...
@@ -756,6 +796,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
}
else
{
pbuf
+=
count
*
7
;
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
...
@@ -770,12 +812,16 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SHUFFLE_HAND
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
(
pbuf
-
offset
)
+
count
*
4
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
BufferIO
::
WriteInt32
(
pbuf
,
0
);
for
(
int
i
=
0
;
i
<
4
;
++
i
)
...
...
@@ -794,6 +840,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SWAP_GRAVE_DECK
:
{
...
...
@@ -804,6 +852,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshGrave
(
player
);
break
;
}
...
...
@@ -814,6 +864,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_DECK_TOP
:
{
...
...
@@ -824,6 +876,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
...
...
@@ -835,6 +889,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
break
;
...
...
@@ -849,6 +905,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
turn_count
>
0
)
{
if
(
turn_count
%
2
==
0
)
{
if
(
cur_player
[
0
]
==
players
[
0
])
...
...
@@ -873,6 +931,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -900,6 +960,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
cl
!=
0
&&
(
cl
&
0x80
)
==
0
&&
(
cl
!=
pl
||
pc
!=
cc
))
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
...
...
@@ -917,6 +979,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
((
pp
&
POS_FACEDOWN
)
&&
(
cp
&
POS_FACEUP
))
RefreshSingle
(
cc
,
cl
,
cs
);
break
;
...
...
@@ -930,6 +994,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SWAP
:
{
...
...
@@ -946,6 +1012,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshSingle
(
c1
,
l1
,
s1
);
RefreshSingle
(
c2
,
l2
,
s2
);
break
;
...
...
@@ -958,6 +1026,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SUMMONING
:
{
...
...
@@ -968,6 +1038,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SUMMONED
:
{
...
...
@@ -977,6 +1049,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -991,6 +1065,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_SPSUMMONED
:
{
...
...
@@ -1000,6 +1076,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1015,6 +1093,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_FLIPSUMMONED
:
{
...
...
@@ -1024,6 +1104,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1038,6 +1120,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CHAINED
:
{
...
...
@@ -1048,6 +1132,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1064,6 +1150,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CHAIN_SOLVED
:
{
...
...
@@ -1074,6 +1162,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1089,6 +1179,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
RefreshSzone
(
0
);
...
...
@@ -1105,6 +1197,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CHAIN_DISABLED
:
{
...
...
@@ -1115,6 +1209,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CARD_SELECTED
:
{
...
...
@@ -1133,6 +1229,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_BECOME_TARGET
:
{
...
...
@@ -1144,6 +1242,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_DRAW
:
{
...
...
@@ -1152,6 +1252,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
pbufw
=
pbuf
;
pbuf
+=
count
*
4
;
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
if
(
!
(
pbufw
[
3
]
&
0x80
))
BufferIO
::
WriteInt32
(
pbufw
,
0
);
...
...
@@ -1173,6 +1275,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_RECOVER
:
{
...
...
@@ -1183,6 +1287,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_EQUIP
:
{
...
...
@@ -1193,6 +1299,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_LPUPDATE
:
{
...
...
@@ -1203,6 +1311,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_UNEQUIP
:
{
...
...
@@ -1213,6 +1323,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CARD_TARGET
:
{
...
...
@@ -1223,6 +1335,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_CANCEL_TARGET
:
{
...
...
@@ -1233,6 +1347,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_PAY_LPCOST
:
{
...
...
@@ -1243,6 +1359,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ADD_COUNTER
:
{
...
...
@@ -1253,6 +1371,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_REMOVE_COUNTER
:
{
...
...
@@ -1263,6 +1383,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ATTACK
:
{
...
...
@@ -1273,6 +1395,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_BATTLE
:
{
...
...
@@ -1283,6 +1407,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ATTACK_DISABLED
:
{
...
...
@@ -1292,6 +1418,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_DAMAGE_STEP_START
:
{
...
...
@@ -1301,6 +1429,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
break
;
...
...
@@ -1312,6 +1442,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
);
RefreshMzone
(
1
);
break
;
...
...
@@ -1332,6 +1464,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_TOSS_DICE
:
{
...
...
@@ -1344,6 +1478,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_ANNOUNCE_RACE
:
{
...
...
@@ -1384,6 +1520,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
break
;
}
case
MSG_PLAYER_HINT
:
{
...
...
@@ -1422,6 +1560,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
SendBufferToPlayer
(
players
[
i
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshExtra
(
player
);
RefreshMzone
(
0
,
0x81fff
,
0
);
RefreshMzone
(
1
,
0x81fff
,
0
);
...
...
@@ -1467,8 +1607,12 @@ void TagDuel::EndDuel() {
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
host_info
.
replay_mode
==
0
)
{
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
for
(
auto
oit
=
recorders
.
begin
();
oit
!=
recorders
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
}
end_duel
(
pduel
);
pduel
=
0
;
}
...
...
@@ -1510,6 +1654,8 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
...
...
@@ -1534,6 +1680,8 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
3
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
int
clen
=
BufferIO
::
ReadInt32
(
qbuf
);
if
(
clen
==
4
)
...
...
@@ -1556,6 +1704,8 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache) {
BufferIO
::
WriteInt8
(
qbuf
,
LOCATION_HAND
);
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
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
int
qlen
=
0
,
slen
;
while
(
qlen
<
len
)
{
slen
=
BufferIO
::
ReadInt32
(
qbuf
);
...
...
@@ -1589,6 +1739,8 @@ void TagDuel::RefreshGrave(int player, int flag, int use_cache) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
}
void
TagDuel
::
RefreshExtra
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x2000
];
...
...
@@ -1611,6 +1763,8 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
if
(
qbuf
[
15
]
&
POS_FACEUP
)
{
pid
=
2
-
pid
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
...
...
@@ -1622,6 +1776,8 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
int
pid
=
(
player
==
0
)
?
0
:
2
;
NetServer
::
SendBufferToPlayer
(
players
[
pid
],
STOC_GAME_MSG
,
query_buffer
,
len
+
4
);
NetServer
::
ReSendToPlayer
(
players
[
pid
+
1
]);
for
(
auto
pit
=
recorders
.
begin
();
pit
!=
recorders
.
end
();
++
pit
)
NetServer
::
ReSendToPlayer
(
*
pit
);
if
(
location
==
LOCATION_REMOVED
&&
(
qbuf
[
15
]
&
POS_FACEDOWN
))
return
;
if
(
location
&
0x90
)
{
...
...
@@ -1638,17 +1794,7 @@ int TagDuel::MessageHandler(long fduel, int type) {
return
0
;
char
msgbuf
[
1024
];
get_log_message
(
fduel
,
(
byte
*
)
msgbuf
);
if
(
enable_log
==
1
)
{
wchar_t
wbuf
[
1024
];
BufferIO
::
DecodeUTF8
(
msgbuf
,
wbuf
);
//mainGame->AddChatMsg(wbuf, 9);
}
else
if
(
enable_log
==
2
)
{
FILE
*
fp
=
fopen
(
"error.log"
,
"at"
);
if
(
!
fp
)
return
0
;
fprintf
(
fp
,
"[Script error:] %s
\n
"
,
msgbuf
);
fclose
(
fp
);
}
fprintf
(
stderr
,
"%s
\n
"
,
msgbuf
);
return
0
;
}
void
TagDuel
::
TagTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
)
{
...
...
gframe/tag_duel.h
View file @
09ded696
...
...
@@ -46,6 +46,7 @@ protected:
DuelPlayer
*
pplayer
[
4
];
DuelPlayer
*
cur_player
[
2
];
std
::
set
<
DuelPlayer
*>
observers
;
std
::
set
<
DuelPlayer
*>
recorders
;
bool
ready
[
4
];
Deck
pdeck
[
4
];
unsigned
char
hand_result
[
2
];
...
...
ocgcore
@
dd4bbf6b
Subproject commit
96bbbedb6e828f4a227cf5405ed8e284b0def2cc
Subproject commit
dd4bbf6b6330c492196bafea43d38a04e9e4cbc5
premake5.lua
0 → 100644
View file @
09ded696
solution
"ygo"
location
"build"
language
"C++"
objdir
"obj"
configurations
{
"Debug"
,
"Release"
}
configuration
"windows"
defines
{
"WIN32"
,
"_WIN32"
}
configuration
"bsd"
defines
{
"LUA_USE_POSIX"
}
includedirs
{
"/usr/local/include"
}
libdirs
{
"/usr/local/lib"
}
configuration
"macosx"
defines
{
"LUA_USE_MACOSX"
}
includedirs
{
"/usr/local/include/*"
}
libdirs
{
"/usr/local/lib"
,
"/usr/X11/lib"
}
buildoptions
{
"-stdlib=libc++"
}
links
{
"OpenGL.framework"
,
"Cocoa.framework"
,
"IOKit.framework"
}
configuration
"linux"
defines
{
"LUA_USE_LINUX"
}
configuration
"Release"
flags
{
"OptimizeSpeed"
}
targetdir
"bin/release"
configuration
"Debug"
symbols
"On"
defines
"_DEBUG"
targetdir
"bin/debug"
configuration
{
"Release"
,
"vs*"
}
flags
{
"StaticRuntime"
,
"LinkTimeOptimization"
}
disablewarnings
{
"4244"
,
"4267"
,
"4838"
,
"4577"
,
"4819"
,
"4018"
,
"4996"
,
"4477"
}
configuration
{
"Release"
,
"not vs*"
}
symbols
"On"
defines
"NDEBUG"
buildoptions
"-march=native"
configuration
{
"Debug"
,
"vs*"
}
defines
{
"_ITERATOR_DEBUG_LEVEL=0"
}
configuration
"vs*"
flags
"EnableSSE2"
defines
{
"_CRT_SECURE_NO_WARNINGS"
}
configuration
"not vs*"
buildoptions
{
"-fno-strict-aliasing"
,
"-Wno-multichar"
}
configuration
{
"not vs*"
,
"windows"
}
buildoptions
{
"-static-libgcc"
}
startproject
"ygopro"
include
"ocgcore"
include
"gframe"
if
os
.
is
(
"windows"
)
then
include
"event"
include
"lua"
include
"sqlite3"
end
script
@
6a65f1ba
Subproject commit
5485784eac297306878f20f2c6cd4a0a5169865
3
Subproject commit
6a65f1ba96072e53a6c57efca4817ae6f716f9a
3
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