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
ca104f15
Commit
ca104f15
authored
Dec 25, 2015
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge
https://github.com/Fluorohydride/ygopro
into server
parents
1c1992ba
7c07a346
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
116 additions
and
110 deletions
+116
-110
gframe/client_field.cpp
gframe/client_field.cpp
+49
-12
gframe/client_field.h
gframe/client_field.h
+11
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+21
-10
gframe/event_handler.cpp
gframe/event_handler.cpp
+6
-62
gframe/event_handler.h
gframe/event_handler.h
+0
-4
gframe/game.cpp
gframe/game.cpp
+1
-1
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+4
-2
gframe/replay_mode.h
gframe/replay_mode.h
+1
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+4
-1
gframe/single_mode.cpp
gframe/single_mode.cpp
+4
-2
gframe/single_mode.h
gframe/single_mode.h
+1
-2
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+4
-1
lflist.conf
lflist.conf
+6
-6
strings.conf
strings.conf
+4
-3
No files found.
gframe/client_field.cpp
View file @
ca104f15
...
...
@@ -1108,6 +1108,9 @@ bool ClientField::CheckSelectSum() {
selable
.
insert
(
selectsum_all
[
i
]);
}
for
(
size_t
i
=
0
;
i
<
selected_cards
.
size
();
++
i
)
{
if
(
i
<
must_select_count
)
selected_cards
[
i
]
->
is_selectable
=
false
;
else
selected_cards
[
i
]
->
is_selectable
=
true
;
selected_cards
[
i
]
->
is_selected
=
true
;
selable
.
erase
(
selected_cards
[
i
]);
...
...
@@ -1194,7 +1197,7 @@ bool ClientField::check_min(std::set<ClientCard*>& left, std::set<ClientCard*>::
return
(
min
>
m
&&
check_min
(
left
,
index
,
min
-
m
,
max
-
m
))
||
check_min
(
left
,
index
,
min
,
max
);
}
bool
ClientField
::
check_sel_sum_s
(
std
::
set
<
ClientCard
*>&
left
,
int
index
,
int
acc
)
{
bool
ClientField
::
check_sel_sum_s
(
const
std
::
set
<
ClientCard
*>&
left
,
int
index
,
int
acc
)
{
if
(
index
==
(
int
)
selected_cards
.
size
())
{
if
(
acc
==
0
)
return
true
;
...
...
@@ -1210,9 +1213,9 @@ bool ClientField::check_sel_sum_s(std::set<ClientCard*>& left, int index, int ac
res2
=
check_sel_sum_s
(
left
,
index
+
1
,
acc
-
l2
);
return
res1
||
res2
;
}
void
ClientField
::
check_sel_sum_t
(
std
::
set
<
ClientCard
*>&
left
,
int
acc
)
{
std
::
set
<
ClientCard
*>::
iterator
si
t
;
for
(
sit
=
left
.
begin
();
sit
!=
left
.
end
();
++
sit
)
{
void
ClientField
::
check_sel_sum_t
(
const
std
::
set
<
ClientCard
*>&
left
,
int
acc
)
{
int
count
=
selected_cards
.
size
()
+
1
-
must_select_coun
t
;
for
(
auto
sit
=
left
.
begin
();
sit
!=
left
.
end
();
++
sit
)
{
if
(
selectsum_cards
.
find
(
*
sit
)
!=
selectsum_cards
.
end
())
continue
;
std
::
set
<
ClientCard
*>
testlist
(
left
);
...
...
@@ -1220,16 +1223,16 @@ void ClientField::check_sel_sum_t(std::set<ClientCard*>& left, int acc) {
int
l
=
(
*
sit
)
->
opParam
;
int
l1
=
l
&
0xffff
;
int
l2
=
l
>>
16
;
if
(
check_sum
(
testlist
,
testlist
.
begin
(),
acc
-
l1
,
selected_cards
.
size
()
+
1
)
||
(
l2
>
0
&&
check_sum
(
testlist
,
testlist
.
begin
(),
acc
-
l2
,
selected_cards
.
size
()
+
1
)))
{
if
(
check_sum
(
testlist
.
begin
(),
testlist
.
end
(),
acc
-
l1
,
count
)
||
(
l2
>
0
&&
check_sum
(
testlist
.
begin
(),
testlist
.
end
(),
acc
-
l2
,
count
)))
{
selectsum_cards
.
insert
(
*
sit
);
}
}
}
bool
ClientField
::
check_sum
(
std
::
set
<
ClientCard
*>
&
testlist
,
std
::
set
<
ClientCard
*>::
iterator
index
,
int
acc
,
int
count
)
{
bool
ClientField
::
check_sum
(
std
::
set
<
ClientCard
*>
::
const_iterator
index
,
std
::
set
<
ClientCard
*>::
const_iterator
end
,
int
acc
,
int
count
)
{
if
(
acc
==
0
)
return
count
>=
select_min
&&
count
<=
select_max
;
if
(
acc
<
0
||
index
==
testlist
.
end
()
)
if
(
acc
<
0
||
index
==
end
)
return
false
;
int
l
=
(
*
index
)
->
opParam
;
int
l1
=
l
&
0xffff
;
...
...
@@ -1237,8 +1240,42 @@ bool ClientField::check_sum(std::set<ClientCard*>& testlist, std::set<ClientCard
if
((
l1
==
acc
||
(
l2
>
0
&&
l2
==
acc
))
&&
(
count
+
1
>=
select_min
)
&&
(
count
+
1
<=
select_max
))
return
true
;
++
index
;
return
(
acc
>
l1
&&
check_sum
(
testlist
,
index
,
acc
-
l1
,
count
+
1
))
||
(
l2
>
0
&&
acc
>
l2
&&
check_sum
(
testlist
,
index
,
acc
-
l2
,
count
+
1
))
||
check_sum
(
testlist
,
index
,
acc
,
count
);
return
(
acc
>
l1
&&
check_sum
(
index
,
end
,
acc
-
l1
,
count
+
1
))
||
(
l2
>
0
&&
acc
>
l2
&&
check_sum
(
index
,
end
,
acc
-
l2
,
count
+
1
))
||
check_sum
(
index
,
end
,
acc
,
count
);
}
template
<
class
T
>
static
bool
is_declarable
(
T
const
&
cd
,
int
declarable_type
)
{
if
(
!
(
cd
.
type
&
declarable_type
))
return
false
;
return
cd
.
code
==
CARD_MARINE_DOLPHIN
||
cd
.
code
==
CARD_TWINKLE_MOSS
||
(
!
cd
.
alias
&&
(
cd
.
type
&
(
TYPE_MONSTER
+
TYPE_TOKEN
))
!=
(
TYPE_MONSTER
+
TYPE_TOKEN
));
}
void
ClientField
::
UpdateDeclarableCode
()
{
const
wchar_t
*
pname
=
mainGame
->
ebANCard
->
getText
();
int
trycode
=
BufferIO
::
GetVal
(
pname
);
CardString
cstr
;
CardData
cd
;
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
is_declarable
(
cd
,
declarable_type
))
{
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
);
ancard
.
push_back
(
trycode
);
return
;
}
if
(
pname
[
0
]
==
0
||
pname
[
1
]
==
0
)
return
;
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
wcsstr
(
cit
->
second
.
name
,
pname
)
!=
0
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
if
(
is_declarable
(
cp
->
second
,
declarable_type
))
{
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
);
ancard
.
push_back
(
cit
->
first
);
}
}
}
}
}
gframe/client_field.h
View file @
ca104f15
...
...
@@ -50,11 +50,13 @@ public:
int
selected_field
;
int
select_min
;
int
select_max
;
int
must_select_count
;
int
select_sumval
;
int
select_cancelable
;
int
select_mode
;
bool
select_ready
;
int
announce_count
;
int
declarable_type
;
int
select_counter_count
;
int
select_counter_type
;
std
::
vector
<
ClientCard
*>
selectable_cards
;
...
...
@@ -96,9 +98,11 @@ public:
void
FadeCard
(
ClientCard
*
pcard
,
int
alpha
,
int
frame
);
bool
CheckSelectSum
();
bool
check_min
(
std
::
set
<
ClientCard
*>&
left
,
std
::
set
<
ClientCard
*>::
iterator
index
,
int
min
,
int
max
);
bool
check_sel_sum_s
(
std
::
set
<
ClientCard
*>&
left
,
int
index
,
int
acc
);
void
check_sel_sum_t
(
std
::
set
<
ClientCard
*>&
left
,
int
acc
);
bool
check_sum
(
std
::
set
<
ClientCard
*>&
testlist
,
std
::
set
<
ClientCard
*>::
iterator
index
,
int
acc
,
int
count
);
bool
check_sel_sum_s
(
const
std
::
set
<
ClientCard
*>&
left
,
int
index
,
int
acc
);
void
check_sel_sum_t
(
const
std
::
set
<
ClientCard
*>&
left
,
int
acc
);
bool
check_sum
(
std
::
set
<
ClientCard
*>::
const_iterator
index
,
std
::
set
<
ClientCard
*>::
const_iterator
end
,
int
acc
,
int
count
);
void
UpdateDeclarableCode
();
irr
::
gui
::
IGUIElement
*
panel
;
std
::
vector
<
int
>
ancard
;
...
...
@@ -123,4 +127,8 @@ public:
}
//special cards
#define CARD_MARINE_DOLPHIN 78734254
#define CARD_TWINKLE_MOSS 13857930
#endif //CLIENT_FIELD_H
gframe/duelclient.cpp
View file @
ca104f15
...
...
@@ -1416,20 +1416,30 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame
->
dField
.
select_sumval
=
BufferIO
::
ReadInt32
(
pbuf
);
mainGame
->
dField
.
select_min
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_max
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
must_select_
count
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
selectsum_all
.
clear
();
mainGame
->
dField
.
selected_cards
.
clear
();
mainGame
->
dField
.
selectsum_cards
.
clear
();
int
c
,
l
,
s
;
unsigned
int
code
;
bool
panelmode
=
false
;
ClientCard
*
pcard
;
for
(
int
i
=
0
;
i
<
mainGame
->
dField
.
must_select_count
;
++
i
)
{
unsigned
int
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
int
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
l
=
BufferIO
::
ReadInt8
(
pbuf
);
int
s
=
BufferIO
::
ReadInt8
(
pbuf
);
ClientCard
*
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
if
(
code
!=
0
&&
pcard
->
code
!=
code
)
pcard
->
SetCode
(
code
);
pcard
->
opParam
=
BufferIO
::
ReadInt32
(
pbuf
);
pcard
->
select_seq
=
0
;
mainGame
->
dField
.
selected_cards
.
push_back
(
pcard
);
}
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
l
=
BufferIO
::
ReadInt8
(
pbuf
);
s
=
BufferIO
::
ReadInt8
(
pbuf
);
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
unsigned
int
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
int
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
int
l
=
BufferIO
::
ReadInt8
(
pbuf
);
int
s
=
BufferIO
::
ReadInt8
(
pbuf
);
ClientCard
*
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
if
(
code
!=
0
&&
pcard
->
code
!=
code
)
pcard
->
SetCode
(
code
);
pcard
->
opParam
=
BufferIO
::
ReadInt32
(
pbuf
);
...
...
@@ -1838,7 +1848,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
}
case
MSG_NEW_PHASE
:
{
int
phase
=
(
unsigned
char
)
BufferIO
::
ReadInt8
(
pbuf
);
unsigned
short
phase
=
BufferIO
::
ReadInt16
(
pbuf
);
mainGame
->
btnDP
->
setVisible
(
false
);
mainGame
->
btnSP
->
setVisible
(
false
);
mainGame
->
btnM1
->
setVisible
(
false
);
...
...
@@ -2862,6 +2872,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case
MSG_ANNOUNCE_CARD
:
{
/*int player = */
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
mainGame
->
dField
.
declarable_type
=
BufferIO
::
ReadInt32
(
pbuf
);
if
(
select_hint
)
myswprintf
(
textBuffer
,
L"%ls"
,
dataManager
.
GetDesc
(
select_hint
));
else
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
564
));
...
...
gframe/event_handler.cpp
View file @
ca104f15
...
...
@@ -799,34 +799,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case
irr
:
:
gui
::
EGET_EDITBOX_CHANGED
:
{
switch
(
id
)
{
case
EDITBOX_ANCARD
:
{
const
wchar_t
*
pname
=
mainGame
->
ebANCard
->
getText
();
int
trycode
=
BufferIO
::
GetVal
(
pname
);
CardString
cstr
;
CardData
cd
;
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
(
cd
.
code
==
CARD_MARINE_DOLPHIN
||
cd
.
code
==
CARD_TWINKLE_MOSS
||
!
cd
.
alias
&&
!
((
cd
.
type
&
(
TYPE_MONSTER
+
TYPE_TOKEN
))
==
(
TYPE_MONSTER
+
TYPE_TOKEN
))))
{
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
);
ancard
.
push_back
(
trycode
);
break
;
}
if
(
pname
[
0
]
==
0
||
pname
[
1
]
==
0
)
break
;
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
wcsstr
(
cit
->
second
.
name
,
pname
)
!=
0
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
if
(
cp
->
second
.
code
==
CARD_MARINE_DOLPHIN
||
cp
->
second
.
code
==
CARD_TWINKLE_MOSS
||
!
cp
->
second
.
alias
&&
!
((
cp
->
second
.
type
&
(
TYPE_MONSTER
+
TYPE_TOKEN
))
==
(
TYPE_MONSTER
+
TYPE_TOKEN
)))
{
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
);
ancard
.
push_back
(
cit
->
first
);
}
}
}
UpdateDeclarableCode
();
break
;
}
}
...
...
@@ -835,34 +808,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case
irr
:
:
gui
::
EGET_EDITBOX_ENTER
:
{
switch
(
id
)
{
case
EDITBOX_ANCARD
:
{
const
wchar_t
*
pname
=
mainGame
->
ebANCard
->
getText
();
int
trycode
=
BufferIO
::
GetVal
(
pname
);
CardString
cstr
;
CardData
cd
;
if
(
dataManager
.
GetString
(
trycode
,
&
cstr
)
&&
dataManager
.
GetData
(
trycode
,
&
cd
)
&&
(
cd
.
code
==
CARD_MARINE_DOLPHIN
||
cd
.
code
==
CARD_TWINKLE_MOSS
||
!
cd
.
alias
&&
!
((
cd
.
type
&
(
TYPE_MONSTER
+
TYPE_TOKEN
))
==
(
TYPE_MONSTER
+
TYPE_TOKEN
))))
{
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
mainGame
->
lstANCard
->
addItem
(
cstr
.
name
);
ancard
.
push_back
(
trycode
);
break
;
}
if
(
pname
[
0
]
==
0
)
break
;
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
wcsstr
(
cit
->
second
.
name
,
pname
)
!=
0
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
if
(
cp
->
second
.
code
==
CARD_MARINE_DOLPHIN
||
cp
->
second
.
code
==
CARD_TWINKLE_MOSS
||
!
cp
->
second
.
alias
&&
!
((
cp
->
second
.
type
&
(
TYPE_MONSTER
+
TYPE_TOKEN
))
==
(
TYPE_MONSTER
+
TYPE_TOKEN
)))
{
mainGame
->
lstANCard
->
addItem
(
cit
->
second
.
name
);
ancard
.
push_back
(
cit
->
first
);
}
}
}
UpdateDeclarableCode
();
break
;
}
case
EDITBOX_CHAT
:
{
...
...
@@ -1256,15 +1202,13 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break
;
}
case
MSG_SELECT_SUM
:
{
if
(
!
clicked_card
)
if
(
!
clicked_card
||
!
clicked_card
->
is_selectable
)
break
;
if
(
clicked_card
->
is_selected
)
{
int
i
=
0
;
while
(
selected_cards
[
i
]
!=
clicked_card
)
i
++
;
selected_cards
.
erase
(
selected_cards
.
begin
()
+
i
);
}
else
if
(
clicked_card
->
is_selectable
)
auto
it
=
std
::
find
(
selected_cards
.
begin
(),
selected_cards
.
end
(),
clicked_card
);
selected_cards
.
erase
(
it
);
}
else
selected_cards
.
push_back
(
clicked_card
);
else
break
;
if
(
CheckSelectSum
())
{
if
(
selectsum_cards
.
size
()
==
0
||
selectable_cards
.
size
()
==
0
)
{
SetResponseSelectedCards
();
...
...
gframe/event_handler.h
View file @
ca104f15
#ifndef EVENT_HANDLER_H
#define EVENT_HANDLER_H
//special cards
#define CARD_MARINE_DOLPHIN 78734254
#define CARD_TWINKLE_MOSS 13857930
#include "config.h"
#include "game.h"
#include "client_card.h"
...
...
gframe/game.cpp
View file @
ca104f15
...
...
@@ -17,7 +17,7 @@
#include <unistd.h>
#endif
const
unsigned
short
PRO_VERSION
=
0x133
7
;
const
unsigned
short
PRO_VERSION
=
0x133
8
;
namespace
ygo
{
...
...
gframe/replay_mode.cpp
View file @
ca104f15
...
...
@@ -16,7 +16,6 @@ bool ReplayMode::is_paused = false;
bool
ReplayMode
::
is_swaping
=
false
;
bool
ReplayMode
::
exit_pending
=
false
;
int
ReplayMode
::
skip_turn
=
0
;
wchar_t
ReplayMode
::
event_string
[
256
];
bool
ReplayMode
::
StartReplay
(
int
skipturn
)
{
skip_turn
=
skipturn
;
...
...
@@ -308,6 +307,8 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
pbuf
+=
6
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
return
ReadReplayResponse
();
}
case
MSG_SORT_CARD
:
...
...
@@ -384,7 +385,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
break
;
}
case
MSG_NEW_PHASE
:
{
pbuf
++
;
pbuf
+=
2
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
ReplayRefresh
();
break
;
...
...
@@ -634,6 +635,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
}
case
MSG_ANNOUNCE_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
return
ReadReplayResponse
();
}
case
MSG_ANNOUNCE_NUMBER
:
{
...
...
gframe/replay_mode.h
View file @
ca104f15
...
...
@@ -19,7 +19,7 @@ private:
static
bool
is_swaping
;
static
bool
exit_pending
;
static
int
skip_turn
;
static
wchar_t
event_string
[
256
];
public:
static
Replay
cur_replay
;
...
...
gframe/single_duel.cpp
View file @
ca104f15
...
...
@@ -778,6 +778,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
pbuf
+=
6
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
...
...
@@ -896,7 +898,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
}
case
MSG_NEW_PHASE
:
{
pbuf
++
;
pbuf
+=
2
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
...
...
@@ -1307,6 +1309,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
case
MSG_ANNOUNCE_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
WaitforResponse
(
player
);
pbuf
+=
4
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
}
...
...
gframe/single_mode.cpp
View file @
ca104f15
...
...
@@ -10,7 +10,6 @@ namespace ygo {
long
SingleMode
::
pduel
=
0
;
bool
SingleMode
::
is_closing
=
false
;
bool
SingleMode
::
is_continuing
=
false
;
wchar_t
SingleMode
::
event_string
[
256
];
bool
SingleMode
::
StartPlay
()
{
Thread
::
NewThread
(
SinglePlayThread
,
0
);
...
...
@@ -257,6 +256,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
pbuf
+=
6
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
if
(
!
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
))
{
mainGame
->
singleSignal
.
Reset
();
mainGame
->
singleSignal
.
Wait
();
...
...
@@ -333,7 +334,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
break
;
}
case
MSG_NEW_PHASE
:
{
pbuf
++
;
pbuf
+=
2
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
SinglePlayRefresh
();
break
;
...
...
@@ -576,6 +577,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
case
MSG_ANNOUNCE_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
if
(
!
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
))
{
mainGame
->
singleSignal
.
Reset
();
mainGame
->
singleSignal
.
Wait
();
...
...
gframe/single_mode.h
View file @
ca104f15
...
...
@@ -13,7 +13,6 @@ private:
static
long
pduel
;
static
bool
is_closing
;
static
bool
is_continuing
;
static
wchar_t
event_string
[
256
];
public:
static
bool
StartPlay
();
...
...
gframe/tag_duel.cpp
View file @
ca104f15
...
...
@@ -715,6 +715,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
pbuf
+=
6
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
...
...
@@ -861,7 +863,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
}
case
MSG_NEW_PHASE
:
{
pbuf
++
;
pbuf
+=
2
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
2
]);
...
...
@@ -1349,6 +1351,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
}
case
MSG_ANNOUNCE_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
cur_player
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
...
...
lflist.conf
View file @
ca104f15
#[201
5.10][2016.1
][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][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]
!
201
5
.
10
#[201
6.1][2015.10
][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][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]
!
201
6
.
1
#forbidden
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
20366274
0
--エルシャドール・ネフィリム
53804307
0
--焔征竜-ブラスター
68819554
0
--
Em
ダメージ・ジャグラー
07563579
0
--
Em
ヒグルミ
90411554
0
--巌征竜-レドックス
26202165
0
--クリッター
78010363
0
--黒き森のウィッチ
...
...
@@ -16,6 +18,7 @@
16923472
0
--ゼンマイハンター
56570271
0
--
D
-
HERO
ディスクガイ
33184167
0
--同族感染ウィルス
54719828
0
--
No
.
16
色の支配者ショック・ルーラー
26400609
0
--瀑征竜-タイダル
50321796
0
--氷結界の龍 ブリューナク
78706415
0
--ファイバーポッド
...
...
@@ -140,7 +143,7 @@
45222299
2
--イビリチュア·ガストクラーケ
27970830
2
--六武の門
!
201
6
.
1
!
201
5
.
10
#forbidden
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
...
...
@@ -199,9 +202,6 @@
28566710
0
--ラストバトル!
17412721
0
--旧神ノーデン
18326736
0
--星守の騎士 プトレマイオス
68819554
0
--
Em
ダメージ・ジャグラー
07563579
0
--
Em
ヒグルミ
54719828
0
--
No
.
16
色の支配者ショック・ルーラー
#limit
85103922
1
--アーティファクト-モラルタ
64034255
1
--
A
·ジェネクス·バードマン
...
...
strings.conf
View file @
ca104f15
...
...
@@ -455,7 +455,7 @@
!
setname
0
x3
N
/
A
!
setname
0
x4
亚马逊 アマゾネス
!
setname
0
x5
秘仪之力 アルカナフォース
!
setname
0
x6
暗黑界
!
setname
0
x6
暗黑界
暗黒界
!
setname
0
x7
古代的机械 アンティーク・ギア
!
setname
0
x8
英雄
HERO
!
setname
0
x3008
元素英雄
E
・
HERO
...
...
@@ -544,7 +544,7 @@
!
setname
0
x1047
宝石骑士 ジェムナイト
!
setname
0
x48
No
.
No
.
!
setname
0
x1048
混沌
No
.
CNo
.
!
setname
0
x49
铳士
!
setname
0
x49
铳士
銃士
#setname 0x4a 时械神 時械神
!
setname
0
x4b
极神 極神
!
setname
0
x4c
落穴 落とし穴
...
...
@@ -613,7 +613,8 @@
!
setname
0
x7d
阳炎 ヘイズ
!
setname
0
x107d
阳炎兽 陽炎獣
!
setname
0
x7e
异热同心武器
ZW
!
setname
0
x7f
希望皇 霍普 希望皇ホープ
!
setname
0
x7f
霍普 ホープ
!
setname
0
x107f
希望皇 霍普 希望皇ホープ
!
setname
0
x80
尘妖 ダストン
!
setname
0
x81
炎王
!
setname
0
x1081
炎王兽 炎王獣
...
...
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