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
028fbb46
Commit
028fbb46
authored
Feb 10, 2012
by
argon.sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ver update
parent
84025ebf
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
230 additions
and
70 deletions
+230
-70
gframe/duelclient.cpp
gframe/duelclient.cpp
+14
-3
gframe/event_handler.cpp
gframe/event_handler.cpp
+13
-2
gframe/game.cpp
gframe/game.cpp
+4
-0
gframe/game.h
gframe/game.h
+3
-0
gframe/netserver.cpp
gframe/netserver.cpp
+10
-1
gframe/network.h
gframe/network.h
+2
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+93
-54
gframe/single_duel.h
gframe/single_duel.h
+2
-0
ocgcore/libdebug.cpp
ocgcore/libdebug.cpp
+68
-0
script/c38679204.lua
script/c38679204.lua
+2
-2
script/c46668237.lua
script/c46668237.lua
+3
-3
script/c67030233.lua
script/c67030233.lua
+8
-0
script/c74191942.lua
script/c74191942.lua
+2
-2
script/c79229522.lua
script/c79229522.lua
+1
-1
strings.conf
strings.conf
+3
-0
system.conf
system.conf
+2
-2
No files found.
gframe/duelclient.cpp
View file @
028fbb46
...
@@ -266,6 +266,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -266,6 +266,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
wDeckEdit
->
setVisible
(
false
);
mainGame
->
wDeckEdit
->
setVisible
(
false
);
mainGame
->
wFilter
->
setVisible
(
false
);
mainGame
->
wFilter
->
setVisible
(
false
);
mainGame
->
btnSideOK
->
setVisible
(
true
);
mainGame
->
btnSideOK
->
setVisible
(
true
);
if
(
!
mainGame
->
dInfo
.
isObserver
)
mainGame
->
btnLeaveGame
->
setVisible
(
false
);
mainGame
->
deckBuilder
.
result_string
[
0
]
=
L'0'
;
mainGame
->
deckBuilder
.
result_string
[
0
]
=
L'0'
;
mainGame
->
deckBuilder
.
result_string
[
1
]
=
0
;
mainGame
->
deckBuilder
.
result_string
[
1
]
=
0
;
mainGame
->
deckBuilder
.
results
.
clear
();
mainGame
->
deckBuilder
.
results
.
clear
();
...
@@ -381,6 +383,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -381,6 +383,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
wPhase
->
setVisible
(
true
);
mainGame
->
wPhase
->
setVisible
(
true
);
mainGame
->
btnSideOK
->
setVisible
(
false
);
mainGame
->
btnSideOK
->
setVisible
(
false
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
if
(
selftype
>
1
)
{
mainGame
->
dInfo
.
isObserver
=
true
;
mainGame
->
btnLeaveGame
->
setText
(
dataManager
.
GetSysString
(
1350
));
mainGame
->
btnLeaveGame
->
setVisible
(
true
);
}
if
(
selftype
!=
1
)
{
if
(
selftype
!=
1
)
{
BufferIO
::
CopyWStr
(
mainGame
->
stHostSingleDuelist
[
0
]
->
getText
(),
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
CopyWStr
(
mainGame
->
stHostSingleDuelist
[
0
]
->
getText
(),
mainGame
->
dInfo
.
hostname
,
20
);
BufferIO
::
CopyWStr
(
mainGame
->
stHostSingleDuelist
[
1
]
->
getText
(),
mainGame
->
dInfo
.
clientname
,
20
);
BufferIO
::
CopyWStr
(
mainGame
->
stHostSingleDuelist
[
1
]
->
getText
(),
mainGame
->
dInfo
.
clientname
,
20
);
...
@@ -615,6 +622,10 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
...
@@ -615,6 +622,10 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
int
playertype
=
BufferIO
::
ReadInt8
(
pbuf
);
int
playertype
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dInfo
.
isFirst
=
(
playertype
&
0xf
)
?
false
:
true
;
mainGame
->
dInfo
.
isFirst
=
(
playertype
&
0xf
)
?
false
:
true
;
mainGame
->
dInfo
.
isObserver
=
(
playertype
&
0xf0
)
?
true
:
false
;
mainGame
->
dInfo
.
isObserver
=
(
playertype
&
0xf0
)
?
true
:
false
;
if
(
!
mainGame
->
dInfo
.
isObserver
)
{
mainGame
->
btnLeaveGame
->
setText
(
dataManager
.
GetSysString
(
1351
));
mainGame
->
btnLeaveGame
->
setVisible
(
true
);
}
mainGame
->
dInfo
.
lp
[
mainGame
->
LocalPlayer
(
0
)]
=
BufferIO
::
ReadInt32
(
pbuf
);
mainGame
->
dInfo
.
lp
[
mainGame
->
LocalPlayer
(
0
)]
=
BufferIO
::
ReadInt32
(
pbuf
);
mainGame
->
dInfo
.
lp
[
mainGame
->
LocalPlayer
(
1
)]
=
BufferIO
::
ReadInt32
(
pbuf
);
mainGame
->
dInfo
.
lp
[
mainGame
->
LocalPlayer
(
1
)]
=
BufferIO
::
ReadInt32
(
pbuf
);
myswprintf
(
mainGame
->
dInfo
.
strLP
[
0
],
L"%d"
,
mainGame
->
dInfo
.
lp
[
0
]);
myswprintf
(
mainGame
->
dInfo
.
strLP
[
0
],
L"%d"
,
mainGame
->
dInfo
.
lp
[
0
]);
...
@@ -1221,7 +1232,7 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
...
@@ -1221,7 +1232,7 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
if
(
code
!=
0
)
if
(
code
!=
0
)
pcard
->
SetCode
(
code
);
pcard
->
SetCode
(
code
);
myswprintf
(
textBuffer
,
L"
%d[%ls]"
,
i
,
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
L"
*[%ls]"
,
dataManager
.
GetName
(
code
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
code
);
mainGame
->
logParam
.
push_back
(
code
);
float
shift
=
-
0.15
f
;
float
shift
=
-
0.15
f
;
...
@@ -1254,7 +1265,7 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
...
@@ -1254,7 +1265,7 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
pcard
=
mainGame
->
dField
.
GetCard
(
c
,
l
,
s
);
if
(
code
!=
0
)
if
(
code
!=
0
)
pcard
->
SetCode
(
code
);
pcard
->
SetCode
(
code
);
myswprintf
(
textBuffer
,
L"
%d[%ls]"
,
i
,
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
L"
*[%ls]"
,
dataManager
.
GetName
(
code
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
code
);
mainGame
->
logParam
.
push_back
(
code
);
if
(
l
&
0x41
)
{
if
(
l
&
0x41
)
{
...
@@ -2384,7 +2395,7 @@ void DuelClient::BeginRefreshHost() {
...
@@ -2384,7 +2395,7 @@ void DuelClient::BeginRefreshHost() {
return
;
return
;
}
}
timeval
timeout
=
{
5
,
0
};
timeval
timeout
=
{
5
,
0
};
resp_event
=
event_new
(
broadev
,
reply
,
EV_TIMEOUT
|
EV_READ
|
EV_PERSIST
,
BroadcastReply
,
broadev
);
resp_event
=
event_new
(
broadev
,
reply
,
EV_TIMEOUT
|
EV_READ
,
BroadcastReply
,
broadev
);
event_add
(
resp_event
,
&
timeout
);
event_add
(
resp_event
,
&
timeout
);
Thread
::
NewThread
(
RefreshThread
,
broadev
);
Thread
::
NewThread
(
RefreshThread
,
broadev
);
//send request
//send request
...
...
gframe/event_handler.cpp
View file @
028fbb46
...
@@ -90,6 +90,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -90,6 +90,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame
->
HideElement
(
mainGame
->
wReplaySave
,
true
);
mainGame
->
HideElement
(
mainGame
->
wReplaySave
,
true
);
break
;
break
;
}
}
case
BUTTON_LEAVE_GAME
:
{
if
(
mainGame
->
dInfo
.
isObserver
)
{
DuelClient
::
StopClient
();
mainGame
->
CloseDuelWindow
();
mainGame
->
dInfo
.
isStarted
=
false
;
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
menuHandler
);
mainGame
->
ShowElement
(
mainGame
->
wLanWindow
);
}
else
{
DuelClient
::
SendPacketToServer
(
CTOS_SURRENDER
);
mainGame
->
localAction
.
Set
();
}
break
;
}
case
BUTTON_MSG_OK
:
{
case
BUTTON_MSG_OK
:
{
mainGame
->
HideElement
(
mainGame
->
wMessage
,
true
);
mainGame
->
HideElement
(
mainGame
->
wMessage
,
true
);
break
;
break
;
...
@@ -110,7 +123,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -110,7 +123,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
}
}
mainGame
->
HideElement
(
mainGame
->
wQuery
);
break
;
break
;
}
}
case
BUTTON_NO
:
{
case
BUTTON_NO
:
{
...
@@ -138,7 +150,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -138,7 +150,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break
;
break
;
}
}
}
}
mainGame
->
HideElement
(
mainGame
->
wQuery
);
break
;
break
;
}
}
case
BUTTON_POS_AU
:
{
case
BUTTON_POS_AU
:
{
...
...
gframe/game.cpp
View file @
028fbb46
...
@@ -433,6 +433,9 @@ bool Game::Initialize() {
...
@@ -433,6 +433,9 @@ bool Game::Initialize() {
btnReplayStep
=
env
->
addButton
(
rect
<
s32
>
(
5
,
55
,
85
,
75
),
wReplayControl
,
BUTTON_REPLAY_STEP
,
dataManager
.
GetSysString
(
1345
));
btnReplayStep
=
env
->
addButton
(
rect
<
s32
>
(
5
,
55
,
85
,
75
),
wReplayControl
,
BUTTON_REPLAY_STEP
,
dataManager
.
GetSysString
(
1345
));
btnReplaySwap
=
env
->
addButton
(
rect
<
s32
>
(
5
,
80
,
85
,
100
),
wReplayControl
,
BUTTON_REPLAY_SWAP
,
dataManager
.
GetSysString
(
1346
));
btnReplaySwap
=
env
->
addButton
(
rect
<
s32
>
(
5
,
80
,
85
,
100
),
wReplayControl
,
BUTTON_REPLAY_SWAP
,
dataManager
.
GetSysString
(
1346
));
btnReplayExit
=
env
->
addButton
(
rect
<
s32
>
(
5
,
105
,
85
,
125
),
wReplayControl
,
BUTTON_REPLAY_EXIT
,
dataManager
.
GetSysString
(
1347
));
btnReplayExit
=
env
->
addButton
(
rect
<
s32
>
(
5
,
105
,
85
,
125
),
wReplayControl
,
BUTTON_REPLAY_EXIT
,
dataManager
.
GetSysString
(
1347
));
//
btnLeaveGame
=
env
->
addButton
(
rect
<
s32
>
(
205
,
200
,
295
,
273
),
0
,
BUTTON_LEAVE_GAME
,
L""
);
btnLeaveGame
->
setVisible
(
false
);
device
->
setEventReceiver
(
&
menuHandler
);
device
->
setEventReceiver
(
&
menuHandler
);
LoadConfig
();
LoadConfig
();
env
->
getSkin
()
->
setFont
(
guiFont
);
env
->
getSkin
()
->
setFont
(
guiFont
);
...
@@ -756,6 +759,7 @@ void Game::CloseDuelWindow() {
...
@@ -756,6 +759,7 @@ void Game::CloseDuelWindow() {
wReplayControl
->
setVisible
(
false
);
wReplayControl
->
setVisible
(
false
);
stHintMsg
->
setVisible
(
false
);
stHintMsg
->
setVisible
(
false
);
btnSideOK
->
setVisible
(
false
);
btnSideOK
->
setVisible
(
false
);
btnLeaveGame
->
setVisible
(
false
);
lstLog
->
clear
();
lstLog
->
clear
();
logParam
.
clear
();
logParam
.
clear
();
lstHostList
->
clear
();
lstHostList
->
clear
();
...
...
gframe/game.h
View file @
028fbb46
...
@@ -306,6 +306,8 @@ public:
...
@@ -306,6 +306,8 @@ public:
irr
::
gui
::
IGUIButton
*
btnReplayStep
;
irr
::
gui
::
IGUIButton
*
btnReplayStep
;
irr
::
gui
::
IGUIButton
*
btnReplayExit
;
irr
::
gui
::
IGUIButton
*
btnReplayExit
;
irr
::
gui
::
IGUIButton
*
btnReplaySwap
;
irr
::
gui
::
IGUIButton
*
btnReplaySwap
;
//surrender/leave
irr
::
gui
::
IGUIButton
*
btnLeaveGame
;
};
};
...
@@ -386,6 +388,7 @@ extern Game* mainGame;
...
@@ -386,6 +388,7 @@ extern Game* mainGame;
#define BUTTON_BP 260
#define BUTTON_BP 260
#define BUTTON_M2 261
#define BUTTON_M2 261
#define BUTTON_EP 262
#define BUTTON_EP 262
#define BUTTON_LEAVE_GAME 263
#define BUTTON_CLEAR_LOG 270
#define BUTTON_CLEAR_LOG 270
#define LISTBOX_LOG 271
#define LISTBOX_LOG 271
#define BUTTON_CATEGORY_OK 300
#define BUTTON_CATEGORY_OK 300
...
...
gframe/netserver.cpp
View file @
028fbb46
...
@@ -56,6 +56,8 @@ bool NetServer::StartBroadcast() {
...
@@ -56,6 +56,8 @@ bool NetServer::StartBroadcast() {
void
NetServer
::
StopServer
()
{
void
NetServer
::
StopServer
()
{
if
(
!
net_evbase
)
if
(
!
net_evbase
)
return
;
return
;
if
(
duel_mode
)
duel_mode
->
EndDuel
();
event_base_loopexit
(
net_evbase
,
0
);
event_base_loopexit
(
net_evbase
,
0
);
}
}
void
NetServer
::
StopBroadcast
()
{
void
NetServer
::
StopBroadcast
()
{
...
@@ -158,6 +160,7 @@ int NetServer::ServerThread(void* param) {
...
@@ -158,6 +160,7 @@ int NetServer::ServerThread(void* param) {
void
NetServer
::
DisconnectPlayer
(
DuelPlayer
*
dp
)
{
void
NetServer
::
DisconnectPlayer
(
DuelPlayer
*
dp
)
{
auto
bit
=
users
.
find
(
dp
->
bev
);
auto
bit
=
users
.
find
(
dp
->
bev
);
if
(
bit
!=
users
.
end
())
{
if
(
bit
!=
users
.
end
())
{
bufferevent_flush
(
dp
->
bev
,
EV_WRITE
,
BEV_FLUSH
);
bufferevent_disable
(
dp
->
bev
,
EV_READ
);
bufferevent_disable
(
dp
->
bev
,
EV_READ
);
bufferevent_free
(
dp
->
bev
);
bufferevent_free
(
dp
->
bev
);
users
.
erase
(
bit
);
users
.
erase
(
bit
);
...
@@ -166,7 +169,7 @@ void NetServer::DisconnectPlayer(DuelPlayer* dp) {
...
@@ -166,7 +169,7 @@ void NetServer::DisconnectPlayer(DuelPlayer* dp) {
void
NetServer
::
HandleCTOSPacket
(
DuelPlayer
*
dp
,
char
*
data
,
unsigned
int
len
)
{
void
NetServer
::
HandleCTOSPacket
(
DuelPlayer
*
dp
,
char
*
data
,
unsigned
int
len
)
{
char
*
pdata
=
data
;
char
*
pdata
=
data
;
unsigned
char
pktType
=
BufferIO
::
ReadUInt8
(
pdata
);
unsigned
char
pktType
=
BufferIO
::
ReadUInt8
(
pdata
);
if
(
dp
->
state
==
0xff
||
(
dp
->
state
&&
dp
->
state
!=
pktType
))
if
(
(
pktType
!=
CTOS_SURRENDER
)
&&
(
dp
->
state
==
0xff
||
(
dp
->
state
&&
dp
->
state
!=
pktType
)
))
return
;
return
;
switch
(
pktType
)
{
switch
(
pktType
)
{
case
CTOS_RESPONSE
:
{
case
CTOS_RESPONSE
:
{
...
@@ -241,6 +244,12 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
...
@@ -241,6 +244,12 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
duel_mode
->
LeaveGame
(
dp
);
duel_mode
->
LeaveGame
(
dp
);
break
;
break
;
}
}
case
CTOS_SURRENDER
:
{
if
(
!
duel_mode
)
break
;
duel_mode
->
Surrender
(
dp
);
break
;
}
case
CTOS_HS_TODUELIST
:
{
case
CTOS_HS_TODUELIST
:
{
if
(
!
duel_mode
||
duel_mode
->
pduel
)
if
(
!
duel_mode
||
duel_mode
->
pduel
)
break
;
break
;
...
...
gframe/network.h
View file @
028fbb46
...
@@ -121,6 +121,7 @@ public:
...
@@ -121,6 +121,7 @@ public:
virtual
int
Analyze
(
char
*
msgbuffer
,
unsigned
int
len
)
{
virtual
int
Analyze
(
char
*
msgbuffer
,
unsigned
int
len
)
{
return
0
;
return
0
;
}
}
virtual
void
Surrender
(
DuelPlayer
*
dp
)
{}
virtual
void
GetResponse
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
)
{}
virtual
void
GetResponse
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
)
{}
virtual
void
EndDuel
()
{};
virtual
void
EndDuel
()
{};
...
@@ -153,6 +154,7 @@ public:
...
@@ -153,6 +154,7 @@ public:
#define CTOS_CREATE_GAME 0x11
#define CTOS_CREATE_GAME 0x11
#define CTOS_JOIN_GAME 0x12
#define CTOS_JOIN_GAME 0x12
#define CTOS_LEAVE_GAME 0x13
#define CTOS_LEAVE_GAME 0x13
#define CTOS_SURRENDER 0x14
#define CTOS_HS_TODUELIST 0x20
#define CTOS_HS_TODUELIST 0x20
#define CTOS_HS_TOOBSERVER 0x21
#define CTOS_HS_TOOBSERVER 0x21
#define CTOS_HS_READY 0x22
#define CTOS_HS_READY 0x22
...
...
gframe/single_duel.cpp
View file @
028fbb46
...
@@ -26,6 +26,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -26,6 +26,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
msg
=
ERRMSG_JOINERROR
;
scem
.
code
=
0
;
scem
.
code
=
0
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_ERROR_MSG
,
scem
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_ERROR_MSG
,
scem
);
NetServer
::
DisconnectPlayer
(
dp
);
return
;
return
;
}
}
CTOS_JoinGame
*
pkt
=
(
CTOS_JoinGame
*
)
pdata
;
CTOS_JoinGame
*
pkt
=
(
CTOS_JoinGame
*
)
pdata
;
...
@@ -34,6 +35,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
...
@@ -34,6 +35,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
scem
.
msg
=
ERRMSG_VERERROR
;
scem
.
msg
=
ERRMSG_VERERROR
;
scem
.
code
=
PRO_VERSION
;
scem
.
code
=
PRO_VERSION
;
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_ERROR_MSG
,
scem
);
NetServer
::
SendPacketToPlayer
(
dp
,
STOC_ERROR_MSG
,
scem
);
NetServer
::
DisconnectPlayer
(
dp
);
return
;
return
;
}
}
wchar_t
jpass
[
20
];
wchar_t
jpass
[
20
];
...
@@ -129,20 +131,33 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
...
@@ -129,20 +131,33 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
}
}
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
}
else
{
STOC_HS_PlayerChange
scpc
;
if
(
!
pduel
)
{
players
[
dp
->
type
]
=
0
;
STOC_HS_PlayerChange
scpc
;
ready
[
dp
->
type
]
=
false
;
players
[
dp
->
type
]
=
0
;
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_LEAVE
;
ready
[
dp
->
type
]
=
false
;
if
(
players
[
0
]
&&
dp
->
type
!=
0
)
scpc
.
status
=
(
dp
->
type
<<
4
)
|
PLAYERCHANGE_LEAVE
;
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
players
[
0
]
&&
dp
->
type
!=
0
)
if
(
players
[
1
]
&&
dp
->
type
!=
1
)
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
if
(
players
[
1
]
&&
dp
->
type
!=
1
)
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
for
(
auto
pit
=
observers
.
begin
();
pit
!=
observers
.
end
();
++
pit
)
if
(
pduel
)
NetServer
::
SendPacketToPlayer
(
*
pit
,
STOC_HS_PLAYER_CHANGE
,
scpc
);
NetServer
::
StopServer
();
else
{
NetServer
::
DisconnectPlayer
(
dp
);
NetServer
::
DisconnectPlayer
(
dp
);
}
else
{
unsigned
char
wbuf
[
3
];
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
1
]
=
1
-
dp
->
type
;
wbuf
[
2
]
=
0
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
EndDuel
();
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
}
}
}
}
}
...
@@ -428,57 +443,81 @@ void SingleDuel::Process() {
...
@@ -428,57 +443,81 @@ void SingleDuel::Process() {
stop
=
Analyze
(
engineBuffer
,
engLen
);
stop
=
Analyze
(
engineBuffer
,
engLen
);
}
}
}
}
if
(
stop
==
2
)
{
if
(
stop
==
2
)
if
(
!
match_mode
)
{
DuelEndProc
();
}
void
SingleDuel
::
DuelEndProc
()
{
if
(
!
match_mode
)
{
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
else
{
int
winc
[
3
]
=
{
0
,
0
,
0
};
for
(
int
i
=
0
;
i
<
duel_count
;
++
i
)
winc
[
match_result
[
i
]]
++
;
if
(
winc
[
0
]
==
2
||
(
winc
[
0
]
==
1
&&
winc
[
2
]
==
2
))
{
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
else
if
(
winc
[
1
]
==
2
||
(
winc
[
1
]
==
1
&&
winc
[
2
]
==
2
))
{
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
else
if
(
winc
[
2
]
==
3
||
(
winc
[
0
]
==
1
&&
winc
[
1
]
==
1
&&
winc
[
2
]
==
1
))
{
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
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
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
NetServer
::
StopServer
();
}
else
{
}
else
{
int
winc
[
3
]
=
{
0
,
0
,
0
};
if
(
players
[
0
]
!=
pplayer
[
0
])
{
for
(
int
i
=
0
;
i
<
duel_count
;
++
i
)
players
[
0
]
=
pplayer
[
0
];
winc
[
match_result
[
i
]]
++
;
players
[
1
]
=
pplayer
[
1
];
if
(
winc
[
0
]
==
2
||
(
winc
[
0
]
==
1
&&
winc
[
2
]
==
2
))
{
players
[
0
]
->
type
=
0
;
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
players
[
1
]
->
type
=
1
;
NetServer
::
ReSendToPlayer
(
players
[
1
]);
Deck
d
=
pdeck
[
0
];
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
pdeck
[
0
]
=
pdeck
[
1
];
NetServer
::
ReSendToPlayer
(
*
oit
);
pdeck
[
1
]
=
d
;
NetServer
::
StopServer
();
}
else
if
(
winc
[
1
]
==
2
||
(
winc
[
1
]
==
1
&&
winc
[
2
]
==
2
))
{
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
else
if
(
winc
[
2
]
==
3
||
(
winc
[
0
]
==
1
&&
winc
[
1
]
==
1
&&
winc
[
2
]
==
1
))
{
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_DUEL_END
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
StopServer
();
}
else
{
if
(
players
[
0
]
!=
pplayer
[
0
])
{
players
[
0
]
=
pplayer
[
0
];
players
[
1
]
=
pplayer
[
1
];
players
[
0
]
->
type
=
0
;
players
[
1
]
->
type
=
1
;
Deck
d
=
pdeck
[
0
];
pdeck
[
0
]
=
pdeck
[
1
];
pdeck
[
1
]
=
d
;
}
ready
[
0
]
=
false
;
ready
[
1
]
=
false
;
players
[
0
]
->
state
=
CTOS_UPDATE_DECK
;
players
[
1
]
->
state
=
CTOS_UPDATE_DECK
;
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_CHANGE_SIDE
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_CHANGE_SIDE
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendPacketToPlayer
(
*
oit
,
STOC_WAITING_SIDE
);
}
}
ready
[
0
]
=
false
;
ready
[
1
]
=
false
;
players
[
0
]
->
state
=
CTOS_UPDATE_DECK
;
players
[
1
]
->
state
=
CTOS_UPDATE_DECK
;
NetServer
::
SendPacketToPlayer
(
players
[
0
],
STOC_CHANGE_SIDE
);
NetServer
::
SendPacketToPlayer
(
players
[
1
],
STOC_CHANGE_SIDE
);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
SendPacketToPlayer
(
*
oit
,
STOC_WAITING_SIDE
);
}
}
}
}
}
}
void
SingleDuel
::
Surrender
(
DuelPlayer
*
dp
)
{
if
(
dp
->
type
>
1
||
!
pduel
)
return
;
unsigned
char
wbuf
[
3
];
uint32
player
=
dp
->
type
;
wbuf
[
0
]
=
MSG_WIN
;
wbuf
[
1
]
=
1
-
player
;
wbuf
[
2
]
=
0
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
wbuf
,
3
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
players
[
player
]
==
pplayer
[
player
])
{
match_result
[
duel_count
++
]
=
player
;
tp_player
=
1
-
player
;
}
else
{
match_result
[
duel_count
++
]
=
1
-
player
;
tp_player
=
player
;
}
EndDuel
();
DuelEndProc
();
}
int
SingleDuel
::
Analyze
(
char
*
msgbuffer
,
unsigned
int
len
)
{
int
SingleDuel
::
Analyze
(
char
*
msgbuffer
,
unsigned
int
len
)
{
char
*
offset
,
*
pbufw
,
*
pbuf
=
msgbuffer
;
char
*
offset
,
*
pbufw
,
*
pbuf
=
msgbuffer
;
int
player
,
count
,
type
;
int
player
,
count
,
type
;
...
...
gframe/single_duel.h
View file @
028fbb46
...
@@ -22,10 +22,12 @@ public:
...
@@ -22,10 +22,12 @@ public:
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
);
virtual
void
HandResult
(
DuelPlayer
*
dp
,
unsigned
char
res
);
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
);
virtual
void
TPResult
(
DuelPlayer
*
dp
,
unsigned
char
tp
);
virtual
void
Process
();
virtual
void
Process
();
virtual
void
Surrender
(
DuelPlayer
*
dp
);
virtual
int
Analyze
(
char
*
msgbuffer
,
unsigned
int
len
);
virtual
int
Analyze
(
char
*
msgbuffer
,
unsigned
int
len
);
virtual
void
GetResponse
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
);
virtual
void
GetResponse
(
DuelPlayer
*
dp
,
void
*
pdata
,
unsigned
int
len
);
virtual
void
EndDuel
();
virtual
void
EndDuel
();
void
DuelEndProc
();
void
WaitforResponse
(
int
playerid
);
void
WaitforResponse
(
int
playerid
);
void
RefreshMzone
(
int
player
,
int
flag
=
0x181fff
,
int
use_cache
=
1
);
void
RefreshMzone
(
int
player
,
int
flag
=
0x181fff
,
int
use_cache
=
1
);
void
RefreshSzone
(
int
player
,
int
flag
=
0x181fff
,
int
use_cache
=
1
);
void
RefreshSzone
(
int
player
,
int
flag
=
0x181fff
,
int
use_cache
=
1
);
...
...
ocgcore/libdebug.cpp
0 → 100644
View file @
028fbb46
/*
* libdebug.cpp
*
* Created on: 2012-2-8
* Author: Argon
*/
#include "scriptlib.h"
#include "duel.h"
#include "field.h"
#include "card.h"
#include "effect.h"
#include "ocgapi.h"
int32
scriptlib
::
debug_message
(
lua_State
*
L
)
{
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
lua_getglobal
(
L
,
"tostring"
);
lua_pushvalue
(
L
,
-
2
);
lua_pcall
(
L
,
1
,
1
,
0
);
sprintf
(
pduel
->
strbuffer
,
"%s"
,
lua_tostring
(
L
,
-
1
));
handle_message
(
pduel
,
2
);
return
0
;
}
int32
scriptlib
::
debug_add_card
(
lua_State
*
L
)
{
check_param_count
(
L
,
6
);
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
int32
code
=
lua_tointeger
(
L
,
1
);
int32
owner
=
lua_tointeger
(
L
,
2
);
int32
playerid
=
lua_tointeger
(
L
,
3
);
int32
location
=
lua_tointeger
(
L
,
4
);
int32
sequence
=
lua_tointeger
(
L
,
5
);
int32
position
=
lua_tointeger
(
L
,
6
);
int32
proc
=
lua_toboolean
(
L
,
7
);
if
(
owner
!=
0
&&
owner
!=
1
)
return
0
;
if
(
playerid
!=
0
&&
playerid
!=
1
)
return
0
;
if
(
pduel
->
game_field
->
is_location_useable
(
playerid
,
location
,
sequence
))
{
card
*
pcard
=
pduel
->
new_card
(
code
);
pcard
->
owner
=
owner
;
pduel
->
game_field
->
add_card
(
playerid
,
pcard
,
location
,
sequence
);
pcard
->
current
.
position
=
position
;
if
(
!
(
location
&
LOCATION_ONFIELD
)
||
(
position
&
POS_FACEUP
))
{
pcard
->
enable_field_effect
(
TRUE
);
pduel
->
game_field
->
adjust_instant
();
}
if
(
proc
)
pcard
->
set_status
(
STATUS_PROC_COMPLETE
,
TRUE
);
interpreter
::
card2value
(
L
,
pcard
);
return
1
;
}
return
0
;
}
int32
scriptlib
::
debug_set_player_info
(
lua_State
*
L
)
{
check_param_count
(
L
,
4
);
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
uint32
playerid
=
lua_tointeger
(
L
,
1
);
uint32
lp
=
lua_tointeger
(
L
,
2
);
uint32
startcount
=
lua_tointeger
(
L
,
3
);
uint32
drawcount
=
lua_tointeger
(
L
,
4
);
duel
*
pd
=
(
duel
*
)
pduel
;
if
(
playerid
!=
0
&&
playerid
!=
1
)
return
0
;
pd
->
game_field
->
player
[
playerid
].
lp
=
lp
;
pd
->
game_field
->
player
[
playerid
].
start_count
=
startcount
;
pd
->
game_field
->
player
[
playerid
].
draw_count
=
drawcount
;
return
0
;
}
script/c38679204.lua
View file @
028fbb46
...
@@ -32,7 +32,7 @@ function c38679204.initial_effect(c)
...
@@ -32,7 +32,7 @@ function c38679204.initial_effect(c)
c
:
RegisterEffect
(
e3
)
c
:
RegisterEffect
(
e3
)
end
end
function
c38679204
.
eqcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c38679204
.
eqcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
c
:
IsPreviousLocation
(
LOCATION_MZONE
)
return
e
:
GetHandler
()
:
IsPreviousLocation
(
LOCATION_MZONE
)
end
end
function
c38679204
.
eqcost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
c38679204
.
eqcost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
CheckLPCost
(
tp
,
500
)
end
if
chk
==
0
then
return
Duel
.
CheckLPCost
(
tp
,
500
)
end
...
@@ -59,7 +59,7 @@ function c38679204.descon(e,tp,eg,ep,ev,re,r,rp)
...
@@ -59,7 +59,7 @@ function c38679204.descon(e,tp,eg,ep,ev,re,r,rp)
local
ec
=
e
:
GetHandler
():
GetEquipTarget
()
local
ec
=
e
:
GetHandler
():
GetEquipTarget
()
local
dt
=
nil
local
dt
=
nil
if
ec
==
Duel
.
GetAttacker
()
then
dt
=
Duel
.
GetAttackTarget
()
if
ec
==
Duel
.
GetAttacker
()
then
dt
=
Duel
.
GetAttackTarget
()
elseif
ec
==
Duel
.
GetAttackTarget
()
then
d
i
=
Duel
.
GetAttacker
()
end
elseif
ec
==
Duel
.
GetAttackTarget
()
then
d
t
=
Duel
.
GetAttacker
()
end
e
:
SetLabelObject
(
dt
)
e
:
SetLabelObject
(
dt
)
return
dt
and
dt
:
IsRelateToBattle
()
return
dt
and
dt
:
IsRelateToBattle
()
end
end
...
...
script/c46668237.lua
View file @
028fbb46
...
@@ -20,13 +20,13 @@ function c46668237.initial_effect(c)
...
@@ -20,13 +20,13 @@ function c46668237.initial_effect(c)
e2
:
SetOperation
(
c46668237
.
operation
)
e2
:
SetOperation
(
c46668237
.
operation
)
c
:
RegisterEffect
(
e2
)
c
:
RegisterEffect
(
e2
)
end
end
function
c46668237
.
filter
(
c
)
function
c46668237
.
filter
(
c
,
tp
)
return
c
:
IsLocation
(
LOCATION_MZONE
)
and
c
:
IsFaceup
()
and
c
:
IsRace
(
RACE_BEAST
)
return
c
:
IsLocation
(
LOCATION_MZONE
)
and
c
:
IsFaceup
()
and
c
:
Is
Controler
(
tp
)
and
c
:
Is
Race
(
RACE_BEAST
)
end
end
function
c46668237
.
adjop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c46668237
.
adjop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
pg
=
e
:
GetLabelObject
()
local
pg
=
e
:
GetLabelObject
()
if
pg
then
pg
:
DeleteGroup
()
end
if
pg
then
pg
:
DeleteGroup
()
end
local
dg
=
eg
:
Filter
(
c46668237
.
filter
,
nil
)
local
dg
=
eg
:
Filter
(
c46668237
.
filter
,
nil
,
tp
)
e
:
SetLabelObject
(
dg
)
e
:
SetLabelObject
(
dg
)
dg
:
KeepAlive
()
dg
:
KeepAlive
()
end
end
...
...
script/c67030233.lua
View file @
028fbb46
...
@@ -44,6 +44,14 @@ function c67030233.initial_effect(c)
...
@@ -44,6 +44,14 @@ function c67030233.initial_effect(c)
e4
:
SetTarget
(
c67030233
.
sptg
)
e4
:
SetTarget
(
c67030233
.
sptg
)
e4
:
SetOperation
(
c67030233
.
spop
)
e4
:
SetOperation
(
c67030233
.
spop
)
c
:
RegisterEffect
(
e4
)
c
:
RegisterEffect
(
e4
)
--
local
e5
=
Effect
.
CreateEffect
(
c
)
e5
:
SetType
(
EFFECT_TYPE_SINGLE
)
e5
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e5
:
SetRange
(
LOCATION_MZONE
)
e5
:
SetCode
(
EFFECT_INDESTRUCTABLE_EFFECT
)
e5
:
SetValue
(
1
)
c
:
RegisterEffect
(
e5
)
end
end
function
c67030233
.
matfilter
(
c
,
syncard
)
function
c67030233
.
matfilter
(
c
,
syncard
)
return
c
:
IsFaceup
()
and
c
:
IsCanBeSynchroMaterial
(
syncard
)
return
c
:
IsFaceup
()
and
c
:
IsCanBeSynchroMaterial
(
syncard
)
...
...
script/c74191942.lua
View file @
028fbb46
...
@@ -14,11 +14,11 @@ function c74191942.target(e,tp,eg,ep,ev,re,r,rp,chk)
...
@@ -14,11 +14,11 @@ function c74191942.target(e,tp,eg,ep,ev,re,r,rp,chk)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
tp
,
LOCATION_DECK
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
tp
,
LOCATION_DECK
)
end
end
function
c74191942
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c74191942
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
Stringid
(
74191942
,
0
))
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
aux
.
Stringid
(
74191942
,
0
))
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
Card
.
IsAbleToHand
,
tp
,
LOCATION_DECK
,
0
,
5
,
5
,
nil
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
Card
.
IsAbleToHand
,
tp
,
LOCATION_DECK
,
0
,
5
,
5
,
nil
)
if
g
:
GetCount
()
<
5
then
return
end
if
g
:
GetCount
()
<
5
then
return
end
Duel
.
ConfirmCards
(
1
-
tp
,
g
)
Duel
.
ConfirmCards
(
1
-
tp
,
g
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
Stringid
(
74191942
,
1
))
Duel
.
Hint
(
HINT_SELECTMSG
,
1
-
tp
,
aux
.
Stringid
(
74191942
,
1
))
local
sg
=
g
:
Select
(
1
-
tp
,
1
,
1
,
nil
)
local
sg
=
g
:
Select
(
1
-
tp
,
1
,
1
,
nil
)
Duel
.
SendtoHand
(
sg
,
nil
,
REASON_EFFECT
)
Duel
.
SendtoHand
(
sg
,
nil
,
REASON_EFFECT
)
g
:
Sub
(
sg
)
g
:
Sub
(
sg
)
...
...
script/c79229522.lua
View file @
028fbb46
...
@@ -31,7 +31,7 @@ function c79229522.splimit(e,se,sp,st)
...
@@ -31,7 +31,7 @@ function c79229522.splimit(e,se,sp,st)
return
e
:
GetHandler
():
GetLocation
()
~=
LOCATION_EXTRA
return
e
:
GetHandler
():
GetLocation
()
~=
LOCATION_EXTRA
end
end
function
c79229522
.
spfilter1
(
c
,
tp
)
function
c79229522
.
spfilter1
(
c
,
tp
)
return
c
:
IsCode
(
70095154
)
and
c
:
IsAbleToGraveAsCost
()
and
c
:
IsCanBeFusionMaterial
()
and
(
c
:
IsControler
(
tp
)
or
c
:
IsFaceup
())
return
c
:
IsCode
(
70095154
)
and
c
:
IsAbleToGraveAsCost
()
and
(
c
:
IsControler
(
tp
)
or
c
:
IsFaceup
())
and
Duel
.
IsExistingMatchingCard
(
c79229522
.
spfilter2
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
1
,
c
,
tp
)
and
Duel
.
IsExistingMatchingCard
(
c79229522
.
spfilter2
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
1
,
c
,
tp
)
end
end
function
c79229522
.
spfilter2
(
c
,
tp
)
function
c79229522
.
spfilter2
(
c
,
tp
)
...
...
strings.conf
View file @
028fbb46
...
@@ -295,6 +295,8 @@
...
@@ -295,6 +295,8 @@
!
system
1347
退出
!
system
1347
退出
!
system
1348
载入录像
!
system
1348
载入录像
!
system
1349
录像信息:
!
system
1349
录像信息:
!
system
1350
离开
!
system
1351
投降
!
system
1390
等待对方行动中...
!
system
1390
等待对方行动中...
!
system
1391
等待对方行动中....
!
system
1391
等待对方行动中....
!
system
1392
等待对方行动中.....
!
system
1392
等待对方行动中.....
...
@@ -342,6 +344,7 @@
...
@@ -342,6 +344,7 @@
!
system
1623
投掷硬币结果:
!
system
1623
投掷硬币结果:
!
system
1624
投掷骰子结果:
!
system
1624
投掷骰子结果:
#vistory reason
#vistory reason
!
victory
0
x0
投降
!
victory
0
x1
LP
变成
0
!
victory
0
x1
LP
变成
0
!
victory
0
x2
没有卡可抽
!
victory
0
x2
没有卡可抽
!
victory
0
x3
被封印的埃及使者
!
victory
0
x3
被封印的埃及使者
...
...
system.conf
View file @
028fbb46
...
@@ -3,9 +3,9 @@
...
@@ -3,9 +3,9 @@
antialias
=
2
antialias
=
2
nickname
=
Player
nickname
=
Player
gamename
=
Game
gamename
=
Game
lastdeck
=
chaosls
lastdeck
=
test
textfont
=
c
:/
windows
/
fonts
/
simsun
.
ttc
textfont
=
c
:/
windows
/
fonts
/
simsun
.
ttc
numfont
=
c
:/
windows
/
fonts
/
arialbd
.
ttf
numfont
=
c
:/
windows
/
fonts
/
arialbd
.
ttf
serverport
=
7911
serverport
=
7911
lastip
=
1
0
.
110
.
5
.
251
lastip
=
1
92
.
168
.
3
.
235
lastport
=
7911
lastport
=
7911
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