单挑插件帮助

2020-04-13 13:53


插件基本信息(建议看下)


         一、简介

Dantiao是一款功能丰富的PVP竞技插件,腐竹们通过本插件在让玩家享受赛中畅快的战斗的同时,还能在赛后方面设置排行榜、积分商城、记录面板等,丰富玩家们的游戏体验。


本插件最开始由Valorin(我)提出后联合Jonjs开发,经历几天的努力,于20188月开发了插件的第一个版本。但由于学业原因,20198月才开始重新更新,历经十几个子版本, 从1.0更新到了1.7。为了提高代码质量与维护效率,我于20201月决定重写本插件,于2月完工,即大家现在看到了2.0版本,相对于1.7版本,它具有更强的稳定性与更丰富的体验, 当然以后我还会更新下去的。自1.0第一个版本发布以来,更新与维护全程就由Valorin直接负责,但Jonjs也做出了许多间接的贡献,在此特地感谢。

   


         插件发布帖:点击进入


     官方交流群:994702205


                       爱发电赞助:点击进入 (爱发电赞助6.66即可获取永久的提前下载权利!)

   



版本号

发布时间()

大小()

版本号

发布时间()

大小()

1.0(5个子版本)

2018/8/30

44kb

2.0(5个子版本)

2020/2/2

240kb

1.1(1个子版本)

2019/8/11

48kb

2.1(2个子版本)

2020/4/3

250kb

1.2(3个子版本)

2019/8/18

56kb

2.2

开发中 预计5


1.3(3个子版本)

2019/9/8

63kb




1.4(3个子版本)

2019/9/22

69kb




1.5(1个子版本)

2019/10/19

82kb













1.6(1个子版本)

2019/11/2

88kb

1.7(3个子版本)

2019/11/17

93kb


   


指令大汇总&权限

   


    dt.admin - 管理员权限(本插件只有这一个权限)

   



指令(括号代表简写)

用途

/dt help

查看玩家帮助大全

/dt start(st)

打开匹配面板

/dt timetable

查看可以进行单挑比赛的时间段

/dt ainfo

查看所有竞技场的信息

/dt send <玩家名>

向某玩家发送单挑请求

/dt accept

接受单挑请求

/dt deny

拒绝单挑请求

/dt quit(q)

认输(在比赛中使用)

/dt shop(s)

打开积分商城

/dt records(r)

打开记录面板

/dt points(p) me

查询积分余额

/dt rank

查看自己的排名信息

/dt rank <win/kd>

查看全服的胜场数/KD比排行信息

/dt lobby

传送到大厅

/dt dan

查看自己的段位

/dt energy(e)

查询精力值余额






/dt watch <竞技场编辑名(也就是编号)>

观战

/dt changelang

查看服务器已加载的语言文件

/dt changelang <语言文件>

更换自己的语言环境


   



指令(括号代表缩写)

用途

/dt adminhelp

查看管理员帮助大全


/dt points(p) help

查看单挑积分变更相关帮助(points相关指令3 条)


/dt shop(s) help

查看单挑积分商城相关帮助(shop相关指令4 条)


/dt arena(a) help

查看单挑竞技场相关帮助(arena相关指令8 条)


/dt energy(e) help

查看单挑竞技场相关帮助(energy相关指令2 条)

/dt hd

查看语言文件修改相关帮助(hd相关指令5条)

/dt stop <竞技场编辑名>

强制结束某个竞技场的比赛

/dt game <竞技场编辑名> <玩家1> <玩家2>


强制开启一场比赛

/dt lobby set

设置大厅(脚下的位置)

/dt lobby delete

删除大厅

/dt checkv

手动检查更新并获取更新信息

/dt reload config

重载config.yml(配置文件)

/dt reload lang

重载所有语言文件



竞技场基础

   


本插件支持有多个竞技场存在,玩家在开始比赛时会被随机传送到一个竞技场,若只有一个竞技场那就会传送到唯一的那个竞技场里面

   


从插件的2.0版本开始,竞技场的创建方式更为简单,我们只需要获取一个创建工具即可进行创建操作


首先,我们要先输入/dt a mode进入[竞技场创建模式],在输入指令后,同时我们会收到一个竞技场创建工具

    

进入创建模式


    

创建工具


              拿到工具后,我们要利用它来选择玩家1和玩家2的传送点,传送点即比赛开始后双方玩家传送的初始位置。手持工具,站在你要设置点的位置,点击空气,左键点击空气就是设置传送点A,右键就是设置传送点B。在点击时,你站在什么地方,包括看着哪个方向,玩家在开赛


设置点


         注意上面的操作是设置AB传送点,不是圈竞技场,是设置玩家的传送点,竞技场还要你自己进行圈地处理(领地插件)以保护里面的方块不被破坏什么的,当然圈完地后别忘记设置PVP为允许

   


          AB两个传送点都设置完毕后,输入/dt a create <竞技场编辑名> <竞技场展示名>即可完成创建,编辑名就相当于代号的意思,只能用英文,比如说test,pvp之类的,展示名就是竞技场的称呼了,玩家进入竞技场后会被提示您已进入xxx竞技场,这里的“xxx”显示的就是展示名。完成创建后,竞技场的信息都会被保存下来,就可以使用了

    

输入创建指令


    

创建成功


当然你完成创建以后不会立刻给你退出创建模式,所以你可以继续创建更多的竞技场,也可以再输入一次/dt a mode退出[竞技场创建模式]


大厅传送点&木牌

   


     大厅传送点的设置与否是可选的,并不强制要求,取决于你自己服务器的需求。设置大厅传送点后,玩家可以直接输入指令前往这里;玩家比赛结束后也会自动传送到这里。你可以专门为服务器打造一个单挑大厅,在这里摆上用于打开单挑积分商城、记录面板的NPC,或者设置排行榜全息图什么的(后面讲),为服务器增加一丝特色

   



指令

用途

/dt lobby

传送到大厅

/dt lobby set

设置大厅点

/dt lobby remove

删除大厅点


    

设置大厅


   


这个功能跟市面上许多小游戏差不多,就是创建一个能匹配游戏的木牌,玩家点击后即可开始匹配对手,当然你也可以用脚本方块类的插件实现,但既然插件自带,多方便,就用着呗233


          在第一行输入[单挑匹配]即可,剩下三行随便写

         


字体变蓝,则说明创建成功了


     当然[单挑匹配]这四个字不是固定的,可以在你服务器设置的默认语言文件中更改,想改啥就改啥,默认语言文件为zh_CN


比赛过程介绍

       



上一页我也讲到你可以创建个木牌让玩家打开匹配面板,当然你也可以用指令打开的:/dt st


打开匹配面板后,点击中间的按钮即可开始匹配,如果也有玩家正在匹配,那就直接开始比

    

GUI全服匹配对手

   


假如两个玩家间有想一决高下的念头,或者说打算菜鸡互啄,又或者存在私人的恩怨,可以通过私发单挑请求的方式开始比赛,在发送后,对方的聊天窗口会提示文字,点击文字即可进行接受/拒绝处理


        


收到邀请,点击屏幕文字可以接受


   


玩家们需要自己准备武器,比赛开始后,双方玩家会自动传送到一个随机的竞技场,此时会进行倒计时5秒,这五秒钟内不可互伤,也不可以走动。倒计时结束后,双方玩家即可进入紧张的战斗阶段

    

倒计时


在对打过程中,非OP的玩家不能输入任何指令(除了使用/dt q认输)


单挑竞技场带有一套较为完整的保护措施:在场外观战的玩家不会伤及比赛玩家,雪球、鱼钩等干扰行为也不能做,同时比赛玩家也不能伤及场外玩家。这样保证了比赛的公平进行, 不会出现误伤;怪物也不会对比赛中的玩家产生伤害。但仙人掌,岩浆什么的还是有效的, 你可以用这些做点小陷阱提高玩家的专注力

   


某玩家阵亡:某玩家阵亡了,即被对手击败或者被陷阱击败,都会判定该玩家输掉了比赛, 另一方获胜


比赛超时:单挑插件目前设置的比赛时限是5分钟,即300秒,若这300秒过去后双方仍存活,那就判定平局


某玩家认输:在比赛过程中难免有玩家出于一些原因想认输,本插件提供了认输功能,输 入/dt q即可像对手认输,认输后比赛立刻结束,当然也就意味着认输者被判定输掉了比赛, 另一方获胜


其他原因:玩家直接退出了服务器,同样也判断该玩家输掉比赛,另一方获胜


比赛结束后,被击败的玩家都会被自动复活,然后双方玩家会被传送到原来的位置,如果设置了单挑大厅,则双方都会传送到单挑大厅。


获胜的一方会获得段位经验、积分,还有一朵炒鸡漂亮的烟花儿233;战败的一方会扣除少量经验,但不损失积分。同时双方的比赛记录会被记录到记录面板中,玩家可随时查看。

    

比赛结束,结算奖励


段位与经验值

   


这里的经验值指的就是段位的经验值,玩家每次打完一场比赛后都会获得/失去一定量的经验,经验到达一定程度后就可以提升段位,段位可以通过聊天展示,当然也可以通过PAPI变量在你服务器的菜单、计分板、全息图等地方显示。

    

输入/dt dan可以查看自己的段位信息


    

聊天时可以显示段位


   


在比赛中,假如你获胜了,获取的经验的量取决于你连击的次数(你连续攻击对手期间对手未攻击到你则叫做连击),连击次数越高,获得的经验越高;但如果你输了,扣除的经验的量就取决于对方连击你的次数了,即对方获取的经验的三分之一。不过这个经验计分机制我以后会让大家自定义的,请期待后续更新

   


玩家刚进入服务器时是没有段位的,会显示"&7[无段位]"(这个你也可以自己改),玩家的经验到达了你设置的最低等级的段位所需的经验值后,才算获得了正式段位(正式段位就是你在配置文件自定义的那些段位),就不再显示无段位了。比如说你设置的最低等级的段位名称是"&3[倔强青铜]",所需经验值是50,那当玩家经验首次达到50后,就会全服广播“xxx 玩家获得了正式段位xxx”,这是玩家的段位就是"&3[倔强青铜]"


       


顺带一提,本插件自带一套经验保底机制:在你获得正式段位前,比赛输了不会扣经验;在你获得正式段位后,比赛输了会扣经验,但同时保证你不会重新回到无段位的身份,比如说最低等级段位的经验要求是50,你现在的经验是60,但比赛输了要扣除30经验,这时会触发这个保护机制,你的经验值不会扣到50以下,而是为你保留到50


   


如果你不想使用插件内置的段位组,你可以自己设置样式与所需经验

    

简单易懂的配置


     你可以在config.yml自定义段位。每个段位的编号只能用英文,或以英文开头的英文+阿拉伯数字组合,如"dan1","test","mydan233"等,Name即为段位的名称,Exp即为升到该段位所需要的经验。注意,必须按低级到高级的顺序写哟,且段位的编号和段位名不能重复


禁赛(黑名单)

   


    假如你不希望某玩家再进行单挑比赛,可以把TA例如比赛黑名单,使其将无法进行任何比赛,输入/dt b add <玩家名>TA加到黑名单中

   


    假如你想让玩家重回赛场,就输入/dt b remove <玩家名>解封吧三、查看禁赛名单

输入/dt b list


记录面板

   


顾名思义,一个用来记录你战斗记录的GUI面板,每一次比赛结束后都会记录,包括对手、日期、总输出伤害、最大输出伤害、比赛用时等

   


输入/dt r


    

记录你的每一次战斗


单挑排行榜&全息图

   


单挑排行榜分为两个部分:胜场排行榜和KD排行榜。胜场排行榜,顾名思义,根据玩家胜利的场数来排名;KD排行榜,KD就是Kill/Death,即玩家胜场数与败场数的比值,用于反映玩家的战绩水平,玩过主流大型枪战游戏的都懂吧。


          当比赛结束后,排名的进步/退步都会被提示

        



输入/dt rank即可查看自己的胜场/KD排名信息输入/dt rank win查看全服前十名的胜场排名信息输入/dt rank kd查看全服前十名的KD排名信息

   


打指令看排名太麻烦?像做个像主流小游戏的那种全息排行榜?没问题,作者都帮大家考虑到了,做了一个可以显示全服排名的全息图功能(胜场排行&KD排行)


2.1版本后,在原兼容HolographicDisplays全息插件的基础上,新兼容了TrHologram全息插件(国产,力荐)


        

全息图-胜场排行榜



          四、如何创建/移动我的全息图

输入/dt hd win在脚下的位置创建胜场排行榜全息图;输入/dt hd kd创建KD排行榜全息图。效果如下

    

输入指令后的提示语


当然假如你想移动它们的位置,拿胜场全息图为例,再输入一次/dt hd win就可以把已创建的全息图移动到自己的脚下了


     若要删除,输入/dt hd winremovekdremove即可


          五、如何切换以TrHologram插件为排行榜载体?(或

    HolographicDisplays

全息图选用默认使用TrHologram插件,如果你服务器暂时用的是HolographicDisplays插件,插件会自动帮你换成HolographicDisplays插件


若要使用TrHologram插件,就在config.yml中添加这一行:


       


同理:若要使用HolographicDisplays插件,就在config.yml写上:

       



遇到问题了?全息图暂时没加载出来?排名显示有点问题?没事,一个/dt hd refresh强制刷新全息图,帮你解决问题


积分与积分商城

   


积分在玩家赢得比赛后获得,可以自定义数量。输的玩家不会扣积分

   



指令

用途

/dt p me

查看我的积分余额

/dt p add <玩家名> <>

增加积分

/dt p set <玩家名> <>

设置积分

/dt p view <玩家名>

查看某玩家的积分


   


输入/dt s打开,上架商品后,商品的各项信息都会被格式化地呈现出来,一目了然四、积分商城的相关操作


指令

用途

/dt s add <价格>

上架一个商品

/dt s remove <页码> <> <>

下架一个商品

/dt s des <页数> <> <> <内容>

为一个已上架的商品添加备注(支持&,下同)

/dt s bc <页数> <> <> <内容>

为一个已上架的商品设置购买后广播的全服公告

/dt s rdes <页数> <> <>

删除某商品的备注

/dt s rbc <页数> <> <>

删除某商品的公告



        PS:这里的行和列都是从1开始而不是0哦,跟我们的生活常识一样

        


把手中的物品上架到商城中去,价格150积分


    

打开商城,就可以看到上架的物品了


    

购买成功


精力值系统

   


                         玩家每开一局比赛都要消耗一些精力值,精力值不够的话就不能再开比赛了。然后精力值会随着时间恢复,同时精力值不能无限增加,有上限的,这些东西config.yml中都能更改。为何我要专门开设这样的功能呢,原因是1.x初期的用户反馈很多玩家刷分,一开局就输入认输指令让对方白嫖积分,半小时内就可以攒上百积分去买东西,这很显然破坏了游戏的平衡,所以我做了这个功能,当然如果你希望玩家能打个痛快的话,也可以在config.yml中关闭这个功能

    

精力值不足,无法开赛


   



指令

用途

/dt e me

查看我的精力值

/dt e add <玩家名> <>

增加精力值

/dt e set <玩家名> <>

设置精力值



    小贴士:至于增加精力值这条指令,你可以充分利用它,可以有很多想法,比如说把这条指令绑定在物品身上,就可以做一些体力丸这类东西,吃了恢复单挑精力值,变身精神小伙。当然你可以有别的想法,发挥你的脑洞。


竞技场进阶

   


学完本节,你会发现竞技场的更多使用功能,以下一一讲解

   


              输入/dt a sw <竞技场编辑名>在脚下的地方设置观战点并启用观战功能;输入/dt a rw <竞技场编辑名>取消观战点并关闭观战功能


     设置观战点后,玩家就可以来这个竞技场观战了,在某竞技场的比赛开始后,玩家可以输入/dt watch <竞技场编辑名>前往观战。假如玩家不知道那个竞技场开赛了,可以输入/dt ainfo查看正在比赛的竞技场,一目了然。


当然,在观战的过程中观战玩家是无法伤害或干扰比赛玩家的,但还是建议最好把观战点用玻璃围起来


         三、强制开赛&停赛



指令

用途

/dt game <竞技场编辑名> <玩家1> <玩家2>

强制开始一场比赛

/dt stop <竞技场编辑名>

强制结束一场比赛


   


如果你不希望所有世界都可以单挑,那么你可以设置一个世界白名单,玩家要处于这些白名单世界才能使用匹配/邀请等用于开始比赛的功能


Enable代表是否启用本功能,Worlds即世界列表

   


使用了这个功能,你就可以限制玩家使用单挑的时间段了。这个功能有什么用呢?作者我考虑到了一些中小型服务器的需求,玩家在线的时间段不是很集中,也就是说经常会出现匹配找不到人的情况,于是我就做了这个功能,你可以把允许比赛的时间段设置在玩家在线的高峰期,比如说19:30-21:00(这个是个例子,因服而异),让玩家有充分的准备去战斗


Searching代表允许使用全服匹配的时间段,可以设置多个;Invite代表允许使用邀请赛的时间段,同样可以设置多个。注意格式一定要对。若你不想限制时间段,删除即可

    

配置,可设置多个


   


     这是一个很实用的功能。玩家进入竞技场后,可以设置其进入竞技场时执行的指令,比如说你添加一条:给予玩家5分钟的速度V效果的指令。那么玩家在进入竞技场后就会获得5分钟的速度V。当然你也可以设置多条指令。注意:你设置的指令是在倒计时后执行


来个图文示例教程:

    

示例:设置开赛后执行一条为玩家增加速度III,30秒的药水效果指令(OP身份)


    

添加成功


    

输入/dt a commands list可以看到已经成功添加了


        

倒计时结束,我们会发现我们已经能看到药水效果了


切换语言/自定义语言文件

   


作者为了方便中国的港澳台地区的同胞们和外国用户的使用,特地开发此功能。作者已制作了以下语言文件(在jar中已预置,格式txt



语言文件名

语言

zh_CN

简体中文

zh_TW

繁體中文

en_US

English(translated by Valorin)


       



     在游戏中输入/dt changelang <语言文件名>即可更换自己看到的提示语的语言,如/dt changelang zh_TW可以用于切换为繁体中文


输入/dt changelang可以查看服务器已加载的语言文件

   


打开config.yml,找到Lang这一项,把它改成语言文件名即可设置其为默认语言,不用带拓展名,比如说文件名叫zh_CN.txt,那直接在Lang:输入zh_CN就可以了,不需要写后面

.txt。设置为默认语言后,新玩家一进服务器看到的就是默认语言的提示语

       



当然,假如你有别的需要,你可以自己做一份语言文件


    打开plugins/Dantiao/Languages这个文件夹,创建一个xxx.txt就可以了,xxx随便写,切记:里面的提示语所在行的顺序必须严格对照jar里面的DefaultLang.txt的顺序,不能错。

   


考虑到有些编辑yml的软件不能显示一些很特殊但很好康的符号,所以弄了这功能在symbols.yml文件中,冒号前填写标识,冒号后填写转码后的符号文字

    符号网站:符号大全转码网站:站长工具


上面的例子用符号为例,添加完后你就可以在语言文件中用[v]代替这个符号了,即方便表达,又可以避免一些yml编辑软件无法加载符号的问题

   


语言文件请遵守一则提示语一行的原则,否则可能会出现一些奇奇怪怪的bug


PAPI变量大全

   


本插件已注册18PAPI变量(截至2.0版本),后续还会不断更新

    

应用-计分板


    

应用-全息图


       



变量名

显示内容

%dantiao_win%

胜利场数

%dantiao_lose%

战败场数

%dantiao_draw%

平局场数

%dantiao_kd%

KD值(胜场数/败场数)

%dantiao_total%

比赛总场数(胜场数+败场数+平局数)

%dantiao_winrank%

胜场数排名

%dantiao_kdrank%

KD值排名

%dantiao_isInvited%

现在是否有未处理的单挑请求

%dantiao_points%

积分余额

%dantiao_energy%

当前的精力值

%dantiao_maxenergy%

服务器设置的最大精力值

%dantiao_duanwei%

当前的段位

%dantiao_isWin%

上一局的战况(胜利/失败/平局)

%dantiao_lastdamage%

上一局的伤害总值

%dantiao_lastmaxdamage%

上一局的最大伤害

%dantiao_lastopponent%

上一局的对数

%dantiao_lasttime%

上一局的耗时

%dantiao_lastdata%

上一局的日期



开发者API

API




    double getPlayerPoints(Player p)

获取某玩家的单挑积分

void setPlayerPoints(Player p,double value)

设置某玩家的单挑积分

int getPlayerWin(Player p)

获取某玩家胜场总数

int getPlayerLose(Player p)

获取某玩家败场场数

int getPlayerDraw(Player p)

获取某玩家平局场数

double getPlayerKD(Player p)

获取某玩家的KD值,即胜场数/败场数

double getPlayerEnergy(Player p)

获取某玩家当前精力值

double getMaxEnergy()

获取配置文件中设置的最大精力值

int getPlayerWinRank(Player p)

获取某玩家胜场数排名

int getPlayerKDRank(Player p)

获取某玩家KD排名

String getPlayerDanName(Player p)

获取某玩家当前段位的段位名



   


Events


    DanExpChangedEvent


   


       


    EnergyChangedEvent


   


    ShopEvent


   


     ArenaStartEvent 比赛开始事件

   


       


     ArenaFinishEvent 比赛结束事件(非平局)

   


     ArenaDrawFinishEvent 比赛结束事件(平局)

   


     *.Arena中的主要方法