TNT8
RT,我想检测玩家在指定世界丢出末影珍珠时被取消动作
但是就是不知道应该怎么写。

  1. on throw of ender pearl:
  2.         If world is "emsl":
  3.                 send "&f[&3恶魔森林&f]&c警告你! 不要试图侵犯恶魔的领土!" to player
  4.                 cancel event
  5.                 stop trigger
复制代码


qq794195711
  1. http://mineplugin.org/Skript#On_Click
复制代码

有什么不回的看教程啊,这个是基础的东西,应该很简单就能实现。

TNT8
qq794195711 发表于 2020-1-17 11:28
有什么不回的看教程啊,这个是基础的东西,应该很简单就能实现。

大哥,你先试一下能不能这样子做好不好???
右键检测物品当然是可以,但是无法阻止末影珍珠的抛出事件,我翻遍了这玩意
也没找到合适的写法

qq794195711
TNT8 发表于 2020-1-17 11:35
大哥,你先试一下能不能这样子做好不好???
右键检测物品当然是可以,但是无法阻止末影珍珠的抛出事件 ...

我没用过这个,所以也没办法测试。
那边只有这一种和你所说是有联系的,没办法取消掉。
如果这个没有用,你就可以不考虑这个方法了。
如果开源的建议你去翻下源代码,看看这个事件的监控部分代码。
自己模拟下,找到最底层最先触发事件,然后取消那估计就行了。
算了,有请高手吧,我这个技术不行,先撤了。

xmdhs
直接 kill 掉这个末影珍珠呢

kill all ENDER_PEARL in the player's world

什么的 ,或者用执行命令清楚那个末影珍珠。

既然取消不了事件的话。

极光creeper
本帖最后由 极光creeper 于 2020-1-17 16:11 编辑

这样 触发器用on right click with ender_pearl:
以及不需要stop trigger

我用的4空格,code之后空格的显示有问题,所以我就不用dz代码了
on right click with ender_pearl:
    If world is "emsl":
        send "&f[&3恶魔森林&f]&c警告你! 不要试图侵犯恶魔的领土!"
        cancel event


我1年没碰sk了 可能有误,反正大概如此
ender_pearl 要看你的插件配置能不能读得出,sk里的语句和格式都可以自己改的

TNT8
极光creeper 发表于 2020-1-17 15:59
这样 触发器用on right click with ender_pearl:
以及不需要stop trigger

最新版sk 读取用空格代替_
但是这个功能只能检测到珍珠右键到物品时
而无法阻止丢出末影珍珠。太难了

极光creeper
本帖最后由 极光creeper 于 2020-1-18 11:25 编辑
TNT8 发表于 2020-1-17 23:14
最新版sk 读取用空格代替_
但是这个功能只能检测到珍珠右键到物品时
而无法阻止丢出末影珍珠。太难了 ...

我不知道你有没有放到服里去测试
因为与空气交互也会被判断到的,所以我想我的语句应该是可行的

或者你把触发器改成on rightclick holding ender pearl:

回复评分:
但是我这里是可行的

TNT8
本帖最后由 TNT8 于 2020-1-20 09:30 编辑
极光creeper 发表于 2020-1-18 11:22
我不知道你有没有放到服里去测试
因为与空气交互也会被判断到的,所以我想我的语句应该是可行的

确实是不行,我用的1.14.4spigot核心 最新版sk脚本
这里是测试的视频
######
然后我重新测试了写法,发现问题出在检测世界的过程上
如果我把终止行为加在最前面,就可以终止末影珍珠的行为
  1. on right click holding ender pearl:
  2.         cancel event
  3.         If world is "emsl":
  4.                 cancel event
  5.                 send "&f[&3恶魔森林&f]&c警告你! 不要试图侵犯恶魔的领土!" to player
  6.         else:
  7.                 stop trigger
复制代码
但是检测世界的提示依旧要右键到物体才能被检测到并触发这意味着检测世界的模块往下都是无效的

我换了个思路让检测珍珠跟终止操作更接近,也一样无法阻止珍珠的抛出事件
on right click:
        If world is "emsl":
                If player is holding ender pearl:
                        cancel event
                        send "&f[&3恶魔森林&f]&c警告你! 不要试图侵犯恶魔的领土!" to player
                else:
                        stop trigger
        else:
                stop trigger

我无语了。。
回复评分:
总的来说我还是围绕我所说的 RT,我想检测玩家在指定世界丢出末影珍珠时被取消动作
这个问题来学习的





。—。


可以在本地测试的时候把日志类型调到debug,取消事件和右键检测应该没问题,同时也可以参考开源的领地插件之类的,看看别人有没有专门针对这类问题弄了特殊手段,如果没有找到那就可能根本没这个必要。顺带试了一下直接world不加所有者,有时候会获取到none世界 https://c-t.work/s/925b580491fd4e

TNT8
。—。 发表于 2020-1-20 11:32
可以在本地测试的时候把日志类型调到debug,取消事件和右键检测应该没问题,同时也可以参考开源的领地插 ...

牛逼了! 原来还是我的写法问题!
这样就成了,最佳给你。
  1. on right click with ender pearl:
  2.         If player's world is "emsl":
  3.                 cancel event
  4.                 send "&f[&3恶魔森林&f]&c警告你! 不要试图侵犯恶魔的领土!" to player
  5.         else:
  6.                 stop trigger
复制代码