全部

  • 全部
  • MOD
  • 地图
  • 材质包
  • 客户端
  • 教程

我的世界果式脚本(GuoScript)插件

2020-11-13 14:04:11 3343
文章分类: 插件

插果式脚本(GuoScript)插件实现了一套相对简单,格式固定的脚本语言,你可以通过正确的编写脚本后,使用此插件提供的调用方式来调用脚本,从而实现大量功能。

目前支持的调用方式有:

1. 指令调用(无玩家和有玩家)

计划中的调用方式:

绑定物品调用

交互方块调用

踩踏方块调用

战斗调用

计划中的脚本语句:

实现GrScriptBlock中的所有语句(现可通过已有语句实现)

指令 & 权限

此插件的所有命令都只允许OP使用,无任何权限节点

教程 & 详解

1. 脚本

是由你在文件中编写的字符串列表,其中每行字符串称为语句,脚本从上往下逐行运行,直至被停止或运行完成。运行过程是由与语句相对应的语句解释器处理,随后产生对应的效果。运行中的脚本拥有变量,条件,等属性,通过特定的语句创建和调用。

变量:拥有变量名和值,在执行一条语句前,语句中的所有%变量名%都会被替换为对应的变量值

条件:创建后,使用判断类的语句调用使用从而达到控制脚本运行的效果

2. 物品管理器

可以让你通过指令储存一些物品,用于特定的语句的调用,或是直接使用指令重新获得该物品,物品默认储存在items\default.yml中,你也可以在物品名前面加上“文件夹.”来使物品储存到不同文件中,但之后也要用“文件夹.物品名”的方式来调用该物品。

3. 数据管理器

可以通过指令,或者特定语句为玩家长久性(或是永久性)地储存一些数据,支持本地文件储存和Mysql储存,可以在配置文件中选择是否启用mysql储存。

数据,拥有“数据名”和“数据值”两种属性

其中“数据值”的类型是字符串,可以是数字字符串,也可以是文字字符串。对于数字字符串,可以使用/gsd add指令对其进行简单的加减而修改值,也可以编写脚本来对其进行更复杂的运算后修改值。

所有数据的默认值都为“0”,对于数据,插件还实现了一个用于PlaceholderAPI相关的变量,%gs_data_数据名%,返回的是该玩家的指定数据的值

4. 指令型脚本调用器

让你通过指令的方式,运行已载入的脚本。如果带有玩家参数,则在脚本运行前,预先添加一个变量,变量名为player,变量值为指令中玩家的名字。

我们先来看一个简单的例子

打开插件目录下的command文件夹的example.yml,将该脚本写入后,使用指令/gs reload重载插件,然后使用指令 /gsc run 脚本1 运行他

随后,服务器中所有在线的玩家都会收到信息,就像这样

在例子中可以看到,为什么都是发送信息的功能的语句有2种写法?

在这里要提一下的是,考虑到英文单词较中文单词更难记忆的问题,我为所有的语句添加了英文,中文两种写法,当然,你也可以混合使用,只需要把配置文件中的scriptLang改为*即可

好了,现在你已经了解了本插件的大概运行流程,让我们来了解一下所有语句的具体用法吧!

效果执行类

影响游戏的效果

message(a)->target

发送信息(内容)->目标

功能:

发送一条信息

参数:

a: 信息内容

target:发送的对象,可以是玩家名,也可以是*,发送给全服

备注:

可以在数字两边加上#来对数字进行四舍五入保留2位小数操作,

例如#3.1415926#,将会被输出为3.14

command(a)->target

玩家指令(指令)->目标

功能:

让指定玩家执行一条指令

参数:

a: 指令内容

target:执行的对象,可以是玩家名,也可以是*,使全服玩家一起执行

bypass(a)->target

越权指令(指令)->目标

功能:

让玩家以OP身份执行一条指令

参数:

a: 指令内容

target:执行的对象,可以是玩家名,也可以是*,使全服玩家一起执行

console(a)

后台指令

功能:

让后台执行一条指令

参数:

a:指令内容

addItem(a:b)->player

给予物品(物品名:数量)->玩家名

功能:

给予指定玩家指定数量的指定物品

参数:

a:物品名,应为物品管理器储存的物品名

b:数量,应为数字,负数则为拿走物品

player:玩家名

addMoney(a)->player  

给予金钱(数量)->玩家名

功能:

给予指定玩家指定数量的金钱

参数:

a:数量,应为数字,负数则为扣除金钱

player:玩家名

title(a:b:c:d:e)->target

发送标题(主标题:副标题:渐进:停留:渐隐)->目标

功能:

向指定对象发送一则标题

参数:

a:主标题

b:副标题

c:渐进

d:停留

e:渐隐

target:目标,可以是玩家名,也可以是*,发送给全服

备注:

仅限1.8+服务器使用

备注:

可以在数字两边加上#来对数字进行四舍五入保留2位小数操作,

例如#3.1415926#,将会被输出为3.14

控制运行类

用于控制脚本的运行

stop

停止运行

功能:

停止运行该脚本

参数:

pause(a)

暂停运行(时间)

功能:

使脚本暂停运行一段时间

参数:

a:时间,单位tick,应为一个数字

例子:

pause(20)

脚本暂停20tick后继续运行

goto(a)

跳转运行(行数)

功能:

将运行的索引跳转至该脚本的指定行后继续逐行运行

参数:

a:行数,应为一个数字

例子:

goto(1)

脚本跳转至第一行运行

备注:

使用该语句,必须有相关的停止运行的手段,

否则将阻塞服务器主线程(无限递归爆栈)

变量类

用于创建变量

变量使之后所有语句中的%变量名%都替换为变量值

setVar(a)->b

设置变量(变量值)->变量名

功能:

创建变量,值为变量值

参数:

a:变量值,可以是字符串,也可以是式子,例如 1+1,50*60

b:变量名

例子:

setVar(100)->a

setVar((%a% + 100) * 2)->a

创建一个变量a,数值为100

创建一个变量a,数值为调用之前创建的变量a,使其加上100后乘以2

loadPAPIToVar(player:a)->b

读取占位符至变量(玩家名:PlaceholderAPI变量)->变量名

功能:

创建变量,值为指定玩家的PlaceholderAPI变量值

参数:

player:玩家名,也可以乱写传入空玩家获得全局数据,例如在线人数

a:palceholderAPI变量

b:变量名

loadDataToVar(player:a)->b

读取数据至变量(玩家名:数据名)->变量名

功能:

创建变量,值为数据管理器中指定玩家指定的数据的值

参数:

player:玩家名

a:数据名

b:变量名

setData(a:b)->player

设置数据(数据名:数据值)->玩家名

功能:

将指定玩家的指定数据设置为数据值,数据会被长久储存下来

参数:

a:数据名

b:数据值,可以是数字,字符串

player:玩家名

条件判断类

创建条件,并通过判断来执行其他语句

if(a)->b

判断(条件名)->语句

功能:

判断条件是否成立,如果成立则执行其后面的语句

参数:

a:条件名,由以下的解释器创建,可以在前面加"!"来进行非运算

b:语句,应为一条可独立运行的语句,也可以是if语句

例子:

if(a)->if(!b)->message(hello world)->*

如果条件a成立,条件b不成立,则对全服发送消息hello world

chance(a)->b

概率随机条件(概率)->条件名

功能:

创建条件,有指定概率使该条件成立

参数:

a:概率,应为数字,50表示50%概率

b:条件名

hasMoney(player:a)->b->c

拥有金钱(玩家名:数量)->条件名

功能:

创建条件,如果指定玩家在线而且拥有指定数量的钱,则该条件成立,否则创建一个变量,变量值为缺少的钱的数量

参数:

player:玩家名

a:数量

b:条件名

c:变量名

hasPerm(player:a)->b

拥有权限条件(玩家名:权限节点)->条件名

功能:

创建条件,如果指定玩家在线并拥有指定权限,则该条件成立

参数:

player:玩家名

a:权限节点

b:条件名

hasItem(player:a:b)->c->d

拥有物品条件(玩家名:物品名:数量)->条件名->变量名

功能:

创建条件,如果玩家拥有指定数量的指定物品,则该条件成立,否则创建

一个变量,变量值为缺少的物品数量

参数:

player:玩家名

a:物品名,这里的物品名应为“物品管理器”中储存的物品

b:数量,应为一个数字

c:条件名

d:变量名

relation(a)->b

关系表达式条件(关系表达式)->条件名

功能:

创建条件,如果关系表达式成立,则该条件成立

参数:

a:关系表达式,例如 100>=10 100==100 5<2

b:条件名

weighted<-a:aw...<-n:nw

加权随机条件<-条件1:条件1的权重...<-条件n:条件n的权重

功能:

进行一次权重随机,使一个随机到的条件名的条件成立

参数:

a:条件名

aw:条件名的权重值

备注:

该解释器参数数量不固定,但至少有一个

例子:

weighted<-a:50<-b:30<-c:20

进行一次权重随机,使a,b,c三个条件中的其中一个条件成立

a成立的概率是50 / (50 + 30 + 20)

b成立的概率是30 / (50 + 30 + 20)

c成立的概率是20 / (50 + 30 + 20)

 下载地址 点此下载

适用版本:1.14.X 1.13.X 1.12 1.11 1.10 1.9 1.8 1.7.10

关键词: 插件 综合

相关文章