代码规范:把所有的tab换成空格
This commit is contained in:
@@ -1,158 +1,158 @@
|
||||
模式文件应当是一个合(语)法的lua程序文件,其必须返回一个table,里面的内容包括:
|
||||
color:
|
||||
必选
|
||||
模式的颜色,用于点击地图图标后显示的提示文本
|
||||
env:
|
||||
必选
|
||||
模式环境变量,决定了关卡的各项属性
|
||||
*属性名* *默认值* *说明*
|
||||
drop 60 下落延迟(帧,支持自然数和2的整数次幂)
|
||||
lock 60 锁定延迟(帧)
|
||||
wait 0 出块延迟(帧)
|
||||
fall 0 消行延迟(帧)
|
||||
bone false 是否开启骨块模式
|
||||
fieldH 20 场地高度
|
||||
heightLimit 1e99 允许的最大场地高度
|
||||
nextCount 6 显示next个数
|
||||
nextStartPos 1 next从第几个开始显示
|
||||
holdCount 1 hold个数
|
||||
infHold false 是否能无限hold
|
||||
phyHold false 是否开启物理hold
|
||||
ospin true 是否能O-spin
|
||||
deepDrop false 是否开启深降
|
||||
RS 'TRS' 旋转系统名
|
||||
color:
|
||||
必选
|
||||
模式的颜色,用于点击地图图标后显示的提示文本
|
||||
env:
|
||||
必选
|
||||
模式环境变量,决定了关卡的各项属性
|
||||
*属性名* *默认值* *说明*
|
||||
drop 60 下落延迟(帧,支持自然数和2的整数次幂)
|
||||
lock 60 锁定延迟(帧)
|
||||
wait 0 出块延迟(帧)
|
||||
fall 0 消行延迟(帧)
|
||||
bone false 是否开启骨块模式
|
||||
fieldH 20 场地高度
|
||||
heightLimit 1e99 允许的最大场地高度
|
||||
nextCount 6 显示next个数
|
||||
nextStartPos 1 next从第几个开始显示
|
||||
holdCount 1 hold个数
|
||||
infHold false 是否能无限hold
|
||||
phyHold false 是否开启物理hold
|
||||
ospin true 是否能O-spin
|
||||
deepDrop false 是否开启深降
|
||||
RS 'TRS' 旋转系统名
|
||||
|
||||
das 10 DAS
|
||||
arr 2 ARR
|
||||
sddas 2 软降DAS
|
||||
sdarr 2 软降ARR
|
||||
mindas 0 允许的最小DAS
|
||||
minarr 0 允许的最小ARR
|
||||
minsdarr 0 允许的最小软降ARR
|
||||
ihs true 提前Hold
|
||||
irs true 提前旋转
|
||||
ims true 提前移动
|
||||
das 10 DAS
|
||||
arr 2 ARR
|
||||
sddas 2 软降DAS
|
||||
sdarr 2 软降ARR
|
||||
mindas 0 允许的最小DAS
|
||||
minarr 0 允许的最小ARR
|
||||
minsdarr 0 允许的最小软降ARR
|
||||
ihs true 提前Hold
|
||||
irs true 提前旋转
|
||||
ims true 提前移动
|
||||
|
||||
skinSet [设置] 方块贴图,只能填写内置皮肤的名字
|
||||
skin [设置] 方块颜色,包含25个整数(1~16)的table
|
||||
face [设置] 方块朝向,包含25个整数(0~3)的table
|
||||
skinSet [设置] 方块贴图,只能填写内置皮肤的名字
|
||||
skin [设置] 方块颜色,包含25个整数(1~16)的table
|
||||
face [设置] 方块朝向,包含25个整数(0~3)的table
|
||||
|
||||
block true 是否显示方块
|
||||
ghost 0.3 影子透明度(0~1)
|
||||
center 1 旋转中心透明度(0~1)
|
||||
smooth false 是否平滑下落
|
||||
grid 0.16 网格透明度(0~1)
|
||||
bagLine true 是否显示包分界线(如果存在)
|
||||
lockFX 2 锁定特效等级(0~5整数)
|
||||
dropFX 2 瞬间下落特效等级(0~5整数)
|
||||
moveFX 2 移动特效等级(0~5整数)
|
||||
clearFX 2 消除特效等级(0~5整数)
|
||||
splashFX 2 溅射特效等级(0~5整数)
|
||||
shakeFX 2 晃动特效等级(0~5整数)
|
||||
atkFX 2 攻击特效等级(0~5整数)
|
||||
block true 是否显示方块
|
||||
ghost 0.3 影子透明度(0~1)
|
||||
center 1 旋转中心透明度(0~1)
|
||||
smooth false 是否平滑下落
|
||||
grid 0.16 网格透明度(0~1)
|
||||
bagLine true 是否显示包分界线(如果存在)
|
||||
lockFX 2 锁定特效等级(0~5整数)
|
||||
dropFX 2 瞬间下落特效等级(0~5整数)
|
||||
moveFX 2 移动特效等级(0~5整数)
|
||||
clearFX 2 消除特效等级(0~5整数)
|
||||
splashFX 2 溅射特效等级(0~5整数)
|
||||
shakeFX 2 晃动特效等级(0~5整数)
|
||||
atkFX 2 攻击特效等级(0~5整数)
|
||||
|
||||
text true 是否显示消行文本
|
||||
score true 是否显示落块分数
|
||||
highCam false 是否开启超屏视野
|
||||
nextPos false 是否开启生成预览
|
||||
showSpike false 是否开启spike计数器
|
||||
text true 是否显示消行文本
|
||||
score true 是否显示落块分数
|
||||
highCam false 是否开启超屏视野
|
||||
nextPos false 是否开启生成预览
|
||||
showSpike false 是否开启spike计数器
|
||||
|
||||
hideBoard false 场地隐藏模式("down"|"up"|"all")
|
||||
flipBoard false 场地翻转模式("U-D"|"L-R"|"180")
|
||||
hideBoard false 场地隐藏模式("down"|"up"|"all")
|
||||
flipBoard false 场地翻转模式("U-D"|"L-R"|"180")
|
||||
|
||||
sequence 'bag' 序列模式,是放一块后对next序列的刷新函数,可以使用默认的几个函数用字符串表示。也可以自己写一个,注意:使用协程技术
|
||||
seqData {1,2,3,4,5,6,7}序列模式使用的"包"数据(本质是生成序列用的数据,会作为参数传进上面那个叫sequence的序列生成函数,不一定是包)
|
||||
mission false 包含任务的table,说明暂时略
|
||||
sequence bag' 序列模式,是放一块后对next序列的刷新函数,可以使用默认的几个函数用字符串表示。也可以自己写一个,注意:使用协程技术
|
||||
seqData {1,2,3,4,5,6,7}序列模式使用的"包"数据(本质是生成序列用的数据,会作为参数传进上面那个叫sequence的序列生成函数,不一定是包)
|
||||
mission false 包含任务的table,说明暂时略
|
||||
|
||||
life 0 生命数(复活次数)
|
||||
garbageSpeed 1 垃圾行释放速度
|
||||
pushSpeed 3 垃圾行上涨速度
|
||||
noTele false 是否禁止10个高级按键
|
||||
visible 'show' 方块可见性,填写固定的几个字符串
|
||||
freshLimit 1e99 锁延刷新次数限制
|
||||
easyFresh true 是否使用简单锁延刷新规则
|
||||
bufferLimit 1e99 攻击缓冲行数上限
|
||||
life 0 生命数(复活次数)
|
||||
garbageSpeed 1 垃圾行释放速度
|
||||
pushSpeed 3 垃圾行上涨速度
|
||||
noTele false 是否禁止10个高级按键
|
||||
visible 'show' 方块可见性,填写固定的几个字符串
|
||||
freshLimit 1e99 锁延刷新次数限制
|
||||
easyFresh true 是否使用简单锁延刷新规则
|
||||
bufferLimit 1e99 攻击缓冲行数上限
|
||||
|
||||
fkey1 false 按下功能键1后执行的函数
|
||||
fkey2 false 按下功能键2后执行的函数
|
||||
keyCancel {} 包含禁止使用的按键的id,例如{1,2}就是禁止左移和右移
|
||||
fine [设置] 是否开启非极简提示音
|
||||
fineKill false 是否开启非极简即死
|
||||
b2bKill false 是否开启断b2b即死
|
||||
missionKill false 是否开启强制任务
|
||||
dropPiece NULL 放一块后要执行的函数,输入玩家对象
|
||||
task NULL 每帧会*继续执行*的函数,输入玩家对象,注意:使用协程技术
|
||||
noInitSZO false 是否禁止SZO块开局,如果禁止,开局序列会自动跳过最多连续五个SZO
|
||||
fkey1 false 按下功能键1后执行的函数
|
||||
fkey2 false 按下功能键2后执行的函数
|
||||
keyCancel {} 包含禁止使用的按键的id,例如{1,2}就是禁止左移和右移
|
||||
fine [设置] 是否开启非极简提示音
|
||||
fineKill false 是否开启非极简即死
|
||||
b2bKill false 是否开启断b2b即死
|
||||
missionKill false 是否开启强制任务
|
||||
dropPiece NULL 放一块后要执行的函数,输入玩家对象
|
||||
task NULL 每帧会*继续执行*的函数,输入玩家对象,注意:使用协程技术
|
||||
noInitSZO false 是否禁止SZO块开局,如果禁止,开局序列会自动跳过最多连续五个SZO
|
||||
|
||||
bg 'none' 背景,只能填写内置背景的名字
|
||||
bgm 'race' 背景音乐名(或者列表随机,例如{'race','push'}),只能用内置音乐库的音乐名
|
||||
allowMod true 是否允许mod
|
||||
load:
|
||||
必选
|
||||
模式初始化函数,一般创建一个玩家即可
|
||||
无输入
|
||||
无输出
|
||||
mesDisp:
|
||||
必选
|
||||
模式显示信息,是一个绘图函数,坐标系原点是玩家对象最左上角
|
||||
输入玩家对象
|
||||
无输出
|
||||
bg 'none' 背景,只能填写内置背景的名字
|
||||
bgm 'race' 背景音乐名(或者列表随机,例如{'race','push'}),只能用内置音乐库的音乐名
|
||||
allowMod true 是否允许mod
|
||||
load:
|
||||
必选
|
||||
模式初始化函数,一般创建一个玩家即可
|
||||
无输入
|
||||
无输出
|
||||
mesDisp:
|
||||
必选
|
||||
模式显示信息,是一个绘图函数,坐标系原点是玩家对象最左上角
|
||||
输入玩家对象
|
||||
无输出
|
||||
|
||||
score:
|
||||
可选(不填就没有分数保存和计算)
|
||||
一局打完后要存储的数据
|
||||
输入玩家对象
|
||||
输出游戏结束瞬间返回一个包含直接决定该模式成绩的数据table(会被强制加上date标签)
|
||||
score:
|
||||
可选(不填就没有分数保存和计算)
|
||||
一局打完后要存储的数据
|
||||
输入玩家对象
|
||||
输出游戏结束瞬间返回一个包含直接决定该模式成绩的数据table(会被强制加上date标签)
|
||||
|
||||
scoreDisp:
|
||||
可选(模式不出现在地图上的时候不用写)
|
||||
是把score()存起来的table转换为字符串显示出来的函数
|
||||
输入一个成绩table
|
||||
输出一个字符串
|
||||
scoreDisp:
|
||||
可选(模式不出现在地图上的时候不用写)
|
||||
是把score()存起来的table转换为字符串显示出来的函数
|
||||
输入一个成绩table
|
||||
输出一个字符串
|
||||
|
||||
comp:
|
||||
可选(没有score函数的时候不用写)
|
||||
是成绩table之间对比并排序的规则
|
||||
输入两个成绩table
|
||||
输出[第一个是不是排在第二个前面]的布尔值(可以类比"小于"运算)
|
||||
comp:
|
||||
可选(没有score函数的时候不用写)
|
||||
是成绩table之间对比并排序的规则
|
||||
输入两个成绩table
|
||||
输出[第一个是不是排在第二个前面]的布尔值(可以类比"小于"运算)
|
||||
|
||||
getRank:
|
||||
可选,模式评级函数
|
||||
是用于评价玩家表现的函数
|
||||
输入玩家对象
|
||||
输出0~5,0表示除了记录到排行榜外什么都不做;1/2/3/4/5表示D/C/B/A/S级,能解锁连接的模式,还会让模式图标在地图上显示不同的颜色
|
||||
getRank:
|
||||
可选,模式评级函数
|
||||
是用于评价玩家表现的函数
|
||||
输入玩家对象
|
||||
输出0~5,0表示除了记录到排行榜外什么都不做;1/2/3/4/5表示D/C/B/A/S级,能解锁连接的模式,还会让模式图标在地图上显示不同的颜色
|
||||
|
||||
以下是40行的模式文件内容:
|
||||
//sprint_40l.lua
|
||||
return{--返回一个table,你也可以在之前定义一些常量或者函数什么的
|
||||
color=COLOR.green,--颜色
|
||||
env={--模式环境变量
|
||||
drop=60,lock=60,
|
||||
dropPiece=function(P)if P.stat.row>=40 then P win('finish')end end,
|
||||
bg='bg2',bgm='race',
|
||||
},
|
||||
load=function()--模式加载函数,这里只生成了一个玩家,常用的单人模式可以不写,默认使用这个函数
|
||||
PLY.newPlayer(1)--1是玩家编号,默认用户控制1号玩家
|
||||
end,
|
||||
mesDisp=function(P)--40行模式需要显示的信息
|
||||
setFont(55)
|
||||
local r=40-P.stat.row
|
||||
if r<0 then r=0 end
|
||||
mStr(r,63,265)--把计算出来的剩余行数r显示出来
|
||||
PLY.draw.drawTargetLine(P,r)--使用自带的境界高度线绘制函数
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,--游戏结束时需要保存的本局关键信息
|
||||
scoreDisp=function(D)return STRING.time(D[1]).." "..D[2].." Pieces"end,--把score返回的数据显示出来的方法
|
||||
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,--按照时间排序,时间一样就看块数
|
||||
getRank=function(P)--计算评级
|
||||
if P.stat.row<40 then return end--你总得打完40行对吧,否则直接return空掉,成绩都不记录
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=26 and 5 or--时间小于等于26秒就是S级要求
|
||||
T<=32.6 and 4 or--A级要求
|
||||
T<=52.6 and 3 or--B级要求
|
||||
T<=92.9 and 2 or--C级要求
|
||||
T<=183 and 1 or--D级要求,解锁别的模式的最低标准
|
||||
0--记录成绩的最低标准
|
||||
end,
|
||||
color=COLOR.green,--颜色
|
||||
env={--模式环境变量
|
||||
drop=60,lock=60,
|
||||
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
|
||||
bg='bg2',bgm='race',
|
||||
},
|
||||
load=function()--模式加载函数,这里只生成了一个玩家,常用的单人模式可以不写,默认使用这个函数
|
||||
PLY.newPlayer(1)--1是玩家编号,默认用户控制1号玩家
|
||||
end,
|
||||
mesDisp=function(P)--40行模式需要显示的信息
|
||||
setFont(55)
|
||||
local r=40-P.stat.row
|
||||
if r<0 then r=0 end
|
||||
mStr(r,63,265)--把计算出来的剩余行数r显示出来
|
||||
PLY.draw.drawTargetLine(P,r)--使用自带的境界高度线绘制函数
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,--游戏结束时需要保存的本局关键信息
|
||||
scoreDisp=function(D)return STRING.time(D[1]).." "..D[2].." Pieces"end,--把score返回的数据显示出来的方法
|
||||
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,--按照时间排序,时间一样就看块数
|
||||
getRank=function(P)--计算评级
|
||||
if P.stat.row<40 then return end--你总得打完40行对吧,否则直接return空掉,成绩都不记录
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=26 and 5 or--时间小于等于26秒就是S级要求
|
||||
T<=32.6 and 4 or--A级要求
|
||||
T<=52.6 and 3 or--B级要求
|
||||
T<=92.9 and 2 or--C级要求
|
||||
T<=183 and 1 or--D级要求,解锁别的模式的最低标准
|
||||
0--记录成绩的最低标准
|
||||
end,
|
||||
}
|
||||
@@ -8,43 +8,43 @@
|
||||
如果打算自己导入游戏的话需要降噪+裁剪+调整音量后再转为ogg格式 (不支持别的, 因为ogg音质好体积小)
|
||||
|
||||
目前游戏内正在使用, 必须录制的音频文件名们:
|
||||
single, double, triple, techrash (读作\'tekrʌʃ\)
|
||||
以上直接念就可以,用于普通直接消行
|
||||
single, double, triple, techrash (读作\'tekrʌʃ\)
|
||||
以上直接念就可以,用于普通直接消行
|
||||
|
||||
mini, b2b, b2b2b
|
||||
以上直接念就可以,用于组合进spin消除
|
||||
注: b2b读作back to back
|
||||
mini, b2b, b2b2b
|
||||
以上直接念就可以,用于组合进spin消除
|
||||
注: b2b读作back to back
|
||||
|
||||
[各种spin消除]
|
||||
以上的每一个都要衍生出数条语音,例如zpin的是这五条:
|
||||
z-spin (用于不消行)
|
||||
z-spin single
|
||||
z-spin double
|
||||
z-spin triple
|
||||
(z-spin techrash)
|
||||
(z-spin pentacrash)
|
||||
(z-spin hexacrash)
|
||||
对于 S L J T O I 每一个都是这样至少四条语音
|
||||
加括号一般不用所以可以不录(消5和消6),
|
||||
另:对于P, Q, F, E, U, V, W, X, R, Y, N, H
|
||||
这些方块也可以有上面那些语音,但由于仅在五连块使用还会显著增加语音包体积, 所以不录也可以
|
||||
[各种spin消除]
|
||||
以上的每一个都要衍生出数条语音,例如zpin的是这五条:
|
||||
z-spin (用于不消行)
|
||||
z-spin single
|
||||
z-spin double
|
||||
z-spin triple
|
||||
(z-spin techrash)
|
||||
(z-spin pentacrash)
|
||||
(z-spin hexacrash)
|
||||
对于 S L J T O I 每一个都是这样至少四条语音
|
||||
加括号一般不用所以可以不录(消5和消6),
|
||||
另:对于P, Q, F, E, U, V, W, X, R, Y, N, H
|
||||
这些方块也可以有上面那些语音,但由于仅在五连块使用还会显著增加语音包体积, 所以不录也可以
|
||||
|
||||
perfect_clear, half_clear
|
||||
这俩可以直接念也可以略做修改
|
||||
perfect_clear, half_clear
|
||||
这俩可以直接念也可以略做修改
|
||||
|
||||
win, lose, bye
|
||||
这几个可以自由发挥, 能用在三个场合就行,尽量不要太长
|
||||
win, lose, bye
|
||||
这几个可以自由发挥, 能用在三个场合就行,尽量不要太长
|
||||
|
||||
test, happy, doubt, sad, egg
|
||||
这几个是特殊音效,具体使用情况不定
|
||||
第一个是测试音量用的音效,尽量短一点,长度在半秒内
|
||||
其他是彩蛋音效(不录也行, 反正一般不会触发)
|
||||
test, happy, doubt, sad, egg
|
||||
这几个是特殊音效,具体使用情况不定
|
||||
第一个是测试音量用的音效,尽量短一点,长度在半秒内
|
||||
其他是彩蛋音效(不录也行, 反正一般不会触发)
|
||||
|
||||
welcome_voc
|
||||
进入游戏播放的欢迎语音(类似osu)
|
||||
welcome_voc
|
||||
进入游戏播放的欢迎语音(类似osu)
|
||||
|
||||
目前没有用到但是将要加入的:
|
||||
split
|
||||
split
|
||||
|
||||
未来可能加入的:
|
||||
暂无
|
||||
暂无
|
||||
Reference in New Issue
Block a user