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
wind2009
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
Expand all
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
This diff is collapsed.
Click to expand it.
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