Commit 289609d5 authored by I-linmeng-I's avatar I-linmeng-I Committed by GitHub

Merge pull request #1 from whenmo/main

updata readme
parents d6829db6 c162db28
# vgdpro的卡片脚本编写文档
本游戏的脚本基于lua。使用自定义库:`VgD.lua`,`VgDefinition.Lua`,`VgFuncLib.lua`来涵括大部分需要的内容。
> 本游戏的脚本基于lua。使用自定义库: [VgD](VgD.Lua), [VgDefinition](VgDefinition.Lua), [VgFuncLib](VgFuncLib.Lua) 来涵括大部分需要的内容。
大家写脚本基本只需要一些基础的逻辑整理和调用对应的库就能完成编写。以下是一些最基础的教程
如果还有不懂可以加群:721095458
## 默认白板卡片脚本(即默认脚本)
<details>
<summary>目录(单击展开)</summary>
1. [默认脚本](#默认白板卡片脚本即默认脚本)
2. [关于vgd的效果分类](#关于vgd的效果分类)
3. [效果注册范例](#效果注册范例)
4. [基础常量介绍](#typecodeproperty都具体有啥)
5. [VgD函数库详解](#vgd函数库详解)
1. [指令卡cost](#1指令卡cost).
2. [被RIDE时](#2被ride时).
</details>
# 默认白板卡片脚本(即默认脚本)
```lua
local cm,m,o=GetID()
......@@ -19,8 +36,9 @@
--代码
end
```
## 关于vgd的效果分类以及增加效果
### vg常见的效果类型
# 关于vgd的效果分类
vg常见的效果类型
- **【起】启动效果**
- 这就是最基本的手动开启的效果(类似游戏王里的茉莉②效果那样的主动效果)
- **【自】诱发效果**
......@@ -30,12 +48,14 @@
- **以及指令能力**
- 等价于游戏王中的魔法卡的发动
**==vg的效果是允许空发的,所以vgdpro的脚本大多不需要为效果注册Target函数(后面会提到)==**
### 如何给卡片注册效果
> **vg的效果是允许空发的,所以vgdpro的脚本大多不需要为效果注册Target函数(后面会提到)**
# 效果注册范例
那既然现在知道了有哪些种类的效果,就可以开始介绍如何给卡片增加对应的效果了
比如我们这里要给某一张卡写一个效果
> 【自】:这个单位被RIDE时,你是后攻的话,抽1张卡。
> **【自】:这个单位被RIDE时,你是后攻的话,抽1张卡。**
```lua
......@@ -45,45 +65,102 @@ function cm.initial_effect(c)
vgf.VgCard(c)
--在这之后加入需要注册的效果
local e1=Effect.CreateEffect(c)--创建一个效果
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)--效果的类型
e1:SetCode(EVENT_BE_MATERIAL)--什么情况下会发动这个效果
e1:SetProperty(EFFECT_FLAG_EVENT_PLAYER)--我也不懂这是干啥的
e1:SetCondition(cm.condition)--效果的条件
e1:SetOperation(cm.operation)--效果的具体内容
c:RegisterEffect(e1)--把这个效果绑定到这张卡
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)--效果的具体内容
Duel.Draw(tp,1,REASON_EFFECT)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)--效果的类型
e1:SetCode(EVENT_BE_MATERIAL)--什么情况下会发动这个效果
e1:SetProperty(EFFECT_FLAG_EVENT_PLAYER)--我也不懂这是干啥的
e1:SetCondition(cm.condition)--效果的条件
e1:SetOperation(cm.operation)--效果的内容
c:RegisterEffect(e1)--把这个效果绑定到这张卡
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)--效果的条件
--效果的条件
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return tp==1 and Duel.GetTurnPlayer()==tp
end
--效果的内容
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
end
```
但是就如我们之前所说。我们使用自定义库涵括了大部分需要的内容,所以这个效果也可以直接简写成这样:
但是就如我们之前所说。我们使用自定义库涵括了大部分需要的内容, 所以这个效果也可以直接简写成这样:
```lua
--默认内容
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.BeRidedByCard(c,m,nil,cm.operation,nil,cm.condition)--只要这一句就完成了上面7行的内容
vgd.BeRidedByCard(c,m,nil,cm.operation,nil,cm.condition) --只要这一句就完成了上面7行的内容
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)--效果的具体内容
Duel.Draw(tp,1,REASON_EFFECT)
--效果的条件
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return tp==1 and Duel.GetTurnPlayer()==tp
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)--效果的条件
return tp==1 and Duel.GetTurnPlayer()==tp
--效果的内容
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
end
```
而函数里传入的e,tp,eg,ep,ev,re,r,rp分别是
- `e`:
- `tp`:当前回合玩家的编号()
## type、code、property都具体有啥
# type、code、property都具体有啥
那我怎么知道这些常量的具体意义呢?可以直接在编辑器里鼠标悬停在这些常量上查看所有常量
![image](https://i.postimg.cc/GmFVmkpB/Clip-2024-04-09-11-11-23.png)
## 目前所有的函数库
- VgD.SpellActivate(c,m,operation,condition,code,num1,num2,num3,num4,num5)
- 因为魔合成的不向下兼容而生的函数,用于通常指令的注册,如效果:==通过【费用】[计数爆发1]施放!选择你的1个单位,这个回合中,力量+5000。选择你的弃牌区中的1张「瓦尔里纳」,加入手牌==
- `c`:
- `m`:
# VgD函数库详解
> **函数的参数若位于 `[ ]` 则为可选参数(即可不填)**
常用参数解析
> **c : 注册这个效果的卡**
>
> **m : 这张卡的卡号**
>
> **con : 效果的条件**
>
> **op : 效果的内容**
## 1.指令卡cost
因为魔合成的不向下兼容而生的函数, 用于通常指令的注册, 如效果:
> **通过【费用】[计数爆发1]施放!选择你的1个单位, 这个回合中, 力量+5000。选择你的弃牌区中的1张「瓦尔里纳」, 加入手牌**
```lua
VgD.SpellActivate(c, m, op, con[, cost, dis, eb, sb, sc, cb])
```
参数注释
> **cost : 特殊的费用标识(填写卡号否则为0, 适用于存在以下参数不适用的费用) 不填默认为 nil**
>
> **dis : 将手牌中的x张卡舍弃 不填默认为 0**
>
> **eb : 能量爆发x (Energy Blast) 不填默认为 0**
>
> **sb : 灵魂爆发x (Soul Blast) 不填默认为 0**
>
> **sc : 灵魂填充x (Soul Charge) 不填默认为 0**
>
> **cb : 计数爆发x (Counter Blast) 不填默认为 0**
## 2.被RIDE时
用于如以下效果的注册
> **这个单位被RIDE时, xxxx**
```lua
VgD.BeRidedByCard(c, m[, code, op, cost, con, tg])
```
参数注释
> **code : 被指定卡 RIDE 的情况下填写对应卡号, 否则填0**
>
> **cost : 效果的费用**
>
> **tg : 效果的预处理对象函数**
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment