Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
mycard
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
syntax_j
mycard
Commits
3ba862c3
Commit
3ba862c3
authored
Dec 23, 2011
by
神楽坂玲奈
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replay进阶,能正确读iDuel观战的记录了
parent
2fa2e5ec
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
197 additions
and
109 deletions
+197
-109
lib/action.rb
lib/action.rb
+21
-18
lib/iduel/action.rb
lib/iduel/action.rb
+26
-24
lib/iduel/iduel.rb
lib/iduel/iduel.rb
+17
-11
lib/iduel/replay.rb
lib/iduel/replay.rb
+35
-0
lib/main.rb
lib/main.rb
+1
-1
lib/nbx/action.rb
lib/nbx/action.rb
+12
-12
lib/replay.rb
lib/replay.rb
+14
-6
lib/scene_login_nbx.rb
lib/scene_login_nbx.rb
+31
-0
lib/scene_replay.rb
lib/scene_replay.rb
+26
-0
lib/scene_single.rb
lib/scene_single.rb
+8
-31
lib/window_field.rb
lib/window_field.rb
+6
-6
No files found.
lib/action.rb
View file @
3ba862c3
...
@@ -132,14 +132,16 @@ class Action
...
@@ -132,14 +132,16 @@ class Action
player_field
.
removed
player_field
.
removed
end
end
if
from_pos
&&
from_field
[
from_pos
]
if
from_pos
&&
from_field
[
from_pos
]
case
@card
ca
rd
=
ca
se
@card
when
Game_Card
when
Game_Card
card
=
from_field
[
from_pos
]
=
@card
from_field
[
from_pos
]
=
@card
when
nil
,
Card
::
Unknown
when
nil
,
Card
::
Unknown
card
=
from_field
[
from_pos
]
from_field
[
from_pos
]
when
Card
when
Card
card
=
from_field
[
from_pos
]
from_field
[
from_pos
].
card
=
@card
card
.
card
=
@card
from_field
[
from_pos
]
when
:deck
player_field
.
deck
.
first
end
end
if
@to_pos
if
@to_pos
if
from_field
==
player_field
.
field
if
from_field
==
player_field
.
field
...
@@ -153,7 +155,16 @@ class Action
...
@@ -153,7 +155,16 @@ class Action
puts
"似乎凭空产生了卡片?"
puts
"似乎凭空产生了卡片?"
p
self
p
self
end
end
card
.
position
=
@position
if
@position
if
@position
if
@position
==
:"face-up"
if
card
.
position
==
:set
and
(
6
..
10
).
include?
(
@to_pos
||
@from_pos
)
#里侧表示的怪兽
card
.
position
=
:defense
else
card
.
position
=
:attack
end
end
card
.
position
=
@position
end
if
@to_pos
if
@to_pos
if
@to_pos
.
is_a?
Integer
if
@to_pos
.
is_a?
Integer
to_field
[
@to_pos
]
=
card
to_field
[
@to_pos
]
=
card
...
@@ -207,11 +218,7 @@ class Action
...
@@ -207,11 +218,7 @@ class Action
end
end
end
end
class
ReturnToDeckBottom
<
Move
class
ReturnToDeckBottom
<
Move
def
initialize
(
from_player
,
from_pos
,
card
=
Card
.
find
(
nil
))
def
initialize
(
from_player
,
from_pos
,
card
)
if
from_pos
==
:deck
and
card
==
Card
.
find
(
nil
)
@from_player
=
from_player
card
=
player_field
.
deck
.
first
end
super
(
from_player
,
from_pos
,
:deckbottom
,
card
,
nil
,
:set
)
super
(
from_player
,
from_pos
,
:deckbottom
,
card
,
nil
,
:set
)
end
end
end
end
...
@@ -245,7 +252,7 @@ class Action
...
@@ -245,7 +252,7 @@ class Action
class
Draw
<
Move
class
Draw
<
Move
def
initialize
(
from_player
=
true
,
msg
=
nil
)
def
initialize
(
from_player
=
true
,
msg
=
nil
)
@from_player
=
from_player
@from_player
=
from_player
super
(
from_player
,
:deck
,
:hand
,
player_field
.
deck
.
first
,
msg
,
:set
)
super
(
from_player
,
:deck
,
:hand
,
:deck
,
msg
,
:set
)
end
end
end
end
class
MultiDraw
<
Action
class
MultiDraw
<
Action
...
@@ -323,15 +330,11 @@ class Action
...
@@ -323,15 +330,11 @@ class Action
@cards
=
cards
@cards
=
cards
end
end
end
end
class
Effect
_
Activate
<
Move
class
EffectActivate
<
Move
def
initialize
(
from_player
,
from_pos
,
card
)
def
initialize
(
from_player
,
from_pos
,
card
)
@from_player
=
from_player
@from_player
=
from_player
if
(
0
..
10
).
include?
(
from_pos
)
if
(
0
..
10
).
include?
(
from_pos
)
if
(
6
..
10
).
include?
(
from_pos
)
&&
player_field
.
field
[
from_pos
]
&&
(
player_field
.
field
[
from_pos
].
position
==
:set
||
player_field
.
field
[
from_pos
].
position
==
:defense
)
position
=
:"face-up"
position
=
:defense
else
position
=
:attack
end
else
else
position
=
nil
position
=
nil
end
end
...
...
lib/iduel/action.rb
View file @
3ba862c3
...
@@ -6,7 +6,8 @@ class Action
...
@@ -6,7 +6,8 @@ class Action
PosFilter
=
/((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
PosFilter
=
/((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
PositionFilter
=
/(表攻|表守|里守|攻击表示|防守表示|里侧表示|背面守备表示)/
PositionFilter
=
/(表攻|表守|里守|攻击表示|防守表示|里侧表示|背面守备表示)/
PhaseFilter
=
/(抽卡`阶段|准备`阶段|主`阶段1|战斗`阶段|主`阶段2|结束`阶段)/
PhaseFilter
=
/(抽卡`阶段|准备`阶段|主`阶段1|战斗`阶段|主`阶段2|结束`阶段)/
FieldFilter
=
/(?:LP:(\d+)\r\n手卡(?:数)?:(\d+)\r\n卡组:(\d+)\r\n墓地:(\d+)\r\n除外:(\d+)\r\n前场:\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n后场:<
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?>\r\n场地\|<(?:无|
#{
CardFilter
}
)>\r\n(?:◎|●)→\\)/
CountersFilter
=
/\((\d+)\)/
FieldFilter
=
/(?:LP:(\d+)\n手卡(?:数)?:(\d+)\n卡组:(\d+)\n墓地:(\d+)\n除外:(\d+)\n前场:\n <(?:
#{
CountersFilter
}
?
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
CountersFilter
}
?
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
CountersFilter
}
?
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
CountersFilter
}
?
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
CountersFilter
}
?
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n后场:<
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?>\n场地\|<(?:无|
#{
CardFilter
}
)>\n(?:◎|●)→\\)/
def
self
.
parse_pos
(
pos
)
def
self
.
parse_pos
(
pos
)
if
index
=
pos
.
index
(
"("
)
if
index
=
pos
.
index
(
"("
)
index
+=
1
index
+=
1
...
@@ -55,17 +56,17 @@ class Action
...
@@ -55,17 +56,17 @@ class Action
:deck
=>
arr
[
2
].
to_i
,
:deck
=>
arr
[
2
].
to_i
,
:graveyard
=>
arr
[
3
].
to_i
,
:graveyard
=>
arr
[
3
].
to_i
,
:removed
=>
arr
[
4
].
to_i
,
:removed
=>
arr
[
4
].
to_i
,
6
=>
arr
[
5
]
&&
{
:position
=>
parse_position
(
arr
[
5
]),
:card
=>
parse_card
(
arr
[
6
])},
6
=>
arr
[
7
]
&&
{
:counters
=>
arr
[
5
].
to_i
,
:position
=>
parse_position
(
arr
[
6
]),
:card
=>
parse_card
(
arr
[
7
])},
7
=>
arr
[
7
]
&&
{
:position
=>
parse_position
(
arr
[
7
]),
:card
=>
parse_card
(
arr
[
8
])},
7
=>
arr
[
10
]
&&
{
:counters
=>
arr
[
8
].
to_i
,
:position
=>
parse_position
(
arr
[
9
]),
:card
=>
parse_card
(
arr
[
10
])},
8
=>
arr
[
9
]
&&
{
:position
=>
parse_position
(
arr
[
9
]),
:card
=>
parse_card
(
arr
[
10
])},
8
=>
arr
[
13
]
&&
{
:counters
=>
arr
[
11
].
to_i
,
:position
=>
parse_position
(
arr
[
12
]),
:card
=>
parse_card
(
arr
[
13
])},
9
=>
arr
[
11
]
&&
{
:position
=>
parse_position
(
arr
[
11
]),
:card
=>
parse_card
(
arr
[
12
])},
9
=>
arr
[
16
]
&&
{
:counters
=>
arr
[
14
].
to_i
,
:position
=>
parse_position
(
arr
[
15
]),
:card
=>
parse_card
(
arr
[
16
])},
10
=>
arr
[
1
3
]
&&
{
:position
=>
parse_position
(
arr
[
13
]),
:card
=>
parse_card
(
arr
[
14
])},
10
=>
arr
[
1
9
]
&&
{
:counters
=>
arr
[
17
].
to_i
,
:position
=>
parse_position
(
arr
[
18
]),
:card
=>
parse_card
(
arr
[
19
])},
1
=>
arr
[
15
]
&&
{
:position
=>
arr
[
15
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
15
])},
1
=>
arr
[
20
]
&&
{
:position
=>
arr
[
20
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
20
])},
2
=>
arr
[
16
]
&&
{
:position
=>
arr
[
16
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
16
])},
2
=>
arr
[
21
]
&&
{
:position
=>
arr
[
21
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
21
])},
3
=>
arr
[
17
]
&&
{
:position
=>
arr
[
17
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
17
])},
3
=>
arr
[
22
]
&&
{
:position
=>
arr
[
22
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
22
])},
4
=>
arr
[
18
]
&&
{
:position
=>
arr
[
18
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
18
])},
4
=>
arr
[
23
]
&&
{
:position
=>
arr
[
23
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
23
])},
5
=>
arr
[
19
]
&&
{
:position
=>
arr
[
19
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
19
])},
5
=>
arr
[
24
]
&&
{
:position
=>
arr
[
24
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
24
])},
0
=>
arr
[
2
0
]
&&
{
:position
=>
arr
[
20
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
20
])}
0
=>
arr
[
2
5
]
&&
{
:position
=>
arr
[
25
]
==
"??"
?
:
set
:
:attack
,
:card
=>
parse_card
(
arr
[
25
])}
}
}
end
end
def
self
.
parse_position
(
position
)
def
self
.
parse_position
(
position
)
...
@@ -167,18 +168,19 @@ class Action
...
@@ -167,18 +168,19 @@ class Action
end
end
end
end
def
self
.
parse
(
str
)
def
self
.
parse
(
str
)
from_player
=
false
from_player
=
nil
case
str
case
str
when
/^\[(\d+)\] (.*)$/m
when
/^\[(\d+)\] (.*)$/m
#p $2, $2.match(/(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\n#{FieldFilter}(.*)/)
id
=
$1
.
to_i
id
=
$1
.
to_i
result
=
case
$2
result
=
case
$2
when
/^┊(.*)┊$/m
when
/^┊(.*)┊$/m
Chat
.
new
from_player
,
$1
Chat
.
new
from_player
,
$1
when
/^※\[(.*)\]\
r\n(.*)\r
\n注释$/m
when
/^※\[(.*)\]\
n(.*)
\n注释$/m
Note
.
new
from_player
,
$2
,
Card
.
find
(
$1
.
to_sym
)
Note
.
new
from_player
,
$2
,
Card
.
find
(
$1
.
to_sym
)
when
/^※(.*)$/
when
/^※(.*)$/
Chat
.
new
from_player
,
$1
Chat
.
new
from_player
,
$1
when
/^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\
r\
n
#{
FieldFilter
}
(.*)$/
#把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
when
/^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\n
#{
FieldFilter
}
(.*)$/
#把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
field
=
$~
.
to_a
field
=
$~
.
to_a
field
.
shift
#去掉第一个完整匹配信息
field
.
shift
#去掉第一个完整匹配信息
from_player
=
field
.
shift
==
"◎"
from_player
=
field
.
shift
==
"◎"
...
@@ -190,7 +192,7 @@ class Action
...
@@ -190,7 +192,7 @@ class Action
field
.
shift
field
.
shift
from_player
=
field
.
shift
==
"◎"
from_player
=
field
.
shift
==
"◎"
RefreshField
.
new
(
from_player
,
parse_field
(
field
))
RefreshField
.
new
(
from_player
,
parse_field
(
field
))
when
/^(?:(.*)\
r\
n)?(◎|●)→(.*)$/m
when
/^(?:(.*)\n)?(◎|●)→(.*)$/m
from_player
=
$2
==
"◎"
from_player
=
$2
==
"◎"
msg
=
$1
msg
=
$1
case
$3
case
$3
...
@@ -255,7 +257,7 @@ class Action
...
@@ -255,7 +257,7 @@ class Action
when
/从
#{
PosFilter
}
取
#{
CardFilter
}
加入手卡/
when
/从
#{
PosFilter
}
取
#{
CardFilter
}
加入手卡/
ReturnToHand
.
new
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
)
ReturnToHand
.
new
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
)
when
/(?:己方)?
#{
PosFilter
}
.*?
#{
CardFilter
}
效果发(?:\~)?动/
when
/(?:己方)?
#{
PosFilter
}
.*?
#{
CardFilter
}
效果发(?:\~)?动/
Effect
_
Activate
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
))
EffectActivate
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
))
when
/
#{
PosFilter
}#{
CardFilter
}
(?:变|改)为
#{
PositionFilter
}
/
when
/
#{
PosFilter
}#{
CardFilter
}
(?:变|改)为
#{
PositionFilter
}
/
ChangePosition
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
parse_position
(
$3
))
ChangePosition
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
parse_position
(
$3
))
when
/
#{
PosFilter
}#{
CardFilter
}
打开/
when
/
#{
PosFilter
}#{
CardFilter
}
打开/
...
@@ -270,7 +272,7 @@ class Action
...
@@ -270,7 +272,7 @@ class Action
end
end
result
.
id
=
id
result
.
id
=
id
result
result
when
/^(
#{
CardFilter
}
\
r\
n)*$/
when
/^(
#{
CardFilter
}
\n)*$/
MultiShow
.
new
from_player
,
$&
.
lines
.
collect
{
|
card
|
parse_card
(
card
)}
MultiShow
.
new
from_player
,
$&
.
lines
.
collect
{
|
card
|
parse_card
(
card
)}
else
else
Unknown
.
new
str
Unknown
.
new
str
...
@@ -314,7 +316,7 @@ class Action
...
@@ -314,7 +316,7 @@ class Action
end
end
class
TurnEnd
class
TurnEnd
def
escape
def
escape
"[
#{
@id
}
]
#{
from_player
?
'◎'
:
'●'
}
→=[0:0:0]==回合结束==<
#{
@turn
}
>=[0]
\
r\
n
"
+
@field
.
escape
"[
#{
@id
}
]
#{
from_player
?
'◎'
:
'●'
}
→=[0:0:0]==回合结束==<
#{
@turn
}
>=[0]
\n
"
+
@field
.
escape
end
end
end
end
class
Shuffle
class
Shuffle
...
@@ -443,10 +445,10 @@ class Action
...
@@ -443,10 +445,10 @@ class Action
end
end
class
MultiShow
class
MultiShow
def
escape
def
escape
@cards
.
collect
{
|
card
|
card
.
escape
}.
join
(
"
\
r\
n
"
)
@cards
.
collect
{
|
card
|
card
.
escape
}.
join
(
"
\n
"
)
end
end
end
end
class
Effect
_
Activate
class
EffectActivate
def
escape
def
escape
pos
=
case
@from_pos
pos
=
case
@from_pos
when
:hand
when
:hand
...
@@ -475,11 +477,11 @@ end
...
@@ -475,11 +477,11 @@ end
class
Game_Field
class
Game_Field
def
escape
def
escape
"LP:
#{
@lp
}
\
r\n
手卡:
#{
@hand
.
size
}
\r\n
卡组:
#{
@deck
.
size
}
\r\n
墓地:
#{
@graveyard
.
size
}
\r\n
除外:
#{
@removed
.
size
}
\r\n
前场:
\r
\n
"
+
"LP:
#{
@lp
}
\
n
手卡:
#{
@hand
.
size
}
\n
卡组:
#{
@deck
.
size
}
\n
墓地:
#{
@graveyard
.
size
}
\n
除外:
#{
@removed
.
size
}
\n
前场:
\n
"
+
@field
[
6
..
10
].
collect
{
|
card
|
" <
#{
"
#{
Action
.
escape_position_short
(
card
)
}
|
#{
card
.
position
==
:set
?
'??'
:
"[
#{
card
.
card_type
}
][
#{
card
.
name
}
]
#{
card
.
atk
}#{
' '
+
card
.
def
.
to_s
}
"
}
"
if
card
}
>
\
r\
n
"
}.
join
+
@field
[
6
..
10
].
collect
{
|
card
|
" <
#{
"
#{
Action
.
escape_position_short
(
card
)
}
|
#{
card
.
position
==
:set
?
'??'
:
"[
#{
card
.
card_type
}
][
#{
card
.
name
}
]
#{
card
.
atk
}#{
' '
+
card
.
def
.
to_s
}
"
}
"
if
card
}
>
\n
"
}.
join
+
"后场:"
+
"后场:"
+
@field
[
1
..
5
].
collect
{
|
card
|
"<
#{
card
.
position
==
:set
?
'??'
:
card
.
escape
if
card
}
>"
}.
join
+
@field
[
1
..
5
].
collect
{
|
card
|
"<
#{
card
.
position
==
:set
?
'??'
:
card
.
escape
if
card
}
>"
}.
join
+
"
\
r\n
场地|<
#{
@field
[
0
]
?
@field
[
0
].
escape
:
'无'
}
>
\r
\n
"
+
"
\
n
场地|<
#{
@field
[
0
]
?
@field
[
0
].
escape
:
'无'
}
>
\n
"
+
"◎→\\"
"◎→\\"
end
end
def
self
.
parse
(
str
)
def
self
.
parse
(
str
)
...
...
lib/iduel/iduel.rb
View file @
3ba862c3
...
@@ -4,28 +4,31 @@ class Iduel < Game
...
@@ -4,28 +4,31 @@ class Iduel < Game
Server
=
"iduel.ocgsoft.cn"
Server
=
"iduel.ocgsoft.cn"
Port
=
38522
Port
=
38522
RS
=
"
\xA1\xE9
"
.
force_encoding
"GBK"
RS
=
"
\xA1\xE9
"
.
force_encoding
(
"GBK"
).
encode
(
"UTF-8"
)
attr_accessor
:session
attr_accessor
:session
attr_accessor
:key
attr_accessor
:key
def
initialize
def
initialize
super
super
require
'socket'
require
'digest/md5'
require
'digest/md5'
require
'open-uri'
require_relative
'action'
require_relative
'action'
require_relative
'event'
require_relative
'event'
require_relative
'user'
require_relative
'user'
require_relative
'replay'
end
def
connect
require
'socket'
require
'open-uri'
begin
begin
@conn
=
TCPSocket
.
open
(
Server
,
Port
)
@conn
=
TCPSocket
.
open
(
Server
,
Port
)
@conn
.
set_encoding
"GBK"
@conn
.
set_encoding
"GBK"
,
"UTF-8"
Thread
.
abort_on_exception
=
true
Thread
.
abort_on_exception
=
true
@recv
=
Thread
.
new
{
recv
@conn
.
gets
(
RS
)
while
@conn
}
@recv
=
Thread
.
new
{
recv
@conn
.
gets
(
RS
)
while
@conn
}
rescue
rescue
Game_Event
.
push
Game_Event
::
Error
.
new
(
$!
.
class
,
$!
.
message
)
Game_Event
.
push
Game_Event
::
Error
.
new
(
$!
.
class
.
to_s
,
$!
.
message
)
end
end
end
end
def
login
(
username
,
password
)
def
login
(
username
,
password
)
connect
md5
=
Digest
::
MD5
.
hexdigest
(
password
)
md5
=
Digest
::
MD5
.
hexdigest
(
password
)
send
(
0
,
username
,
md5
,
checknum
(
"LOGINMSG"
,
username
,
md5
),
Version
)
send
(
0
,
username
,
md5
,
checknum
(
"LOGINMSG"
,
username
,
md5
),
Version
)
end
end
...
@@ -62,9 +65,11 @@ class Iduel < Game
...
@@ -62,9 +65,11 @@ class Iduel < Game
def
send
(
head
,
*
args
)
def
send
(
head
,
*
args
)
info
=
"#
#{
head
.
to_s
(
16
).
upcase
}
|
#{
args
.
join
(
','
)
}
"
.
encode
(
"GBK"
)
+
RS
return
unless
@conn
info
=
"#
#{
head
.
to_s
(
16
).
upcase
}
|
#{
args
.
join
(
','
)
}
"
+
RS
puts
"<<
#{
info
}
"
puts
"<<
#{
info
}
"
(
@conn
.
write
info
)
rescue
Game_Event
.
push
Game_Event
::
Error
.
new
(
$!
.
class
,
$!
.
message
)
info
.
gsub!
(
"
\n
"
,
"
\r\n
"
)
(
@conn
.
write
info
)
rescue
Game_Event
.
push
Game_Event
::
Error
.
new
(
$!
.
class
.
to_s
,
$!
.
message
)
end
end
def
recv
(
info
)
def
recv
(
info
)
if
info
.
nil?
if
info
.
nil?
...
@@ -72,14 +77,15 @@ class Iduel < Game
...
@@ -72,14 +77,15 @@ class Iduel < Game
@conn
=
nil
@conn
=
nil
Game_Event
::
Error
.
parse
(
0
)
Game_Event
::
Error
.
parse
(
0
)
else
else
info
.
chomp!
(
RS
)
info
.
chomp!
(
RS
)
info
.
encode!
"UTF-8"
,
:invalid
=>
:replace
,
:undef
=>
:replace
info
.
delete!
(
"
\r
"
)
#info.encode! "UTF-8", :invalid => :replace, :undef => :replace
puts
">>
#{
info
}
"
puts
">>
#{
info
}
"
Game_Event
.
push
Game_Event
.
parse
info
Game_Event
.
push
Game_Event
.
parse
info
end
end
end
end
def
checknum
(
head
,
*
args
)
def
checknum
(
head
,
*
args
)
Digest
::
MD5
.
hexdigest
(
"[
#{
head
}
]_
#{
args
.
join
(
'_'
)
}
_SCNERO"
)
Digest
::
MD5
.
hexdigest
(
"[
#{
head
}
]_
#{
args
.
join
(
'_'
)
}
_SCNERO"
.
gsub
(
"
\n
"
,
"
\r\n
"
).
encode
(
"GBK"
)
)
end
end
def
qroom
(
room
)
def
qroom
(
room
)
send
(
10
,
@key
,
room
.
id
,
checknum
(
"QROOM"
,
@session
+
room
.
id
.
to_s
))
send
(
10
,
@key
,
room
.
id
,
checknum
(
"QROOM"
,
@session
+
room
.
id
.
to_s
))
...
...
lib/iduel/replay.rb
0 → 100644
View file @
3ba862c3
#encoding: UTF-8
class
Replay
Delimiter
=
/^.+?\(\d+\)\(\d+:\d+:\d+\): (?:\r)?\n /
Player_Filter
=
/^(.+?)\((\d+)\)\(\d+:\d+:\d+\): (?:\r)?\n \[\d+\] ◎→/
Opponent_Filter
=
/^(.+?)\((\d+)\)\(\d+:\d+:\d+\): (?:\r)?\n \[\d+\] ●→/
attr_accessor
:room
,
:player1
,
:player2
,
:actions
def
add
(
action
)
# user = action.from_player ? $game.player1 : $game.player2
# @file.write("#{user.name}(#{user.id}):\r\n#{action.escape}\r\n")
end
def
self
.
load
(
filename
)
#TODO:效率优化
file
=
open
(
filename
)
file
.
set_encoding
"GBK"
,
"UTF-8"
result
=
self
.
new
(
file
)
contents
=
file
.
read
contents
=~
Player_Filter
result
.
player1
=
User
.
new
(
$2
.
to_i
,
$1
)
contents
=~
Opponent_Filter
result
.
player2
=
User
.
new
(
$2
.
to_i
,
$1
)
result
.
actions
=
contents
.
split
(
Delimiter
).
collect
do
|
action_str
|
action_str
.
chomp!
action
=
Action
.
parse
action_str
Game_Event
::
Action
.
new
(
action
,
action_str
)
end
$game
.
room
=
result
.
room
=
Room
.
new
(
0
,
"Replay"
,
result
.
player1
,
result
.
player2
)
result
end
def
get
@actions
.
shift
end
def
eof?
@actions
.
empty?
end
end
lib/main.rb
View file @
3ba862c3
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
#仅用于调试,发布时删
#仅用于调试,发布时删
alias
gbk_puts
puts
alias
gbk_puts
puts
def
puts
(
*
args
)
def
puts
(
*
args
)
gbk_puts
(
*
(
args
.
collect
{
|
item
|
item
.
encode
"GBK"
,
:invalid
=>
:replace
,
:undef
=>
:replace
}))
gbk_puts
(
*
(
args
.
collect
{
|
item
|
item
.
to_s
.
encode
"GBK"
,
:invalid
=>
:replace
,
:undef
=>
:replace
}))
end
end
def
p
(
*
args
)
def
p
(
*
args
)
print
(
args
.
collect
{
|
item
|
item
.
inspect
.
encode
"GBK"
,
:invalid
=>
:replace
,
:undef
=>
:replace
}.
join
(
"
\n
"
)
+
"
\n
"
)
rescue
print
(
args
.
join
(
"
\n
"
)
+
"
\n
"
)
print
(
args
.
collect
{
|
item
|
item
.
inspect
.
encode
"GBK"
,
:invalid
=>
:replace
,
:undef
=>
:replace
}.
join
(
"
\n
"
)
+
"
\n
"
)
rescue
print
(
args
.
join
(
"
\n
"
)
+
"
\n
"
)
...
...
lib/nbx/action.rb
View file @
3ba862c3
...
@@ -6,7 +6,7 @@ class Action
...
@@ -6,7 +6,7 @@ class Action
PosFilter
=
/((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
PosFilter
=
/((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
PositionFilter
=
/(表攻|表守|里守|攻击表示|防守表示|里侧表示|背面守备表示)/
PositionFilter
=
/(表攻|表守|里守|攻击表示|防守表示|里侧表示|背面守备表示)/
PhaseFilter
=
/(抽卡`阶段|准备`阶段|主`阶段1|战斗`阶段|主`阶段2|结束`阶段)/
PhaseFilter
=
/(抽卡`阶段|准备`阶段|主`阶段1|战斗`阶段|主`阶段2|结束`阶段)/
FieldFilter
=
/(?:LP:(\d+)\
r\n手卡(?:数)?:(\d+)\r\n卡组:(\d+)\r\n墓地:(\d+)\r\n除外:(\d+)\r\n前场:\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\r\n后场:<
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?>\r\n场地\|<(?:无|
#{
CardFilter
}
)>\r
\n(?:◎|●)→\\)/
FieldFilter
=
/(?:LP:(\d+)\
n手卡(?:数)?:(\d+)\n卡组:(\d+)\n墓地:(\d+)\n除外:(\d+)\n前场:\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n <(?:
#{
PositionFilter
}
\|
#{
CardFilter
}
)?>\n后场:<
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?><
#{
CardFilter
}
?>\n场地\|<(?:无|
#{
CardFilter
}
)>
\n(?:◎|●)→\\)/
def
self
.
parse_pos
(
pos
)
def
self
.
parse_pos
(
pos
)
if
index
=
pos
.
index
(
"("
)
if
index
=
pos
.
index
(
"("
)
index
+=
1
index
+=
1
...
@@ -174,11 +174,11 @@ class Action
...
@@ -174,11 +174,11 @@ class Action
result
=
case
$2
result
=
case
$2
when
/^┊(.*)┊$/m
when
/^┊(.*)┊$/m
Chat
.
new
from_player
,
$1
Chat
.
new
from_player
,
$1
when
/^※\[(.*)\]\
r\n(.*)\r
\n注释$/m
when
/^※\[(.*)\]\
n(.*)
\n注释$/m
Note
.
new
from_player
,
$2
,
Card
.
find
(
$1
.
to_sym
)
Note
.
new
from_player
,
$2
,
Card
.
find
(
$1
.
to_sym
)
when
/^※(.*)$/
when
/^※(.*)$/
Chat
.
new
from_player
,
$1
Chat
.
new
from_player
,
$1
when
/^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\
r\
n
#{
FieldFilter
}
(.*)$/
#把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
when
/^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\n
#{
FieldFilter
}
(.*)$/
#把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
field
=
$~
.
to_a
field
=
$~
.
to_a
field
.
shift
#去掉第一个完整匹配信息
field
.
shift
#去掉第一个完整匹配信息
from_player
=
field
.
shift
==
"◎"
from_player
=
field
.
shift
==
"◎"
...
@@ -190,7 +190,7 @@ class Action
...
@@ -190,7 +190,7 @@ class Action
field
.
shift
field
.
shift
from_player
=
field
.
shift
==
"◎"
from_player
=
field
.
shift
==
"◎"
RefreshField
.
new
(
from_player
,
parse_field
(
field
))
RefreshField
.
new
(
from_player
,
parse_field
(
field
))
when
/^(?:(.*)\
r\
n)?(◎|●)→(.*)$/m
when
/^(?:(.*)\n)?(◎|●)→(.*)$/m
from_player
=
$2
==
"◎"
from_player
=
$2
==
"◎"
msg
=
$1
msg
=
$1
case
$3
case
$3
...
@@ -255,7 +255,7 @@ class Action
...
@@ -255,7 +255,7 @@ class Action
when
/从
#{
PosFilter
}
取
#{
CardFilter
}
加入手卡/
when
/从
#{
PosFilter
}
取
#{
CardFilter
}
加入手卡/
ReturnToHand
.
new
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
)
ReturnToHand
.
new
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
)
when
/(?:己方)?
#{
PosFilter
}
.*?
#{
CardFilter
}
效果发(?:\~)?动/
when
/(?:己方)?
#{
PosFilter
}
.*?
#{
CardFilter
}
效果发(?:\~)?动/
Effect
_
Activate
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
))
EffectActivate
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
))
when
/
#{
PosFilter
}#{
CardFilter
}
(?:变|改)为
#{
PositionFilter
}
/
when
/
#{
PosFilter
}#{
CardFilter
}
(?:变|改)为
#{
PositionFilter
}
/
ChangePosition
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
parse_position
(
$3
))
ChangePosition
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
parse_position
(
$3
))
when
/
#{
PosFilter
}#{
CardFilter
}
打开/
when
/
#{
PosFilter
}#{
CardFilter
}
打开/
...
@@ -270,7 +270,7 @@ class Action
...
@@ -270,7 +270,7 @@ class Action
end
end
result
.
id
=
id
result
.
id
=
id
result
result
when
/^(
#{
CardFilter
}
\
r\
n)*$/
when
/^(
#{
CardFilter
}
\n)*$/
MultiShow
.
new
from_player
,
$&
.
lines
.
collect
{
|
card
|
parse_card
(
card
)}
MultiShow
.
new
from_player
,
$&
.
lines
.
collect
{
|
card
|
parse_card
(
card
)}
else
else
Unknown
.
new
str
Unknown
.
new
str
...
@@ -314,7 +314,7 @@ class Action
...
@@ -314,7 +314,7 @@ class Action
end
end
class
TurnEnd
class
TurnEnd
def
escape
def
escape
"[
#{
@id
}
]
#{
from_player
?
'◎'
:
'●'
}
→=[0:0:0]==回合结束==<
#{
@turn
}
>=[0]
\
r\
n
"
+
@field
.
escape
"[
#{
@id
}
]
#{
from_player
?
'◎'
:
'●'
}
→=[0:0:0]==回合结束==<
#{
@turn
}
>=[0]
\n
"
+
@field
.
escape
end
end
end
end
class
Shuffle
class
Shuffle
...
@@ -443,10 +443,10 @@ class Action
...
@@ -443,10 +443,10 @@ class Action
end
end
class
MultiShow
class
MultiShow
def
escape
def
escape
@cards
.
collect
{
|
card
|
card
.
escape
}.
join
(
"
\
r\
n
"
)
@cards
.
collect
{
|
card
|
card
.
escape
}.
join
(
"
\n
"
)
end
end
end
end
class
Effect
_
Activate
class
EffectActivate
def
escape
def
escape
pos
=
case
@from_pos
pos
=
case
@from_pos
when
:hand
when
:hand
...
@@ -475,11 +475,11 @@ end
...
@@ -475,11 +475,11 @@ end
class
Game_Field
class
Game_Field
def
escape
def
escape
"LP:
#{
@lp
}
\
r\n
手卡:
#{
@hand
.
size
}
\r\n
卡组:
#{
@deck
.
size
}
\r\n
墓地:
#{
@graveyard
.
size
}
\r\n
除外:
#{
@removed
.
size
}
\r\n
前场:
\r
\n
"
+
"LP:
#{
@lp
}
\
n
手卡:
#{
@hand
.
size
}
\n
卡组:
#{
@deck
.
size
}
\n
墓地:
#{
@graveyard
.
size
}
\n
除外:
#{
@removed
.
size
}
\n
前场:
\n
"
+
@field
[
6
..
10
].
collect
{
|
card
|
" <
#{
"
#{
Action
.
escape_position_short
(
card
)
}
|
#{
card
.
position
==
:set
?
'??'
:
"[
#{
card
.
card_type
}
][
#{
card
.
name
}
]
#{
card
.
atk
}#{
' '
+
card
.
def
.
to_s
}
"
}
"
if
card
}
>
\
r\
n
"
}.
join
+
@field
[
6
..
10
].
collect
{
|
card
|
" <
#{
"
#{
Action
.
escape_position_short
(
card
)
}
|
#{
card
.
position
==
:set
?
'??'
:
"[
#{
card
.
card_type
}
][
#{
card
.
name
}
]
#{
card
.
atk
}#{
' '
+
card
.
def
.
to_s
}
"
}
"
if
card
}
>
\n
"
}.
join
+
"后场:"
+
"后场:"
+
@field
[
1
..
5
].
collect
{
|
card
|
"<
#{
card
.
position
==
:set
?
'??'
:
card
.
escape
if
card
}
>"
}.
join
+
@field
[
1
..
5
].
collect
{
|
card
|
"<
#{
card
.
position
==
:set
?
'??'
:
card
.
escape
if
card
}
>"
}.
join
+
"
\
r\n
场地|<
#{
@field
[
0
]
?
@field
[
0
].
escape
:
'无'
}
>
\r
\n
"
+
"
\
n
场地|<
#{
@field
[
0
]
?
@field
[
0
].
escape
:
'无'
}
>
\n
"
+
"◎→\\"
"◎→\\"
end
end
def
self
.
parse
(
str
)
def
self
.
parse
(
str
)
...
...
lib/replay.rb
View file @
3ba862c3
...
@@ -2,11 +2,7 @@ class Replay
...
@@ -2,11 +2,7 @@ class Replay
ReplayPath
=
'replay'
ReplayPath
=
'replay'
LastReplay
=
'lastreplay.txt'
LastReplay
=
'lastreplay.txt'
def
initialize
(
filename
=
LastReplay
)
def
initialize
(
filename
=
LastReplay
)
@file
=
open
(
File
.
expand_path
(
filename
,
ReplayPath
),
'w'
)
@file
=
open
(
File
.
expand_path
(
filename
,
ReplayPath
),
'w'
)
unless
filename
.
is_a?
IO
end
def
add
(
action
)
action
=
action
.
escape
if
action
.
is_a?
Action
@file
.
write
action
+
"
\n
"
end
end
def
save
(
filename
=
"
#{
Time
.
now
.
strftime
(
"%Y-%m-%d_%H:%M-%S"
)
}
_
#{
$game
.
room
.
player1
.
name
}
(
#{
$game
.
room
.
player1
.
id
}
)_
#{
$game
.
room
.
player2
.
name
}
(
#{
$game
.
room
.
player2
.
id
}
).txt"
)
def
save
(
filename
=
"
#{
Time
.
now
.
strftime
(
"%Y-%m-%d_%H:%M-%S"
)
}
_
#{
$game
.
room
.
player1
.
name
}
(
#{
$game
.
room
.
player1
.
id
}
)_
#{
$game
.
room
.
player2
.
name
}
(
#{
$game
.
room
.
player2
.
id
}
).txt"
)
close
close
...
@@ -15,4 +11,16 @@ class Replay
...
@@ -15,4 +11,16 @@ class Replay
def
close
def
close
@file
.
close
@file
.
close
end
end
end
def
self
.
load
(
file
)
@file
=
open
(
file
)
end
def
add
(
action
)
#协议定义
end
def
get
#协议定义
end
def
eof?
@file
.
eof?
end
end
\ No newline at end of file
lib/scene_login_nbx.rb
0 → 100644
View file @
3ba862c3
#==============================================================================
# ■ Scene_Login
#------------------------------------------------------------------------------
# login
#==============================================================================
class
Scene_Login_NBX
<
Scene
Vocab_Logging
=
"Logging"
def
start
require_relative
'nbx/nbx'
$game
=
NBX
.
new
login
end
def
login
username
=
$config
[
'username'
]
&&
!
$config
[
'username'
].
empty?
?
$config
[
'username'
]
:
$_ENV
[
'username'
]
$game
.
login
username
end
def
update
while
event
=
Game_Event
.
poll
handle_game
(
event
)
end
super
end
def
handle_game
(
event
)
case
event
when
Game_Event
::
Login
require_relative
'scene_hall'
$scene
=
Scene_Hall
.
new
end
end
end
lib/scene_replay.rb
0 → 100644
View file @
3ba862c3
#encoding: UTF-8
require
'Scene_Watch'
class
Scene_Replay
<
Scene_Watch
def
initialize
(
replay
)
@replay
=
replay
@count
=
0
super
(
@replay
.
room
)
end
def
init_replay
end
def
save_replay
end
def
update
if
@count
>=
60
event
=
@replay
.
get
if
event
Game_Event
.
push
event
@count
=
0
else
Widget_Msgbox
.
new
(
"回放"
,
"战报回放完毕"
)
{
$scene
=
Scene_Title
.
new
}
end
end
@count
+=
1
super
end
end
lib/scene_single.rb
View file @
3ba862c3
#==============================================================================
class
Scene_Single
<
Scene
# ■ Scene_Login
require
'Scene_Replay'
#------------------------------------------------------------------------------
require_relative
'iduel/iduel'
# login
def
start
#==============================================================================
$game
=
Iduel
.
new
$scene
=
Scene_Replay
.
new
Replay
.
load
(
"E:/game/yu-gi-oh/test_rep.txt"
)
class
Scene_Single
<
Scene
end
Vocab_Logging
=
"Logging"
end
def
start
require_relative
'nbx/nbx'
$game
=
NBX
.
new
login
end
def
login
username
=
$config
[
'username'
]
&&
!
$config
[
'username'
].
empty?
?
$config
[
'username'
]
:
$_ENV
[
'username'
]
$game
.
login
username
end
def
update
while
event
=
Game_Event
.
poll
handle_game
(
event
)
end
super
end
def
handle_game
(
event
)
case
event
when
Game_Event
::
Login
require_relative
'scene_hall'
$scene
=
Scene_Hall
.
new
end
end
end
lib/window_field.rb
View file @
3ba862c3
...
@@ -255,7 +255,7 @@ class Window_Field < Window
...
@@ -255,7 +255,7 @@ class Window_Field < Window
Widget_Msgbox
.
new
(
"特殊召唤"
,
"场位已满"
)
Widget_Msgbox
.
new
(
"特殊召唤"
,
"场位已满"
)
end
end
when
2
when
2
Action
::
Effect
_
Activate
.
new
(
true
,
:extra
,
@card
)
Action
::
EffectActivate
.
new
(
true
,
:extra
,
@card
)
when
3
when
3
Action
::
Remove
.
new
(
true
,
:extra
,
@card
)
Action
::
Remove
.
new
(
true
,
:extra
,
@card
)
when
4
when
4
...
@@ -272,7 +272,7 @@ class Window_Field < Window
...
@@ -272,7 +272,7 @@ class Window_Field < Window
Widget_Msgbox
.
new
(
"特殊召唤"
,
"场位已满"
)
Widget_Msgbox
.
new
(
"特殊召唤"
,
"场位已满"
)
end
end
when
2
#效果发动
when
2
#效果发动
Action
::
Effect
_
Activate
.
new
(
true
,
:removed
,
@card
)
Action
::
EffectActivate
.
new
(
true
,
:removed
,
@card
)
when
3
#加入手卡
when
3
#加入手卡
Action
::
ReturnToHand
.
new
(
true
,
:removed
,
@card
)
Action
::
ReturnToHand
.
new
(
true
,
:removed
,
@card
)
when
4
when
4
...
@@ -291,7 +291,7 @@ class Window_Field < Window
...
@@ -291,7 +291,7 @@ class Window_Field < Window
Widget_Msgbox
.
new
(
"特殊召唤"
,
"场位已满"
)
Widget_Msgbox
.
new
(
"特殊召唤"
,
"场位已满"
)
end
end
when
2
#效果发动
when
2
#效果发动
Action
::
Effect
_
Activate
.
new
(
true
,
:graveyard
,
@card
)
Action
::
EffectActivate
.
new
(
true
,
:graveyard
,
@card
)
when
3
#加入手卡
when
3
#加入手卡
Action
::
ReturnToHand
.
new
(
true
,
:graveyard
,
@card
)
Action
::
ReturnToHand
.
new
(
true
,
:graveyard
,
@card
)
when
4
when
4
...
@@ -302,7 +302,7 @@ class Window_Field < Window
...
@@ -302,7 +302,7 @@ class Window_Field < Window
when
0
..
5
#后场
when
0
..
5
#后场
case
@action_window
.
index
case
@action_window
.
index
when
0
#效果发动
when
0
#效果发动
Action
::
Effect
_
Activate
.
new
(
true
,
@index
,
@card
)
Action
::
EffectActivate
.
new
(
true
,
@index
,
@card
)
when
1
#返回卡组
when
1
#返回卡组
Action
::
ReturnToDeck
.
new
(
true
,
@index
,
@card
)
Action
::
ReturnToDeck
.
new
(
true
,
@index
,
@card
)
when
2
#送入墓地
when
2
#送入墓地
...
@@ -327,7 +327,7 @@ class Window_Field < Window
...
@@ -327,7 +327,7 @@ class Window_Field < Window
when
4
when
4
Action
::
Flip
.
new
(
true
,
@index
,
@card
)
Action
::
Flip
.
new
(
true
,
@index
,
@card
)
when
5
when
5
Action
::
Effect
_
Activate
.
new
(
true
,
@index
,
@card
)
Action
::
EffectActivate
.
new
(
true
,
@index
,
@card
)
when
6
when
6
Widget_Msgbox
.
new
(
"攻击宣言"
,
"功能未实现"
)
Widget_Msgbox
.
new
(
"攻击宣言"
,
"功能未实现"
)
when
7
when
7
...
@@ -374,7 +374,7 @@ class Window_Field < Window
...
@@ -374,7 +374,7 @@ class Window_Field < Window
when
6
#从游戏中除外
when
6
#从游戏中除外
Action
::
Remove
.
new
(
true
,
:hand
,
@card
)
Action
::
Remove
.
new
(
true
,
:hand
,
@card
)
when
7
#效果发动
when
7
#效果发动
Action
::
Effect
_
Activate
.
new
(
true
,
:hand
,
@card
)
Action
::
EffectActivate
.
new
(
true
,
:hand
,
@card
)
end
end
end
end
$scene
.
action
action
if
action
.
is_a?
Action
$scene
.
action
action
if
action
.
is_a?
Action
...
...
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