Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YGOPRO-520DIY
ygopro
Commits
15800b08
Commit
15800b08
authored
Apr 18, 2024
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into server-develop
parents
1a8ea7eb
8dd95bcf
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
301 additions
and
79 deletions
+301
-79
cards.cdb
cards.cdb
+0
-0
gframe/CGUITTFont.cpp
gframe/CGUITTFont.cpp
+6
-6
gframe/data_manager.h
gframe/data_manager.h
+7
-7
gframe/drawing.cpp
gframe/drawing.cpp
+3
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+4
-4
gframe/duelclient.h
gframe/duelclient.h
+16
-8
gframe/game.cpp
gframe/game.cpp
+17
-17
gframe/netserver.cpp
gframe/netserver.cpp
+5
-5
gframe/netserver.h
gframe/netserver.h
+21
-13
gframe/network.h
gframe/network.h
+2
-0
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-1
lflist.conf
lflist.conf
+206
-11
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+11
-2
No files found.
cards.cdb
View file @
15800b08
No preview for this file type
gframe/CGUITTFont.cpp
View file @
15800b08
...
@@ -79,9 +79,9 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide
...
@@ -79,9 +79,9 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide
const
u32
image_pitch
=
image
->
getPitch
()
/
sizeof
(
u16
);
const
u32
image_pitch
=
image
->
getPitch
()
/
sizeof
(
u16
);
u16
*
image_data
=
(
u16
*
)
image
->
lock
();
u16
*
image_data
=
(
u16
*
)
image
->
lock
();
u8
*
glyph_data
=
bits
.
buffer
;
u8
*
glyph_data
=
bits
.
buffer
;
for
(
s32
y
=
0
;
y
<
bits
.
rows
;
++
y
)
{
for
(
s32
y
=
0
;
y
<
(
s32
)
bits
.
rows
;
++
y
)
{
u16
*
row
=
image_data
;
u16
*
row
=
image_data
;
for
(
s32
x
=
0
;
x
<
bits
.
width
;
++
x
)
{
for
(
s32
x
=
0
;
x
<
(
s32
)
bits
.
width
;
++
x
)
{
// Monochrome bitmaps store 8 pixels per byte. The left-most pixel is the bit 0x80.
// Monochrome bitmaps store 8 pixels per byte. The left-most pixel is the bit 0x80.
// So, we go through the data each bit at a time.
// So, we go through the data each bit at a time.
if
((
glyph_data
[
y
*
bits
.
pitch
+
(
x
/
8
)]
&
(
0x80
>>
(
x
%
8
)))
!=
0
)
if
((
glyph_data
[
y
*
bits
.
pitch
+
(
x
/
8
)]
&
(
0x80
>>
(
x
%
8
)))
!=
0
)
...
@@ -105,9 +105,9 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide
...
@@ -105,9 +105,9 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide
const
u32
image_pitch
=
image
->
getPitch
()
/
sizeof
(
u32
);
const
u32
image_pitch
=
image
->
getPitch
()
/
sizeof
(
u32
);
u32
*
image_data
=
(
u32
*
)
image
->
lock
();
u32
*
image_data
=
(
u32
*
)
image
->
lock
();
u8
*
glyph_data
=
bits
.
buffer
;
u8
*
glyph_data
=
bits
.
buffer
;
for
(
s32
y
=
0
;
y
<
bits
.
rows
;
++
y
)
{
for
(
s32
y
=
0
;
y
<
(
s32
)
bits
.
rows
;
++
y
)
{
u8
*
row
=
glyph_data
;
u8
*
row
=
glyph_data
;
for
(
s32
x
=
0
;
x
<
bits
.
width
;
++
x
)
{
for
(
s32
x
=
0
;
x
<
(
s32
)
bits
.
width
;
++
x
)
{
image_data
[
y
*
image_pitch
+
x
]
|=
static_cast
<
u32
>
(
255.0
f
*
(
static_cast
<
float
>
(
*
row
++
)
/
gray_count
))
<<
24
;
image_data
[
y
*
image_pitch
+
x
]
|=
static_cast
<
u32
>
(
255.0
f
*
(
static_cast
<
float
>
(
*
row
++
)
/
gray_count
))
<<
24
;
//data[y * image_pitch + x] |= ((u32)(*bitsdata++) << 24);
//data[y * image_pitch + x] |= ((u32)(*bitsdata++) << 24);
}
}
...
@@ -154,8 +154,8 @@ void SGUITTGlyph::preload(u32 char_index, FT_Face face, video::IVideoDriver* dri
...
@@ -154,8 +154,8 @@ void SGUITTGlyph::preload(u32 char_index, FT_Face face, video::IVideoDriver* dri
glyph_page
=
parent
->
getLastGlyphPageIndex
();
glyph_page
=
parent
->
getLastGlyphPageIndex
();
u32
texture_side_length
=
page
->
texture_size
.
Width
-
font_size
;
u32
texture_side_length
=
page
->
texture_size
.
Width
-
font_size
;
u32
margin
=
font_size
*
0.5
;
u32
margin
=
(
u32
)(
font_size
*
0.5
)
;
u32
sprite_size
=
font_size
*
1.5
;
u32
sprite_size
=
(
u32
)(
font_size
*
1.5
)
;
core
::
vector2di
page_position
(
core
::
vector2di
page_position
(
(
s32
)(
page
->
used_slots
%
(
s32
)(
texture_side_length
/
sprite_size
))
*
sprite_size
+
margin
,
(
s32
)(
page
->
used_slots
%
(
s32
)(
texture_side_length
/
sprite_size
))
*
sprite_size
+
margin
,
(
s32
)(
page
->
used_slots
/
(
s32
)(
texture_side_length
/
sprite_size
))
*
sprite_size
+
margin
(
s32
)(
page
->
used_slots
/
(
s32
)(
texture_side_length
/
sprite_size
))
*
sprite_size
+
margin
...
...
gframe/data_manager.h
View file @
15800b08
...
@@ -54,13 +54,13 @@ public:
...
@@ -54,13 +54,13 @@ public:
string_pointer
strings_begin
;
string_pointer
strings_begin
;
string_pointer
strings_end
;
string_pointer
strings_end
;
wchar_t
numStrings
[
301
][
4
];
wchar_t
numStrings
[
301
][
4
]
{}
;
wchar_t
numBuffer
[
6
];
wchar_t
numBuffer
[
6
]
{}
;
wchar_t
attBuffer
[
128
];
wchar_t
attBuffer
[
128
]
{}
;
wchar_t
racBuffer
[
128
];
wchar_t
racBuffer
[
128
]
{}
;
wchar_t
tpBuffer
[
128
];
wchar_t
tpBuffer
[
128
]
{}
;
wchar_t
scBuffer
[
128
];
wchar_t
scBuffer
[
128
]
{}
;
wchar_t
lmBuffer
[
32
];
wchar_t
lmBuffer
[
32
]
{}
;
static
byte
scriptBuffer
[
0x20000
];
static
byte
scriptBuffer
[
0x20000
];
static
const
wchar_t
*
unknown_string
;
static
const
wchar_t
*
unknown_string
;
...
...
gframe/drawing.cpp
View file @
15800b08
...
@@ -1274,10 +1274,10 @@ void Game::DrawDeckBd() {
...
@@ -1274,10 +1274,10 @@ void Game::DrawDeckBd() {
dx
=
436.0
f
/
(
lx
-
1
);
dx
=
436.0
f
/
(
lx
-
1
);
}
}
int
padding
=
scrPackCards
->
getPos
()
*
lx
;
int
padding
=
scrPackCards
->
getPos
()
*
lx
;
for
(
size_
t
i
=
0
;
i
<
mainsize
-
padding
&&
i
<
7
*
lx
;
++
i
)
{
for
(
in
t
i
=
0
;
i
<
mainsize
-
padding
&&
i
<
7
*
lx
;
++
i
)
{
size_
t
j
=
i
+
padding
;
in
t
j
=
i
+
padding
;
DrawThumb
(
deckManager
.
current_deck
.
main
[
j
],
position2di
(
314
+
(
i
%
lx
)
*
dx
,
164
+
(
i
/
lx
)
*
dy
),
deckBuilder
.
filterList
);
DrawThumb
(
deckManager
.
current_deck
.
main
[
j
],
position2di
(
314
+
(
i
%
lx
)
*
dx
,
164
+
(
i
/
lx
)
*
dy
),
deckBuilder
.
filterList
);
if
(
deckBuilder
.
hovered_pos
==
1
&&
deckBuilder
.
hovered_seq
==
(
int
)
j
)
if
(
deckBuilder
.
hovered_pos
==
1
&&
deckBuilder
.
hovered_seq
==
j
)
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
(
i
%
lx
)
*
dx
,
163
+
(
i
/
lx
)
*
dy
,
359
+
(
i
%
lx
)
*
dx
,
228
+
(
i
/
lx
)
*
dy
));
driver
->
draw2DRectangleOutline
(
Resize
(
313
+
(
i
%
lx
)
*
dx
,
163
+
(
i
/
lx
)
*
dy
,
359
+
(
i
%
lx
)
*
dx
,
228
+
(
i
/
lx
)
*
dy
));
}
}
if
(
!
deckBuilder
.
showing_pack
)
{
if
(
!
deckBuilder
.
showing_pack
)
{
...
...
gframe/duelclient.cpp
View file @
15800b08
...
@@ -22,8 +22,8 @@ unsigned char DuelClient::selftype = 0;
...
@@ -22,8 +22,8 @@ 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
[
0x2000
];
unsigned
char
DuelClient
::
duel_client_read
[
SIZE_NETWORK_BUFFER
];
unsigned
char
DuelClient
::
duel_client_write
[
0x2000
];
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
;
int
DuelClient
::
select_hint
=
0
;
int
DuelClient
::
select_hint
=
0
;
...
@@ -4300,8 +4300,8 @@ void DuelClient::BeginRefreshHost() {
...
@@ -4300,8 +4300,8 @@ void DuelClient::BeginRefreshHost() {
SOCKET
sSend
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
SOCKET
sSend
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
if
(
sSend
==
INVALID_SOCKET
)
if
(
sSend
==
INVALID_SOCKET
)
break
;
break
;
BOOL
opt
=
TRUE
;
int
opt
=
TRUE
;
setsockopt
(
sSend
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
(
BOOL
)
);
setsockopt
(
sSend
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
if
(
bind
(
sSend
,
(
sockaddr
*
)
&
local
,
sizeof
(
sockaddr
))
==
SOCKET_ERROR
)
{
if
(
bind
(
sSend
,
(
sockaddr
*
)
&
local
,
sizeof
(
sockaddr
))
==
SOCKET_ERROR
)
{
closesocket
(
sSend
);
closesocket
(
sSend
);
break
;
break
;
...
...
gframe/duelclient.h
View file @
15800b08
...
@@ -66,8 +66,8 @@ private:
...
@@ -66,8 +66,8 @@ 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
[
0x2000
];
static
unsigned
char
duel_client_read
[
SIZE_NETWORK_BUFFER
];
static
unsigned
char
duel_client_write
[
0x2000
];
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
;
static
int
select_hint
;
static
int
select_hint
;
...
@@ -111,23 +111,31 @@ public:
...
@@ -111,23 +111,31 @@ 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
;
BufferIO
::
WriteInt16
(
p
,
1
+
sizeof
(
ST
));
int
blen
=
sizeof
(
ST
);
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
memcpy
(
p
,
&
st
,
blen
);
#ifdef YGOPRO_MESSAGE_DEBUG
#ifdef YGOPRO_MESSAGE_DEBUG
printf
(
"CTOS: %d Length: %ld
\n
"
,
proto
,
sizeof
(
ST
));
printf
(
"CTOS: %d Length: %ld
\n
"
,
proto
,
sizeof
(
ST
));
#endif
#endif
bufferevent_write
(
client_bev
,
duel_client_write
,
sizeof
(
ST
)
+
3
);
bufferevent_write
(
client_bev
,
duel_client_write
,
blen
+
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
;
BufferIO
::
WriteInt16
(
p
,
1
+
len
);
int
blen
=
len
;
if
(
blen
<
0
)
return
;
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
buffer
,
len
);
memcpy
(
p
,
buffer
,
b
len
);
#ifdef YGOPRO_MESSAGE_DEBUG
#ifdef YGOPRO_MESSAGE_DEBUG
printf
(
"CTOS: %d Length: %ld
\n
"
,
proto
,
len
);
printf
(
"CTOS: %d Length: %ld
\n
"
,
proto
,
len
);
#endif
#endif
bufferevent_write
(
client_bev
,
duel_client_write
,
len
+
3
);
bufferevent_write
(
client_bev
,
duel_client_write
,
b
len
+
3
);
}
}
protected:
protected:
...
...
gframe/game.cpp
View file @
15800b08
...
@@ -274,7 +274,7 @@ bool Game::Initialize() {
...
@@ -274,7 +274,7 @@ bool Game::Initialize() {
SetWindowsIcon
();
SetWindowsIcon
();
//main menu
//main menu
wchar_t
strbuf
[
256
];
wchar_t
strbuf
[
256
];
myswprintf
(
strbuf
,
L"KoishiPro %X.0%X.%X S
elenadia
"
,
PRO_VERSION
>>
12
,
(
PRO_VERSION
>>
4
)
&
0xff
,
PRO_VERSION
&
0xf
);
myswprintf
(
strbuf
,
L"KoishiPro %X.0%X.%X S
nowdream
"
,
PRO_VERSION
>>
12
,
(
PRO_VERSION
>>
4
)
&
0xff
,
PRO_VERSION
&
0xf
);
wMainMenu
=
env
->
addWindow
(
rect
<
s32
>
(
370
,
200
,
650
,
415
),
false
,
strbuf
);
wMainMenu
=
env
->
addWindow
(
rect
<
s32
>
(
370
,
200
,
650
,
415
),
false
,
strbuf
);
wMainMenu
->
getCloseButton
()
->
setVisible
(
false
);
wMainMenu
->
getCloseButton
()
->
setVisible
(
false
);
btnLanMode
=
env
->
addButton
(
rect
<
s32
>
(
10
,
30
,
270
,
60
),
wMainMenu
,
BUTTON_LAN_MODE
,
dataManager
.
GetSysString
(
1200
));
btnLanMode
=
env
->
addButton
(
rect
<
s32
>
(
10
,
30
,
270
,
60
),
wMainMenu
,
BUTTON_LAN_MODE
,
dataManager
.
GetSysString
(
1200
));
...
@@ -844,7 +844,7 @@ bool Game::Initialize() {
...
@@ -844,7 +844,7 @@ bool Game::Initialize() {
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1312
));
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1312
));
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1313
));
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1313
));
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1314
));
cbCardType
->
addItem
(
dataManager
.
GetSysString
(
1314
));
cbCardType2
=
env
->
addComboBox
(
rect
<
s32
>
(
125
,
25
/
6
,
200
,
20
+
25
/
6
),
wFilter
,
COMBOBOX_SECONDTYPE
);
cbCardType2
=
env
->
addComboBox
(
rect
<
s32
>
(
125
,
25
/
6
,
195
,
20
+
25
/
6
),
wFilter
,
COMBOBOX_SECONDTYPE
);
cbCardType2
->
setMaxSelectionRows
(
10
);
cbCardType2
->
setMaxSelectionRows
(
10
);
cbCardType2
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
cbCardType2
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
stLimit
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1315
),
rect
<
s32
>
(
205
,
2
+
25
/
6
,
280
,
22
+
25
/
6
),
false
,
false
,
wFilter
);
stLimit
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1315
),
rect
<
s32
>
(
205
,
2
+
25
/
6
,
280
,
22
+
25
/
6
),
false
,
false
,
wFilter
);
...
@@ -860,13 +860,13 @@ bool Game::Initialize() {
...
@@ -860,13 +860,13 @@ bool Game::Initialize() {
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1484
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1484
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1485
));
cbLimit
->
addItem
(
dataManager
.
GetSysString
(
1485
));
stAttribute
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1319
),
rect
<
s32
>
(
10
,
22
+
50
/
6
,
70
,
42
+
50
/
6
),
false
,
false
,
wFilter
);
stAttribute
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1319
),
rect
<
s32
>
(
10
,
22
+
50
/
6
,
70
,
42
+
50
/
6
),
false
,
false
,
wFilter
);
cbAttribute
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
20
+
50
/
6
,
19
0
,
40
+
50
/
6
),
wFilter
,
COMBOBOX_ATTRIBUTE
);
cbAttribute
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
20
+
50
/
6
,
19
5
,
40
+
50
/
6
),
wFilter
,
COMBOBOX_ATTRIBUTE
);
cbAttribute
->
setMaxSelectionRows
(
10
);
cbAttribute
->
setMaxSelectionRows
(
10
);
cbAttribute
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
cbAttribute
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
for
(
int
filter
=
0x1
;
filter
!=
0x80
;
filter
<<=
1
)
for
(
int
filter
=
0x1
;
filter
!=
0x80
;
filter
<<=
1
)
cbAttribute
->
addItem
(
dataManager
.
FormatAttribute
(
filter
),
filter
);
cbAttribute
->
addItem
(
dataManager
.
FormatAttribute
(
filter
),
filter
);
stRace
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1321
),
rect
<
s32
>
(
10
,
42
+
75
/
6
,
70
,
62
+
75
/
6
),
false
,
false
,
wFilter
);
stRace
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1321
),
rect
<
s32
>
(
10
,
42
+
75
/
6
,
70
,
62
+
75
/
6
),
false
,
false
,
wFilter
);
cbRace
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
40
+
75
/
6
,
19
0
,
60
+
75
/
6
),
wFilter
,
COMBOBOX_RACE
);
cbRace
=
env
->
addComboBox
(
rect
<
s32
>
(
60
,
40
+
75
/
6
,
19
5
,
60
+
75
/
6
),
wFilter
,
COMBOBOX_RACE
);
cbRace
->
setMaxSelectionRows
(
10
);
cbRace
->
setMaxSelectionRows
(
10
);
cbRace
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
cbRace
->
addItem
(
dataManager
.
GetSysString
(
1310
),
0
);
for
(
int
filter
=
0x1
;
filter
<
(
1
<<
RACES_COUNT
);
filter
<<=
1
)
for
(
int
filter
=
0x1
;
filter
<
(
1
<<
RACES_COUNT
);
filter
<<=
1
)
...
@@ -881,7 +881,7 @@ bool Game::Initialize() {
...
@@ -881,7 +881,7 @@ bool Game::Initialize() {
ebStar
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
60
,
60
+
100
/
6
,
100
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebStar
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
60
,
60
+
100
/
6
,
100
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebStar
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebStar
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stScale
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1336
),
rect
<
s32
>
(
101
,
62
+
100
/
6
,
150
,
82
+
100
/
6
),
false
,
false
,
wFilter
);
stScale
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1336
),
rect
<
s32
>
(
101
,
62
+
100
/
6
,
150
,
82
+
100
/
6
),
false
,
false
,
wFilter
);
ebScale
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
150
,
60
+
100
/
6
,
19
0
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebScale
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
150
,
60
+
100
/
6
,
19
5
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_INPUTS
);
ebScale
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebScale
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
stSearch
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1325
),
rect
<
s32
>
(
205
,
62
+
100
/
6
,
280
,
82
+
100
/
6
),
false
,
false
,
wFilter
);
stSearch
=
env
->
addStaticText
(
dataManager
.
GetSysString
(
1325
),
rect
<
s32
>
(
205
,
62
+
100
/
6
,
280
,
82
+
100
/
6
),
false
,
false
,
wFilter
);
ebCardName
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
60
+
100
/
6
,
390
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_KEYWORD
);
ebCardName
=
env
->
addEditBox
(
L""
,
rect
<
s32
>
(
260
,
60
+
100
/
6
,
390
,
80
+
100
/
6
),
true
,
wFilter
,
EDITBOX_KEYWORD
);
...
@@ -900,7 +900,7 @@ bool Game::Initialize() {
...
@@ -900,7 +900,7 @@ bool Game::Initialize() {
btnCategoryOK
=
env
->
addButton
(
rect
<
s32
>
(
150
,
210
,
250
,
235
),
wCategories
,
BUTTON_CATEGORY_OK
,
dataManager
.
GetSysString
(
1211
));
btnCategoryOK
=
env
->
addButton
(
rect
<
s32
>
(
150
,
210
,
250
,
235
),
wCategories
,
BUTTON_CATEGORY_OK
,
dataManager
.
GetSysString
(
1211
));
int
catewidth
=
0
;
int
catewidth
=
0
;
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
mainGame
->
guiFont
->
getDimension
(
dataManager
.
GetSysString
(
1100
+
i
));
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
guiFont
->
getDimension
(
dataManager
.
GetSysString
(
1100
+
i
));
if
((
int
)
dtxt
.
Width
+
40
>
catewidth
)
if
((
int
)
dtxt
.
Width
+
40
>
catewidth
)
catewidth
=
dtxt
.
Width
+
40
;
catewidth
=
dtxt
.
Width
+
40
;
}
}
...
@@ -909,7 +909,7 @@ bool Game::Initialize() {
...
@@ -909,7 +909,7 @@ bool Game::Initialize() {
int
wcatewidth
=
catewidth
*
4
+
16
;
int
wcatewidth
=
catewidth
*
4
+
16
;
wCategories
->
setRelativePosition
(
rect
<
s32
>
(
1000
-
wcatewidth
,
60
,
1000
,
305
));
wCategories
->
setRelativePosition
(
rect
<
s32
>
(
1000
-
wcatewidth
,
60
,
1000
,
305
));
btnCategoryOK
->
setRelativePosition
(
recti
(
wcatewidth
/
2
-
50
,
210
,
wcatewidth
/
2
+
50
,
235
));
btnCategoryOK
->
setRelativePosition
(
recti
(
wcatewidth
/
2
-
50
,
210
,
wcatewidth
/
2
+
50
,
235
));
btnMarksFilter
=
env
->
addButton
(
rect
<
s32
>
(
60
,
80
+
125
/
6
,
19
0
,
100
+
125
/
6
),
wFilter
,
BUTTON_MARKS_FILTER
,
dataManager
.
GetSysString
(
1374
));
btnMarksFilter
=
env
->
addButton
(
rect
<
s32
>
(
60
,
80
+
125
/
6
,
19
5
,
100
+
125
/
6
),
wFilter
,
BUTTON_MARKS_FILTER
,
dataManager
.
GetSysString
(
1374
));
wLinkMarks
=
env
->
addWindow
(
rect
<
s32
>
(
700
,
30
,
820
,
150
),
false
,
L""
);
wLinkMarks
=
env
->
addWindow
(
rect
<
s32
>
(
700
,
30
,
820
,
150
),
false
,
L""
);
wLinkMarks
->
getCloseButton
()
->
setVisible
(
false
);
wLinkMarks
->
getCloseButton
()
->
setVisible
(
false
);
wLinkMarks
->
setDrawTitlebar
(
false
);
wLinkMarks
->
setDrawTitlebar
(
false
);
...
@@ -1883,7 +1883,7 @@ void Game::ShowCardInfo(int code, bool resize) {
...
@@ -1883,7 +1883,7 @@ void Game::ShowCardInfo(int code, bool resize) {
myswprintf
(
formatBuffer
,
L"[%ls] %ls/%ls"
,
dataManager
.
FormatType
(
cd
.
type
),
dataManager
.
FormatRace
(
cd
.
race
),
dataManager
.
FormatAttribute
(
cd
.
attribute
));
myswprintf
(
formatBuffer
,
L"[%ls] %ls/%ls"
,
dataManager
.
FormatType
(
cd
.
type
),
dataManager
.
FormatRace
(
cd
.
race
),
dataManager
.
FormatAttribute
(
cd
.
attribute
));
stInfo
->
setText
(
formatBuffer
);
stInfo
->
setText
(
formatBuffer
);
int
offset_info
=
0
;
int
offset_info
=
0
;
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
mainGame
->
guiFont
->
getDimension
(
formatBuffer
);
irr
::
core
::
dimension2d
<
unsigned
int
>
dtxt
=
guiFont
->
getDimension
(
formatBuffer
);
if
(
dtxt
.
Width
>
(
300
*
xScale
-
13
)
-
15
)
if
(
dtxt
.
Width
>
(
300
*
xScale
-
13
)
-
15
)
offset_info
=
15
;
offset_info
=
15
;
if
(
!
(
cd
.
type
&
TYPE_LINK
))
{
if
(
!
(
cd
.
type
&
TYPE_LINK
))
{
...
@@ -1917,7 +1917,7 @@ void Game::ShowCardInfo(int code, bool resize) {
...
@@ -1917,7 +1917,7 @@ void Game::ShowCardInfo(int code, bool resize) {
}
}
stDataInfo
->
setText
(
formatBuffer
);
stDataInfo
->
setText
(
formatBuffer
);
int
offset_arrows
=
offset_info
;
int
offset_arrows
=
offset_info
;
dtxt
=
mainGame
->
guiFont
->
getDimension
(
formatBuffer
);
dtxt
=
guiFont
->
getDimension
(
formatBuffer
);
if
(
dtxt
.
Width
>
(
300
*
xScale
-
13
)
-
15
)
if
(
dtxt
.
Width
>
(
300
*
xScale
-
13
)
-
15
)
offset_arrows
+=
15
;
offset_arrows
+=
15
;
stInfo
->
setRelativePosition
(
rect
<
s32
>
(
15
,
37
,
300
*
xScale
-
13
,
(
60
+
offset_info
)));
stInfo
->
setRelativePosition
(
rect
<
s32
>
(
15
,
37
,
300
*
xScale
-
13
,
(
60
+
offset_info
)));
...
@@ -2214,12 +2214,12 @@ void Game::OnResize() {
...
@@ -2214,12 +2214,12 @@ void Game::OnResize() {
wFilter
->
setRelativePosition
(
Resize
(
610
,
5
,
1020
,
130
));
wFilter
->
setRelativePosition
(
Resize
(
610
,
5
,
1020
,
130
));
scrFilter
->
setRelativePosition
(
Resize
(
999
,
161
,
1019
,
629
));
scrFilter
->
setRelativePosition
(
Resize
(
999
,
161
,
1019
,
629
));
cbCardType
->
setRelativePosition
(
Resize
(
60
,
25
/
6
,
120
,
20
+
25
/
6
));
cbCardType
->
setRelativePosition
(
Resize
(
60
,
25
/
6
,
120
,
20
+
25
/
6
));
cbCardType2
->
setRelativePosition
(
Resize
(
1
30
,
25
/
6
,
190
,
20
+
25
/
6
));
cbCardType2
->
setRelativePosition
(
Resize
(
1
25
,
25
/
6
,
195
,
20
+
25
/
6
));
cbRace
->
setRelativePosition
(
Resize
(
60
,
40
+
75
/
6
,
19
0
,
60
+
75
/
6
));
cbRace
->
setRelativePosition
(
Resize
(
60
,
40
+
75
/
6
,
19
5
,
60
+
75
/
6
));
cbAttribute
->
setRelativePosition
(
Resize
(
60
,
20
+
50
/
6
,
19
0
,
40
+
50
/
6
));
cbAttribute
->
setRelativePosition
(
Resize
(
60
,
20
+
50
/
6
,
19
5
,
40
+
50
/
6
));
cbLimit
->
setRelativePosition
(
Resize
(
260
,
25
/
6
,
390
,
20
+
25
/
6
));
cbLimit
->
setRelativePosition
(
Resize
(
260
,
25
/
6
,
390
,
20
+
25
/
6
));
ebStar
->
setRelativePosition
(
Resize
(
60
,
60
+
100
/
6
,
95
,
80
+
100
/
6
));
ebStar
->
setRelativePosition
(
Resize
(
60
,
60
+
100
/
6
,
95
,
80
+
100
/
6
));
ebScale
->
setRelativePosition
(
Resize
(
155
,
60
+
100
/
6
,
19
0
,
80
+
100
/
6
));
ebScale
->
setRelativePosition
(
Resize
(
155
,
60
+
100
/
6
,
19
5
,
80
+
100
/
6
));
ebAttack
->
setRelativePosition
(
Resize
(
260
,
20
+
50
/
6
,
340
,
40
+
50
/
6
));
ebAttack
->
setRelativePosition
(
Resize
(
260
,
20
+
50
/
6
,
340
,
40
+
50
/
6
));
ebDefense
->
setRelativePosition
(
Resize
(
260
,
40
+
75
/
6
,
340
,
60
+
75
/
6
));
ebDefense
->
setRelativePosition
(
Resize
(
260
,
40
+
75
/
6
,
340
,
60
+
75
/
6
));
ebCardName
->
setRelativePosition
(
Resize
(
260
,
60
+
100
/
6
,
390
,
80
+
100
/
6
));
ebCardName
->
setRelativePosition
(
Resize
(
260
,
60
+
100
/
6
,
390
,
80
+
100
/
6
));
...
@@ -2227,7 +2227,7 @@ void Game::OnResize() {
...
@@ -2227,7 +2227,7 @@ void Game::OnResize() {
btnStartFilter
->
setRelativePosition
(
Resize
(
260
,
80
+
125
/
6
,
390
,
100
+
125
/
6
));
btnStartFilter
->
setRelativePosition
(
Resize
(
260
,
80
+
125
/
6
,
390
,
100
+
125
/
6
));
if
(
btnClearFilter
)
if
(
btnClearFilter
)
btnClearFilter
->
setRelativePosition
(
Resize
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
));
btnClearFilter
->
setRelativePosition
(
Resize
(
205
,
80
+
125
/
6
,
255
,
100
+
125
/
6
));
btnMarksFilter
->
setRelativePosition
(
Resize
(
60
,
80
+
125
/
6
,
19
0
,
100
+
125
/
6
));
btnMarksFilter
->
setRelativePosition
(
Resize
(
60
,
80
+
125
/
6
,
19
5
,
100
+
125
/
6
));
recti
btncatepos
=
btnEffectFilter
->
getAbsolutePosition
();
recti
btncatepos
=
btnEffectFilter
->
getAbsolutePosition
();
wCategories
->
setRelativePosition
(
recti
(
wCategories
->
setRelativePosition
(
recti
(
...
@@ -2309,8 +2309,8 @@ void Game::OnResize() {
...
@@ -2309,8 +2309,8 @@ void Game::OnResize() {
scrTabSystem
->
setVisible
(
false
);
scrTabSystem
->
setVisible
(
false
);
if
(
gameConf
.
resize_popup_menu
)
{
if
(
gameConf
.
resize_popup_menu
)
{
int
width
=
100
*
mainGame
->
xScale
;
int
width
=
100
*
xScale
;
int
height
=
(
mainGame
->
yScale
>=
0.666
)
?
21
*
mainGame
->
yScale
:
14
;
int
height
=
(
yScale
>=
0.666
)
?
21
*
yScale
:
14
;
wCmdMenu
->
setRelativePosition
(
recti
(
1
,
1
,
width
+
1
,
1
));
wCmdMenu
->
setRelativePosition
(
recti
(
1
,
1
,
width
+
1
,
1
));
btnActivate
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
btnActivate
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
btnSummon
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
btnSummon
->
setRelativePosition
(
recti
(
1
,
1
,
width
,
height
));
...
@@ -2532,7 +2532,7 @@ const wchar_t* Game::GetLocaleDirWide(const char* dir) {
...
@@ -2532,7 +2532,7 @@ const wchar_t* Game::GetLocaleDirWide(const char* dir) {
return
locale_buf
;
return
locale_buf
;
}
}
void
Game
::
SetCursor
(
ECURSOR_ICON
icon
)
{
void
Game
::
SetCursor
(
ECURSOR_ICON
icon
)
{
ICursorControl
*
cursor
=
mainGame
->
device
->
getCursorControl
();
ICursorControl
*
cursor
=
device
->
getCursorControl
();
if
(
cursor
->
getActiveIcon
()
!=
icon
)
{
if
(
cursor
->
getActiveIcon
()
!=
icon
)
{
cursor
->
setActiveIcon
(
icon
);
cursor
->
setActiveIcon
(
icon
);
}
}
...
...
gframe/netserver.cpp
View file @
15800b08
...
@@ -9,8 +9,8 @@ event_base* NetServer::net_evbase = 0;
...
@@ -9,8 +9,8 @@ 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
[
0x2000
];
unsigned
char
NetServer
::
net_server_read
[
SIZE_NETWORK_BUFFER
];
unsigned
char
NetServer
::
net_server_write
[
0x2000
];
unsigned
char
NetServer
::
net_server_write
[
SIZE_NETWORK_BUFFER
];
unsigned
short
NetServer
::
last_sent
=
0
;
unsigned
short
NetServer
::
last_sent
=
0
;
#ifdef YGOPRO_SERVER_MODE
#ifdef YGOPRO_SERVER_MODE
...
@@ -122,9 +122,9 @@ bool NetServer::StartBroadcast() {
...
@@ -122,9 +122,9 @@ bool NetServer::StartBroadcast() {
if
(
!
net_evbase
)
if
(
!
net_evbase
)
return
false
;
return
false
;
SOCKET
udp
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
SOCKET
udp
=
socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
BOOL
opt
=
TRUE
;
int
opt
=
TRUE
;
setsockopt
(
udp
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
(
BOOL
)
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_BROADCAST
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
opt
,
sizeof
(
BOOL
)
);
setsockopt
(
udp
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
opt
,
sizeof
opt
);
sockaddr_in
addr
;
sockaddr_in
addr
;
memset
(
&
addr
,
0
,
sizeof
(
addr
));
memset
(
&
addr
,
0
,
sizeof
(
addr
));
addr
.
sin_family
=
AF_INET
;
addr
.
sin_family
=
AF_INET
;
...
...
gframe/netserver.h
View file @
15800b08
...
@@ -20,8 +20,8 @@ private:
...
@@ -20,8 +20,8 @@ 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
[
0x2000
];
static
unsigned
char
net_server_read
[
SIZE_NETWORK_BUFFER
];
static
unsigned
char
net_server_write
[
0x2000
];
static
unsigned
char
net_server_write
[
SIZE_NETWORK_BUFFER
];
static
unsigned
short
last_sent
;
static
unsigned
short
last_sent
;
public:
public:
...
@@ -53,26 +53,34 @@ public:
...
@@ -53,26 +53,34 @@ public:
last_sent
=
3
;
last_sent
=
3
;
if
(
!
dp
)
if
(
!
dp
)
return
;
return
;
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
bufferevent_write
(
dp
->
bev
,
net_server_write
,
3
);
}
}
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
;
BufferIO
::
WriteInt16
(
p
,
1
+
sizeof
(
ST
));
int
blen
=
sizeof
(
ST
);
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
&
st
,
sizeof
(
ST
)
);
memcpy
(
p
,
&
st
,
blen
);
last_sent
=
sizeof
(
ST
)
+
3
;
last_sent
=
blen
+
3
;
if
(
dp
)
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
bufferevent_write
(
dp
->
bev
,
net_server_write
,
blen
+
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
;
BufferIO
::
WriteInt16
(
p
,
1
+
len
);
int
blen
=
len
;
if
(
blen
<
0
)
return
;
if
(
blen
>
MAX_DATA_SIZE
)
blen
=
MAX_DATA_SIZE
;
BufferIO
::
WriteInt16
(
p
,
(
short
)(
1
+
blen
));
BufferIO
::
WriteInt8
(
p
,
proto
);
BufferIO
::
WriteInt8
(
p
,
proto
);
memcpy
(
p
,
buffer
,
len
);
memcpy
(
p
,
buffer
,
b
len
);
last_sent
=
len
+
3
;
last_sent
=
b
len
+
3
;
if
(
dp
)
if
(
dp
)
bufferevent_write
(
dp
->
bev
,
net_server_write
,
last_sent
);
bufferevent_write
(
dp
->
bev
,
net_server_write
,
blen
+
3
);
}
}
static
void
ReSendToPlayer
(
DuelPlayer
*
dp
)
{
static
void
ReSendToPlayer
(
DuelPlayer
*
dp
)
{
if
(
dp
)
if
(
dp
)
...
...
gframe/network.h
View file @
15800b08
...
@@ -10,6 +10,8 @@
...
@@ -10,6 +10,8 @@
#include <event2/thread.h>
#include <event2/thread.h>
namespace
ygo
{
namespace
ygo
{
constexpr
int
SIZE_NETWORK_BUFFER
=
0x2000
;
constexpr
int
MAX_DATA_SIZE
=
SIZE_NETWORK_BUFFER
-
3
;
struct
HostInfo
{
struct
HostInfo
{
unsigned
int
lflist
{
0
};
unsigned
int
lflist
{
0
};
...
...
gframe/single_mode.cpp
View file @
15800b08
...
@@ -58,7 +58,7 @@ int SingleMode::SinglePlayThread() {
...
@@ -58,7 +58,7 @@ int SingleMode::SinglePlayThread() {
if
(
mainGame
->
chkSinglePlayReturnDeckTop
->
isChecked
())
if
(
mainGame
->
chkSinglePlayReturnDeckTop
->
isChecked
())
opt
|=
DUEL_RETURN_DECK_TOP
;
opt
|=
DUEL_RETURN_DECK_TOP
;
char
filename
[
256
];
char
filename
[
256
];
size_
t
slen
=
0
;
in
t
slen
=
0
;
if
(
open_file
)
{
if
(
open_file
)
{
open_file
=
false
;
open_file
=
false
;
slen
=
BufferIO
::
EncodeUTF8
(
open_file_name
,
filename
);
slen
=
BufferIO
::
EncodeUTF8
(
open_file_name
,
filename
);
...
...
lflist.conf
View file @
15800b08
This diff is collapsed.
Click to expand it.
ocgcore
@
dcb3ee6c
Subproject commit
7448df909c630949ccf8a9be60bdc9cc0abd1dfc
Subproject commit
dcb3ee6c25f775562c1ad6f353e30ed928e16866
script
@
afdda75b
Subproject commit
4d55686f9414ca20d118d8065fe7c751502cf2c2
Subproject commit
afdda75bf93d44ca28fe0e7563dc3001eca9320b
strings.conf
View file @
15800b08
...
@@ -320,6 +320,9 @@
...
@@ -320,6 +320,9 @@
!
system
1262
大师规则3
!
system
1262
大师规则3
!
system
1263
新大师规则(
2017
)
!
system
1263
新大师规则(
2017
)
!
system
1264
大师规则(
2020
)
!
system
1264
大师规则(
2020
)
!
system
1267
语言(重启后生效)
!
system
1268
盖放怪兽前询问
!
system
1269
数字灵摆图片
!
system
1270
卡片信息
!
system
1270
卡片信息
!
system
1271
消息记录
!
system
1271
消息记录
!
system
1272
清除记录
!
system
1272
清除记录
...
@@ -340,7 +343,7 @@
...
@@ -340,7 +343,7 @@
!
system
1287
只有连锁
1
也显示连锁动画
!
system
1287
只有连锁
1
也显示连锁动画
!
system
1288
禁限卡表
!
system
1288
禁限卡表
!
system
1289
隐藏玩家昵称
!
system
1289
隐藏玩家昵称
!
system
1290
禁用聊天功能
!
system
1290
忽略对方发言
!
system
1291
忽略观战者发言
!
system
1291
忽略观战者发言
!
system
1292
忽略时点
!
system
1292
忽略时点
!
system
1293
显示时点
!
system
1293
显示时点
...
@@ -404,6 +407,7 @@
...
@@ -404,6 +407,7 @@
!
system
1352
主要信息:
!
system
1352
主要信息:
!
system
1353
播放起始于回合:
!
system
1353
播放起始于回合:
!
system
1354
开局默认显示所有时点
!
system
1354
开局默认显示所有时点
!
system
1355
是否确定盖放[%
ls
]?
!
system
1356
此操作将放弃对当前卡组的修改,是否继续?
!
system
1356
此操作将放弃对当前卡组的修改,是否继续?
!
system
1357
不提示保留对卡组的修改
!
system
1357
不提示保留对卡组的修改
!
system
1358
键入关键字后自动进行搜索
!
system
1358
键入关键字后自动进行搜索
...
@@ -429,6 +433,10 @@
...
@@ -429,6 +433,10 @@
!
system
1382
人机信息:
!
system
1382
人机信息:
!
system
1384
电脑锁定出剪刀
!
system
1384
电脑锁定出剪刀
!
system
1385
列表为空,可能未安装合适的人机
!
system
1385
列表为空,可能未安装合适的人机
!
system
1386
使用正则表达式搜索卡片
!
system
1387
卡组代码
!
system
1388
Ctrl
+
A
全选,
Ctrl
+
C
复制,
Ctrl
+
V
粘贴
!
system
1389
卡组代码无效。
!
system
1390
等待行动中...
!
system
1390
等待行动中...
!
system
1391
等待行动中....
!
system
1391
等待行动中....
!
system
1392
等待行动中.....
!
system
1392
等待行动中.....
...
@@ -1183,7 +1191,7 @@
...
@@ -1183,7 +1191,7 @@
!
setname
0
x18f
防火 ファイアウォール
!
setname
0
x18f
防火 ファイアウォール
!
setname
0
x190
末那愚子族 マナドゥム
!
setname
0
x190
末那愚子族 マナドゥム
!
setname
0
x191
妮穆蕾莉娅 ネムレリア
!
setname
0
x191
妮穆蕾莉娅 ネムレリア
!
setname
0
x192
金傲大奖赛
GP
(ゴールド・プライド)
!
setname
0
x192
黄金荣耀
GP
(ゴールド・プライド)
!
setname
0
x193
迷宫壁 ラビリンス・ウォール
!
setname
0
x193
迷宫壁 ラビリンス・ウォール
!
setname
0
x194
至爱 フェイバリット
!
setname
0
x194
至爱 フェイバリット
!
setname
0
x195
征服斗魂
VS
(ヴァンキッシュ・ソウル)
!
setname
0
x195
征服斗魂
VS
(ヴァンキッシュ・ソウル)
...
@@ -1211,3 +1219,4 @@
...
@@ -1211,3 +1219,4 @@
!
setname
0
x1aa
天杯龙 天盃龍
!
setname
0
x1aa
天杯龙 天盃龍
!
setname
0
x1ab
蕾祸 蕾禍
!
setname
0
x1ab
蕾祸 蕾禍
!
setname
0
x1ac
飞龙炎
Salamandra
!
setname
0
x1ac
飞龙炎
Salamandra
!
setname
0
x1ad
灰尽
Ashened
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