可畏
本帖最后由 可畏 于 2019-10-7 02:04 编辑

*GuoScript *

革新,才能超越


前言
    我是GayaGuoguo,因为一些特殊问题,我的mcbbs账号被盗用后发布了一些违反论坛规定的内容,并且对我今后发布或更新插件都产生了不良影响,因此我决定弃用以前的论坛账号。
    然后回坑后想要更新之前的插件,但在阅读我以前写的一些插件的代码之后我发现,无论是功能还是代码拓展性,它们都被限制得死死的,因此就有了编写这个插件的想法。我也考虑过,虽然这个插件的使用难度可能比以前的要大很多,但我相信,此插件的功能拓展性,值得您花时间深入研究,此插件也会实现并超越以往被弃用的插件的功能。

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

目前支持的调用方式有:
1. 指令调用(无玩家和有玩家)

计划中的调用方式:
绑定物品调用
交互方块调用
踩踏方块调用
战斗调用

计划中的脚本语句:
实现GrScriptBlock中的所有语句(现可通过已有语句实现)

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

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

变量:拥有变量名和值,在执行一条语句前,语句中的所有%变量名%都会被替换为对应的变量值
条件:创建后,使用判断类的语句调用使用从而达到控制脚本运行的效果

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

3. 数据管理器
    可以通过指令,或者特定语句为玩家长久性(或是永久性)地储存一些数据,支持本地文件储存和Mysql储存,可以在配置文件中选择是否启用mysql储存。
    数据,拥有“数据名”和“数据值”两种属性
其中“数据值”的类型是字符串,可以是数字字符串,也可以是文字字符串。对于数字字符串,可以使用/gsd add指令对其进行简单的加减而修改值,也可以编写脚本来对其进行更复杂的运算后修改值。
    所有数据的默认值都为“0”,对于数据,插件还实现了一个用于PlaceholderAPI相关的变量,%gs_data_数据名%,返回的是该玩家的指定数据的值

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


我们先来看一个简单的例子
  1. 脚本1:
  2.   - 'message(hello world!)->*'
  3.   - '发送信息(你好,世界!)->*'
复制代码
打开插件目录下的command文件夹的example.yml,将该脚本写入后,使用指令/gs reload重载插件,然后使用指令 /gsc run 脚本1 运行他
随后,服务器中所有在线的玩家都会收到信息,就像这样
在例子中可以看到,为什么都是发送信息的功能的语句有2种写法?
在这里要提一下的是,考虑到英文单词较中文单词更难记忆的问题,我为所有的语句添加了英文,中文两种写法,当然,你也可以混合使用,只需要把配置文件中的scriptLang改为*即可

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

效果执行类
影响游戏的效果

控制运行类
用于控制脚本的运行

变量类
用于创建变量
变量使之后所有语句中的%变量名%都替换为变量值

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

实例
一、实现一个指令型脚本,要求用金钱换取执行一条指令

二、编写一个指令型脚本,实现使用抽奖券抽奖,发放多个概率不同的奖励中的一项,其中
一等奖的概率为10%,
二等奖的概率为20%,
三等奖的概率为30%,
谢谢参与为40%。


下载
您的支持是我更新此插件的最大动力
您的建议是我更新此插件的主要方向
欢迎评分和回复
建议前置:Vault
建议前置:PlaceholderAPI

GuoScript-1.1.1.jar (105.05 KB, 下载次数: 1675)


更新记录
1.0.0 - 插件发布
1.0.1 - 修改语句
1.0.2 - 增加指令
1.1.0 - 修改语句,新增数据管理器,新增语句
1.1.1 - 优化数据管理器
- 现在每隔3分钟内插件会自动储存一次在线玩家的数据
- 新增了指令/gsd add
- 现在,数据值可以通过使用%gs_data_数据名%的PlaceholderAPI变量调用了

开源 & 声明

本插件所用所有代码均为原创,不存在借用/抄袭/违反协议等行为
来自群组: 银河系气功协会

可畏
拓展API & 写给开发者
占楼编写中……

Cavalry_仰望
不错的插件 支持一下

逍遥生丶
八字水帖,最为致命

逍遥生丶
八字水帖,最为致命

Neubulaeko
这个和MethodScript(EngineHub的出品)或者Skript这两个东西有什么彻底不一样的地方吗?

可畏
Neubulaeko 发表于 2019-10-1 21:00
这个和MethodScript(EngineHub的出品)或者Skript这两个东西有什么彻底不一样的地方吗? ...

MethodScrip是什么我没有了解过,
对比Skript的话,可能是简化了繁杂的功能吧

_諵城`Tr)L
player:玩家名
这里的玩家名是可以替换成 %player_name% 吧?

可畏
本帖最后由 可畏 于 2019-10-1 21:31 编辑
_諵城`Tr)L 发表于 2019-10-1 21:22
player:玩家名
这里的玩家名是可以替换成 %player_name% 吧?

%player% 如果gsc run 的时候有玩家对象的话,编辑一下就要重新等审核~不太敢改内容了呢

498525451
蒸鱼登岛尼。海浩窝梅芳奇

Neubulaeko
可畏 发表于 2019-10-1 21:05
MethodScrip是什么我没有了解过,
对比Skript的话,可能是简化了繁杂的功能吧 ...

可以去EngineHub(开发了WorldEdit的那群人)的官网上面看一下, 感觉很类似啊从简介上看(
当然不是说已经有了轮子就没必要造,我倒是希望看见一个竞争对手或者一个功能更加完善的或者更亲民的插件的(

Nicekill
很棒的插件嗷~

SK想学,英语基础不好
GS想学,不知道有没有机会

1416868137
插件不错,支持

A梦很帅
那GuoGuo你的账号不能联系找回吗  毕竟优秀的Guo命令系列的插件

下一页 最后一页