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
baichixing
ygopro
Commits
d50cf377
Commit
d50cf377
authored
Jun 28, 2024
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master'
parents
967bfd6a
82542f13
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
354 additions
and
155 deletions
+354
-155
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
+213
-17
premake/gframe/ygopro.rc
premake/gframe/ygopro.rc
+27
-27
strings.conf
strings.conf
+2
-0
system.conf
system.conf
+55
-55
No files found.
gframe/bufferio.h
View file @
d50cf377
...
...
@@ -153,6 +153,10 @@ public:
static
int
DecodeUTF8
(
const
char
*
src
,
wchar_t
(
&
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
)
{
unsigned
int
ret
=
0
;
while
(
*
pstr
>=
L'0'
&&
*
pstr
<=
L'9'
)
{
...
...
gframe/config.h
View file @
d50cf377
...
...
@@ -31,7 +31,6 @@
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <locale.h>
#define SD_BOTH 2
#define SOCKET int
...
...
gframe/deck_con.cpp
View file @
d50cf377
...
...
@@ -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
))
return
false
;
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
)
return
false
;
if
(
seq
>=
0
&&
seq
<
(
int
)
container
.
size
())
...
...
gframe/deck_manager.cpp
View file @
d50cf377
...
...
@@ -173,7 +173,7 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
}
if
(
cd
.
type
&
TYPE_TOKEN
)
continue
;
if
(
deck
.
side
.
size
()
<
15
)
if
(
deck
.
side
.
size
()
<
SIDE_MAX_SIZE
)
deck
.
side
.
push_back
(
dataManager
.
GetCodePointer
(
code
));
}
return
errorcode
;
...
...
@@ -242,6 +242,8 @@ bool DeckManager::LoadDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUICom
bool
res
=
LoadDeck
(
filepath
,
is_packlist
);
if
(
res
&&
mainGame
->
is_building
)
mainGame
->
deckBuilder
.
RefreshPackListScroll
();
if
(
!
res
)
current_deck
.
clear
();
return
res
;
}
FILE
*
DeckManager
::
OpenDeckFile
(
const
wchar_t
*
file
,
const
char
*
mode
)
{
...
...
@@ -280,8 +282,8 @@ bool DeckManager::LoadDeck(const wchar_t* file, bool is_packlist) {
}
if
(
!
reader
)
return
false
;
size_t
size
=
reader
->
getSize
();
if
(
size
>=
0x20000
)
{
auto
size
=
reader
->
getSize
();
if
(
size
>=
(
int
)
sizeof
deckBuffer
)
{
reader
->
drop
();
return
false
;
}
...
...
@@ -296,7 +298,7 @@ bool DeckManager::LoadDeck(std::istringstream* deckStream, bool is_packlist) {
int
cardlist
[
300
];
bool
is_side
=
false
;
std
::
string
linebuf
;
while
(
std
::
getline
(
*
deckStream
,
linebuf
)
&&
ct
<
300
)
{
while
(
std
::
getline
(
*
deckStream
,
linebuf
,
'\n'
)
&&
ct
<
300
)
{
if
(
linebuf
[
0
]
==
'!'
)
{
is_side
=
true
;
continue
;
...
...
gframe/duelclient.cpp
View file @
d50cf377
...
...
@@ -19,8 +19,6 @@ unsigned char DuelClient::selftype = 0;
bool
DuelClient
::
is_host
=
false
;
event_base
*
DuelClient
::
client_base
=
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
];
bool
DuelClient
::
is_closing
=
false
;
bool
DuelClient
::
is_swapping
=
false
;
...
...
@@ -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_port
=
htons
(
port
);
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
);
if
(
bufferevent_socket_connect
(
client_bev
,
(
sockaddr
*
)
&
sin
,
sizeof
(
sin
))
<
0
)
{
bufferevent_free
(
client_bev
);
...
...
@@ -100,24 +99,23 @@ void DuelClient::StopClient(bool is_exiting) {
void
DuelClient
::
ClientRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
int
len
=
evbuffer_get_length
(
input
);
unsigned
short
packet_len
=
0
;
while
(
true
)
{
if
(
len
<
2
)
return
;
evbuffer_copyout
(
input
,
&
packet_len
,
2
);
unsigned
char
*
duel_client_read
=
new
unsigned
char
[
std
::
min
(
len
,
SIZE_NETWORK_BUFFER
)];
unsigned
short
packet_len
;
while
(
len
>=
2
)
{
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
if
(
packet_len
+
2
>
SIZE_NETWORK_BUFFER
)
{
delete
[]
duel_client_read
;
ClientEvent
(
bev
,
BEV_EVENT_ERROR
,
0
);
return
;
}
if
(
len
<
packet_len
+
2
)
return
;
if
(
packet_len
<
1
)
return
;
read_len
=
evbuffer_remove
(
input
,
duel_client_read
,
packet_len
+
2
);
if
(
len
<
packet_len
+
2
)
break
;
int
read_len
=
evbuffer_remove
(
input
,
duel_client_read
,
packet_len
+
2
);
if
(
read_len
>=
3
)
HandleSTOCPacketLan
(
&
duel_client_read
[
2
],
read_len
-
2
);
len
-=
packet_len
+
2
;
}
delete
[]
duel_client_read
;
}
void
DuelClient
::
ClientEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
if
(
events
&
BEV_EVENT_CONNECTED
)
{
...
...
@@ -823,10 +821,11 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
soundManager
.
PlaySoundEffect
(
SOUND_PLAYER_ENTER
);
STOC_HS_PlayerEnter
packet
;
std
::
memcpy
(
&
packet
,
pdata
,
STOC_HS_PlayerEnter_size
);
const
auto
*
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
if
(
pkt
->
pos
>
3
)
break
;
wchar_t
name
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
name
);
BufferIO
::
CopyWStr
(
pkt
->
name
,
name
,
20
);
if
(
mainGame
->
dInfo
.
isTag
)
{
if
(
pkt
->
pos
==
0
)
...
...
@@ -1515,7 +1514,7 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
wchar_t
ynbuf
[
256
];
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
));
}
else
if
(
desc
<
2048
)
{
}
else
if
(
desc
<
=
MAX_STRING_ID
)
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
desc
),
dataManager
.
GetName
(
code
));
}
else
{
myswprintf
(
textBuffer
,
dataManager
.
GetDesc
(
desc
),
dataManager
.
GetName
(
code
));
...
...
gframe/duelclient.h
View file @
d50cf377
...
...
@@ -21,8 +21,6 @@ private:
static
bool
is_host
;
static
event_base
*
client_base
;
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
bool
is_closing
;
static
bool
is_swapping
;
...
...
@@ -56,13 +54,12 @@ public:
template
<
typename
ST
>
static
void
SendPacketToServer
(
unsigned
char
proto
,
ST
&
st
)
{
auto
p
=
duel_client_write
;
int
blen
=
sizeof
(
ST
);
if
(
blen
>
MAX_DATA_SIZE
)
if
((
int
)
sizeof
(
ST
)
>
MAX_DATA_SIZE
)
return
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
sizeof
(
ST
)
));
BufferIO
::
WriteInt8
(
p
,
proto
);
std
::
memcpy
(
p
,
&
st
,
blen
);
bufferevent_write
(
client_bev
,
duel_client_write
,
blen
+
3
);
std
::
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
bufferevent_write
(
client_bev
,
duel_client_write
,
sizeof
(
ST
)
+
3
);
}
static
void
SendBufferToServer
(
unsigned
char
proto
,
void
*
buffer
,
size_t
len
)
{
auto
p
=
duel_client_write
;
...
...
gframe/gframe.cpp
View file @
d50cf377
...
...
@@ -2,6 +2,7 @@
#include "game.h"
#include "data_manager.h"
#include <event2/thread.h>
#include <locale.h>
#include <memory>
#ifdef __APPLE__
#import <CoreFoundation/CoreFoundation.h>
...
...
gframe/netserver.cpp
View file @
d50cf377
...
...
@@ -9,8 +9,6 @@ event_base* NetServer::net_evbase = 0;
event
*
NetServer
::
broadcast_ev
=
0
;
evconnlistener
*
NetServer
::
listener
=
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
short
NetServer
::
last_sent
=
0
;
...
...
@@ -109,6 +107,7 @@ void NetServer::ServerAccept(evconnlistener* listener, evutil_socket_t fd, socka
dp
.
type
=
0xff
;
dp
.
bev
=
bev
;
users
[
bev
]
=
dp
;
bufferevent_setwatermark
(
bev
,
EV_READ
,
3
,
0
);
bufferevent_setcb
(
bev
,
ServerEchoRead
,
NULL
,
ServerEchoEvent
,
NULL
);
bufferevent_enable
(
bev
,
EV_READ
);
}
...
...
@@ -123,24 +122,23 @@ void NetServer::ServerAcceptError(evconnlistener* listener, void* ctx) {
void
NetServer
::
ServerEchoRead
(
bufferevent
*
bev
,
void
*
ctx
)
{
evbuffer
*
input
=
bufferevent_get_input
(
bev
);
int
len
=
evbuffer_get_length
(
input
);
unsigned
short
packet_len
=
0
;
while
(
true
)
{
if
(
len
<
2
)
return
;
evbuffer_copyout
(
input
,
&
packet_len
,
2
);
unsigned
char
*
net_server_read
=
new
unsigned
char
[
std
::
min
(
len
,
SIZE_NETWORK_BUFFER
)];
unsigned
short
packet_len
;
while
(
len
>=
2
)
{
evbuffer_copyout
(
input
,
&
packet_len
,
sizeof
packet_len
);
if
(
packet_len
+
2
>
SIZE_NETWORK_BUFFER
)
{
delete
[]
net_server_read
;
ServerEchoEvent
(
bev
,
BEV_EVENT_ERROR
,
0
);
return
;
}
if
(
len
<
packet_len
+
2
)
return
;
if
(
packet_len
<
1
)
return
;
read_len
=
evbuffer_remove
(
input
,
net_server_read
,
packet_len
+
2
);
break
;
int
read_len
=
evbuffer_remove
(
input
,
net_server_read
,
packet_len
+
2
);
if
(
read_len
>=
3
)
HandleCTOSPacket
(
&
users
[
bev
],
&
net_server_read
[
2
],
read_len
-
2
);
len
-=
packet_len
+
2
;
}
delete
[]
net_server_read
;
}
void
NetServer
::
ServerEchoEvent
(
bufferevent
*
bev
,
short
events
,
void
*
ctx
)
{
if
(
events
&
(
BEV_EVENT_EOF
|
BEV_EVENT_ERROR
))
{
...
...
@@ -249,7 +247,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
return
;
CTOS_PlayerInfo
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
);
break
;
}
...
...
@@ -271,10 +270,10 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
duel_mode
=
new
TagDuel
();
duel_mode
->
etimer
=
event_new
(
net_evbase
,
0
,
EV_TIMEOUT
|
EV_PERSIST
,
TagDuel
::
TagTimer
,
duel_mode
);
}
if
(
pkt
->
info
.
rule
>
5
)
pkt
->
info
.
rule
=
5
;
if
(
pkt
->
info
.
mode
>
2
)
pkt
->
info
.
mode
=
0
;
if
(
pkt
->
info
.
rule
>
CURRENT_RULE
)
pkt
->
info
.
rule
=
CURRENT_RULE
;
if
(
pkt
->
info
.
mode
>
MODE_TAG
)
pkt
->
info
.
mode
=
MODE_SINGLE
;
unsigned
int
hash
=
1
;
for
(
auto
lfit
=
deckManager
.
_lfList
.
begin
();
lfit
!=
deckManager
.
_lfList
.
end
();
++
lfit
)
{
if
(
pkt
->
info
.
lflist
==
lfit
->
hash
)
{
...
...
@@ -284,8 +283,9 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
}
if
(
hash
==
1
)
pkt
->
info
.
lflist
=
deckManager
.
_lfList
[
0
].
hash
;
std
::
memcpy
(
pdata
,
&
packet
,
sizeof
packet
);
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
->
pass
,
duel_mode
->
pass
,
20
);
duel_mode
->
JoinGame
(
dp
,
0
,
true
);
...
...
gframe/netserver.h
View file @
d50cf377
...
...
@@ -18,8 +18,6 @@ private:
static
event
*
broadcast_ev
;
static
evconnlistener
*
listener
;
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
short
last_sent
;
...
...
@@ -50,15 +48,14 @@ public:
template
<
typename
ST
>
static
void
SendPacketToPlayer
(
DuelPlayer
*
dp
,
unsigned
char
proto
,
ST
&
st
)
{
auto
p
=
net_server_write
;
int
blen
=
sizeof
(
ST
);
if
(
blen
>
MAX_DATA_SIZE
)
if
((
int
)
sizeof
(
ST
)
>
MAX_DATA_SIZE
)
return
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
sizeof
(
ST
)
));
BufferIO
::
WriteInt8
(
p
,
proto
);
std
::
memcpy
(
p
,
&
st
,
blen
);
last_sent
=
blen
+
3
;
std
::
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
last_sent
=
sizeof
(
ST
)
+
3
;
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
)
{
auto
p
=
net_server_write
;
...
...
gframe/single_duel.cpp
View file @
d50cf377
...
...
@@ -34,7 +34,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
}
CTOS_JoinGame
packet
;
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
const
auto
*
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
if
(
pkt
->
version
!=
PRO_VERSION
)
{
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_VERERROR
;
...
...
@@ -44,6 +44,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
return
;
}
wchar_t
jpass
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
if
(
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
...
...
@@ -1417,7 +1418,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return
0
;
}
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
)
len
=
SIZE_RETURN_VALUE
;
std
::
memcpy
(
resb
,
pdata
,
len
);
...
...
gframe/tag_duel.cpp
View file @
d50cf377
...
...
@@ -38,7 +38,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
}
CTOS_JoinGame
packet
;
std
::
memcpy
(
&
packet
,
pdata
,
sizeof
packet
);
const
auto
*
pkt
=
&
packet
;
auto
pkt
=
&
packet
;
if
(
pkt
->
version
!=
PRO_VERSION
)
{
STOC_ErrorMsg
scem
;
scem
.
msg
=
ERRMSG_VERERROR
;
...
...
@@ -48,6 +48,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
return
;
}
wchar_t
jpass
[
20
];
BufferIO
::
NullTerminate
(
pkt
->
pass
);
BufferIO
::
CopyWStr
(
pkt
->
pass
,
jpass
,
20
);
if
(
wcscmp
(
jpass
,
pass
))
{
STOC_ErrorMsg
scem
;
...
...
@@ -1532,7 +1533,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return
0
;
}
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
)
len
=
SIZE_RETURN_VALUE
;
std
::
memcpy
(
resb
,
pdata
,
len
);
...
...
lflist.conf
View file @
d50cf377
#[2024.
4][2024.4 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][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
.
4
#[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
#forbidden
91869203
0
--アマゾネスの射手
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
51858306
0
--エクリプス・ワイバーン
07563579
0
--
Em
ヒグルミ
62242678
0
--琰魔竜王 レッド・デーモン・カラミティ
34945480
0
--外神アザトート
95727991
0
--カタパルト・タートル
08903700
0
--儀式魔人リリーサー
11384280
0
--キャノン・ソルジャー
17412721
0
--旧神ノーデン
...
...
@@ -46,7 +46,6 @@
23558733
0
--フェニキシアン・クラスター・アマリリス
09929398
0
--
BF
-朧影のゴウフウ
70369116
0
--捕食植物ヴェルテ・アナコンダ
31178212
0
--マジェスペクター・ユニコーン
63101919
0
--マジックテンペスター
34206604
0
--魔導サイエンティスト
14702066
0
--メガキャノン・ソルジャー
...
...
@@ -60,6 +59,7 @@
41482598
0
--悪夢の蜃気楼
44763025
0
--いたずら好きな双子悪魔
17375316
0
--押収
35059553
0
--カイザーコロシアム
74191942
0
--苦渋の選択
42829885
0
--強引な番兵
45986603
0
--強奪
...
...
@@ -91,11 +91,11 @@
#limit
76794549
1
--アストログラフ・マジシャン
40177746
1
--イーバ
53804307
1
--焔征竜-ブラスター
27552504
1
--永遠の淑女 ベアトリーチェ
29301450
1
--
S
:
P
リトルナイト
07563579
1
--
Em
ヒグルミ
17330916
1
--
EM
モンキーボード
90411554
1
--巌征竜-レドックス
68304193
1
--クシャトリラ・ユニコーン
67441435
1
--グローアップ・バルブ
12289247
1
--クロノグラフ・マジシャン
99937011
1
--剣神官ムドラ
38814750
1
--
PSY
フレームギア・γ
...
...
@@ -105,22 +105,21 @@
78872731
1
--十二獣モルモラット
06602300
1
--重爆撃禽 ボム・フェネクス
63542003
1
--宿神像ケルドウ
78080961
1
--
SPYRAL
-ジーニアス
09674034
1
--スネークアイ・エクセル
81275020
1
--
SR
ベイゴマックス
13533678
1
--スプライト・ジェット
76145933
1
--スプライト・ブルー
82385847
1
--ダイナレスラー・パンクラトプス
90361010
1
--超重武者装留イワトオシ
15291624
1
--超雷龍-サンダー・ドラゴン
04928565
1
--ティアラメンツ・クシャトリラ
00572850
1
--ティアラメンツ・シェイレーン
37961969
1
--ティアラメンツ・ハゥフニス
74078255
1
--ティアラメンツ・メイルゥ
73956664
1
--ティアラメンツ・レイノハート
90953320
1
--
TG
ハイパー・ライブラリアン
75433814
1
--
No
.
40
ギミック・パペット-ヘブンズ・ストリングス
90448279
1
--天霆號アーゼウス
17266660
1
--朱光の宣告者
26400609
1
--瀑征竜-タイダル
06637331
1
--深淵の獣ドルイドヴルム
72656408
1
--深淵の獣バルドレイク
33854624
1
--深淵の獣マグナムート
...
...
@@ -129,12 +128,11 @@
07902349
1
--封印されし者の左腕
08124921
1
--封印されし者の右足
70903634
1
--封印されし者の右腕
35272499
1
--捕食植物オフリス・スコーピオ
94689206
1
--ブロックドラゴン
24094258
1
--ヘビーメタルフォーゼ・エレクトラム
31178212
1
--マジェスペクター・ユニコーン
04423206
1
--
M
.
X
-セイバー インヴォーカー
33508719
1
--メタモルポット
89399912
1
--嵐征竜-テンペスト
92746535
1
--竜剣士ラスター
P
77103950
1
--壱世壊=ペルレイノ
33782437
1
--一時休戦
...
...
@@ -145,6 +143,7 @@
84211599
1
--金満で謙虚な壺
23701465
1
--原初の種
80845034
1
--“罪宝狩りの悪魔”
30336082
1
--盃満ちる燦幻荘
83764718
1
--死者蘇生
46060017
1
--十二獣の会局
15443125
1
--スプライト・スターター
...
...
@@ -167,21 +166,23 @@
27970830
1
--六武の門
02295440
1
--ワン・フォー・ワン
90846359
1
--群雄割拠
23516703
1
--サモンリミッター
82732705
1
--スキルドレイン
24207889
1
--センサー万別
35316708
1
--刻の封印
21076084
1
--トリックスター・リンカーネイション
23002292
1
--レッド・リブート
#semi limit
29301450
2
--
S
:
P
リトルナイト
02526224
2
--炎王神獣 キリン
09674034
2
--スネークアイ・エクセル
94677445
2
--星杯の神子イヴ
53804307
2
--焔征竜-ブラスター
90411554
2
--巌征竜-レドックス
78080961
2
--
SPYRAL
-ジーニアス
91800273
2
--ディメンション・アトラクター
09411399
2
--
D
-
HERO
ディアボリックガイ
26400609
2
--瀑征竜-タイダル
89399912
2
--嵐征竜-テンペスト
65734501
2
--
R
-
ACE
エアホイスター
35726888
2
--おろかな副葬
35059553
2
--カイザーコロシアム
85106525
2
--篝火
67723438
2
--緊急テレポート
49238328
2
--強欲で金満な壺
35261759
2
--強欲で貪欲な壺
...
...
@@ -394,6 +395,201 @@
21347668
2
--
Purrely
Sleepy
Memory
92107604
2
--
Runick
Fountain
!
2024
.
4
#forbidden
91869203
0
--アマゾネスの射手
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
51858306
0
--エクリプス・ワイバーン
07563579
0
--
Em
ヒグルミ
62242678
0
--琰魔竜王 レッド・デーモン・カラミティ
34945480
0
--外神アザトート
08903700
0
--儀式魔人リリーサー
11384280
0
--キャノン・ソルジャー
17412721
0
--旧神ノーデン
32909498
0
--クシャトリラ・フェンリル
50588353
0
--水晶機巧-ハリファイバー
62320425
0
--古衛兵アギド
25926710
0
--古尖兵ケルベク
03040496
0
--混沌魔龍 カオス・ルーラー
34124316
0
--サイバーポッド
02563463
0
--流離のグリフォンライダー
88071625
0
--
The
tyrant
NEPTUNE
52653092
0
--
SNo
.
0
ホープ・ゼアル
48905153
0
--十二獣ドランシア
85115440
0
--十二獣ブルホーン
59537380
0
--守護竜アガーペイン
86148577
0
--守護竜エルピィ
88581108
0
--真竜皇
V
.
F
.
D
.
21377582
0
--真竜剣皇マスター
P
27381364
0
--スプライト・エルフ
16923472
0
--ゼンマイハンター
15341821
0
--ダンディライオン
77679716
0
--超重武者装留ブレイク・アーマー
37818794
0
--超魔導竜騎士-ドラグーン・オブ・レッドアイズ
92731385
0
--ティアラメンツ・キトカロス
69015963
0
--デビル・フランケン
79875176
0
--トゥーン・キャノン・ソルジャー
75732622
0
--トーチ・ゴーレム
22593417
0
--トポロジック・ガンブラー・ドラゴン
39064822
0
--トロイメア・ゴブリン
03679218
0
--トロイメア・マーメイド
54719828
0
--
No
.
16
色の支配者ショック・ルーラー
63504681
0
--
No
.
86
H
-
C
ロンゴミアント
58820923
0
--
No
.
95
ギャラクシーアイズ・ダークマター・ドラゴン
78706415
0
--ファイバーポッド
93369354
0
--フィッシュボーグ-ガンナー
23558733
0
--フェニキシアン・クラスター・アマリリス
09929398
0
--
BF
-朧影のゴウフウ
70369116
0
--捕食植物ヴェルテ・アナコンダ
31178212
0
--マジェスペクター・ユニコーン
63101919
0
--マジックテンペスター
34206604
0
--魔導サイエンティスト
14702066
0
--メガキャノン・ソルジャー
96782886
0
--メンタルマスター
90809975
0
--餅カエル
83152482
0
--ユニオン・キャリアー
34086406
0
--ラヴァルバル・チェイン
85243784
0
--リンクロス
73356503
0
--烈風の結界像
57421866
0
--レベル・スティーラー
41482598
0
--悪夢の蜃気楼
44763025
0
--いたずら好きな双子悪魔
17375316
0
--押収
74191942
0
--苦渋の選択
42829885
0
--強引な番兵
45986603
0
--強奪
55144522
0
--強欲な壺
23557835
0
--次元融合
31423101
0
--神剣-フェニックスブレード
57953380
0
--生還の宝札
54447022
0
--ソウル・チャージ
60682203
0
--大寒波
69243953
0
--蝶の短剣-エルマ
79571449
0
--天使の施し
63789924
0
--盗人の煙玉
70828912
0
--早すぎた埋葬
42703248
0
--ハリケーン
76375976
0
--魔鍾洞
34906152
0
--マスドライバー
46411259
0
--突然変異
85602018
0
--遺言状
27174286
0
--異次元からの帰還
05851097
0
--虚無空間
93016201
0
--王宮の弾圧
61740673
0
--王宮の勅命
03280747
0
--第六感
64697231
0
--ダスト・シュート
80604091
0
--血の代償
32723153
0
--マジカル・エクスプロージョン
17178486
0
--ライフチェンジャー
28566710
0
--ラストバトル!
#limit
76794549
1
--アストログラフ・マジシャン
40177746
1
--イーバ
53804307
1
--焔征竜-ブラスター
17330916
1
--
EM
モンキーボード
90411554
1
--巌征竜-レドックス
68304193
1
--クシャトリラ・ユニコーン
67441435
1
--グローアップ・バルブ
12289247
1
--クロノグラフ・マジシャン
99937011
1
--剣神官ムドラ
38814750
1
--
PSY
フレームギア・γ
74586817
1
--
PSY
フレームロード・Ω
32731036
1
--深淵の獣ルベリオン
36521307
1
--斬機サーキュラー
78872731
1
--十二獣モルモラット
06602300
1
--重爆撃禽 ボム・フェネクス
63542003
1
--宿神像ケルドウ
78080961
1
--
SPYRAL
-ジーニアス
81275020
1
--
SR
ベイゴマックス
13533678
1
--スプライト・ジェット
76145933
1
--スプライト・ブルー
82385847
1
--ダイナレスラー・パンクラトプス
90361010
1
--超重武者装留イワトオシ
15291624
1
--超雷龍-サンダー・ドラゴン
04928565
1
--ティアラメンツ・クシャトリラ
00572850
1
--ティアラメンツ・シェイレーン
37961969
1
--ティアラメンツ・ハゥフニス
74078255
1
--ティアラメンツ・メイルゥ
73956664
1
--ティアラメンツ・レイノハート
90953320
1
--
TG
ハイパー・ライブラリアン
90448279
1
--天霆號アーゼウス
17266660
1
--朱光の宣告者
26400609
1
--瀑征竜-タイダル
06637331
1
--深淵の獣ドルイドヴルム
72656408
1
--深淵の獣バルドレイク
33854624
1
--深淵の獣マグナムート
33396948
1
--封印されしエクゾディア
44519536
1
--封印されし者の左足
07902349
1
--封印されし者の左腕
08124921
1
--封印されし者の右足
70903634
1
--封印されし者の右腕
35272499
1
--捕食植物オフリス・スコーピオ
94689206
1
--ブロックドラゴン
24094258
1
--ヘビーメタルフォーゼ・エレクトラム
04423206
1
--
M
.
X
-セイバー インヴォーカー
33508719
1
--メタモルポット
89399912
1
--嵐征竜-テンペスト
92746535
1
--竜剣士ラスター
P
77103950
1
--壱世壊=ペルレイノ
33782437
1
--一時休戦
01845204
1
--簡易融合
61292243
1
--
EMERGENCY
!
19613556
1
--大嵐
81439173
1
--おろかな埋葬
84211599
1
--金満で謙虚な壺
23701465
1
--原初の種
80845034
1
--“罪宝狩りの悪魔”
83764718
1
--死者蘇生
46060017
1
--十二獣の会局
15443125
1
--スプライト・スターター
52340444
1
--閃刀機-ホーネットビット
32807846
1
--増援
72892473
1
--手札抹殺
73628505
1
--テラ・フォーミング
18144506
1
--ハーピィの羽根帚
21347668
1
--ピュアリィ・スリーピィメモリー
75500286
1
--封印の黄金櫃
52947044
1
--フュージョン・デステニー
07394770
1
--ブリリアント・フュージョン
73468603
1
--盆回し
93600443
1
--マスク・チェンジ・セカンド
65681983
1
--抹殺の指名者
71832012
1
--六世壊=パライゾス
36637374
1
--烙印開幕
44362883
1
--烙印融合
92107604
1
--神碑の泉
27970830
1
--六武の門
02295440
1
--ワン・フォー・ワン
90846359
1
--群雄割拠
82732705
1
--スキルドレイン
24207889
1
--センサー万別
35316708
1
--刻の封印
21076084
1
--トリックスター・リンカーネイション
23002292
1
--レッド・リブート
#semi limit
29301450
2
--
S
:
P
リトルナイト
02526224
2
--炎王神獣 キリン
09674034
2
--スネークアイ・エクセル
94677445
2
--星杯の神子イヴ
91800273
2
--ディメンション・アトラクター
09411399
2
--
D
-
HERO
ディアボリックガイ
65734501
2
--
R
-
ACE
エアホイスター
35726888
2
--おろかな副葬
35059553
2
--カイザーコロシアム
67723438
2
--緊急テレポート
49238328
2
--強欲で金満な壺
35261759
2
--強欲で貪欲な壺
12580477
2
--サンダー・ボルト
48130397
2
--超融合
11110587
2
--隣の芝刈り
24224830
2
--墓穴の指名者
55584558
2
--ピュアリィ・デリシャスメモリー
56700100
2
--ピュアリィ・マイフレンド
14532163
2
--ライトニング・ストーム
92714517
2
--ビッグウェルカム・ラビュリンス
!
2024
.
1
#forbidden
91869203
0
--アマゾネスの射手
...
...
premake/gframe/ygopro.rc
View file @
d50cf377
1 ICON "ygopro.ico"
1 VERSIONINFO
FILEVERSION 1, 0, 35, 3
PRODUCTVERSION 1, 0, 35, 3
FILEOS 0x4
FILETYPE 0x1
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "FileDescription", "YGOPro"
VALUE "InternalName", "YGOPro"
VALUE "LegalCopyright", "Copyright (C) 2022 Fluorohydride"
VALUE "OriginalFilename", "YGOPro.exe"
VALUE "ProductName", "YGOPro"
VALUE "FileVersion", "1.035.3"
VALUE "ProductVersion", "1.035.3"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
1 ICON "ygopro.ico"
1 VERSIONINFO
FILEVERSION 1, 0, 35, 3
PRODUCTVERSION 1, 0, 35, 3
FILEOS 0x4
FILETYPE 0x1
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "FileDescription", "YGOPro"
VALUE "InternalName", "YGOPro"
VALUE "LegalCopyright", "Copyright (C) 2022 Fluorohydride"
VALUE "OriginalFilename", "YGOPro.exe"
VALUE "ProductName", "YGOPro"
VALUE "FileVersion", "1.035.3"
VALUE "ProductVersion", "1.035.3"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
strings.conf
View file @
d50cf377
...
...
@@ -1222,3 +1222,5 @@
!
setname
0
x1b1
白森林 白き森
!
setname
0
x1b2
欢聚友伴 マルチャミー
!
setname
0
x1b3
徽记 エンブレーマ
!
setname
0
x1b4
时空 タキオン
!
setname
0
x1b5
蓝泪 青い涙
system.conf
View file @
d50cf377
#config file
#nickname & gamename should be less than 20 characters
use_d3d
=
0
use_image_scale
=
1
antialias
=
2
errorlog
=
3
nickname
=
Player
gamename
=
Game
lastcategory
= 未分类卡组
lastdeck
=
new
textfont
= ./
fonts
/
textFont
.
ttf
14
numfont
= ./
fonts
/
numFont
.
ttf
serverport
=
7911
lasthost
=
127
.
0
.
0
.
1
lastport
=
7911
automonsterpos
=
0
autospellpos
=
0
randompos
=
0
autochain
=
0
waitchain
=
0
showchain
=
0
mute_opponent
=
0
mute_spectators
=
0
use_lflist
=
1
default_lflist
=
0
default_rule
=
0
hide_setname
=
0
hide_hint_button
=
0
#control_mode = 0: Key A/S/D/R Chain Buttons. control_mode = 1: MouseLeft/MouseRight/NULL/F9 Without Chain Buttons
control_mode
=
0
draw_field_spell
=
1
separate_clear_button
=
1
#auto_search_limit >= 0: Start search automatically when the user enters N chars
auto_search_limit
= -
1
#search_multiple_keywords = 0: Disable. 1: Search mutiple keywords with separator " ". 2: with separator "+"
search_multiple_keywords
=
1
ignore_deck_changes
=
0
default_ot
=
1
enable_bot_mode
=
1
bot_deck_path
= ./
windbot
/
Decks
quick_animation
=
0
auto_save_replay
=
0
draw_single_chain
=
0
hide_player_name
=
0
prefer_expansion_script
=
0
window_maximized
=
0
window_width
=
1280
window_height
=
800
resize_popup_menu
=
0
enable_sound
=
1
enable_music
=
1
#Volume of sound and music, between 0 and 100
sound_volume
=
50
music_volume
=
50
music_mode
=
1
#config file
#nickname & gamename should be less than 20 characters
use_d3d
=
0
use_image_scale
=
1
antialias
=
2
errorlog
=
3
nickname
=
Player
gamename
=
Game
lastcategory
= 未分类卡组
lastdeck
=
new
textfont
= ./
fonts
/
textFont
.
ttf
14
numfont
= ./
fonts
/
numFont
.
ttf
serverport
=
7911
lasthost
=
127
.
0
.
0
.
1
lastport
=
7911
automonsterpos
=
0
autospellpos
=
0
randompos
=
0
autochain
=
0
waitchain
=
0
showchain
=
0
mute_opponent
=
0
mute_spectators
=
0
use_lflist
=
1
default_lflist
=
0
default_rule
=
0
hide_setname
=
0
hide_hint_button
=
0
#control_mode = 0: Key A/S/D/R Chain Buttons. control_mode = 1: MouseLeft/MouseRight/NULL/F9 Without Chain Buttons
control_mode
=
0
draw_field_spell
=
1
separate_clear_button
=
1
#auto_search_limit >= 0: Start search automatically when the user enters N chars
auto_search_limit
= -
1
#search_multiple_keywords = 0: Disable. 1: Search mutiple keywords with separator " ". 2: with separator "+"
search_multiple_keywords
=
1
ignore_deck_changes
=
0
default_ot
=
1
enable_bot_mode
=
1
bot_deck_path
= ./
windbot
/
Decks
quick_animation
=
0
auto_save_replay
=
0
draw_single_chain
=
0
hide_player_name
=
0
prefer_expansion_script
=
0
window_maximized
=
0
window_width
=
1280
window_height
=
800
resize_popup_menu
=
0
enable_sound
=
1
enable_music
=
1
#Volume of sound and music, between 0 and 100
sound_volume
=
50
music_volume
=
50
music_mode
=
1
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