Skript 的一些编写问题 - 联机问答 - Minecraft(我的世界)中文论坛 -.htm

Skript 的一些编写问题 - 联机问答 - Minecraft(我的世界)中文论坛 -

Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 339|回复: 10

[插件应用] Skript 的一些编写问题

 关闭 [复制链接]
TNT8 当前离线
积分
2020
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-6-2
查看详细资料

来自:广东

 楼主| 发表于 2020-1-31 23:26:37 | 显示全部楼层 |阅读模式
30金粒
我想写个功能,检测玩家在移动的时候如果玩家头上方块为空气,就是在露天的情况
并且天气是雷暴或者下雨,则会导致玩家被雷劈


应该怎么写。






最佳答案

查看完整内容

loop blocks above the player: set {方块类型} to loop-block if {方块类型} is air: add 0 to {temp} else: add 1 to {temp} if {temp} is 0: //Do Something [hr]有帮助请您在本回复右下角点击设置最佳答案。 您的认可是对回答者最大的支持!
cc7w 当前离线
积分
35337
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-3-6
查看详细资料

来自:山东

发表于 2020-1-31 23:26:38 | 显示全部楼层
TNT8 发表于 2020-2-1 21:06
不行做不到,我也不知道为什么
这是使用图,头上有方块,显示循环的数据就是air
我寻思我的表达式好像没 ...

loop blocks above the player:
    set {方块类型} to loop-block
    if {方块类型} is air:
        add 0 to {temp}
    else:
        add 1 to {temp}
if {temp} is 0:
    //Do Something

有帮助请您在本回复右下角点击设置最佳答案
您的认可是对回答者最大的支持!
回复

使用道具 举报

极光creeper 当前离线
积分
10541
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-8-26
查看详细资料

来自:上海

发表于 2020-1-31 23:58:45 | 显示全部楼层
论坛不可能用tab,code复制又预编译吞换行
所以我就直接用4空格缩进,[ code ]也不用了

首先监听玩家移动是不行的,没有现成事件,所以楼主的效果实现起来太麻烦了
就算sk语句实现了也会完全卡服,除非你用sk-mirror附属直接用java来写,虽然效率还是很低
那这样为什么不直接写插件去呢(笑

我们考虑触发器用天气
但是天气的话只有一个change也就是天气改变的事件触发器
所以我们存一个变量来确定现在的天气是怎么样的
on weather change to sunny:
    set {weather} to "false"
else:
    set {weather} to "true"

接下来由于移动无法监听,我们监听一下跳跃的行为吧
我只能曲线救国,欢迎其他sk编写者来抽我脸
on jump:
    if {weather} is "true":
        player's y-coordinate is smaller than 255:
            loop blocks above the player:
                loop-block is air:
                   strike lightning at the player

评分

参与人数 2人气 +2金粒 +6收起 理由
TNT8+ 2那就很头痛了
。—。+ 6要是能改成定时抽签雷人的话不至于太卡…….

查看全部评分

回复

使用道具 举报

HotPe_e 当前离线
积分
6853
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-1-13
查看详细资料

来自:贵州

发表于 2020-2-1 00:27:48 来自手机 | 显示全部楼层
极光creeper 发表于 2020-1-31 23:58
论坛不可能用tab,code复制又预编译吞换行
所以我就直接用4空格缩进,[ code ]也不用了


其实这个方法不可行
貌似skript会误判定只要你头上有一格子 空气
仍然执行

还有其实skript(本体还是附属)有一个十分苛刻的移动监听 on anymove

233

评分

参与人数 1人气 +2收起 理由
极光creeper+ 2很有道理 我自闭去

查看全部评分

回复

使用道具 举报

TNT8 当前离线
积分
2020
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-6-2
查看详细资料

来自:广东

 楼主| 发表于 2020-2-1 11:30:13 | 显示全部楼层
极光creeper 发表于 2020-1-31 23:58
论坛不可能用tab,code复制又预编译吞换行
所以我就直接用4空格缩进,[ code ]也不用了

我想问一下,any可以是任何stone 任何wool 任何指定类型
那它能不能是任何方块呢? 以所有方块为类型
回复

使用道具 举报

TNT8 当前离线
积分
2020
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-6-2
查看详细资料

来自:广东

 楼主| 发表于 2020-2-1 11:54:58 | 显示全部楼层
本帖最后由 TNT8 于 2020-2-1 11:56 编辑
极光creeper 发表于 2020-1-31 23:58
论坛不可能用tab,code复制又预编译吞换行
所以我就直接用4空格缩进,[ code ]也不用了

大佬帮我看一下这个,循环方块一直显示是Air 怎么破我头上已经用东西挡住了几格,还是会遭雷劈,数据一直是Air
on walking on any stone or log or planks or dirt or grass:
        if {天气.冷却} is not set:
                set {天气.冷却} to true
        if weather in "world2" is not sunny:
                if {天气.冷却} is true:
                        If player's world is "world2":
                                loop blocks above the player:
                                        set {方块类型} to loop-block
                                if {方块类型} is air:
                                        strike lightning at the player
                                        send "{@Bt} &f卧槽你被雷劈了  方块%{方块类型}%"
                                        set {天气.冷却} to false
                                        wait 5 second
                                        set {天气.冷却} to true
                                else:
                                        stop
回复

使用道具 举报

cc7w 当前离线
积分
35337
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-3-6
查看详细资料

来自:山东

发表于 2020-2-1 20:35:14 | 显示全部楼层
TNT8 发表于 2020-2-1 11:54
大佬帮我看一下这个,循环方块一直显示是Air 怎么破我头上已经用东西挡住了几格,还是会遭雷劈,数据一直 ...

你自己写,我提供思路。loop循环,里面:

if {方块类型} is not air:
    【我记得有break,就是结束循环的】
else:
    执行雷击
回复

使用道具 举报

TNT8 当前离线
积分
2020
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-6-2
查看详细资料

来自:广东

 楼主| 发表于 2020-2-1 21:06:59 | 显示全部楼层
cc7w 发表于 2020-2-1 20:35
你自己写,我提供思路。loop循环,里面:

if {方块类型} is not air:

不行做不到,我也不知道为什么
这是使用图,头上有方块,显示循环的数据就是air
我寻思我的表达式好像没错,还是哪个细节问题?
file_1580562248000.jpg
回复

使用道具 举报

TNT8 当前离线
积分
2020
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-6-2
查看详细资料

来自:广东

 楼主| 发表于 2020-2-1 21:44:36 | 显示全部楼层
cc7w 发表于 2020-2-1 21:09
loop blocks above the player:
    set {方块类型} to loop-block
    if {方块类型} is air:


是这样吧,还是显示air 站哪都被劈
您方便帮我试一下吗。

on walking on any stone or log or planks or dirt or grass:
        if {天气.冷却} is not set:
                set {天气.冷却} to true
        if weather in "world2" is not sunny:
                if {天气.冷却} is true:
                        If player's world is "world2":
                                loop blocks above the player:
                                        set {方块类型} to loop-block
                                if {方块类型} is air:
                                        add 0 to {temp}
                                else:
                                        add 1 to {temp}
                        if {temp} is 0:
                                strike lightning at the player
                                send "{@Bt} &f卧槽你被雷劈了  方块%{方块类型}%"
                                set {天气.冷却} to false
                                wait 5 second
                                set {天气.冷却} to true
                        else:
                                stop

image.png
回复

使用道具 举报

cc7w 当前离线
积分
35337
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-3-6
查看详细资料

来自:山东

发表于 2020-2-1 21:49:21 | 显示全部楼层
本帖最后由 cc7w 于 2020-2-1 21:50 编辑

on walking on any stone or log or planks or dirt or grass:
        if {天气.冷却} is not set:
                set {天气.冷却} to true
        if weather in "world2" is not sunny:
                if {天气.冷却} is true:
                        If player's world is "world2":
                                loop blocks above the player:
                                        set {方块类型} to loop-block
                                if {方块类型} is air:
                                        add 0 to {temp}
                                else:
                                        add 1 to {temp}
                                if {temp} is 0:
                                        strike lightning at the player
                                        send "{@Bt} &f卧槽你被雷劈了  方块%{方块类型}%"
                                        set {天气.冷却} to false
                                        wait 5 second
                                        set {天气.冷却} to true
                        else:                            stop
你注意下缩进,我复制粘贴似乎有问题
如果临时值是0往后放,和loop并列

回复

使用道具 举报

TNT8 当前离线
积分
2020
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-6-2
查看详细资料

来自:广东

 楼主| 发表于 2020-2-1 22:54:17 | 显示全部楼层
cc7w 发表于 2020-2-1 21:49
on walking on any stone or log or planks or dirt or grass:
        if {天气.冷却} is not set:
       ...

无法解决,可能是我的问题吧。
麻烦,不写了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2022-8-6 10:46 , Processed in 0.731727 second(s), Total 29, Slave 25 queries, Release: Build.2022.07.28 1606, Gzip On, Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2022 我的世界中文论坛 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载