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
REIKAI
ygopro
Commits
155a92fb
Commit
155a92fb
authored
Feb 23, 2012
by
argon.sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
time limit
parent
6dcb7a3f
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
159 additions
and
41 deletions
+159
-41
gframe/drawing.cpp
gframe/drawing.cpp
+11
-0
gframe/duelclient.cpp
gframe/duelclient.cpp
+38
-1
gframe/game.cpp
gframe/game.cpp
+22
-10
gframe/game.h
gframe/game.h
+5
-0
gframe/netserver.cpp
gframe/netserver.cpp
+8
-6
gframe/network.h
gframe/network.h
+1
-0
gframe/replay.cpp
gframe/replay.cpp
+0
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+66
-19
gframe/single_duel.h
gframe/single_duel.h
+2
-0
script/c11975962.lua
script/c11975962.lua
+1
-1
script/c5037726.lua
script/c5037726.lua
+1
-1
script/c78156759.lua
script/c78156759.lua
+1
-1
script/c85562745.lua
script/c85562745.lua
+2
-1
strings.conf
strings.conf
+1
-0
No files found.
gframe/drawing.cpp
View file @
155a92fb
...
@@ -294,6 +294,12 @@ void Game::DrawMisc() {
...
@@ -294,6 +294,12 @@ void Game::DrawMisc() {
lpcFont
->
draw
(
lpcstring
,
recti
(
400
,
162
,
922
,
210
),
lpccolor
,
true
,
false
,
0
);
lpcFont
->
draw
(
lpcstring
,
recti
(
400
,
162
,
922
,
210
),
lpccolor
,
true
,
false
,
0
);
}
}
}
}
if
(
!
dInfo
.
isReplay
&&
!
dInfo
.
isObserver
&&
dInfo
.
time_limit
)
{
driver
->
draw2DRectangle
(
recti
(
525
,
34
,
525
+
dInfo
.
time_left
[
0
]
*
100
/
dInfo
.
time_limit
,
44
),
0xa0e0e0e0
,
0xa0e0e0e0
,
0xa0c0c0c0
,
0xa0c0c0c0
);
driver
->
draw2DRectangleOutline
(
recti
(
525
,
34
,
625
,
44
),
0xffffffff
);
driver
->
draw2DRectangle
(
recti
(
795
-
dInfo
.
time_left
[
1
]
*
100
/
dInfo
.
time_limit
,
34
,
795
,
44
),
0xa0e0e0e0
,
0xa0e0e0e0
,
0xa0c0c0c0
,
0xa0c0c0c0
);
driver
->
draw2DRectangleOutline
(
recti
(
695
,
34
,
795
,
44
),
0xffffffff
);
}
numFont
->
draw
(
dInfo
.
strLP
[
0
],
recti
(
330
,
11
,
629
,
30
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dInfo
.
strLP
[
0
],
recti
(
330
,
11
,
629
,
30
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dInfo
.
strLP
[
0
],
recti
(
330
,
12
,
631
,
30
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dInfo
.
strLP
[
0
],
recti
(
330
,
12
,
631
,
30
),
0xffffff00
,
true
,
false
,
0
);
numFont
->
draw
(
dInfo
.
strLP
[
1
],
recti
(
691
,
11
,
990
,
30
),
0xff000000
,
true
,
false
,
0
);
numFont
->
draw
(
dInfo
.
strLP
[
1
],
recti
(
691
,
11
,
990
,
30
),
0xff000000
,
true
,
false
,
0
);
...
@@ -600,6 +606,11 @@ void Game::DrawSpec() {
...
@@ -600,6 +606,11 @@ void Game::DrawSpec() {
}
else
if
(
showcardp
<
showcarddif
)
{
}
else
if
(
showcardp
<
showcarddif
)
{
lpcFont
->
draw
(
lstr
,
recti
(
671
-
pos
.
Width
/
2
,
271
,
970
,
350
),
0xff000000
);
lpcFont
->
draw
(
lstr
,
recti
(
671
-
pos
.
Width
/
2
,
271
,
970
,
350
),
0xff000000
);
lpcFont
->
draw
(
lstr
,
recti
(
670
-
pos
.
Width
/
2
,
270
,
970
,
350
),
0xffffffff
);
lpcFont
->
draw
(
lstr
,
recti
(
670
-
pos
.
Width
/
2
,
270
,
970
,
350
),
0xffffffff
);
if
(
dInfo
.
vic_string
&&
(
showcardcode
==
1
||
showcardcode
==
2
))
{
driver
->
draw2DRectangle
(
0xa0000000
,
recti
(
540
,
320
,
800
,
340
));
guiFont
->
draw
(
dInfo
.
vic_string
,
recti
(
502
,
321
,
840
,
340
),
0xff000000
,
true
,
true
);
guiFont
->
draw
(
dInfo
.
vic_string
,
recti
(
500
,
320
,
840
,
340
),
0xffffffff
,
true
,
true
);
}
}
else
if
(
showcardp
<
showcarddif
+
10
)
{
}
else
if
(
showcardp
<
showcarddif
+
10
)
{
int
alpha
=
((
showcarddif
+
10
-
showcardp
)
*
25
)
<<
24
;
int
alpha
=
((
showcarddif
+
10
-
showcardp
)
*
25
)
<<
24
;
lpcFont
->
draw
(
lstr
,
recti
(
671
-
pos
.
Width
/
2
+
(
showcardp
-
showcarddif
)
*
40
,
271
,
970
,
350
),
alpha
);
lpcFont
->
draw
(
lstr
,
recti
(
671
-
pos
.
Width
/
2
+
(
showcardp
-
showcarddif
)
*
40
,
271
,
970
,
350
),
alpha
);
...
...
gframe/duelclient.cpp
View file @
155a92fb
...
@@ -111,6 +111,7 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
...
@@ -111,6 +111,7 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
cscg
.
info
.
start_hand
=
_wtoi
(
mainGame
->
ebStartHand
->
getText
());
cscg
.
info
.
start_hand
=
_wtoi
(
mainGame
->
ebStartHand
->
getText
());
cscg
.
info
.
start_lp
=
_wtoi
(
mainGame
->
ebStartLP
->
getText
());
cscg
.
info
.
start_lp
=
_wtoi
(
mainGame
->
ebStartLP
->
getText
());
cscg
.
info
.
draw_count
=
_wtoi
(
mainGame
->
ebDrawCount
->
getText
());
cscg
.
info
.
draw_count
=
_wtoi
(
mainGame
->
ebDrawCount
->
getText
());
cscg
.
info
.
time_limit
=
_wtoi
(
mainGame
->
ebTimeLimit
->
getText
());
cscg
.
info
.
lflist
=
mainGame
->
cbLFlist
->
getItemData
(
mainGame
->
cbLFlist
->
getSelected
());
cscg
.
info
.
lflist
=
mainGame
->
cbLFlist
->
getItemData
(
mainGame
->
cbLFlist
->
getSelected
());
cscg
.
info
.
enable_priority
=
mainGame
->
chkEnablePriority
->
isChecked
();
cscg
.
info
.
enable_priority
=
mainGame
->
chkEnablePriority
->
isChecked
();
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
cscg
.
info
.
no_check_deck
=
mainGame
->
chkNoCheckDeck
->
isChecked
();
...
@@ -297,6 +298,10 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -297,6 +298,10 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
str
.
append
(
msgbuf
);
str
.
append
(
msgbuf
);
myswprintf
(
msgbuf
,
L"%ls%ls
\n
"
,
dataManager
.
GetSysString
(
1227
),
dataManager
.
GetSysString
(
1244
+
pkt
->
info
.
mode
));
myswprintf
(
msgbuf
,
L"%ls%ls
\n
"
,
dataManager
.
GetSysString
(
1227
),
dataManager
.
GetSysString
(
1244
+
pkt
->
info
.
mode
));
str
.
append
(
msgbuf
);
str
.
append
(
msgbuf
);
if
(
pkt
->
info
.
time_limit
)
{
myswprintf
(
msgbuf
,
L"%ls%d
\n
"
,
dataManager
.
GetSysString
(
1237
),
pkt
->
info
.
time_limit
);
str
.
append
(
msgbuf
);
}
str
.
append
(
L"==========
\n
"
);
str
.
append
(
L"==========
\n
"
);
myswprintf
(
msgbuf
,
L"%ls%d
\n
"
,
dataManager
.
GetSysString
(
1231
),
pkt
->
info
.
start_lp
);
myswprintf
(
msgbuf
,
L"%ls%d
\n
"
,
dataManager
.
GetSysString
(
1231
),
pkt
->
info
.
start_lp
);
str
.
append
(
msgbuf
);
str
.
append
(
msgbuf
);
...
@@ -317,6 +322,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -317,6 +322,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
str
.
append
(
msgbuf
);
str
.
append
(
msgbuf
);
}
}
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
dInfo
.
time_limit
=
pkt
->
info
.
time_limit
;
mainGame
->
dInfo
.
time_left
[
0
]
=
0
;
mainGame
->
dInfo
.
time_left
[
1
]
=
0
;
mainGame
->
deckBuilder
.
filterList
=
0
;
mainGame
->
deckBuilder
.
filterList
=
0
;
for
(
auto
lit
=
deckManager
.
_lfList
.
begin
();
lit
!=
deckManager
.
_lfList
.
end
();
++
lit
)
for
(
auto
lit
=
deckManager
.
_lfList
.
begin
();
lit
!=
deckManager
.
_lfList
.
end
();
++
lit
)
if
(
lit
->
hash
==
pkt
->
info
.
lflist
)
if
(
lit
->
hash
==
pkt
->
info
.
lflist
)
...
@@ -375,6 +383,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -375,6 +383,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
dInfo
.
strLP
[
0
][
0
]
=
0
;
mainGame
->
dInfo
.
strLP
[
0
][
0
]
=
0
;
mainGame
->
dInfo
.
strLP
[
1
][
0
]
=
0
;
mainGame
->
dInfo
.
strLP
[
1
][
0
]
=
0
;
mainGame
->
dInfo
.
turn
=
0
;
mainGame
->
dInfo
.
turn
=
0
;
mainGame
->
dInfo
.
time_left
[
0
]
=
0
;
mainGame
->
dInfo
.
time_left
[
1
]
=
0
;
mainGame
->
dInfo
.
time_player
=
2
;
mainGame
->
is_building
=
false
;
mainGame
->
is_building
=
false
;
mainGame
->
wCardImg
->
setVisible
(
true
);
mainGame
->
wCardImg
->
setVisible
(
true
);
mainGame
->
wInfos
->
setVisible
(
true
);
mainGame
->
wInfos
->
setVisible
(
true
);
...
@@ -433,6 +444,15 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -433,6 +444,15 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
}
}
break
;
break
;
}
}
case
STOC_TIME_LIMIT
:
{
STOC_TimeLimit
*
pkt
=
(
STOC_TimeLimit
*
)
pdata
;
int
lplayer
=
mainGame
->
LocalPlayer
(
pkt
->
player
);
if
(
lplayer
==
0
)
DuelClient
::
SendPacketToServer
(
CTOS_TIME_CONFIRM
);
mainGame
->
dInfo
.
time_player
=
lplayer
;
mainGame
->
dInfo
.
time_left
[
lplayer
]
=
pkt
->
left_time
;
break
;
}
case
STOC_HS_PLAYER_ENTER
:
{
case
STOC_HS_PLAYER_ENTER
:
{
STOC_HS_PlayerEnter
*
pkt
=
(
STOC_HS_PlayerEnter
*
)
pdata
;
STOC_HS_PlayerEnter
*
pkt
=
(
STOC_HS_PlayerEnter
*
)
pdata
;
if
(
pkt
->
pos
>
1
)
if
(
pkt
->
pos
>
1
)
...
@@ -496,6 +516,8 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
...
@@ -496,6 +516,8 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
mainGame
->
WaitFrameSignal
(
11
);
mainGame
->
WaitFrameSignal
(
11
);
}
}
}
}
if
(
mainGame
->
dInfo
.
time_player
==
1
)
mainGame
->
dInfo
.
time_player
=
2
;
switch
(
mainGame
->
dInfo
.
curMsg
)
{
switch
(
mainGame
->
dInfo
.
curMsg
)
{
case
MSG_RETRY
:
{
case
MSG_RETRY
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
...
@@ -605,16 +627,30 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
...
@@ -605,16 +627,30 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
int
player
=
BufferIO
::
ReadInt8
(
pbuf
);
int
player
=
BufferIO
::
ReadInt8
(
pbuf
);
int
type
=
BufferIO
::
ReadInt8
(
pbuf
);
int
type
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
showcarddif
=
110
;
mainGame
->
showcarddif
=
110
;
mainGame
->
showcard
=
101
;
mainGame
->
showcardp
=
0
;
mainGame
->
showcardp
=
0
;
mainGame
->
dInfo
.
vic_string
=
0
;
wchar_t
vic_buf
[
256
];
if
(
player
==
2
)
if
(
player
==
2
)
mainGame
->
showcardcode
=
3
;
mainGame
->
showcardcode
=
3
;
else
if
(
mainGame
->
LocalPlayer
(
player
)
==
0
)
{
else
if
(
mainGame
->
LocalPlayer
(
player
)
==
0
)
{
mainGame
->
showcardcode
=
1
;
mainGame
->
showcardcode
=
1
;
if
(
type
<
0x10
)
myswprintf
(
vic_buf
,
L"[%ls] %ls"
,
mainGame
->
dInfo
.
clientname
,
dataManager
.
GetVictoryString
(
type
));
else
myswprintf
(
vic_buf
,
L"%ls"
,
dataManager
.
GetVictoryString
(
type
));
mainGame
->
dInfo
.
vic_string
=
vic_buf
;
}
else
{
}
else
{
mainGame
->
showcardcode
=
2
;
mainGame
->
showcardcode
=
2
;
if
(
type
<
0x10
)
myswprintf
(
vic_buf
,
L"[%ls] %ls"
,
mainGame
->
dInfo
.
hostname
,
dataManager
.
GetVictoryString
(
type
));
else
myswprintf
(
vic_buf
,
L"%ls"
,
dataManager
.
GetVictoryString
(
type
));
mainGame
->
dInfo
.
vic_string
=
vic_buf
;
}
}
mainGame
->
showcard
=
101
;
mainGame
->
WaitFrameSignal
(
120
);
mainGame
->
WaitFrameSignal
(
120
);
mainGame
->
dInfo
.
vic_string
=
0
;
mainGame
->
showcard
=
0
;
break
;
break
;
}
}
case
MSG_WAITING
:
{
case
MSG_WAITING
:
{
...
@@ -2377,6 +2413,7 @@ void DuelClient::SendResponse() {
...
@@ -2377,6 +2413,7 @@ void DuelClient::SendResponse() {
break
;
break
;
}
}
}
}
mainGame
->
dInfo
.
time_player
=
2
;
SendBufferToServer
(
CTOS_RESPONSE
,
response_buf
,
response_len
);
SendBufferToServer
(
CTOS_RESPONSE
,
response_buf
,
response_len
);
}
}
void
DuelClient
::
BeginRefreshHost
()
{
void
DuelClient
::
BeginRefreshHost
()
{
...
...
gframe/game.cpp
View file @
155a92fb
...
@@ -106,21 +106,25 @@ bool Game::Initialize() {
...
@@ -106,21 +106,25 @@ bool Game::Initialize() {
cbMatchMode
=
env
->
addComboBox
(
rect
<
s32
>
(
140
,
85
,
300
,
110
),
wCreateHost
);
cbMatchMode
=
env
->
addComboBox
(
rect
<
s32
>
(
140
,
85
,
300
,
110
),
wCreateHost
);
cbMatchMode
->
addItem
(
dataManager
.
GetSysString
(
1244
));
cbMatchMode
->
addItem
(
dataManager
.
GetSysString
(
1244
));
cbMatchMode
->
addItem
(
dataManager
.
GetSysString
(
1245
));
cbMatchMode
->
addItem
(
dataManager
.
GetSysString
(
1245
));
chkEnablePriority
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
20
,
150
,
360
,
170
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1236
));
env
->
addStaticText
(
dataManager
.
GetSysString
(
1237
),
rect
<
s32
>
(
20
,
120
,
320
,
140
),
false
,
false
,
wCreateHost
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1228
),
rect
<
s32
>
(
20
,
120
,
320
,
140
),
false
,
false
,
wCreateHost
);
myswprintf
(
strbuf
,
L"%d"
,
180
);
chkNoCheckDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
20
,
180
,
170
,
200
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1229
));
ebTimeLimit
=
env
->
addEditBox
(
strbuf
,
rect
<
s32
>
(
140
,
115
,
220
,
140
),
true
,
wCreateHost
);
chkNoShuffleDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
180
,
180
,
360
,
200
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1230
));
ebTimeLimit
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1231
),
rect
<
s32
>
(
20
,
210
,
320
,
230
),
false
,
false
,
wCreateHost
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1228
),
rect
<
s32
>
(
20
,
150
,
320
,
170
),
false
,
false
,
wCreateHost
);
chkEnablePriority
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
20
,
180
,
360
,
200
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1236
));
chkNoCheckDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
20
,
210
,
170
,
230
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1229
));
chkNoShuffleDeck
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
180
,
210
,
360
,
230
),
wCreateHost
,
-
1
,
dataManager
.
GetSysString
(
1230
));
env
->
addStaticText
(
dataManager
.
GetSysString
(
1231
),
rect
<
s32
>
(
20
,
240
,
320
,
260
),
false
,
false
,
wCreateHost
);
myswprintf
(
strbuf
,
L"%d"
,
8000
);
myswprintf
(
strbuf
,
L"%d"
,
8000
);
ebStartLP
=
env
->
addEditBox
(
strbuf
,
rect
<
s32
>
(
140
,
2
10
,
220
,
23
0
),
true
,
wCreateHost
);
ebStartLP
=
env
->
addEditBox
(
strbuf
,
rect
<
s32
>
(
140
,
2
35
,
220
,
26
0
),
true
,
wCreateHost
);
ebStartLP
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebStartLP
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1232
),
rect
<
s32
>
(
20
,
2
40
,
320
,
26
0
),
false
,
false
,
wCreateHost
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1232
),
rect
<
s32
>
(
20
,
2
70
,
320
,
29
0
),
false
,
false
,
wCreateHost
);
myswprintf
(
strbuf
,
L"%d"
,
5
);
myswprintf
(
strbuf
,
L"%d"
,
5
);
ebStartHand
=
env
->
addEditBox
(
strbuf
,
rect
<
s32
>
(
140
,
2
40
,
220
,
26
0
),
true
,
wCreateHost
);
ebStartHand
=
env
->
addEditBox
(
strbuf
,
rect
<
s32
>
(
140
,
2
65
,
220
,
29
0
),
true
,
wCreateHost
);
ebStartHand
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebStartHand
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1233
),
rect
<
s32
>
(
20
,
270
,
320
,
29
0
),
false
,
false
,
wCreateHost
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1233
),
rect
<
s32
>
(
20
,
300
,
320
,
32
0
),
false
,
false
,
wCreateHost
);
myswprintf
(
strbuf
,
L"%d"
,
1
);
myswprintf
(
strbuf
,
L"%d"
,
1
);
ebDrawCount
=
env
->
addEditBox
(
strbuf
,
rect
<
s32
>
(
140
,
2
70
,
220
,
29
0
),
true
,
wCreateHost
);
ebDrawCount
=
env
->
addEditBox
(
strbuf
,
rect
<
s32
>
(
140
,
2
95
,
220
,
32
0
),
true
,
wCreateHost
);
ebDrawCount
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
ebDrawCount
->
setTextAlignment
(
irr
::
gui
::
EGUIA_CENTER
,
irr
::
gui
::
EGUIA_CENTER
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1234
),
rect
<
s32
>
(
10
,
360
,
220
,
380
),
false
,
false
,
wCreateHost
);
env
->
addStaticText
(
dataManager
.
GetSysString
(
1234
),
rect
<
s32
>
(
10
,
360
,
220
,
380
),
false
,
false
,
wCreateHost
);
ebServerName
=
env
->
addEditBox
(
gameConf
.
gamename
,
rect
<
s32
>
(
110
,
355
,
250
,
380
),
true
,
wCreateHost
);
ebServerName
=
env
->
addEditBox
(
gameConf
.
gamename
,
rect
<
s32
>
(
110
,
355
,
250
,
380
),
true
,
wCreateHost
);
...
@@ -511,9 +515,17 @@ void Game::MainLoop() {
...
@@ -511,9 +515,17 @@ void Game::MainLoop() {
fps
=
0
;
fps
=
0
;
cur_time
-=
1000
;
cur_time
-=
1000
;
timer
->
setTime
(
0
);
timer
->
setTime
(
0
);
if
(
dInfo
.
time_player
==
0
||
dInfo
.
time_player
==
1
)
if
(
dInfo
.
time_left
[
dInfo
.
time_player
])
dInfo
.
time_left
[
dInfo
.
time_player
]
--
;
}
}
}
}
DuelClient
::
StopClient
(
true
);
DuelClient
::
StopClient
(
true
);
#ifdef _WIN32
Sleep
(
500
);
#else
usleep
(
500000
);
#endif
SaveConfig
();
SaveConfig
();
device
->
drop
();
device
->
drop
();
}
}
...
...
gframe/game.h
View file @
155a92fb
...
@@ -36,6 +36,10 @@ struct DuelInfo {
...
@@ -36,6 +36,10 @@ struct DuelInfo {
wchar_t
clientname
[
20
];
wchar_t
clientname
[
20
];
wchar_t
strLP
[
2
][
16
];
wchar_t
strLP
[
2
][
16
];
wchar_t
strTurn
[
8
];
wchar_t
strTurn
[
8
];
wchar_t
*
vic_string
;
unsigned
char
time_player
;
unsigned
short
time_limit
;
unsigned
short
time_left
[
2
];
};
};
struct
FadingUnit
{
struct
FadingUnit
{
...
@@ -173,6 +177,7 @@ public:
...
@@ -173,6 +177,7 @@ public:
irr
::
gui
::
IGUIComboBox
*
cbLFlist
;
irr
::
gui
::
IGUIComboBox
*
cbLFlist
;
irr
::
gui
::
IGUIComboBox
*
cbMatchMode
;
irr
::
gui
::
IGUIComboBox
*
cbMatchMode
;
irr
::
gui
::
IGUIComboBox
*
cbRule
;
irr
::
gui
::
IGUIComboBox
*
cbRule
;
irr
::
gui
::
IGUIEditBox
*
ebTimeLimit
;
irr
::
gui
::
IGUIEditBox
*
ebStartLP
;
irr
::
gui
::
IGUIEditBox
*
ebStartLP
;
irr
::
gui
::
IGUIEditBox
*
ebStartHand
;
irr
::
gui
::
IGUIEditBox
*
ebStartHand
;
irr
::
gui
::
IGUIEditBox
*
ebDrawCount
;
irr
::
gui
::
IGUIEditBox
*
ebDrawCount
;
...
...
gframe/netserver.cpp
View file @
155a92fb
...
@@ -142,6 +142,7 @@ int NetServer::ServerThread(void* param) {
...
@@ -142,6 +142,7 @@ int NetServer::ServerThread(void* param) {
}
}
users
.
clear
();
users
.
clear
();
evconnlistener_free
(
listener
);
evconnlistener_free
(
listener
);
listener
=
0
;
if
(
broadcast_ev
)
{
if
(
broadcast_ev
)
{
evutil_socket_t
fd
;
evutil_socket_t
fd
;
event_get_assignment
(
broadcast_ev
,
0
,
&
fd
,
0
,
0
,
0
);
event_get_assignment
(
broadcast_ev
,
0
,
&
fd
,
0
,
0
,
0
);
...
@@ -149,12 +150,13 @@ int NetServer::ServerThread(void* param) {
...
@@ -149,12 +150,13 @@ int NetServer::ServerThread(void* param) {
event_free
(
broadcast_ev
);
event_free
(
broadcast_ev
);
broadcast_ev
=
0
;
broadcast_ev
=
0
;
}
}
event_base_free
(
net_evbase
);
if
(
duel_mode
)
{
listener
=
0
;
event_free
(
duel_mode
->
etimer
);
net_evbase
=
0
;
if
(
duel_mode
)
delete
duel_mode
;
delete
duel_mode
;
}
duel_mode
=
0
;
duel_mode
=
0
;
event_base_free
(
net_evbase
);
net_evbase
=
0
;
return
0
;
return
0
;
}
}
void
NetServer
::
DisconnectPlayer
(
DuelPlayer
*
dp
)
{
void
NetServer
::
DisconnectPlayer
(
DuelPlayer
*
dp
)
{
...
@@ -215,11 +217,11 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
...
@@ -215,11 +217,11 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
CTOS_CreateGame
*
pkt
=
(
CTOS_CreateGame
*
)
pdata
;
CTOS_CreateGame
*
pkt
=
(
CTOS_CreateGame
*
)
pdata
;
if
(
pkt
->
info
.
mode
==
MODE_SINGLE
)
{
if
(
pkt
->
info
.
mode
==
MODE_SINGLE
)
{
duel_mode
=
new
SingleDuel
(
false
);
duel_mode
=
new
SingleDuel
(
false
);
duel_mode
->
etimer
=
event_new
(
net_evbase
,
0
,
EV_TIMEOUT
|
EV_PERSIST
,
SingleDuel
::
SingleTimer
,
duel_mode
);
}
else
if
(
pkt
->
info
.
mode
==
MODE_MATCH
)
{
}
else
if
(
pkt
->
info
.
mode
==
MODE_MATCH
)
{
duel_mode
=
new
SingleDuel
(
true
);
duel_mode
=
new
SingleDuel
(
true
);
duel_mode
->
etimer
=
event_new
(
net_evbase
,
0
,
EV_TIMEOUT
|
EV_PERSIST
,
SingleDuel
::
SingleTimer
,
duel_mode
);
}
}
timeval
timeout
=
{
1
,
0
};
duel_mode
->
etimer
=
event_new
(
net_evbase
,
0
,
EV_PERSIST
,
SingleDuel
::
SingleTimer
,
duel_mode
);
if
(
pkt
->
info
.
rule
>
3
)
if
(
pkt
->
info
.
rule
>
3
)
pkt
->
info
.
rule
=
0
;
pkt
->
info
.
rule
=
0
;
if
(
pkt
->
info
.
mode
>
1
)
if
(
pkt
->
info
.
mode
>
1
)
...
...
gframe/network.h
View file @
155a92fb
...
@@ -21,6 +21,7 @@ struct HostInfo {
...
@@ -21,6 +21,7 @@ struct HostInfo {
unsigned
int
start_lp
;
unsigned
int
start_lp
;
unsigned
char
start_hand
;
unsigned
char
start_hand
;
unsigned
char
draw_count
;
unsigned
char
draw_count
;
unsigned
short
time_limit
;
};
};
struct
HostPacket
{
struct
HostPacket
{
unsigned
short
identifier
;
unsigned
short
identifier
;
...
...
gframe/replay.cpp
View file @
155a92fb
...
@@ -119,7 +119,6 @@ void Replay::EndRecord() {
...
@@ -119,7 +119,6 @@ void Replay::EndRecord() {
pheader
.
flag
|=
REPLAY_COMPRESSED
;
pheader
.
flag
|=
REPLAY_COMPRESSED
;
size_t
propsize
=
5
;
size_t
propsize
=
5
;
comp_size
=
0x1000
;
comp_size
=
0x1000
;
printf
(
"%x
\n
"
,
comp_data
);
LzmaCompress
(
comp_data
,
&
comp_size
,
replay_data
,
pdata
-
replay_data
,
pheader
.
props
,
&
propsize
,
5
,
1
<<
24
,
3
,
0
,
2
,
32
,
1
);
LzmaCompress
(
comp_data
,
&
comp_size
,
replay_data
,
pdata
-
replay_data
,
pheader
.
props
,
&
propsize
,
5
,
1
<<
24
,
3
,
0
,
2
,
32
,
1
);
is_recording
=
false
;
is_recording
=
false
;
}
}
...
...
gframe/single_duel.cpp
View file @
155a92fb
...
@@ -371,6 +371,8 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
...
@@ -371,6 +371,8 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
pdeck
[
1
].
main
[
swap
]
=
tmp
;
pdeck
[
1
].
main
[
swap
]
=
tmp
;
}
}
}
}
time_limit
[
0
]
=
host_info
.
time_limit
;
time_limit
[
1
]
=
host_info
.
time_limit
;
set_card_reader
((
card_reader
)
DataManager
::
CardReader
);
set_card_reader
((
card_reader
)
DataManager
::
CardReader
);
set_message_handler
((
message_handler
)
SingleDuel
::
MessageHandler
);
set_message_handler
((
message_handler
)
SingleDuel
::
MessageHandler
);
rnd
.
reset
(
seed
);
rnd
.
reset
(
seed
);
...
@@ -526,8 +528,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -526,8 +528,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
unsigned
char
engType
=
BufferIO
::
ReadUInt8
(
pbuf
);
unsigned
char
engType
=
BufferIO
::
ReadUInt8
(
pbuf
);
switch
(
engType
)
{
switch
(
engType
)
{
case
MSG_RETRY
:
{
case
MSG_RETRY
:
{
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
last_response
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
last_response
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
last_response
);
return
1
;
return
1
;
}
}
case
MSG_HINT
:
{
case
MSG_HINT
:
{
...
@@ -588,8 +590,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -588,8 +590,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
RefreshSzone
(
1
);
RefreshSzone
(
1
);
RefreshHand
(
0
);
RefreshHand
(
0
);
RefreshHand
(
1
);
RefreshHand
(
1
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_IDLECMD
:
{
case
MSG_SELECT_IDLECMD
:
{
...
@@ -612,30 +614,30 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -612,30 +614,30 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
RefreshSzone
(
1
);
RefreshSzone
(
1
);
RefreshHand
(
0
);
RefreshHand
(
0
);
RefreshHand
(
1
);
RefreshHand
(
1
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_EFFECTYN
:
{
case
MSG_SELECT_EFFECTYN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
8
;
pbuf
+=
8
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_YESNO
:
{
case
MSG_SELECT_YESNO
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
;
pbuf
+=
4
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_OPTION
:
{
case
MSG_SELECT_OPTION
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
4
;
pbuf
+=
count
*
4
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_CARD
:
case
MSG_SELECT_CARD
:
...
@@ -653,31 +655,31 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -653,31 +655,31 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
ss
=
BufferIO
::
ReadInt8
(
pbuf
);
ss
=
BufferIO
::
ReadInt8
(
pbuf
);
if
(
c
!=
player
)
BufferIO
::
WriteInt32
(
pbufw
,
0
);
if
(
c
!=
player
)
BufferIO
::
WriteInt32
(
pbufw
,
0
);
}
}
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_CHAIN
:
{
case
MSG_SELECT_CHAIN
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
9
+
count
*
11
;
pbuf
+=
9
+
count
*
11
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_PLACE
:
case
MSG_SELECT_PLACE
:
case
MSG_SELECT_DISFIELD
:
{
case
MSG_SELECT_DISFIELD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
5
;
pbuf
+=
5
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_POSITION
:
{
case
MSG_SELECT_POSITION
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
5
;
pbuf
+=
5
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_COUNTER
:
{
case
MSG_SELECT_COUNTER
:
{
...
@@ -685,8 +687,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -685,8 +687,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
pbuf
+=
3
;
pbuf
+=
3
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
pbuf
+=
count
*
8
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SELECT_SUM
:
{
case
MSG_SELECT_SUM
:
{
...
@@ -695,8 +697,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -695,8 +697,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
pbuf
+=
5
;
pbuf
+=
5
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
11
;
pbuf
+=
count
*
11
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_SORT_CARD
:
case
MSG_SORT_CARD
:
...
@@ -704,8 +706,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -704,8 +706,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
7
;
pbuf
+=
count
*
7
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_CONFIRM_DECKTOP
:
{
case
MSG_CONFIRM_DECKTOP
:
{
...
@@ -787,6 +789,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -787,6 +789,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
RefreshSzone
(
0
);
RefreshSzone
(
0
);
RefreshSzone
(
1
);
RefreshSzone
(
1
);
pbuf
++
;
pbuf
++
;
time_limit
[
0
]
=
host_info
.
time_limit
;
time_limit
[
1
]
=
host_info
.
time_limit
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
...
@@ -1191,29 +1195,29 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1191,29 +1195,29 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
case
MSG_ANNOUNCE_RACE
:
{
case
MSG_ANNOUNCE_RACE
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
5
;
pbuf
+=
5
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_ANNOUNCE_ATTRIB
:
{
case
MSG_ANNOUNCE_ATTRIB
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
5
;
pbuf
+=
5
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_ANNOUNCE_CARD
:
{
case
MSG_ANNOUNCE_CARD
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_ANNOUNCE_NUMBER
:
{
case
MSG_ANNOUNCE_NUMBER
:
{
player
=
BufferIO
::
ReadInt8
(
pbuf
);
player
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
4
*
count
;
pbuf
+=
4
*
count
;
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
WaitforResponse
(
player
);
WaitforResponse
(
player
);
NetServer
::
SendBufferToPlayer
(
players
[
player
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
return
1
;
return
1
;
}
}
case
MSG_CARD_HINT
:
{
case
MSG_CARD_HINT
:
{
...
@@ -1235,6 +1239,12 @@ void SingleDuel::GetResponse(DuelPlayer* dp, void* pdata, unsigned int len) {
...
@@ -1235,6 +1239,12 @@ void SingleDuel::GetResponse(DuelPlayer* dp, void* pdata, unsigned int len) {
last_replay
.
WriteData
(
resb
,
len
);
last_replay
.
WriteData
(
resb
,
len
);
set_responseb
(
pduel
,
resb
);
set_responseb
(
pduel
,
resb
);
players
[
dp
->
type
]
->
state
=
0xff
;
players
[
dp
->
type
]
->
state
=
0xff
;
if
(
host_info
.
time_limit
)
{
if
(
time_limit
[
dp
->
type
]
>=
time_elapsed
)
time_limit
[
dp
->
type
]
-=
time_elapsed
;
else
time_limit
[
dp
->
type
]
=
0
;
event_del
(
etimer
);
}
Process
();
Process
();
}
}
void
SingleDuel
::
EndDuel
()
{
void
SingleDuel
::
EndDuel
()
{
...
@@ -1254,12 +1264,27 @@ void SingleDuel::EndDuel() {
...
@@ -1254,12 +1264,27 @@ void SingleDuel::EndDuel() {
}
}
void
SingleDuel
::
WaitforResponse
(
int
playerid
)
{
void
SingleDuel
::
WaitforResponse
(
int
playerid
)
{
last_response
=
playerid
;
last_response
=
playerid
;
players
[
playerid
]
->
state
=
CTOS_RESPONSE
;
unsigned
char
msg
=
MSG_WAITING
;
unsigned
char
msg
=
MSG_WAITING
;
NetServer
::
SendPacketToPlayer
(
players
[
1
-
playerid
],
STOC_GAME_MSG
,
msg
);
NetServer
::
SendPacketToPlayer
(
players
[
1
-
playerid
],
STOC_GAME_MSG
,
msg
);
if
(
host_info
.
time_limit
)
{
STOC_TimeLimit
sctl
;
sctl
.
player
=
playerid
;
sctl
.
left_time
=
time_limit
[
playerid
];
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_TIME_LIMIT
,
sctl
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_TIME_LIMIT
,
sctl
);
players
[
playerid
]
->
state
=
CTOS_TIME_CONFIRM
;
}
else
players
[
playerid
]
->
state
=
CTOS_RESPONSE
;
}
}
void
SingleDuel
::
TimeConfirm
(
DuelPlayer
*
dp
)
{
void
SingleDuel
::
TimeConfirm
(
DuelPlayer
*
dp
)
{
if
(
host_info
.
time_limit
==
0
)
return
;
if
(
dp
->
type
!=
last_response
)
return
;
players
[
last_response
]
->
state
=
CTOS_RESPONSE
;
time_elapsed
=
0
;
timeval
timeout
=
{
1
,
0
};
event_add
(
etimer
,
&
timeout
);
}
}
void
SingleDuel
::
RefreshMzone
(
int
player
,
int
flag
,
int
use_cache
)
{
void
SingleDuel
::
RefreshMzone
(
int
player
,
int
flag
,
int
use_cache
)
{
char
query_buffer
[
0x1000
];
char
query_buffer
[
0x1000
];
...
@@ -1363,6 +1388,28 @@ int SingleDuel::MessageHandler(long fduel, int type) {
...
@@ -1363,6 +1388,28 @@ int SingleDuel::MessageHandler(long fduel, int type) {
}
}
void
SingleDuel
::
SingleTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
)
{
void
SingleDuel
::
SingleTimer
(
evutil_socket_t
fd
,
short
events
,
void
*
arg
)
{
SingleDuel
*
sd
=
static_cast
<
SingleDuel
*>
(
arg
);
SingleDuel
*
sd
=
static_cast
<
SingleDuel
*>
(
arg
);
sd
->
time_elapsed
++
;
if
(
sd
->
time_elapsed
>=
sd
->
time_limit
[
sd
->
last_response
])
{
unsigned
char
wbuf
[
3
];
uint32
player
=
sd
->
last_response
;
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
1
]
=
1
-
player
;
wbuf
[
2
]
=
0x3
;
NetServer
::
SendBufferToPlayer
(
sd
->
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
ReSendToPlayer
(
sd
->
players
[
1
]);
for
(
auto
oit
=
sd
->
observers
.
begin
();
oit
!=
sd
->
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
sd
->
players
[
player
]
==
sd
->
pplayer
[
player
])
{
sd
->
match_result
[
sd
->
duel_count
++
]
=
1
-
player
;
sd
->
tp_player
=
player
;
}
else
{
sd
->
match_result
[
sd
->
duel_count
++
]
=
player
;
sd
->
tp_player
=
1
-
player
;
}
sd
->
EndDuel
();
sd
->
DuelEndProc
();
event_del
(
sd
->
etimer
);
}
}
}
}
}
gframe/single_duel.h
View file @
155a92fb
...
@@ -53,6 +53,8 @@ protected:
...
@@ -53,6 +53,8 @@ protected:
unsigned
char
duel_count
;
unsigned
char
duel_count
;
unsigned
char
tp_player
;
unsigned
char
tp_player
;
unsigned
char
match_result
[
3
];
unsigned
char
match_result
[
3
];
unsigned
short
time_limit
[
2
];
unsigned
short
time_elapsed
;
};
};
}
}
...
...
script/c11975962.lua
View file @
155a92fb
...
@@ -26,7 +26,7 @@ function c11975962.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
...
@@ -26,7 +26,7 @@ function c11975962.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
end
end
function
c11975962
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c11975962
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
tc
=
Duel
.
GetFirstTarget
()
local
tc
=
Duel
.
GetFirstTarget
()
if
tc
and
tc
:
Is
Faceup
()
and
tc
:
Is
RelateToEffect
(
e
)
then
if
tc
and
tc
:
IsRelateToEffect
(
e
)
then
Duel
.
Remove
(
tc
,
POS_FACEUP
,
REASON_EFFECT
)
Duel
.
Remove
(
tc
,
POS_FACEUP
,
REASON_EFFECT
)
end
end
end
end
script/c5037726.lua
View file @
155a92fb
...
@@ -17,7 +17,7 @@ function c5037726.cost(e,tp,eg,ep,ev,re,r,rp,chk)
...
@@ -17,7 +17,7 @@ function c5037726.cost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel
.
Release
(
g
,
REASON_COST
)
Duel
.
Release
(
g
,
REASON_COST
)
end
end
function
c5037726
.
filter
(
c
,
e
,
tp
)
function
c5037726
.
filter
(
c
,
e
,
tp
)
return
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
return
c
:
Is
Faceup
()
and
c
:
Is
CanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
end
end
function
c5037726
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
,
chkc
)
function
c5037726
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
,
chkc
)
if
chkc
then
return
chkc
:
IsLocation
(
LOCATION_REMOVED
)
and
c5037726
.
filter
(
chkc
,
e
,
tp
)
end
if
chkc
then
return
chkc
:
IsLocation
(
LOCATION_REMOVED
)
and
c5037726
.
filter
(
chkc
,
e
,
tp
)
end
...
...
script/c78156759.lua
View file @
155a92fb
...
@@ -17,7 +17,7 @@ function c78156759.initial_effect(c)
...
@@ -17,7 +17,7 @@ function c78156759.initial_effect(c)
e2
:
SetCategory
(
CATEGORY_DESTROY
)
e2
:
SetCategory
(
CATEGORY_DESTROY
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_TRIGGER_F
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_TRIGGER_F
)
e2
:
SetCode
(
EVENT_PHASE
+
PHASE_END
)
e2
:
SetCode
(
EVENT_PHASE
+
PHASE_END
)
e2
:
SetProperty
(
EFFECT_FLAG_CARD_TARGET
+
EFFECT_FLAG_REPEAT
)
e2
:
SetProperty
(
EFFECT_FLAG_CARD_TARGET
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetCountLimit
(
1
)
e2
:
SetCountLimit
(
1
)
e2
:
SetCondition
(
c78156759
.
descon
)
e2
:
SetCondition
(
c78156759
.
descon
)
...
...
script/c85562745.lua
View file @
155a92fb
...
@@ -22,12 +22,13 @@ function c85562745.con(e,tp,eg,ep,ev,re,r,rp)
...
@@ -22,12 +22,13 @@ function c85562745.con(e,tp,eg,ep,ev,re,r,rp)
return
ep
~=
tp
and
bit
.
band
(
r
,
REASON_BATTLE
)
==
0
and
re
:
GetHandler
():
GetCode
()
~=
85562745
return
ep
~=
tp
and
bit
.
band
(
r
,
REASON_BATTLE
)
==
0
and
re
:
GetHandler
():
GetCode
()
~=
85562745
end
end
function
c85562745
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
c85562745
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
if
chk
==
0
then
return
e
:
GetHandler
():
IsRelateToEffect
(
e
)
end
Duel
.
SetTargetPlayer
(
1
-
tp
)
Duel
.
SetTargetPlayer
(
1
-
tp
)
Duel
.
SetTargetParam
(
300
)
Duel
.
SetTargetParam
(
300
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_DAMAGE
,
nil
,
0
,
1
-
tp
,
300
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_DAMAGE
,
nil
,
0
,
1
-
tp
,
300
)
end
end
function
c85562745
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c85562745
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
if
not
e
:
GetHandler
():
IsRelateToEffect
(
e
)
then
return
end
local
p
,
d
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_PLAYER
,
CHAININFO_TARGET_PARAM
)
local
p
,
d
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_PLAYER
,
CHAININFO_TARGET_PARAM
)
Duel
.
Damage
(
p
,
d
,
REASON_EFFECT
)
Duel
.
Damage
(
p
,
d
,
REASON_EFFECT
)
end
end
strings.conf
View file @
155a92fb
...
@@ -236,6 +236,7 @@
...
@@ -236,6 +236,7 @@
!
system
1234
主机名称:
!
system
1234
主机名称:
!
system
1235
主机密码:
!
system
1235
主机密码:
!
system
1236
允许启动效果优先权
!
system
1236
允许启动效果优先权
!
system
1237
每回合时间:
!
system
1240
OCG
!
system
1240
OCG
!
system
1241
TCG
!
system
1241
TCG
!
system
1242
OCG&TCG
!
system
1242
OCG&TCG
...
...
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