我的世界果式脚本(GuoScript)插件
插果式脚本(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