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
Commits
8eff9b60
Commit
8eff9b60
authored
Jun 28, 2024
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master'
parents
17fdc6e7
82542f13
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
87 additions
and
284 deletions
+87
-284
gframe/bufferio.h
gframe/bufferio.h
+4
-0
gframe/config.h
gframe/config.h
+0
-1
gframe/deck_con.cpp
gframe/deck_con.cpp
+1
-1
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+6
-4
gframe/duelclient.cpp
gframe/duelclient.cpp
+13
-14
gframe/duelclient.h
gframe/duelclient.h
+4
-7
gframe/gframe.cpp
gframe/gframe.cpp
+1
-0
gframe/netserver.cpp
gframe/netserver.cpp
+17
-17
gframe/netserver.h
gframe/netserver.h
+5
-8
gframe/single_duel.cpp
gframe/single_duel.cpp
+3
-2
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+3
-2
lflist.conf
lflist.conf
+28
-228
strings.conf
strings.conf
+2
-0
No files found.
gframe/bufferio.h
View file @
8eff9b60
...
@@ -153,6 +153,10 @@ public:
...
@@ -153,6 +153,10 @@ public:
static
int
DecodeUTF8
(
const
char
*
src
,
wchar_t
(
&
dst
)[
N
])
{
static
int
DecodeUTF8
(
const
char
*
src
,
wchar_t
(
&
dst
)[
N
])
{
return
DecodeUTF8String
(
src
,
dst
,
N
);
return
DecodeUTF8String
(
src
,
dst
,
N
);
}
}
template
<
size_t
N
,
typename
T
>
static
void
NullTerminate
(
T
(
&
str
)[
N
])
{
str
[
N
-
1
]
=
0
;
}
static
int
GetVal
(
const
wchar_t
*
pstr
)
{
static
int
GetVal
(
const
wchar_t
*
pstr
)
{
unsigned
int
ret
=
0
;
unsigned
int
ret
=
0
;
while
(
*
pstr
>=
L'0'
&&
*
pstr
<=
L'9'
)
{
while
(
*
pstr
>=
L'0'
&&
*
pstr
<=
L'9'
)
{
...
...
gframe/config.h
View file @
8eff9b60
...
@@ -31,7 +31,6 @@
...
@@ -31,7 +31,6 @@
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netdb.h>
#include <unistd.h>
#include <unistd.h>
#include <locale.h>
#define SD_BOTH 2
#define SD_BOTH 2
#define SOCKET int
#define SOCKET int
...
...
gframe/deck_con.cpp
View file @
8eff9b60
...
@@ -1757,7 +1757,7 @@ bool DeckBuilder::push_main(code_pointer pointer, int seq) {
...
@@ -1757,7 +1757,7 @@ bool DeckBuilder::push_main(code_pointer pointer, int seq) {
if
(
pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
if
(
pointer
->
second
.
type
&
(
TYPE_FUSION
|
TYPE_SYNCHRO
|
TYPE_XYZ
|
TYPE_LINK
))
return
false
;
return
false
;
auto
&
container
=
deckManager
.
current_deck
.
main
;
auto
&
container
=
deckManager
.
current_deck
.
main
;
int
maxc
=
mainGame
->
is_siding
?
DECK_MAX_SIZE
+
4
:
DECK_MAX_SIZE
;
int
maxc
=
mainGame
->
is_siding
?
DECK_MAX_SIZE
+
5
:
DECK_MAX_SIZE
;
if
((
int
)
container
.
size
()
>=
maxc
)
if
((
int
)
container
.
size
()
>=
maxc
)
return
false
;
return
false
;
if
(
seq
>=
0
&&
seq
<
(
int
)
container
.
size
())
if
(
seq
>=
0
&&
seq
<
(
int
)
container
.
size
())
...
...
gframe/deck_manager.cpp
View file @
8eff9b60
...
@@ -178,7 +178,7 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
...
@@ -178,7 +178,7 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
}
}
if
(
cd
.
type
&
TYPE_TOKEN
)
if
(
cd
.
type
&
TYPE_TOKEN
)
continue
;
continue
;
if
(
deck
.
side
.
size
()
<
YGOPRO_MAX_SID
E
)
if
(
deck
.
side
.
size
()
<
SIDE_MAX_SIZ
E
)
deck
.
side
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
deck
.
side
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
}
}
return
errorcode
;
return
errorcode
;
...
@@ -252,6 +252,8 @@ bool DeckManager::LoadDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUICom
...
@@ -252,6 +252,8 @@ bool DeckManager::LoadDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUICom
bool
res
=
LoadDeck
(
filepath
,
is_packlist
);
bool
res
=
LoadDeck
(
filepath
,
is_packlist
);
if
(
res
&&
mainGame
->
is_building
)
if
(
res
&&
mainGame
->
is_building
)
mainGame
->
deckBuilder
.
RefreshPackListScroll
();
mainGame
->
deckBuilder
.
RefreshPackListScroll
();
if
(
!
res
)
current_deck
.
clear
();
return
res
;
return
res
;
}
}
FILE
*
DeckManager
::
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
)
{
FILE
*
DeckManager
::
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
)
{
...
@@ -290,8 +292,8 @@ bool DeckManager::LoadDeck(const wchar_t* file, bool is_packlist) {
...
@@ -290,8 +292,8 @@ bool DeckManager::LoadDeck(const wchar_t* file, bool is_packlist) {
}
}
if
(
!
reader
)
if
(
!
reader
)
return
false
;
return
false
;
size_t
size
=
reader
->
getSize
();
auto
size
=
reader
->
getSize
();
if
(
size
>=
0x20000
)
{
if
(
size
>=
(
int
)
sizeof
deckBuffer
)
{
reader
->
drop
();
reader
->
drop
();
return
false
;
return
false
;
}
}
...
@@ -306,7 +308,7 @@ bool DeckManager::LoadDeck(std::istringstream* deckStream, bool is_packlist) {
...
@@ -306,7 +308,7 @@ bool DeckManager::LoadDeck(std::istringstream* deckStream, bool is_packlist) {
int
cardlist
[
300
];
int
cardlist
[
300
];
bool
is_side
=
false
;
bool
is_side
=
false
;
std
::
string
linebuf
;
std
::
string
linebuf
;
while
(
std
::
getline
(
*
deckStream
,
linebuf
)
&&
ct
<
300
)
{
while
(
std
::
getline
(
*
deckStream
,
linebuf
,
'\n'
)
&&
ct
<
300
)
{
if
(
linebuf
[
0
]
==
'!'
)
{
if
(
linebuf
[
0
]
==
'!'
)
{
is_side
=
true
;
is_side
=
true
;
continue
;
continue
;
...
...
gframe/duelclient.cpp
View file @
8eff9b60
...
@@ -19,8 +19,6 @@ unsigned char DuelClient::selftype = 0;
...
@@ -19,8 +19,6 @@ unsigned char DuelClient::selftype = 0;
bool
DuelClient
::
is_host
=
false
;
bool
DuelClient
::
is_host
=
false
;
event_base
*
DuelClient
::
client_base
=
0
;
event_base
*
DuelClient
::
client_base
=
0
;
bufferevent
*
DuelClient
::
client_bev
=
0
;
bufferevent
*
DuelClient
::
client_bev
=
0
;
unsigned
char
DuelClient
::
duel_client_read
[
SIZE_NETWORK_BUFFER
];
int
DuelClient
::
read_len
=
0
;
unsigned
char
DuelClient
::
duel_client_write
[
SIZE_NETWORK_BUFFER
];
unsigned
char
DuelClient
::
duel_client_write
[
SIZE_NETWORK_BUFFER
];
bool
DuelClient
::
is_closing
=
false
;
bool
DuelClient
::
is_closing
=
false
;
bool
DuelClient
::
is_swapping
=
false
;
bool
DuelClient
::
is_swapping
=
false
;
...
@@ -50,6 +48,7 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
...
@@ -50,6 +48,7 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
sin
.
sin_addr
.
s_addr
=
htonl
(
ip
);
sin
.
sin_addr
.
s_addr
=
htonl
(
ip
);
sin
.
sin_port
=
htons
(
port
);
sin
.
sin_port
=
htons
(
port
);
client_bev
=
bufferevent_socket_new
(
client_base
,
-
1
,
BEV_OPT_CLOSE_ON_FREE
);
client_bev
=
bufferevent_socket_new
(
client_base
,
-
1
,
BEV_OPT_CLOSE_ON_FREE
);
bufferevent_setwatermark
(
client_bev
,
EV_READ
,
3
,
0
);
bufferevent_setcb
(
client_bev
,
ClientRead
,
NULL
,
ClientEvent
,
(
void
*
)
create_game
);
bufferevent_setcb
(
client_bev
,
ClientRead
,
NULL
,
ClientEvent
,
(
void
*
)
create_game
);
if
(
bufferevent_socket_connect
(
client_bev
,
(
sockaddr
*
)
&
sin
,
sizeof
(
sin
))
<
0
)
{
if
(
bufferevent_socket_connect
(
client_bev
,
(
sockaddr
*
)
&
sin
,
sizeof
(
sin
))
<
0
)
{
bufferevent_free
(
client_bev
);
bufferevent_free
(
client_bev
);
...
@@ -100,24 +99,23 @@ void DuelClient::StopClient(bool is_exiting) {
...
@@ -100,24 +99,23 @@ void DuelClient::StopClient(bool is_exiting) {
void
DuelClient
::
ClientRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
void
DuelClient
::
ClientRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
int
len
=
evbuffer_get_length
(
input
);
int
len
=
evbuffer_get_length
(
input
);
unsigned
short
packet_len
=
0
;
unsigned
char
*
duel_client_read
=
new
unsigned
char
[
std
::
min
(
len
,
SIZE_NETWORK_BUFFER
)];
while
(
true
)
{
unsigned
short
packet_len
;
if
(
len
<
2
)
while
(
len
>=
2
)
{
return
;
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
evbuffer_copyout
(
input
,
&
packet_len
,
2
);
if
(
packet_len
+
2
>
SIZE_NETWORK_BUFFER
)
{
if
(
packet_len
+
2
>
SIZE_NETWORK_BUFFER
)
{
delete
[]
duel_client_read
;
ClientEvent
(
bev
,
BEV_EVENT_ERROR
,
0
);
ClientEvent
(
bev
,
BEV_EVENT_ERROR
,
0
);
return
;
return
;
}
}
if
(
len
<
packet_len
+
2
)
if
(
len
<
packet_len
+
2
)
return
;
break
;
if
(
packet_len
<
1
)
int
read_len
=
evbuffer_remove
(
input
,
duel_client_read
,
packet_len
+
2
);
return
;
read_len
=
evbuffer_remove
(
input
,
duel_client_read
,
packet_len
+
2
);
if
(
read_len
>=
3
)
if
(
read_len
>=
3
)
HandleSTOCPacketLan
(
&
duel_client_read
[
2
],
read_len
-
2
);
HandleSTOCPacketLan
(
&
duel_client_read
[
2
],
read_len
-
2
);
len
-=
packet_len
+
2
;
len
-=
packet_len
+
2
;
}
}
delete
[]
duel_client_read
;
}
}
void
DuelClient
::
ClientEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
void
DuelClient
::
ClientEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
if
(
events
&
BEV_EVENT_CONNECTED
)
{
if
(
events
&
BEV_EVENT_CONNECTED
)
{
...
@@ -823,10 +821,11 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
...
@@ -823,10 +821,11 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
soundManager
.
PlaySoundEffect
(
SOUND_PLAYER_ENTER
);
soundManager
.
PlaySoundEffect
(
SOUND_PLAYER_ENTER
);
STOC_HS_PlayerEnter
packet
;
STOC_HS_PlayerEnter
packet
;
std
::
memcpy
(
&
packet
,
pdata
,
STOC_HS_PlayerEnter_size
);
std
::
memcpy
(
&
packet
,
pdata
,
STOC_HS_PlayerEnter_size
);
const
auto
*
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
if
(
pkt
->
pos
>
3
)
if
(
pkt
->
pos
>
3
)
break
;
break
;
wchar_t
name
[
20
];
wchar_t
name
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
CopyWStr
(
pkt
->
name
,
name
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
name
,
name
,
20
);
if
(
mainGame
->
dInfo
.
isTag
)
{
if
(
mainGame
->
dInfo
.
isTag
)
{
if
(
pkt
->
pos
==
0
)
if
(
pkt
->
pos
==
0
)
...
@@ -1515,7 +1514,7 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
...
@@ -1515,7 +1514,7 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
wchar_t
ynbuf
[
256
];
wchar_t
ynbuf
[
256
];
myswprintf
(
ynbuf
,
dataManager
.
GetSysString
(
221
),
dataManager
.
FormatLocation
(
l
,
s
),
dataManager
.
GetName
(
code
));
myswprintf
(
ynbuf
,
dataManager
.
GetSysString
(
221
),
dataManager
.
FormatLocation
(
l
,
s
),
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
L"%ls
\n
%ls
\n
%ls"
,
event_string
,
ynbuf
,
dataManager
.
GetSysString
(
223
));
myswprintf
(
textBuffer
,
L"%ls
\n
%ls
\n
%ls"
,
event_string
,
ynbuf
,
dataManager
.
GetSysString
(
223
));
}
else
if
(
desc
<
2048
)
{
}
else
if
(
desc
<
=
MAX_STRING_ID
)
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
desc
),
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
desc
),
dataManager
.
GetName
(
code
));
}
else
{
}
else
{
myswprintf
(
textBuffer
,
dataManager
.
GetDesc
(
desc
),
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
dataManager
.
GetDesc
(
desc
),
dataManager
.
GetName
(
code
));
...
...
gframe/duelclient.h
View file @
8eff9b60
...
@@ -21,8 +21,6 @@ private:
...
@@ -21,8 +21,6 @@ private:
static
bool
is_host
;
static
bool
is_host
;
static
event_base
*
client_base
;
static
event_base
*
client_base
;
static
bufferevent
*
client_bev
;
static
bufferevent
*
client_bev
;
static
unsigned
char
duel_client_read
[
SIZE_NETWORK_BUFFER
];
static
int
read_len
;
static
unsigned
char
duel_client_write
[
SIZE_NETWORK_BUFFER
];
static
unsigned
char
duel_client_write
[
SIZE_NETWORK_BUFFER
];
static
bool
is_closing
;
static
bool
is_closing
;
static
bool
is_swapping
;
static
bool
is_swapping
;
...
@@ -56,13 +54,12 @@ public:
...
@@ -56,13 +54,12 @@ public:
template
<
typename
ST
>
template
<
typename
ST
>
static
void
SendPacketToServer
(
unsigned
char
proto
,
ST
&
st
)
{
static
void
SendPacketToServer
(
unsigned
char
proto
,
ST
&
st
)
{
auto
p
=
duel_client_write
;
auto
p
=
duel_client_write
;
int
blen
=
sizeof
(
ST
);
if
((
int
)
sizeof
(
ST
)
>
MAX_DATA_SIZE
)
if
(
blen
>
MAX_DATA_SIZE
)
return
;
return
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
sizeof
(
ST
)
));
BufferIO
::
WriteInt8
(
p
,
proto
);
BufferIO
::
WriteInt8
(
p
,
proto
);
std
::
memcpy
(
p
,
&
st
,
blen
);
std
::
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
bufferevent_write
(
client_bev
,
duel_client_write
,
blen
+
3
);
bufferevent_write
(
client_bev
,
duel_client_write
,
sizeof
(
ST
)
+
3
);
}
}
static
void
SendBufferToServer
(
unsigned
char
proto
,
void
*
buffer
,
size_t
len
)
{
static
void
SendBufferToServer
(
unsigned
char
proto
,
void
*
buffer
,
size_t
len
)
{
auto
p
=
duel_client_write
;
auto
p
=
duel_client_write
;
...
...
gframe/gframe.cpp
View file @
8eff9b60
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#include "game.h"
#include "game.h"
#include "data_manager.h"
#include "data_manager.h"
#include <event2/thread.h>
#include <event2/thread.h>
#include <locale.h>
#include <memory>
#include <memory>
#ifdef __APPLE__
#ifdef __APPLE__
#import <CoreFoundation/CoreFoundation.h>
#import <CoreFoundation/CoreFoundation.h>
...
...
gframe/netserver.cpp
View file @
8eff9b60
...
@@ -9,8 +9,6 @@ event_base* NetServer::net_evbase = 0;
...
@@ -9,8 +9,6 @@ event_base* NetServer::net_evbase = 0;
event
*
NetServer
::
broadcast_ev
=
0
;
event
*
NetServer
::
broadcast_ev
=
0
;
evconnlistener
*
NetServer
::
listener
=
0
;
evconnlistener
*
NetServer
::
listener
=
0
;
DuelMode
*
NetServer
::
duel_mode
=
0
;
DuelMode
*
NetServer
::
duel_mode
=
0
;
unsigned
char
NetServer
::
net_server_read
[
SIZE_NETWORK_BUFFER
];
int
NetServer
::
read_len
=
0
;
unsigned
char
NetServer
::
net_server_write
[
SIZE_NETWORK_BUFFER
];
unsigned
char
NetServer
::
net_server_write
[
SIZE_NETWORK_BUFFER
];
unsigned
short
NetServer
::
last_sent
=
0
;
unsigned
short
NetServer
::
last_sent
=
0
;
...
@@ -192,6 +190,7 @@ void NetServer::ServerAccept(evconnlistener* listener, evutil_socket_t fd, socka
...
@@ -192,6 +190,7 @@ void NetServer::ServerAccept(evconnlistener* listener, evutil_socket_t fd, socka
dp
.
type
=
0xff
;
dp
.
type
=
0xff
;
dp
.
bev
=
bev
;
dp
.
bev
=
bev
;
users
[
bev
]
=
dp
;
users
[
bev
]
=
dp
;
bufferevent_setwatermark
(
bev
,
EV_READ
,
3
,
0
);
bufferevent_setcb
(
bev
,
ServerEchoRead
,
NULL
,
ServerEchoEvent
,
NULL
);
bufferevent_setcb
(
bev
,
ServerEchoRead
,
NULL
,
ServerEchoEvent
,
NULL
);
bufferevent_enable
(
bev
,
EV_READ
);
bufferevent_enable
(
bev
,
EV_READ
);
}
}
...
@@ -206,24 +205,23 @@ void NetServer::ServerAcceptError(evconnlistener* listener, void* ctx) {
...
@@ -206,24 +205,23 @@ void NetServer::ServerAcceptError(evconnlistener* listener, void* ctx) {
void
NetServer
::
ServerEchoRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
void
NetServer
::
ServerEchoRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
int
len
=
evbuffer_get_length
(
input
);
int
len
=
evbuffer_get_length
(
input
);
unsigned
short
packet_len
=
0
;
unsigned
char
*
net_server_read
=
new
unsigned
char
[
std
::
min
(
len
,
SIZE_NETWORK_BUFFER
)];
while
(
true
)
{
unsigned
short
packet_len
;
if
(
len
<
2
)
while
(
len
>=
2
)
{
return
;
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
evbuffer_copyout
(
input
,
&
packet_len
,
2
);
if
(
packet_len
+
2
>
SIZE_NETWORK_BUFFER
)
{
if
(
packet_len
+
2
>
SIZE_NETWORK_BUFFER
)
{
delete
[]
net_server_read
;
ServerEchoEvent
(
bev
,
BEV_EVENT_ERROR
,
0
);
ServerEchoEvent
(
bev
,
BEV_EVENT_ERROR
,
0
);
return
;
return
;
}
}
if
(
len
<
packet_len
+
2
)
if
(
len
<
packet_len
+
2
)
return
;
break
;
if
(
packet_len
<
1
)
int
read_len
=
evbuffer_remove
(
input
,
net_server_read
,
packet_len
+
2
);
return
;
read_len
=
evbuffer_remove
(
input
,
net_server_read
,
packet_len
+
2
);
if
(
read_len
>=
3
)
if
(
read_len
>=
3
)
HandleCTOSPacket
(
&
users
[
bev
],
&
net_server_read
[
2
],
read_len
-
2
);
HandleCTOSPacket
(
&
users
[
bev
],
&
net_server_read
[
2
],
read_len
-
2
);
len
-=
packet_len
+
2
;
len
-=
packet_len
+
2
;
}
}
delete
[]
net_server_read
;
}
}
void
NetServer
::
ServerEchoEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
void
NetServer
::
ServerEchoEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
if
(
events
&
(
BEV_EVENT_EOF
|
BEV_EVENT_ERROR
))
{
if
(
events
&
(
BEV_EVENT_EOF
|
BEV_EVENT_ERROR
))
{
...
@@ -336,7 +334,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
...
@@ -336,7 +334,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
return
;
return
;
CTOS_PlayerInfo
packet
;
CTOS_PlayerInfo
packet
;
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
const
auto
*
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
CopyWStr
(
pkt
->
name
,
dp
->
name
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
name
,
dp
->
name
,
20
);
break
;
break
;
}
}
...
@@ -358,10 +357,10 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
...
@@ -358,10 +357,10 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
duel_mode
=
new
TagDuel
();
duel_mode
=
new
TagDuel
();
duel_mode
->
etimer
=
event_new
(
net_evbase
,
0
,
EV_TIMEOUT
|
EV_PERSIST
,
TagDuel
::
TagTimer
,
duel_mode
);
duel_mode
->
etimer
=
event_new
(
net_evbase
,
0
,
EV_TIMEOUT
|
EV_PERSIST
,
TagDuel
::
TagTimer
,
duel_mode
);
}
}
if
(
pkt
->
info
.
rule
>
5
)
if
(
pkt
->
info
.
rule
>
CURRENT_RULE
)
pkt
->
info
.
rule
=
5
;
pkt
->
info
.
rule
=
CURRENT_RULE
;
if
(
pkt
->
info
.
mode
>
2
)
if
(
pkt
->
info
.
mode
>
MODE_TAG
)
pkt
->
info
.
mode
=
0
;
pkt
->
info
.
mode
=
MODE_SINGLE
;
unsigned
int
hash
=
1
;
unsigned
int
hash
=
1
;
for
(
auto
lfit
=
deckManager
.
_lfList
.
begin
();
lfit
!=
deckManager
.
_lfList
.
end
();
++
lfit
)
{
for
(
auto
lfit
=
deckManager
.
_lfList
.
begin
();
lfit
!=
deckManager
.
_lfList
.
end
();
++
lfit
)
{
if
(
pkt
->
info
.
lflist
==
lfit
->
hash
)
{
if
(
pkt
->
info
.
lflist
==
lfit
->
hash
)
{
...
@@ -371,8 +370,9 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
...
@@ -371,8 +370,9 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
}
}
if
(
hash
==
1
)
if
(
hash
==
1
)
pkt
->
info
.
lflist
=
deckManager
.
_lfList
[
0
].
hash
;
pkt
->
info
.
lflist
=
deckManager
.
_lfList
[
0
].
hash
;
std
::
memcpy
(
pdata
,
&
packet
,
sizeof
packet
);
duel_mode
->
host_info
=
pkt
->
info
;
duel_mode
->
host_info
=
pkt
->
info
;
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
CopyWStr
(
pkt
->
name
,
duel_mode
->
name
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
name
,
duel_mode
->
name
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
duel_mode
->
pass
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
duel_mode
->
pass
,
20
);
duel_mode
->
JoinGame
(
dp
,
0
,
true
);
duel_mode
->
JoinGame
(
dp
,
0
,
true
);
...
...
gframe/netserver.h
View file @
8eff9b60
...
@@ -20,8 +20,6 @@ private:
...
@@ -20,8 +20,6 @@ private:
static
event
*
broadcast_ev
;
static
event
*
broadcast_ev
;
static
evconnlistener
*
listener
;
static
evconnlistener
*
listener
;
static
DuelMode
*
duel_mode
;
static
DuelMode
*
duel_mode
;
static
unsigned
char
net_server_read
[
SIZE_NETWORK_BUFFER
];
static
int
read_len
;
static
unsigned
char
net_server_write
[
SIZE_NETWORK_BUFFER
];
static
unsigned
char
net_server_write
[
SIZE_NETWORK_BUFFER
];
static
unsigned
short
last_sent
;
static
unsigned
short
last_sent
;
...
@@ -59,15 +57,14 @@ public:
...
@@ -59,15 +57,14 @@ public:
template
<
typename
ST
>
template
<
typename
ST
>
static
void
SendPacketToPlayer
(
DuelPlayer
*
dp
,
unsigned
char
proto
,
ST
&
st
)
{
static
void
SendPacketToPlayer
(
DuelPlayer
*
dp
,
unsigned
char
proto
,
ST
&
st
)
{
auto
p
=
net_server_write
;
auto
p
=
net_server_write
;
int
blen
=
sizeof
(
ST
);
if
((
int
)
sizeof
(
ST
)
>
MAX_DATA_SIZE
)
if
(
blen
>
MAX_DATA_SIZE
)
return
;
return
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
sizeof
(
ST
)
));
BufferIO
::
WriteInt8
(
p
,
proto
);
BufferIO
::
WriteInt8
(
p
,
proto
);
std
::
memcpy
(
p
,
&
st
,
blen
);
std
::
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
last_sent
=
blen
+
3
;
last_sent
=
sizeof
(
ST
)
+
3
;
if
(
dp
)
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
blen
+
3
);
bufferevent_write
(
dp
->
bev
,
net_server_write
,
sizeof
(
ST
)
+
3
);
}
}
static
void
SendBufferToPlayer
(
DuelPlayer
*
dp
,
unsigned
char
proto
,
void
*
buffer
,
size_t
len
)
{
static
void
SendBufferToPlayer
(
DuelPlayer
*
dp
,
unsigned
char
proto
,
void
*
buffer
,
size_t
len
)
{
auto
p
=
net_server_write
;
auto
p
=
net_server_write
;
...
...
gframe/single_duel.cpp
View file @
8eff9b60
...
@@ -50,7 +50,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
...
@@ -50,7 +50,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
}
}
CTOS_JoinGame
packet
;
CTOS_JoinGame
packet
;
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
const
auto
*
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
if
(
pkt
->
version
!=
PRO_VERSION
)
{
if
(
pkt
->
version
!=
PRO_VERSION
)
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_VERERROR
;
scem
.
msg
=
ERRMSG_VERERROR
;
...
@@ -60,6 +60,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
...
@@ -60,6 +60,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
return
;
return
;
}
}
wchar_t
jpass
[
20
];
wchar_t
jpass
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
...
@@ -1785,7 +1786,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
...
@@ -1785,7 +1786,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return
0
;
return
0
;
}
}
void
SingleDuel
::
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
{
void
SingleDuel
::
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
{
byte
resb
[
SIZE_RETURN_VALUE
];
byte
resb
[
SIZE_RETURN_VALUE
]
{}
;
if
(
len
>
SIZE_RETURN_VALUE
)
if
(
len
>
SIZE_RETURN_VALUE
)
len
=
SIZE_RETURN_VALUE
;
len
=
SIZE_RETURN_VALUE
;
std
::
memcpy
(
resb
,
pdata
,
len
);
std
::
memcpy
(
resb
,
pdata
,
len
);
...
...
gframe/tag_duel.cpp
View file @
8eff9b60
...
@@ -54,7 +54,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
...
@@ -54,7 +54,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
}
}
CTOS_JoinGame
packet
;
CTOS_JoinGame
packet
;
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
const
auto
*
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
if
(
pkt
->
version
!=
PRO_VERSION
)
{
if
(
pkt
->
version
!=
PRO_VERSION
)
{
STOC_ErrorMsg
scem
;
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_VERERROR
;
scem
.
msg
=
ERRMSG_VERERROR
;
...
@@ -64,6 +64,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
...
@@ -64,6 +64,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
return
;
return
;
}
}
wchar_t
jpass
[
20
];
wchar_t
jpass
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
if
(
!
wcscmp
(
jpass
,
L"the Big Brother"
)
&&
!
cache_recorder
)
{
...
@@ -1888,7 +1889,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
...
@@ -1888,7 +1889,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return
0
;
return
0
;
}
}
void
TagDuel
::
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
{
void
TagDuel
::
GetResponse
(
DuelPlayer
*
dp
,
unsigned
char
*
pdata
,
unsigned
int
len
)
{
byte
resb
[
SIZE_RETURN_VALUE
];
byte
resb
[
SIZE_RETURN_VALUE
]
{}
;
if
(
len
>
SIZE_RETURN_VALUE
)
if
(
len
>
SIZE_RETURN_VALUE
)
len
=
SIZE_RETURN_VALUE
;
len
=
SIZE_RETURN_VALUE
;
std
::
memcpy
(
resb
,
pdata
,
len
);
std
::
memcpy
(
resb
,
pdata
,
len
);
...
...
lflist.conf
View file @
8eff9b60
#[2024.7][2024.4 TCG][2024.4][2024.1
TCG][2024.1][2023.10][2023.7][2023.4][2023.1][2022.10][2022.7][2022.4][2022.1][2021.10][2021.7][2021.4][2021.1][2020.10][2020.7][2020.4][2020.1][2019.10][2019.7][2019.4][2019.1][2018.10][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9
][2023.9 TCG][2023.6 TCG][2023.2 TCG][2022.12 TCG][2022.10 TCG][2022.5 TCG][2022.2 TCG][2021.10 TCG][2021.7 TCG][2021.3 TCG][2020.12 TCG][2020.9 TCG][2020.6 TCG][2020.4 TCG][2020.1 TCG][2019.10 TCG][2019.7 TCG][2019.4 TCG][2019.1 TCG][2018.12 TCG][2018.9 TCG][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
#[2024.7][2024.4 TCG][2024.4][2024.1
][2023.10][2023.7][2023.4][2023.1][2022.10][2022.7][2022.4][2022.1][2021.10][2021.7][2021.4][2021.1][2020.10][2020.7][2020.4][2020.1][2019.10][2019.7][2019.4][2019.1][2018.10][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2024.1 TCG
][2023.9 TCG][2023.6 TCG][2023.2 TCG][2022.12 TCG][2022.10 TCG][2022.5 TCG][2022.2 TCG][2021.10 TCG][2021.7 TCG][2021.3 TCG][2020.12 TCG][2020.9 TCG][2020.6 TCG][2020.4 TCG][2020.1 TCG][2019.10 TCG][2019.7 TCG][2019.4 TCG][2019.1 TCG][2018.12 TCG][2018.9 TCG][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
!
2024
.
7
!
2024
.
7
#forbidden
#forbidden
35059553
0
--カイザーコロシアム
95727991
0
--カタパルト・タートル
91869203
0
--アマゾネスの射手
91869203
0
--アマゾネスの射手
20663556
0
--イレカエル
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
44910027
0
--ヴィクトリー・ドラゴン
51858306
0
--エクリプス・ワイバーン
51858306
0
--エクリプス・ワイバーン
62242678
0
--琰魔竜王 レッド・デーモン・カラミティ
62242678
0
--琰魔竜王 レッド・デーモン・カラミティ
34945480
0
--外神アザトート
34945480
0
--外神アザトート
95727991
0
--カタパルト・タートル
08903700
0
--儀式魔人リリーサー
08903700
0
--儀式魔人リリーサー
11384280
0
--キャノン・ソルジャー
11384280
0
--キャノン・ソルジャー
17412721
0
--旧神ノーデン
17412721
0
--旧神ノーデン
...
@@ -60,6 +59,7 @@
...
@@ -60,6 +59,7 @@
41482598
0
--悪夢の蜃気楼
41482598
0
--悪夢の蜃気楼
44763025
0
--いたずら好きな双子悪魔
44763025
0
--いたずら好きな双子悪魔
17375316
0
--押収
17375316
0
--押収
35059553
0
--カイザーコロシアム
74191942
0
--苦渋の選択
74191942
0
--苦渋の選択
42829885
0
--強引な番兵
42829885
0
--強引な番兵
45986603
0
--強奪
45986603
0
--強奪
...
@@ -89,16 +89,11 @@
...
@@ -89,16 +89,11 @@
17178486
0
--ライフチェンジャー
17178486
0
--ライフチェンジャー
28566710
0
--ラストバトル!
28566710
0
--ラストバトル!
#limit
#limit
23516703
1
--サモンリミッター
30336082
1
--盃満ちる燦幻荘
75433814
1
--
No
.
40
ギミック・パペット-ヘブンズ・ストリングス
09674034
1
--スネークアイ・エクセル
29301450
1
--
S
:
P
リトルナイト
27552504
1
--永遠の淑女 ベアトリーチェ
07563579
1
--
Em
ヒグルミ
31178212
1
--マジェスペクター・ユニコーン
76794549
1
--アストログラフ・マジシャン
76794549
1
--アストログラフ・マジシャン
40177746
1
--イーバ
40177746
1
--イーバ
27552504
1
--永遠の淑女 ベアトリーチェ
29301450
1
--
S
:
P
リトルナイト
07563579
1
--
Em
ヒグルミ
17330916
1
--
EM
モンキーボード
17330916
1
--
EM
モンキーボード
68304193
1
--クシャトリラ・ユニコーン
68304193
1
--クシャトリラ・ユニコーン
12289247
1
--クロノグラフ・マジシャン
12289247
1
--クロノグラフ・マジシャン
...
@@ -110,6 +105,7 @@
...
@@ -110,6 +105,7 @@
78872731
1
--十二獣モルモラット
78872731
1
--十二獣モルモラット
06602300
1
--重爆撃禽 ボム・フェネクス
06602300
1
--重爆撃禽 ボム・フェネクス
63542003
1
--宿神像ケルドウ
63542003
1
--宿神像ケルドウ
09674034
1
--スネークアイ・エクセル
81275020
1
--
SR
ベイゴマックス
81275020
1
--
SR
ベイゴマックス
13533678
1
--スプライト・ジェット
13533678
1
--スプライト・ジェット
76145933
1
--スプライト・ブルー
76145933
1
--スプライト・ブルー
...
@@ -121,6 +117,7 @@
...
@@ -121,6 +117,7 @@
74078255
1
--ティアラメンツ・メイルゥ
74078255
1
--ティアラメンツ・メイルゥ
73956664
1
--ティアラメンツ・レイノハート
73956664
1
--ティアラメンツ・レイノハート
90953320
1
--
TG
ハイパー・ライブラリアン
90953320
1
--
TG
ハイパー・ライブラリアン
75433814
1
--
No
.
40
ギミック・パペット-ヘブンズ・ストリングス
90448279
1
--天霆號アーゼウス
90448279
1
--天霆號アーゼウス
17266660
1
--朱光の宣告者
17266660
1
--朱光の宣告者
06637331
1
--深淵の獣ドルイドヴルム
06637331
1
--深淵の獣ドルイドヴルム
...
@@ -133,6 +130,7 @@
...
@@ -133,6 +130,7 @@
70903634
1
--封印されし者の右腕
70903634
1
--封印されし者の右腕
94689206
1
--ブロックドラゴン
94689206
1
--ブロックドラゴン
24094258
1
--ヘビーメタルフォーゼ・エレクトラム
24094258
1
--ヘビーメタルフォーゼ・エレクトラム
31178212
1
--マジェスペクター・ユニコーン
04423206
1
--
M
.
X
-セイバー インヴォーカー
04423206
1
--
M
.
X
-セイバー インヴォーカー
33508719
1
--メタモルポット
33508719
1
--メタモルポット
92746535
1
--竜剣士ラスター
P
92746535
1
--竜剣士ラスター
P
...
@@ -145,6 +143,7 @@
...
@@ -145,6 +143,7 @@
84211599
1
--金満で謙虚な壺
84211599
1
--金満で謙虚な壺
23701465
1
--原初の種
23701465
1
--原初の種
80845034
1
--“罪宝狩りの悪魔”
80845034
1
--“罪宝狩りの悪魔”
30336082
1
--盃満ちる燦幻荘
83764718
1
--死者蘇生
83764718
1
--死者蘇生
46060017
1
--十二獣の会局
46060017
1
--十二獣の会局
15443125
1
--スプライト・スターター
15443125
1
--スプライト・スターター
...
@@ -167,22 +166,23 @@
...
@@ -167,22 +166,23 @@
27970830
1
--六武の門
27970830
1
--六武の門
02295440
1
--ワン・フォー・ワン
02295440
1
--ワン・フォー・ワン
90846359
1
--群雄割拠
90846359
1
--群雄割拠
23516703
1
--サモンリミッター
82732705
1
--スキルドレイン
82732705
1
--スキルドレイン
24207889
1
--センサー万別
24207889
1
--センサー万別
21076084
1
--トリックスター・リンカーネイション
21076084
1
--トリックスター・リンカーネイション
23002292
1
--レッド・リブート
23002292
1
--レッド・リブート
#semi limit
#semi limit
85106525
2
--篝火
02526224
2
--炎王神獣 キリン
78080961
2
--
SPYRAL
-ジーニアス
53804307
2
--焔征竜-ブラスター
53804307
2
--焔征竜-ブラスター
90411554
2
--巌征竜-レドックス
90411554
2
--巌征竜-レドックス
26400609
2
--瀑征竜-タイダル
78080961
2
--
SPYRAL
-ジーニアス
89399912
2
--嵐征竜-テンペスト
02526224
2
--炎王神獣 キリン
91800273
2
--ディメンション・アトラクター
91800273
2
--ディメンション・アトラクター
09411399
2
--
D
-
HERO
ディアボリックガイ
09411399
2
--
D
-
HERO
ディアボリックガイ
26400609
2
--瀑征竜-タイダル
89399912
2
--嵐征竜-テンペスト
65734501
2
--
R
-
ACE
エアホイスター
65734501
2
--
R
-
ACE
エアホイスター
35726888
2
--おろかな副葬
35726888
2
--おろかな副葬
85106525
2
--篝火
67723438
2
--緊急テレポート
67723438
2
--緊急テレポート
49238328
2
--強欲で金満な壺
49238328
2
--強欲で金満な壺
35261759
2
--強欲で貪欲な壺
35261759
2
--強欲で貪欲な壺
...
@@ -195,9 +195,10 @@
...
@@ -195,9 +195,10 @@
14532163
2
--ライトニング・ストーム
14532163
2
--ライトニング・ストーム
92714517
2
--ビッグウェルカム・ラビュリンス
92714517
2
--ビッグウェルカム・ラビュリンス
!
2024
.
4
TCG
!
2024
.
1
TCG
#forbidden
#forbidden
62320425
0
--
Agido
the
Ancient
Sentinel
62320425
0
--
Agido
the
Ancient
Sentinel
06728559
0
--
Archnemeses
Protos
20292186
0
--
Artifact
Scythe
20292186
0
--
Artifact
Scythe
73356503
0
--
Barrier
Statue
of
the
Stormwinds
73356503
0
--
Barrier
Statue
of
the
Stormwinds
09929398
0
--
Blackwing
-
Gofu
the
Vague
Shadow
09929398
0
--
Blackwing
-
Gofu
the
Vague
Shadow
...
@@ -215,6 +216,7 @@
...
@@ -215,6 +216,7 @@
25926710
0
--
Kelbek
the
Ancient
Vanguard
25926710
0
--
Kelbek
the
Ancient
Vanguard
57421866
0
--
Level
Eater
57421866
0
--
Level
Eater
34206604
0
--
Magical
Scientist
34206604
0
--
Magical
Scientist
31178212
0
--
Majespecter
Unicorn
-
Kirin
21377582
0
--
Master
Peace
,
the
True
Dracoslaying
King
21377582
0
--
Master
Peace
,
the
True
Dracoslaying
King
36521307
0
--
Mathmech
Circular
36521307
0
--
Mathmech
Circular
23434538
0
--
Maxx
"C"
23434538
0
--
Maxx
"C"
...
@@ -224,10 +226,12 @@
...
@@ -224,10 +226,12 @@
01357146
0
--
Ronintoadin
01357146
0
--
Ronintoadin
91258852
0
--
SPYRAL
Master
Plan
91258852
0
--
SPYRAL
Master
Plan
88071625
0
--
The
Tyrant
Neptune
88071625
0
--
The
Tyrant
Neptune
26400609
0
--
Tidal
,
Dragon
Ruler
of
Waterfalls
44910027
0
--
Victory
Dragon
44910027
0
--
Victory
Dragon
17412721
0
--
Elder
Entity
Norden
17412721
0
--
Elder
Entity
Norden
43387895
0
--
Supreme
King
Dragon
Starving
Venom
43387895
0
--
Supreme
King
Dragon
Starving
Venom
92731385
0
--
Tearlaments
Kitkallos
92731385
0
--
Tearlaments
Kitkallos
15291624
0
--
Thunder
Dragon
Colossus
50588353
0
--
Crystron
Halqifibrax
50588353
0
--
Crystron
Halqifibrax
98095162
0
--
Curious
,
the
Lightsworn
Dominion
98095162
0
--
Curious
,
the
Lightsworn
Dominion
59537380
0
--
Guardragon
Agarpain
59537380
0
--
Guardragon
Agarpain
...
@@ -237,7 +241,6 @@
...
@@ -237,7 +241,6 @@
39064822
0
--
Knightmare
Goblin
39064822
0
--
Knightmare
Goblin
03679218
0
--
Knightmare
Mermaid
03679218
0
--
Knightmare
Mermaid
85243784
0
--
Linkross
85243784
0
--
Linkross
41999284
0
--
Linkuriboh
44097050
0
--
Mecha
Phantom
Beast
Auroradon
44097050
0
--
Mecha
Phantom
Beast
Auroradon
25725326
0
--
Prank
-
Kids
Meow
-
Meow
-
Mu
25725326
0
--
Prank
-
Kids
Meow
-
Meow
-
Mu
70369116
0
--
Predaplant
Verte
Anaconda
70369116
0
--
Predaplant
Verte
Anaconda
...
@@ -247,8 +250,6 @@
...
@@ -247,8 +250,6 @@
33918636
0
--
Superheavy
Samurai
Scarecrow
33918636
0
--
Superheavy
Samurai
Scarecrow
22593417
0
--
Topologic
Gumblar
Dragon
22593417
0
--
Topologic
Gumblar
Dragon
83152482
0
--
Union
Carrier
83152482
0
--
Union
Carrier
84815190
0
--
Baronne
de
Fleur
27548199
0
--
Borreload
Savage
Dragon
03040496
0
--
Chaos
Ruler
,
the
Chaotic
Magical
Dragon
03040496
0
--
Chaos
Ruler
,
the
Chaotic
Magical
Dragon
63101919
0
--
Tempest
Magician
63101919
0
--
Tempest
Magician
48626373
0
--
Kashtira
Arise
-
Heart
48626373
0
--
Kashtira
Arise
-
Heart
...
@@ -268,6 +269,7 @@
...
@@ -268,6 +269,7 @@
07394770
0
--
Brilliant
Fusion
07394770
0
--
Brilliant
Fusion
69243953
0
--
Butterfly
Dagger
-
Elma
69243953
0
--
Butterfly
Dagger
-
Elma
57953380
0
--
Card
of
Safe
Return
57953380
0
--
Card
of
Safe
Return
67616300
0
--
Chicken
Game
60682203
0
--
Cold
Wave
60682203
0
--
Cold
Wave
17375316
0
--
Confiscation
17375316
0
--
Confiscation
44763025
0
--
Delinquent
Duo
44763025
0
--
Delinquent
Duo
...
@@ -298,7 +300,6 @@
...
@@ -298,7 +300,6 @@
93016201
0
--
Royal
Oppression
93016201
0
--
Royal
Oppression
57585212
0
--
Self
-
Destruct
Button
57585212
0
--
Self
-
Destruct
Button
03280747
0
--
Sixth
Sense
03280747
0
--
Sixth
Sense
23516703
0
--
Summon
Limit
64697231
0
--
Trap
Dustshoot
64697231
0
--
Trap
Dustshoot
80604091
0
--
Ultimate
Offering
80604091
0
--
Ultimate
Offering
05851097
0
--
Vanity
'
s
Emptiness
05851097
0
--
Vanity
'
s
Emptiness
...
@@ -307,7 +308,7 @@
...
@@ -307,7 +308,7 @@
44519536
1
--
Left
Leg
of
the
Forbidden
One
44519536
1
--
Left
Leg
of
the
Forbidden
One
70903634
1
--
Right
Arm
of
the
Forbidden
One
70903634
1
--
Right
Arm
of
the
Forbidden
One
08124921
1
--
Right
Leg
of
the
Forbidden
One
08124921
1
--
Right
Leg
of
the
Forbidden
One
06728559
1
--
Archnemeses
Protos
28985331
1
--
Armageddon
Knight
76794549
1
--
Astrograph
Sorcerer
76794549
1
--
Astrograph
Sorcerer
61901281
1
--
Black
Dragon
Collapserpent
61901281
1
--
Black
Dragon
Collapserpent
53804307
1
--
Blaster
,
Dragon
Ruler
of
Infernos
53804307
1
--
Blaster
,
Dragon
Ruler
of
Infernos
...
@@ -319,10 +320,10 @@
...
@@ -319,10 +320,10 @@
33396948
1
--
Exodia
the
Forbidden
One
33396948
1
--
Exodia
the
Forbidden
One
63542003
1
--
Keldo
the
Sacred
Protector
63542003
1
--
Keldo
the
Sacred
Protector
83190280
1
--
Lunalight
Tiger
83190280
1
--
Lunalight
Tiger
31178212
1
--
Majespecter
Unicorn
-
Kirin
38572779
1
--
Miscellaneousaurus
38572779
1
--
Miscellaneousaurus
33508719
1
--
Morphing
Jar
33508719
1
--
Morphing
Jar
99937011
1
--
Mudora
the
Sword
Oracle
99937011
1
--
Mudora
the
Sword
Oracle
57835716
1
--
Orcust
Harp
Horror
17330916
1
--
Performapal
Monkeyboard
17330916
1
--
Performapal
Monkeyboard
12958919
1
--
Phantom
Skyblaster
12958919
1
--
Phantom
Skyblaster
38814750
1
--
PSY
-
Framegear
Gamma
38814750
1
--
PSY
-
Framegear
Gamma
...
@@ -334,12 +335,10 @@
...
@@ -334,12 +335,10 @@
74078255
1
--
Tearlaments
Merrli
74078255
1
--
Tearlaments
Merrli
00572850
1
--
Tearlaments
Scheiren
00572850
1
--
Tearlaments
Scheiren
89399912
1
--
Tempest
,
Dragon
Ruler
of
Storms
89399912
1
--
Tempest
,
Dragon
Ruler
of
Storms
26400609
1
--
Tidal
,
Dragon
Ruler
of
Waterfalls
41165831
1
--
Unchained
Soul
of
Sharvara
41165831
1
--
Unchained
Soul
of
Sharvara
99234526
1
--
White
Dragon
Wyverburster
99234526
1
--
White
Dragon
Wyverburster
78872731
1
--
Zoodiac
Ratpier
78872731
1
--
Zoodiac
Ratpier
39512984
1
--
Gem
-
Knight
Master
Diamond
39512984
1
--
Gem
-
Knight
Master
Diamond
15291624
1
--
Thunder
Dragon
Colossus
73539069
1
--
Striker
Dragon
73539069
1
--
Striker
Dragon
93896655
1
--
Sunavalon
Dryas
93896655
1
--
Sunavalon
Dryas
65563871
1
--
Sunvine
Healer
65563871
1
--
Sunvine
Healer
...
@@ -356,7 +355,6 @@
...
@@ -356,7 +355,6 @@
91623717
1
--
Chain
Strike
91623717
1
--
Chain
Strike
04031928
1
--
Change
of
Heart
04031928
1
--
Change
of
Heart
99266988
1
--
Chaos
Space
99266988
1
--
Chaos
Space
67616300
1
--
Chicken
Game
15854426
1
--
Divine
Wind
of
Mist
Valley
15854426
1
--
Divine
Wind
of
Mist
Valley
13035077
1
--
Dragonic
Diagram
13035077
1
--
Dragonic
Diagram
95308449
1
--
Final
Countdown
95308449
1
--
Final
Countdown
...
@@ -372,6 +370,7 @@
...
@@ -372,6 +370,7 @@
83764718
1
--
Monster
Reborn
83764718
1
--
Monster
Reborn
33782437
1
--
One
Day
of
Peace
33782437
1
--
One
Day
of
Peace
02295440
1
--
One
for
One
02295440
1
--
One
for
One
55584558
1
--
Purrely
Delicious
Memory
58577036
1
--
Reasoning
58577036
1
--
Reasoning
32807846
1
--
Reinforcement
of
the
Army
32807846
1
--
Reinforcement
of
the
Army
24940422
1
--
Sekka
'
s
Light
24940422
1
--
Sekka
'
s
Light
...
@@ -380,7 +379,6 @@
...
@@ -380,7 +379,6 @@
71344451
1
--
Slash
Draw
71344451
1
--
Slash
Draw
45986603
1
--
Snatch
Steal
45986603
1
--
Snatch
Steal
73628505
1
--
Terraforming
73628505
1
--
Terraforming
58921041
1
--
Anti
-
Spell
Fragrance
53334471
1
--
Gozen
Match
53334471
1
--
Gozen
Match
32723153
1
--
Magical
Explosion
32723153
1
--
Magical
Explosion
03734202
1
--
Naturia
Sacred
Tree
03734202
1
--
Naturia
Sacred
Tree
...
@@ -388,12 +386,13 @@
...
@@ -388,12 +386,13 @@
24207889
1
--
There
Can
Be
Only
One
24207889
1
--
There
Can
Be
Only
One
35316708
1
--
Time
Seal
35316708
1
--
Time
Seal
#semi limit
#semi limit
28985331
2
--
Armageddon
Knight
09411399
2
--
Destiny
HERO
-
Malicious
82385847
2
--
Dinowrestler
Pankratops
82385847
2
--
Dinowrestler
Pankratops
81275020
2
--
Speedroid
Terrortop
14532163
2
--
Lightning
Storm
14532163
2
--
Lightning
Storm
55584558
2
--
Purrely
Delicious
Memory
21347668
2
--
Purrely
Sleepy
Memory
21347668
2
--
Purrely
Sleepy
Memory
92107604
2
--
Runick
Fountain
92107604
2
--
Runick
Fountain
63166095
2
--
Sky
Striker
Mobilize
-
Engage
!
!
2024
.
4
!
2024
.
4
#forbidden
#forbidden
...
@@ -590,205 +589,6 @@
...
@@ -590,205 +589,6 @@
14532163
2
--ライトニング・ストーム
14532163
2
--ライトニング・ストーム
92714517
2
--ビッグウェルカム・ラビュリンス
92714517
2
--ビッグウェルカム・ラビュリンス
!
2024
.
1
TCG
#forbidden
62320425
0
--
Agido
the
Ancient
Sentinel
06728559
0
--
Archnemeses
Protos
20292186
0
--
Artifact
Scythe
73356503
0
--
Barrier
Statue
of
the
Stormwinds
09929398
0
--
Blackwing
-
Gofu
the
Vague
Shadow
94689206
0
--
Block
Dragon
69015963
0
--
Cyber
-
Stein
15341821
0
--
Dandylion
08903700
0
--
Djinn
Releaser
of
Rituals
51858306
0
--
Eclipse
Wyvern
40177746
0
--
Eva
55623480
0
--
Fairy
Tail
-
Snow
78706415
0
--
Fiber
Jar
93369354
0
--
Fishborg
Blaster
67441435
0
--
Glow
-
Up
Bulb
75732622
0
--
Grinder
Golem
25926710
0
--
Kelbek
the
Ancient
Vanguard
57421866
0
--
Level
Eater
34206604
0
--
Magical
Scientist
31178212
0
--
Majespecter
Unicorn
-
Kirin
21377582
0
--
Master
Peace
,
the
True
Dracoslaying
King
36521307
0
--
Mathmech
Circular
23434538
0
--
Maxx
"C"
96782886
0
--
Mind
Master
07563579
0
--
Performage
Plushfire
23558733
0
--
Phoenixian
Cluster
Amaryllis
01357146
0
--
Ronintoadin
91258852
0
--
SPYRAL
Master
Plan
88071625
0
--
The
Tyrant
Neptune
26400609
0
--
Tidal
,
Dragon
Ruler
of
Waterfalls
44910027
0
--
Victory
Dragon
17412721
0
--
Elder
Entity
Norden
43387895
0
--
Supreme
King
Dragon
Starving
Venom
92731385
0
--
Tearlaments
Kitkallos
15291624
0
--
Thunder
Dragon
Colossus
50588353
0
--
Crystron
Halqifibrax
98095162
0
--
Curious
,
the
Lightsworn
Dominion
59537380
0
--
Guardragon
Agarpain
86148577
0
--
Guardragon
Elpy
24094258
0
--
Heavymetalfoes
Electrumite
59934749
0
--
Isolde
,
Two
Tales
of
the
Noble
Knights
39064822
0
--
Knightmare
Goblin
03679218
0
--
Knightmare
Mermaid
85243784
0
--
Linkross
44097050
0
--
Mecha
Phantom
Beast
Auroradon
25725326
0
--
Prank
-
Kids
Meow
-
Meow
-
Mu
70369116
0
--
Predaplant
Verte
Anaconda
72330894
0
--
Simorgh
,
Bird
of
Sovereignty
27381364
0
--
Spright
Elf
61665245
0
--
Summon
Sorceress
33918636
0
--
Superheavy
Samurai
Scarecrow
22593417
0
--
Topologic
Gumblar
Dragon
83152482
0
--
Union
Carrier
03040496
0
--
Chaos
Ruler
,
the
Chaotic
Magical
Dragon
63101919
0
--
Tempest
Magician
48626373
0
--
Kashtira
Arise
-
Heart
34086406
0
--
Lavalval
Chain
04423206
0
--
M
-
X
-
Saber
Invoker
54719828
0
--
Number
16
:
Shock
Master
10389142
0
--
Number
42
:
Galaxy
Tomahawk
63504681
0
--
Number
86
:
Heroic
Champion
-
Rhongomyniad
95474755
0
--
Number
89
:
Diablosis
the
Mind
Hacker
58820923
0
--
Number
95
:
Galaxy
-
Eyes
Dark
Matter
Dragon
52653092
0
--
Number
S0
:
Utopic
ZEXAL
34945480
0
--
Outer
Entity
Azathot
88581108
0
--
True
King
of
All
Calamities
81122844
0
--
Wind
-
Up
Carrier
Zenmaity
85115440
0
--
Zoodiac
Broadbull
48905153
0
--
Zoodiac
Drident
07394770
0
--
Brilliant
Fusion
69243953
0
--
Butterfly
Dagger
-
Elma
57953380
0
--
Card
of
Safe
Return
67616300
0
--
Chicken
Game
60682203
0
--
Cold
Wave
17375316
0
--
Confiscation
44763025
0
--
Delinquent
Duo
23557835
0
--
Dimension
Fusion
42703248
0
--
Giant
Trunade
79571449
0
--
Graceful
Charity
19613556
0
--
Heavy
Storm
35059553
0
--
Kaiser
Colosseum
85602018
0
--
Last
Will
34906152
0
--
Mass
Driver
46411259
0
--
Metamorphosis
41482598
0
--
Mirage
of
Nightmare
76375976
0
--
Mystic
Mine
74191942
0
--
Painful
Choice
55144522
0
--
Pot
of
Greed
70828912
0
--
Premature
Burial
63789924
0
--
Smoke
Grenade
of
the
Thief
54447022
0
--
Soul
Charge
11110587
0
--
That
Grass
Looks
Greener
42829885
0
--
The
Forceful
Sentry
46060017
0
--
Zoodiac
Barrage
43262273
0
--
Appointer
of
the
Red
Lotus
01041278
0
--
Branded
Expulsion
61740673
0
--
Imperial
Order
28566710
0
--
Last
Turn
23002292
0
--
Red
Reboot
27174286
0
--
Return
from
the
Different
Dimension
93016201
0
--
Royal
Oppression
57585212
0
--
Self
-
Destruct
Button
03280747
0
--
Sixth
Sense
64697231
0
--
Trap
Dustshoot
80604091
0
--
Ultimate
Offering
05851097
0
--
Vanity
'
s
Emptiness
#limit
07902349
1
--
Left
Arm
of
the
Forbidden
One
44519536
1
--
Left
Leg
of
the
Forbidden
One
70903634
1
--
Right
Arm
of
the
Forbidden
One
08124921
1
--
Right
Leg
of
the
Forbidden
One
28985331
1
--
Armageddon
Knight
76794549
1
--
Astrograph
Sorcerer
61901281
1
--
Black
Dragon
Collapserpent
53804307
1
--
Blaster
,
Dragon
Ruler
of
Infernos
33854624
1
--
Bystial
Magnamhut
34124316
1
--
Cyber
Jar
43694650
1
--
Danger
!?
Jackalope
?
99745551
1
--
Danger
!?
Tsuchinoko
?
14536035
1
--
Dark
Grepher
33396948
1
--
Exodia
the
Forbidden
One
63542003
1
--
Keldo
the
Sacred
Protector
83190280
1
--
Lunalight
Tiger
38572779
1
--
Miscellaneousaurus
33508719
1
--
Morphing
Jar
99937011
1
--
Mudora
the
Sword
Oracle
57835716
1
--
Orcust
Harp
Horror
17330916
1
--
Performapal
Monkeyboard
12958919
1
--
Phantom
Skyblaster
38814750
1
--
PSY
-
Framegear
Gamma
26118970
1
--
Red
Rose
Dragon
90411554
1
--
Redox
,
Dragon
Ruler
of
Boulders
65734501
1
--
Rescue
-
ACE
Air
Lifter
20663556
1
--
Substitoad
37961969
1
--
Tearlaments
Havnis
74078255
1
--
Tearlaments
Merrli
00572850
1
--
Tearlaments
Scheiren
89399912
1
--
Tempest
,
Dragon
Ruler
of
Storms
41165831
1
--
Unchained
Soul
of
Sharvara
99234526
1
--
White
Dragon
Wyverburster
78872731
1
--
Zoodiac
Ratpier
39512984
1
--
Gem
-
Knight
Master
Diamond
73539069
1
--
Striker
Dragon
93896655
1
--
Sunavalon
Dryas
65563871
1
--
Sunvine
Healer
25862681
1
--
Ancient
Fairy
Dragon
65536818
1
--
Denglong
,
First
of
the
Yang
Zing
94677445
1
--
Ib
the
World
Chalice
Justiciar
74586817
1
--
PSY
-
Framelord
Omega
90953320
1
--
T
.
G
.
Hyper
Librarian
27552504
1
--
Beatrice
,
Lady
of
the
Eternal
00581014
1
--
Daigusto
Emeral
24224830
1
--
Called
by
the
Grave
72892473
1
--
Card
Destruction
59750328
1
--
Card
of
Demise
91623717
1
--
Chain
Strike
04031928
1
--
Change
of
Heart
99266988
1
--
Chaos
Space
15854426
1
--
Divine
Wind
of
Mist
Valley
13035077
1
--
Dragonic
Diagram
95308449
1
--
Final
Countdown
81439173
1
--
Foolish
Burial
27970830
1
--
Gateway
of
the
Six
75500286
1
--
Gold
Sarcophagus
18144506
1
--
Harpie
'
s
Feather
Duster
66957584
1
--
Infernity
Launcher
01845204
1
--
Instant
Fusion
93946239
1
--
Into
the
Void
71650854
1
--
Magical
Mid
-
Breaker
Field
43040603
1
--
Monster
Gate
83764718
1
--
Monster
Reborn
33782437
1
--
One
Day
of
Peace
02295440
1
--
One
for
One
55584558
1
--
Purrely
Delicious
Memory
58577036
1
--
Reasoning
32807846
1
--
Reinforcement
of
the
Army
24940422
1
--
Sekka
'
s
Light
73468603
1
--
Set
Rotation
52340444
1
--
Sky
Striker
Mecha
-
Hornet
Drones
71344451
1
--
Slash
Draw
45986603
1
--
Snatch
Steal
73628505
1
--
Terraforming
53334471
1
--
Gozen
Match
32723153
1
--
Magical
Explosion
03734202
1
--
Naturia
Sacred
Tree
90846359
1
--
Rivalry
of
Warlords
24207889
1
--
There
Can
Be
Only
One
35316708
1
--
Time
Seal
#semi limit
09411399
2
--
Destiny
HERO
-
Malicious
82385847
2
--
Dinowrestler
Pankratops
81275020
2
--
Speedroid
Terrortop
14532163
2
--
Lightning
Storm
21347668
2
--
Purrely
Sleepy
Memory
92107604
2
--
Runick
Fountain
63166095
2
--
Sky
Striker
Mobilize
-
Engage
!
!
2024
.
1
!
2024
.
1
#forbidden
#forbidden
91869203
0
--アマゾネスの射手
91869203
0
--アマゾネスの射手
...
...
strings.conf
View file @
8eff9b60
...
@@ -1222,3 +1222,5 @@
...
@@ -1222,3 +1222,5 @@
!
setname
0
x1b1
白森林 白き森
!
setname
0
x1b1
白森林 白き森
!
setname
0
x1b2
欢聚友伴 マルチャミー
!
setname
0
x1b2
欢聚友伴 マルチャミー
!
setname
0
x1b3
徽记 エンブレーマ
!
setname
0
x1b3
徽记 エンブレーマ
!
setname
0
x1b4
时空 タキオン
!
setname
0
x1b5
蓝泪 青い涙
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