兰苑伊城
以我服务器SX插件为例,如果我要给某位玩家一个物品需要输入以下代码
  1. /sx give 物品 %player% 1
复制代码

在Skript脚本里我是这样写的
  1. set {_奖励物品} to yaml value "任务.奖励" from "新任务"

  2. execute console command "%{_奖励物品}%"
复制代码


在YAML文件里写的内容为
  1. 任务:
  2.     奖励: /sx give 物品 %player% 1
复制代码


这样后台就不能识别%player%为触发这条的玩家了, 怎么才能解决?






零点星辰
本帖最后由 新科 于 2021-2-25 00:00 编辑

如果我没理解错你的意思的话, 假设 {player} 变量是玩家ID
  1. replace all "\%player\%" with {player} in {_奖励物品}
复制代码
使用文本替换 %player% 也可达到原生 %player% 效果

兰苑伊城
新科 发表于 2021-2-24 23:58
如果我没理解错你的意思的话, 假设 {player} 变量是玩家ID
使用文本替换 %player% 也可达到原生 %player%  ...

player 是玩家ID , 我是想用skript 执行我写在 YAML里的指令

比如我在skript里写execute console command "/give %player% dirt 1" 触发这条脚本的玩家就能得到一个泥土

但是我把这条指令写在YAML里, 并把变量值设置为这条指令, 就不灵了
set {变量}  to yaml value "文件.指令" from "文件"
execute console command "{变量}"

这样就不行了

零点星辰
兰苑伊城 发表于 2021-2-25 00:05
player 是玩家ID , 我是想用skript 执行我写在 YAML里的指令

比如我在skript里写execute console comman ...

那么就试试我上面的方法,手动将变量中的 %player% 替换成玩家ID。
因为通过 set {..} to yaml value 得到的实际上是一个 yaml value 对象,而不是一个字符串,所以无法解析。
你也可以在 yml 里把命令用双引号包住试一下,这样可能会被强制解析为 string:
  1. 任务:
  2.     奖励: "/sx give 物品 %player% 1"
复制代码

兰苑伊城
新科 发表于 2021-2-25 00:13
那么就试试我上面的方法,手动将变量中的 %player% 替换成玩家ID。
因为通过 set {..} to yaml value 得 ...

搞定了 这样写的 可能我的版本比较低
  1. replace all "%%player%%" with "%player%" in {_指令}
复制代码