Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
V
Vgdpro Scripts
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
xiaoye
Vgdpro Scripts
Commits
3d4f896e
Commit
3d4f896e
authored
Aug 28, 2024
by
xiaoye
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update readme
parent
5aebea91
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
254 additions
and
99 deletions
+254
-99
README.md
README.md
+254
-99
No files found.
README.md
View file @
3d4f896e
...
@@ -75,7 +75,7 @@ function cm.initial_effect(c)
...
@@ -75,7 +75,7 @@ function cm.initial_effect(c)
local
e1
=
Effect
.
CreateEffect
(
c
)
--创建一个效果
local
e1
=
Effect
.
CreateEffect
(
c
)
--创建一个效果
e1
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_CONTINUOUS
)
--效果的类型
e1
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_CONTINUOUS
)
--效果的类型
e1
:
SetCode
(
EVENT_BE_MATERIAL
)
--什么情况下会发动这个效果
e1
:
SetCode
(
EVENT_BE_MATERIAL
)
--什么情况下会发动这个效果
e1
:
SetProperty
(
EFFECT_FLAG_EVENT_PLAYER
)
--我也不懂这是干啥的
e1
:
SetProperty
(
EFFECT_FLAG_EVENT_PLAYER
)
e1
:
SetCondition
(
cm
.
condition
)
--效果的条件
e1
:
SetCondition
(
cm
.
condition
)
--效果的条件
e1
:
SetOperation
(
cm
.
operation
)
--效果的内容
e1
:
SetOperation
(
cm
.
operation
)
--效果的内容
c
:
RegisterEffect
(
e1
)
--把这个效果绑定到这张卡
c
:
RegisterEffect
(
e1
)
--把这个效果绑定到这张卡
...
@@ -137,9 +137,7 @@ end
...
@@ -137,9 +137,7 @@ end
>
>
> **op : 效果的内容**
> **op : 效果的内容**
## 1.指令卡cost
## 1.指令卡的注册范例
因为魔合成的不向下兼容而生的函数, 用于通常指令的注册
```
lua
```
lua
vgd
.
SpellActivate
(
c
,
m
,
op
,
con
,
cost
)
vgd
.
SpellActivate
(
c
,
m
,
op
,
con
,
cost
)
...
@@ -159,20 +157,16 @@ function cm.initial_effect(c)
...
@@ -159,20 +157,16 @@ function cm.initial_effect(c)
end
end
function
cm
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
cm
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
c
=
e
:
GetHandler
()
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATKUP
)
local
g
=
vgf
.
SelectMatchingCard
(
HINTMSG_ATKUP
,
e
,
tp
,
nil
,
tp
,
LOCATION_MZONE
,
0
,
1
,
1
,
nil
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
nil
,
tp
,
LOCATION_MZONE
,
0
,
1
,
1
,
nil
)
vgf
.
AtkUp
(
c
,
g
,
5000
,
nil
)
Duel
.
HintSelection
(
g
)
vgf
.
SearchCard
(
LOCATION_HAND
,
LOCATION_DROP
,
cm
.
filter
)(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
VgF
.
AtkUp
(
c
,
g
,
5000
,
nil
)
vgf
.
SearchCard
(
LOCATION_DROP
,
cm
.
filter
)
end
end
function
cm
.
filter
(
c
)
function
cm
.
filter
(
c
)
return
c
:
IsCode
(
10101006
)
return
c
:
IsCode
(
10101006
)
end
end
```
```
## 2.被RIDE时
## 2.特别用于“被RIDE时”的【自】能力范例
用于被RIDE时效果的注册
```
lua
```
lua
vgd
.
BeRidedByCard
(
c
,
m
[,
code
,
op
,
cost
,
con
,
tg
])
vgd
.
BeRidedByCard
(
c
,
m
[,
code
,
op
,
cost
,
con
,
tg
])
...
@@ -190,16 +184,14 @@ vgd.BeRidedByCard(c, m[, code, op, cost, con, tg])
...
@@ -190,16 +184,14 @@ vgd.BeRidedByCard(c, m[, code, op, cost, con, tg])
local
cm
,
m
,
o
=
GetID
()
local
cm
,
m
,
o
=
GetID
()
function
cm
.
initial_effect
(
c
)
function
cm
.
initial_effect
(
c
)
vgf
.
VgCard
(
c
)
vgf
.
VgCard
(
c
)
vgd
.
BeRidedByCard
(
c
,
m
,
10101002
,
vgf
.
SearchCardSpecialSummon
(
LOCATION_DECK
,
cm
.
filter
))
vgd
.
BeRidedByCard
(
c
,
m
,
10101002
,
vgf
.
SearchCard
(
LOCATION_MZONE
,
LOCATION_DECK
,
cm
.
filter
))
end
end
function
cm
.
filter
(
c
)
function
cm
.
filter
(
c
)
return
c
:
IsCode
(
10101009
)
return
c
:
IsCode
(
10101009
)
end
end
```
```
## 3.触发类效果
## 3.【自】能力范例的注册范例
用于触发类型效果的注册
```
lua
```
lua
vgd
.
EffectTypeTrigger
(
c
,
m
,
loc
,
typ
,
code
[,
op
,
cost
,
con
,
tg
,
count
,
property
])
vgd
.
EffectTypeTrigger
(
c
,
m
,
loc
,
typ
,
code
[,
op
,
cost
,
con
,
tg
,
count
,
property
])
...
@@ -225,159 +217,182 @@ vgd.EffectTypeTrigger(c, m, loc, typ, code[, op, cost, con, tg, count, property]
...
@@ -225,159 +217,182 @@ vgd.EffectTypeTrigger(c, m, loc, typ, code[, op, cost, con, tg, count, property]
local
cm
,
m
,
o
=
GetID
()
local
cm
,
m
,
o
=
GetID
()
function
cm
.
initial_effect
(
c
)
function
cm
.
initial_effect
(
c
)
vgf
.
VgCard
(
c
)
vgf
.
VgCard
(
c
)
vgd
.
EffectTypeTrigger
(
c
,
m
,
LOCATION_MZONE
,
EFFECT_TYPE_SINGLE
,
EVENT_ATTACK_ANNOUNCE
,
cm
.
operation
2
,
nil
,
cm
.
condition2
)
vgd
.
EffectTypeTrigger
(
c
,
m
,
LOCATION_MZONE
,
EFFECT_TYPE_SINGLE
,
EVENT_ATTACK_ANNOUNCE
,
cm
.
operation
,
nil
,
cm
.
condition
)
end
end
function
cm
.
operation
2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
cm
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
c
=
e
:
GetHandler
()
VgF
.
AtkUp
(
c
,
c
,
10000
,
nil
)
if
c
:
IsRelateToEffect
(
e
)
and
c
:
IsFaceup
()
then
if
Duel
.
GetMatchingGroup
(
VgF
.
VMonsterFilter
,
tp
,
LOCATION_MZONE
,
0
,
nil
,
nil
):
GetFirst
():
GetOverlayGroup
():
FilterCount
(
Card
.
IsAbleToGraveAsCost
,
nil
)
>=
2
local
e1
=
vgf
.
AtkUp
(
c
,
c
,
5000
,
nil
)
and
Duel
.
SelectYesNo
(
tp
,
vgf
.
Stringid
(
m
,
3
))
then
vgf
.
EffectReset
(
c
,
e1
,
EVENT_BATTLED
)
local
cg
=
Duel
.
GetMatchingGroup
(
VgF
.
VMonsterFilter
,
tp
,
LOCATION_MZONE
,
0
,
nil
):
GetFirst
():
GetOverlayGroup
():
FilterSelect
(
tp
,
Card
.
IsAbleToGraveAsCost
,
2
,
2
,
nil
)
end
if
Duel
.
SendtoGrave
(
cg
,
REASON_COST
)
==
2
then
if
vgf
.
GetMatchingGroup
(
vgf
.
VMonsterFilter
,
tp
,
LOCATION_MZONE
,
0
,
nil
,
nil
):
GetFirst
():
GetOverlayCount
()
>=
2
and
Duel
.
SelectEffectYesNo
(
tp
,
vgf
.
stringid
(
VgID
,
10
))
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_LEAVEONFIELD
)
local
cg
=
vgf
.
GetMatchingGroup
(
vgf
.
VMonsterFilter
,
tp
,
LOCATION_MZONE
,
0
,
nil
):
GetFirst
():
GetOverlayGroup
():
Select
(
tp
,
2
,
2
,
nil
)
local
g
=
Duel
.
SelectTarget
(
tp
,
vgf
.
RMonsterFilter
,
tp
,
0
,
LOCATION_MZONE
,
1
,
1
,
nil
)
if
vgf
.
Sendto
(
LOCATION_DROP
,
cg
,
REASON_COST
)
==
2
then
if
g
then
local
g
=
vgf
.
SelectMatchingCard
(
HINTMSG_LEAVEONFIELD
,
e
,
tp
,
vgf
.
RMonsterFilter
,
tp
,
0
,
LOCATION_MZONE
,
1
,
1
,
nil
)
Duel
.
HintSelection
(
g
)
vgf
.
Sendto
(
LOCATION_DROP
,
g
,
REASON_EFFECT
)
Duel
.
SendtoGrave
(
g
,
REASON_EFFECT
)
end
end
end
end
end
end
end
function
cm
.
condition
2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
cm
.
condition
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
c
=
e
:
GetHandler
()
return
vgf
.
RMonsterCondition
(
e
)
and
c
:
GetFlagEffectLabel
(
FLAG_CONDITION
)
==
201
and
vgf
.
VMonsterFilter
(
Duel
.
GetAttackTarget
())
return
vgf
.
RMonsterCondition
(
e
)
and
c
:
GetFlagEffectLabel
(
FLAG_CONDITION
)
==
201
and
vgf
.
VMonsterFilter
(
Duel
.
GetAttackTarget
())
end
end
```
```
## 4.启动类效果
## 4.特别用于“攻击击中时”的【自】能力范例
用于启动类型效果的注册
```
lua
```
lua
VgD
.
EffectTypeIgnition
(
c
,
m
[,
loc
,
op
,
cost
,
con
,
tg
,
count
,
property
])
vgd
.
EffectTypeTriggerWhenHitting
(
c
,
m
,
loc
,
typ
[,
op
,
cost
,
con
,
tg
,
count
,
p
,
property
,
stringid
])
```
```
参数注释
参数注释
> **loc : 发动的区域(vg的描述中会在效果类型后描述这个效果在哪些区域适用) `填 nil 则默认为 LOCATION_MZONE`**
> **loc : 发动的区域(vg的描述中会在效果类型后描述这个效果在哪些区域适用) `填 nil 则默认为 LOCATION_MZONE`**
>
>
> **typ : 自身状态变化触发/场上的卡状态变化触发 `填 nil 则填默认为 EFFECT_TYPE_SINGLE`**
>
> **count : 效果的次数限制**
> **count : 效果的次数限制**
>
> **p : 击中的卡的持有者 `填 nil 则填默认为 击中的卡的当前持有者`**
>
>
> **property : 效果的性质**
> **property : 效果的性质**
范例 :
[
天轮圣龙 涅槃
](
c101
01001.lua
)
范例 :
[
瓦尔里纳·勇气
](
c104
01001.lua
)
> **【
起】【V】【1回合1次】:通过【费用】[将手牌中的1张卡舍弃],选择你的弃牌区中的1张等级0的卡,CALL到R上
。**
> **【
自】【R】【1回合1次】:处于【超限舞装】状态的这个单位的攻击击中时,通过【费用】[计数爆发1,将手牌中的1张卡舍弃],将这个单位重置
。**
```
lua
```
lua
local
cm
,
m
,
o
=
GetID
()
local
cm
,
m
,
o
=
GetID
()
function
cm
.
initial_effect
(
c
)
function
cm
.
initial_effect
(
c
)
vgf
.
VgCard
(
c
)
vgf
.
VgCard
(
c
)
vgd
.
EffectType
Ignition
(
c
,
m
,
LOCATION_MZONE
,
vgf
.
SearchCardSpecialSummon
(
LOCATION_DROP
,
cm
.
filter
),
vgf
.
DisCardCost
(
1
),
nil
,
nil
,
1
)
vgd
.
EffectType
TriggerWhenHitting
(
c
,
m
,
LOCATION_MZONE
,
EFFECT_TYPE_SINGLE
,
cm
.
op
,
cm
.
cost
,
cm
.
con
)
end
end
function
cm
.
filter
(
c
)
function
cm
.
con
(
e
)
return
c
:
IsLevel
(
0
)
local
c
=
e
:
GetHandler
()
return
c
:
GetFlagEffectLabel
(
FLAG_CONDITION
)
==
201
and
vgf
.
RMonsterCondition
(
e
)
end
function
cm
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
Duel
.
ChangePosition
(
c
,
POS_FACEUP_ATTACK
)
end
function
cm
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
vgf
.
DamageCost
(
1
)(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
and
vgf
.
DisCardCost
(
1
)(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
end
vgf
.
DamageCost
(
1
)(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
vgf
.
DisCardCost
(
1
)(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
end
end
```
```
#
[VgFuncLib函数库](VgFuncLib.lua)详解
#
# 5.【起】能力注册范例
常用参数解析
```
lua
VgD
.
EffectTypeIgnition
(
c
,
m
[,
loc
,
op
,
cost
,
con
,
tg
,
count
,
property
])
```
> **c : 要判断的卡**
参数注释
> **loc : 发动的区域(vg的描述中会在效果类型后描述这个效果在哪些区域适用) `填 nil 则默认为 LOCATION_MZONE`**
>
>
> **e : 要判断的效果**
> **count : 效果的次数限制**
>
> **property : 效果的性质**
## 1.每个卡的必备
范例 :
[
天轮圣龙 涅槃
](
c10101001.lua
)
VgD库内的函数装封,每张可入卡组的卡必须注册
> **【起】【V】【1回合1次】:通过【费用】[将手牌中的1张卡舍弃],选择你的弃牌区中的1张等级0的卡,CALL到R上。**
```
lua
```
lua
vgf
.
VgCard
(
c
)
local
cm
,
m
,
o
=
GetID
()
function
cm
.
initial_effect
(
c
)
vgf
.
VgCard
(
c
)
vgd
.
EffectTypeIgnition
(
c
,
m
,
LOCATION_MZONE
,
vgf
.
SearchCard
(
LOCATION_HAND
,
LOCATION_MZONE
,
LOCATION_DROP
,
cm
.
filter
),
vgf
.
DisCardCost
(
1
),
nil
,
nil
,
1
)
end
function
cm
.
filter
(
c
)
return
c
:
IsLevel
(
0
)
end
```
```
## 2.提示文字
## 6.特别用于“力量上升”的【永】能力注册范例
挂钩于 cdb 中对应
`卡号为 m 的卡`
右下角脚本提示文字
`第 id + 1 行`
```
lua
```
lua
vgf
.
Stringid
(
m
,
id
)
VgD
.
EffectTypeContinuousChangeAttack
(
c
,
typ
,
val
[,
con
,
tg
,
mc
,
code
,
reset
,
loc
,
loc_self
,
loc_op
]
)
```
```
## 3.先导者/后防者的判断
参数注释
用于判断
`某张卡/某个效果的持有者`
是否为
`先导者/后防者`
, 返回
`boolean`
值
```
lua
-- 是否为先导者的判断
vgf
.
VMonsterFilter
(
c
)
vgf
.
VMonsterCondition
(
e
)
-- 是否为后防者的判断
vgf
.
RMonsterFilter
(
c
)
vgf
.
RMonsterCondition
(
e
)
```
> 实际上 : **vgf.VMonsterCondition(e) == vgf.VMonsterFilter(e:GetHandler())**
> **loc : 发动的区域(vg的描述中会在效果类型后描述这个效果在哪些区域适用) `填 nil 则默认为 LOCATION_MZONE`**
>
> **typ : 自身力量上升/场上的卡力量上升 `填 nil 则填默认为 EFFECT_TYPE_SINGLE`**
>
> **val : 力量上升的具体数值**
>
> **code : 效果的内容 `若需要改为盾护上升则需填EFFECT_UPDATE_DEFENSE`**
>
> **loc : 在哪个区域上升力量(vg的描述中会在效果类型后描述这个效果在哪些区域适用) `填 nil 则默认为 LOCATION_MZONE`**
>
> **mc/reset : 效果的拥有着/重置时间`使其他单位获得此能力时需要填写`**
>
>
>
后防者的判断同理
>
**loc_self/loc_op : 效果的影响范围 `使其他单位力量上升时需要填写`**
范例 :
[
瓦尔里纳
](
c101
01006.lua
)
范例 :
[
极光战姬 阿嘉拉·胭脂
](
c104
01006.lua
)
> **【
自】【R】:处于【超限舞装】状态的这个单位攻击先导者时,这次战斗中,这个单位的力量+10000。接着通过【费用】[灵魂爆发2],选择对手的1张后防者,退场
。**
> **【
永】【R/G】:被收容在你的监狱的对手的卡有2张以上的话,这个单位的力量+5000、盾护+10000
。**
```
lua
```
lua
local
cm
,
m
,
o
=
GetID
()
local
cm
,
m
,
o
=
GetID
()
function
cm
.
initial_effect
(
c
)
function
cm
.
initial_effect
(
c
)
vgf
.
VgCard
(
c
)
vgf
.
VgCard
(
c
)
vgd
.
EffectTypeTrigger
(
c
,
m
,
LOCATION_MZONE
,
EFFECT_TYPE_SINGLE
,
EVENT_ATTACK_ANNOUNCE
,
cm
.
operation2
,
nil
,
cm
.
condition2
)
vgd
.
EffectTypeContinuousChangeAttack
(
c
,
EFFECT_TYPE_SINGLE
,
5000
,
function
(
e
)
return
vgf
.
RMonsterCondition
(
e
)
and
cm
.
con
(
e
)
end
)
--力量上升
vgd
.
EffectTypeContinuousChangeAttack
(
c
,
EFFECT_TYPE_SINGLE
,
5000
,
cm
.
con
,
nil
,
nil
,
EFFECT_UPDATE_DEFENSE
,
nil
,
LOCATION_GZONE
)
--盾护上升
end
end
function
cm
.
operation2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
cm
.
con
(
e
)
local
c
=
e
:
GetHandler
()
local
tp
=
e
:
GetHandler
()
VgF
.
AtkUp
(
c
,
c
,
10000
,
nil
)
return
vgf
.
IsExistingMatchingCard
(
cm
.
filter
,
tp
,
LOCATION_ORDER
,
0
,
2
,
nil
)
if
Duel
.
GetMatchingGroup
(
VgF
.
VMonsterFilter
,
tp
,
LOCATION_MZONE
,
0
,
nil
,
nil
):
GetFirst
():
GetOverlayGroup
():
FilterCount
(
Card
.
IsAbleToGraveAsCost
,
nil
)
>=
2
and
Duel
.
SelectYesNo
(
tp
,
vgf
.
Stringid
(
m
,
3
))
then
local
cg
=
Duel
.
GetMatchingGroup
(
VgF
.
VMonsterFilter
,
tp
,
LOCATION_MZONE
,
0
,
nil
):
GetFirst
():
GetOverlayGroup
():
FilterSelect
(
tp
,
Card
.
IsAbleToGraveAsCost
,
2
,
2
,
nil
)
if
Duel
.
SendtoGrave
(
cg
,
REASON_COST
)
==
2
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_LEAVEONFIELD
)
local
g
=
Duel
.
SelectTarget
(
tp
,
vgf
.
RMonsterFilter
,
tp
,
0
,
LOCATION_MZONE
,
1
,
1
,
nil
)
if
g
then
Duel
.
HintSelection
(
g
)
Duel
.
SendtoGrave
(
g
,
REASON_EFFECT
)
end
end
end
end
end
function
cm
.
condition2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
cm
.
filter
(
c
)
local
c
=
e
:
GetHandler
()
return
c
:
GetFlagEffect
(
FLAG_IMPRISON
)
>
0
-- vgf.RMonsterCondition(e) 判断 e的持有者(即这张卡) 是否为后防者
end
-- vgf.VMonsterFilter(Duel.GetAttackTarget()) 判断 被攻击的卡 是否为先导者
function
cm
.
filter1
(
c
)
return
vgf
.
RMonster
Condition
(
e
)
and
c
:
GetFlagEffectLabel
(
FLAG_CONDITION
)
==
201
and
vgf
.
VMonsterFilter
(
Duel
.
GetAttackTarget
()
)
return
vgf
.
RMonster
Filter
(
c
)
and
vgf
.
FrontFilter
(
c
)
end
end
```
```
## 4.等级的判断
## 7.全局检测(用于检测本回合(或者更加时间)做过什么行为)
用于判断
`自己场上的先导者等级`
是否大于等于
`这张卡/这个效果的持有者等级`
, 返回
`boolean`
值
```
lua
```
lua
vgf
.
LvCondition
(
e_or_c
)
VgD
..
GlobalCheckEffect
(
c
,
m
,
typ
,
code
,
con
[,
op
]
)
```
```
参数注释
参数注释
> **e_or_c : 要判断的效果或者卡**
> **typ : t一般情况下需填写EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS**
>
> **op : 给自身注册一个标记,非特殊情况函數内容不需填写**
>
> **con : 触发注册标记的具体情况**
>
> **code : 触发注册标记的时点**
## 5.等级的判断 其二
范例 :
[
六星彩 海璃
](
c10301001.lua
)
用于判断
`这张卡的等级`
是否在
`...`
之中, 返回
`boolean`
值
> **【自】【V】:这个单位攻击的战斗结束时,这个回合中你进行了人格RIDE的话,选择你的手牌中的至多2张卡,分别CALL到前列和后列的各1个R上。**
```
lua
```
lua
c
:
IsLevel
(
...
)
local
cm
,
m
,
o
=
GetID
()
function
cm
.
initial_effect
(
c
)
vgf
.
VgCard
(
c
)
vgd
.
GlobalCheckEffect
(
c
,
m
,
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_CONTINUOUS
,
EVENT_SPSUMMON_SUCCESS
,
cm
.
checkcon
)
end
function
cm
.
checkcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
eg
:
IsExists
(
Card
.
IsSummonType
,
1
,
nil
,
SUMMON_TYPE_SELFRIDE
)
end
```
```
参数注释
## 8.其他效果注册
> **... : 要判断的等级, 可填入多个参数, 如: c:IsLevel( 1, 2)**
说明:
> 前面的卡片能力注册均是基于函数库"VgD.lua"的封装函数,但vg卡片能力种类繁多,并非所有能力都能为其封装,故有以下的基于原版ygopro写法的能力注册
范例 :
[
天枪的骑士 勒克斯
](
c10103002.lua
)
范例 :
[
天枪的骑士 勒克斯
](
c10103002.lua
)
...
@@ -390,7 +405,7 @@ function cm.initial_effect(c)
...
@@ -390,7 +405,7 @@ function cm.initial_effect(c)
local
e2
=
Effect
.
CreateEffect
(
c
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e2
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e2
:
SetCode
(
EFFECT_ADD_
ATTRIBUTE
)
e2
:
SetCode
(
EFFECT_ADD_
SKILL
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetValue
(
SKILL_SUPPORT
)
e2
:
SetValue
(
SKILL_SUPPORT
)
e2
:
SetCondition
(
cm
.
condition
)
e2
:
SetCondition
(
cm
.
condition
)
...
@@ -400,3 +415,143 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
...
@@ -400,3 +415,143 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return
vgf
.
VMonsterCondition
(
e
)
and
vgf
.
IsExistingMatchingCard
(
Card
.
IsLevel
,
tp
,
LOCATION_MZONE
,
0
,
3
,
nil
,
3
)
return
vgf
.
VMonsterCondition
(
e
)
and
vgf
.
IsExistingMatchingCard
(
Card
.
IsLevel
,
tp
,
LOCATION_MZONE
,
0
,
3
,
nil
,
3
)
end
end
```
```
# [VgFuncLib函数库](VgFuncLib.lua)中为书写便捷而封装的函数
## 1.初始化
对vg卡片进行初始化,使其符合vg对局规则
```
lua
vgf
.
VgCard
(
c
)
```
## 2.用于行为的封装函数(仅用于operation函数):从X1处寻找卡送去X2处
```
lua
vgf
.
SearchCard
(
loc_to
,
loc_from
,
f
[,
int_max
,
int_min
])
```
返回值:int 【具体操作的数量】
参数注释
> **loc_to : 找到的卡送去某处**
>
> **loc_from : 从某处找卡**
>
> **f : 过滤函数 `即:找什么样的卡`**
>
> **int_max : 找至多几张卡 `填nil|不填则为1张`**
>
> **int_min : 找至少几张卡 `一般用于“探寻至多x张”的字样,此时填0,填nil|不填则等同于int_max`**
## 3.用于行为的封装函数:力量上升
```
lua
vgf
.
AtkUp
(
c
,
g
,
val
[,
reset
,
resetcount
])
```
返回值:Effect/table 【注册的效果/注册的效果组成的数组】
参数注释
> **c : 以卡片c的名义 `一般是拥有此效果的卡(即e:GetHandler())`**
>
> **g : 力量上升的卡**
>
> **val : 力量上升的数值**
>
> **reset : 力量上升重置时点 `因为客户端底层缺陷,部分重置时点需其他函数辅助,详情见下文4`**
>
> **resetcount : 每经过一次reset时点,resetcount数值减少1,为0便重置 `填nil|不填则为1`**
与vgf.AtkUp相似函数的函数
```
lua
vgf
.
DefUp
(
c
,
g
,
val
,
reset
,
resetcount
)
--上升护盾
vgf
.
StarUp
(
c
,
g
,
val
,
reset
,
resetcount
)
--上升暴击值
```
## 4.用于行为(operation函数)的封装函数:效果重置
```
lua
vgf
.
EffectReset
(
c
,
e
,
code
,
con
)
```
返回值:void 【无】
参数注释
> **c : 以卡片c的名义 `一般是拥有此效果的卡(即e:GetHandler())`**
>
> **e : 需要重置的效果 `也可以是多个Effect类型变量组成的table`**
>
> **code : 重置时点**
>
> **con : 重置的前提条件**
## 5.用于行为的封装函数:选择卡片
```
lua
vgf
.
SelectMatchingCard
(
hintmsg
,
e
,
select_tp
,
f
,
tp
,
loc_self
,
loc_op
,
int_min
,
int_max
,
except_g
,
...
)
```
返回值:Group 【选择的卡片组】
参数注释
> **hintmsg : 游戏中显示框的提示内容**
>
> **e : 效果本身 `operation函数的第一个参数e`**
>
> **select_tp : 做选择的玩家**
>
> **f : 过滤函数 `即:选择什么样的卡`**
>
> **tp|loc_self|loc_op : 以tp的视角来看,tp的loc_self区域和,tp对手的loc_op区域**
>
> **int_min|int_max : 选最少int_min张最多int_max张卡**
>
> **except_g : 选择except_g以外的卡**
>
> **... : 额外参数 `如过滤函数内容为cm.filter(c,e,tp),c为内核对函数传递的参数(即遍历到的每张卡),e,tp则需从额外参数传入`**
此函数一般与local配合使用,即将选择出的group定义为一个变量,便于后续进行处理
如:
```
lua
local
g
=
vgf
.
SelectMatchingCard
(
hintmsg
,
e
,
tp
,
f
,
tp
,
loc_self
,
loc_op
,
int_min
,
int_max
,
except_g
)
```
与vgf.SelectMatchingCard相似函数的函数
```
lua
vgf
.
IsExistingMatchingCard
(
f
,
tp
,
loc_self
,
loc_op
,
int
,
except_g
,
...
)
--判断是否存在至少int张符合的卡
vgf
.
GetMatchingGroup
(
f
,
tp
,
loc_self
,
loc_op
,
except_g
,
...
)
--得到所有符合的卡
vgf
.
GetMatchingGroupCount
(
f
,
tp
,
loc_self
,
loc_op
,
except_g
,
...
)
--得到所有符合的卡的数量
```
## 5.用于行为的封装函数:将卡送去某处
```
lua
vgf
..
Sendto
(
loc
,
sg
,
...
)
```
返回值:int 【具体操作的数量】
参数注释
> **loc : 送去的区域**
>
> **sg : 操作的卡片**
>
> **... : 额外参数,根据loc的不同而不同**
>
> **LOCATION_DROP : reason**
> **LOCATION_DECK : tp,seq,reason `seq可选SEQ_DECKTOP/SEQ_DECKBOTTOM/SEQ_DECKSHUFFLE`**
> **LOCATION_HAND : p|nil,reason `p为送去的玩家,送去原本持有者则填nil`**
> **LOCATION_REMOVED : pos,reason**
> **LOCATION_EXILE : reason**
> **LOCATION_OVERLAY : c `c为叠放的卡,不填|填nil则为先导者`**
> **LOCATION_TRIGGER : tp,tp,LOCATION_FZONE,POS_FACEUP,true**
> **LOCATION_MZONE : sumtype,tp,zone,pos,chk `chk为0则Call到不存在单位的圆阵`**
> **其他区域 : c,tp,pos,reason**
\ No newline at end of file
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