兰苑伊城
本帖最后由 兰苑伊城 于 2021-4-25 17:27 编辑


一个简单的介绍
  Introduction


这篇帖子是专门写给那些不会写插件,但又有切实需要的服主。

skript是一个脚本插件,可以用它来写出很多和插件一样的功能,而且他对语言的容错率很高,所以很容易上手。

目前本帖中不会涉及到很高级的功能,但是你认真看完这个帖子之后,应该能自己写出一些比较复杂的功能。
更多内容也可以到插件百科查看相应的词条。





2021.12 数据,可能有更多内容


一个简单的介绍
Introduction


这篇帖子是专门写给那些不会写插件,但又有切实需要的服主。
skript是一个脚本插件,可以用它来写出很多和插件一样的功能,而且他对语言的容错率很高,所以很容易上手。
目前本帖中不会涉及到很高级的功能,但是你认真看完这个帖子之后,应该能自己写出一些比较复杂的功能。更多内容也可以到插件百科查看相应的词条。点我转到百科词条




1.安装
Skript和其他插件的安装没有什么太大区别。


下载好插件本体后 点我前往 放入到服务器的 \plugins 文件夹内,并重启服务器即可。


安装好插件之后,你的Plugins文件夹内会生成一个Skript文件夹,你的脚本需要放在"\plguins\skript\script"路径下。


其他附属插件我会在后面遇到相应内容时,同时写出下载地址。



2.我的第一个脚本
为了让你更容易的理解,我会以白话的形式来讲解。
首先你要在"\plugins\skript\script"路径下创建一个空白文档,并把后缀改写为.sk
如图所示:

为了更好的编写脚本,推荐使用Notepad++或者其他编辑器,当然你也可以直接使用记事本(不推荐)


代码:

  1. on Join:
  2.   send "欢迎加入服务器。" to player
当玩家进入游戏时,对玩家说"欢迎加入服务器"


写入以上内容保存后并在服务器输入/sk reload all 重新加载所有脚本。


因为是第一次加载这个脚本,所以用到这个指令,以后则可以用/sk reload 我的第一个脚本 来重载这个脚本。


如果脚本编辑的没有错误,将会看到以下内容。



现在你加入服务器就会看到以下内容。



On Join: 是一个触发器, 他的用途就是当玩家进入游戏时触发。


send "欢迎加入服务器。" to player是一个事件,当玩家进入游戏以后,对玩家说,欢迎加入服务器。


to player 所指的是触发这个事件的玩家。


skript的触发器有很多
比如

代码:

  1. on right click:
  2. 注释:当玩家右键时。

  3. on death:
  4. 注释:当发生死亡事件时

  5. on command:
  6. 注释:当玩家输入指令时

更多内容请查阅插件百科相关词条。插件百科Skript词条





3.注册指令
指令的用途就是通过指令来触发你所写的事件,就和其他插件的指令时一样的。
比如你装有Essentials插件肯定用过/fly,这就是通过使用/fly这个指令来开启飞行功能。
下面我们就来注册一个指令来试试

代码:

  1. command /mycommand:
  2.   trigger:
  3.     send "我的第一条指令。" to player

先看效果图~



command /mycommand:
这里我们所注册的指令为/mycommand


trigger:
这个下面就是你想要触发的事件


send "我的第一条指令。" to player
这个前面我们已经讲过了,对玩家说一句话 "我的第一条指令。"


这样, 我们就成功注册了一条指令了。

4.死亡事件
当玩家或生物死亡时被触发

代码:

  1. on death:
  2.   attacker is a player:
  3.     send "击杀被检测到" to attacker

这里要注意的是,事件中的player不能直接使用了
这里会分为 attacked 和 victim
分别是 攻击者 和 被攻击者


真如我们这个脚本中,send 后面则变成了 to attacker


On death:
当死亡事件发生时


attacker is a player
如果攻击者是一名玩家


send "击杀被检测到" to attacker
对攻击者说 “击杀被检测到”


如下图所示:



5.条件
当你达成一定条件后,继续执行,否则执行另外的事件。
这个很重要,应用的场景特别多。
来干货,上栗子:

代码:

  1. on death:
  2.   attacker is a player:
  3.     if attacker is holding diamond sword:
  4.    send "&b你拿着钻石剑" to attacker
  5.     else:
  6.    send "&4你没拿钻石剑~!" to attacker
on death:
当死亡事件发生时:


attacker is a player:
攻击者是一名玩家:


if attacker is holding diamond sword:
如果攻击者手里拿着钻石剑
在强调一下,如果你用的是死亡事件,这里只能用攻击者或者被攻击者,并不能直接使用player。


send “&6你拿着钻石剑” to attacker
对攻击者说 你拿着钻石剑


else:
如果条件不成立,或者理解为 否则


send “&4你没拿钻石剑” to attacker
对攻击者说 你没拿钻石剑

来个图看一下:




6.禁止事件

禁止事件应该也是各位服主比较常用的功能,比如,禁止玩家输入某些指令;禁止玩家在某个地图飞行等,具体要你自己发挥想象力了。

代码:

  1. on command "res create":
  2.   player is not in "world"
  3.   send "只有再world这个世界才可以建立领地!"



这里使用的触发器为 on command:
这个触发器是当玩家输入指令时触发


on command "res create":
就是当玩家使用res create这个指令的时候会触发。


player is not in "world"
这里的“world”是世界的名字,这条脚本的意思是
如果玩家没有在world这个地图里


send就不用介绍了吧,可以往上翻一翻。


cancel the event
取消这个事件
在这个脚本里的事件就是指res create这个事件,可以达到组织创建领地的目的。









7.变量
variable
变量是什么?
他是一种带有标签的可变存储数据。
简单点说,它就像一个贴上标签的盒子,盒子里面是什么不重要,只要你看到盒子的标签,就可以打开查看或者修改盒子里的内容。


有点懵? 来点干货让你清醒一下。

代码:

  1. command /suiji:
  2.   permission: sk.suiji
  3.   trigger:
  4.     set {_随机数} to a random integer between 0 and 100
  5.     if {_随机数} > 50:
  6.    send "随机数是%{_随机数}%,比50大。" to player
  7.     else:
  8.    send "随机数是%{_随机数}%,比50小。" to player

创建一个指令/suiji
使用这个指令的权限为 sk.suiji
事件:
    设置一个名为{_随机数}的临时变量(临时变量的意思是,当脚本执行结束后,则删除这个变量。),并且让他在0至100间生成一个整数。
    如果{_随机数} 大于 50:
  对玩家说 “随机数是 数值 ,比50大”
    否则:
  对玩家说 “随机数是 数值,比50小”


在脚本语句中调用变量,只需要以{_变量}的格式,如果在打印(聊天)类里面调用,需要加上百分号,如%{_变量}%。









丢失了一个页面,好烦,晚点我再重新写一下这个页面。



PAPI占位符
首先你要知道什么是占位符
这里我们使用的是 坏黑大神的 TabooSK 附属插件。
首先我们要下载这个插件,点我前往
他的帖子里有很详细的介绍,但是有一些新手小白还是看不懂,我用实例来给大家介绍一下。


我们把下载好的 TabooSK 插件放到plugins 文件夹内,并重启服务器。
然后我们新建一个脚本,让我们试试用PAPI占位符来读取一下玩家的MCmmo(技能插件)的技能等级。


我们要在游戏内输入以下内容来下载这个MCmmo的PAPI钩子

代码:

  1. /papi ecloud download McMMO
下面是把{_游戏币}这个临时变量的值设置为 玩家 伐木技能的等级

代码:

  1. set {_游戏币} to placeholder "%mcmmo_level_伐木%" with player parsed as number

更多PAPI相关占位符可以在这个页面查看 点我前往PAPI占位符页面



正在编辑,尽情期待....



crisislost
很感兴趣,火速更新教程哈

兰苑伊城
crisislost 发表于 2021-4-9 09:00
很感兴趣,火速更新教程哈

家里两个孩子,白天还要工作,更新速度可能会有点慢。

白给一帆
教程很好,希望作者继续更新!

兰苑伊城
白给一帆 发表于 2021-4-13 11:30
教程很好,希望作者继续更新!

一有时间我就会接着写,还会分享我已经写好的一些脚本。

94776417559
感谢大佬写的教程 非常实用期待大佬的更新

兰苑伊城
94776417559 发表于 2021-4-18 10:22
感谢大佬写的教程 非常实用期待大佬的更新

一有时间我就会更新部分内容,最近事儿有点多。
后续会直接发出我自己写的脚本,并带上讲解。

tiechui
感谢大佬

a320778963
yaml啥时候出awa

兰苑伊城

前阵子写了,莫名的丢了,这几天有时间再写一份。

PlusUltra
好家伙这是个好东西

nie___h5z6
awaa ddddddddddddddddd

nie___h5z6
**aaaaaaaa

nie___h5z6
adsavgwarfvsarfgvsagvdsa

nie___h5z6
很不错啊,我一直失败qwq

nie___h5z6
cccccccccccccccccccccccccccccccccccc

白给一帆
收藏一下,日后有需要的时候学习。

gzwd2
6666666666666

gzwd2
希望作者加油,最近几天才接触到sk挺感兴趣,加油更新作者

naiifjisfifhaih
多谢大佬分享教程!!

S_凯特
希望楼主持续更新下去

岩浆块Magma
感谢分享
原来还有这样的插件
学会了之后看来可以少装很多小插件了

Red_mao
插眼字数补丁

星空在此刻
大佬,我怎么知道这个插件能识别的条件事件都有啥啊