Mineore
我先说下始末吧:有个插件叫LastLoginAPI,有个变量是%lastloginapi_last_logout_elapsed%,能显示玩家距离上次登出的时间,即离线时间。之后我用另一个插件ConditionalEvents检测变量,当变量为1m 30s(1分30秒)时,执行指令,一切正常,能执行不报错。
但问题是,离线后变量不更新、不计算。试过了offlinepapi的离线变量,但没用,也许是他记录的是不变的值吧。
因此,需要解决的是,如何让玩家离线后,变量继续实时更新,并且还能让ConditionalEvents插件获取到变量的值。


执笔绘君衣
你去搞个自定义变量然后用监听插件去监听玩家是否在线 不在线的 让监听插件给这个自定义变量一秒执行一次+1 或者一分钟执行一次+1

Mineore
执笔绘君衣 发表于 2023-5-12 11:09
你去搞个自定义变量然后用监听插件去监听玩家是否在线 不在线的 让监听插件给这个自定义变量一秒执行一次+1 ...

有没有监听插件推荐个?就是可以实现这些操作的插件。

冰砚炽
这个问题我感觉更像是 LastLoginAPI 的功能缺陷,跟作者提一下看看能不能加入。

Mineore
冰砚炽 发表于 2023-5-12 11:18
LastLoginAPI 如果本身就是把玩家离线的时间戳储存的话,实现起来应该很简单。

这个问题我感觉更像是 Last ...

OfflinePlaceHolders插件可以实现,但问题是不支持1.18版本QAQ

冰砚炽
Mineore 发表于 2023-5-12 11:25
OfflinePlaceHolders插件可以实现,但问题是不支持1.18版本QAQ

我从网上搜索到的帖子貌似写了支持 1.18.

这种跟游戏本身关系不大的插件应该可以版本通用吧

Mineore
冰砚炽 发表于 2023-5-12 11:38
我从网上搜索到的帖子貌似写了支持 1.18.

这种跟游戏本身关系不大的插件应该可以版本通用吧 ...

用计分板显示的时候并不能正常显示,输入/papi parse me %offlineplaceholder_last_login%也不行,后台papi报错
[11:42:05] [信息]: Fande issued server command: /papi parse me %offlineplaceholder_last_login%
[11:42:06] [错误]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'papi' in plugin PlaceholderAPI v2.11.3
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_18_R2.CraftServer.dispatchCommand(CraftServer.java:826) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1957) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1796) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1777) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.network.protocol.game.PacketPlayInChat.a(PacketPlayInChat.java:46) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.network.protocol.game.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:31) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.TickTask.run(SourceFile:18) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.util.thread.IAsyncTaskHandler.d(SourceFile:157) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(SourceFile:23) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1190) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:1) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.util.thread.IAsyncTaskHandler.y(SourceFile:131) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.MinecraftServer.be(MinecraftServer.java:1169) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.MinecraftServer.y(MinecraftServer.java:1162) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.util.thread.IAsyncTaskHandler.bo(SourceFile:116) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1145) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1051) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:304) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.NoSuchMethodError: 'long org.bukkit.OfflinePlayer.getLastSeen()'
        at me.albert.offlineplacehodlers.OfflinePlaceHolder.onRequest(OfflinePlaceHolder.java:98) ~[?:?]
        at me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:119) ~[?:?]
        at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:71) ~[?:?]
        at me.clip.placeholderapi.commands.impl.local.CommandParse.evaluateParseSingular(CommandParse.java:117) ~[?:?]
        at me.clip.placeholderapi.commands.impl.local.CommandParse.evaluate(CommandParse.java:57) ~[?:?]
        at me.clip.placeholderapi.commands.PlaceholderCommandRouter.onCommand(PlaceholderCommandRouter.java:114) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        ... 21 more

冰砚炽
Mineore 发表于 2023-5-12 11:44
用计分板显示的时候并不能正常显示,输入/papi parse me %offlineplaceholder_last_login%也不行,后台pa ...

原来...这些插件都没有存数据库,而是用 Bukkit 自带的 long org.bukkit.OfflinePlayer.getLastSeen()。

这可能是 1.18 的时候更改了接口吧。

那这种插件挺简单的,你可以自己写一个。

Mineore
冰砚炽 发表于 2023-5-12 11:46
原来...这些插件都没有存数据库,而是用 Bukkit 自带的 long org.bukkit.OfflinePlayer.getLastSeen()。
...

有没有一种可能,我完全不会编程QAQ

FireworkPolymer
有没有可能,conditionalevents的repetitive只能在玩家在线时在玩家身上检测
要在服务器方面检测,请使用repetitive_server检测%parseother_{玩家名}_{lastloginapi_last_logout_elapsed}%

Mineore
FireworkPolymer 发表于 2023-5-12 12:14
有没有可能,conditionalevents的repetitive只能在玩家在线时在玩家身上检测
要在服务器方面检测,请使用re ...

不知道哪里出了问题
  重复检测: # 事件ID
    type: repetitive_server #重复检测服务器全部人
    repetitive_time: 20 # 每10刻检测一次20刻=1秒
    conditions: # 条件
      - '%parseother_{Fande}_{lastloginapi_last_logout_elapsed}% == 13m 10s'
而且呀,我想要检测每一位玩家,这个不知道怎么实现

郑炜孙
(我又来了)

重复检测: # 事件ID
    type: repetitive_server #重复检测服务器全部人
    repetitive_time: 20 # 每10刻检测一次20刻=1秒
    conditions: # 条件
      - '%parseother_{Fande}_{lastloginapi_last_logout_elapsed}% == 13m 10s'

看这配置文件,是不支持循环的。所以每个人都检测是做不到的


看你连发了三个帖子的样子你是想实现低代码的 玩家七天为登录清空玩家金币并创建任务(因为没有现成插件)
那我推荐是使用 Vulpecula —— 基于 Kether 的多元拓展系统 - 服务端插件 - Minecraft(我的世界)中文论坛 - (mcbbs.net) 来实现上述的操作
我初步看了语法文档,应该是可以解决你的需求的。这是成本(相对)较低的解决办法。但是仍有难点(如何取消playertask的任务,Vulpecula的入门学习),这和直接学习一门(简易的)编程语言没什么区别,希望做好心理准备。


Mineore
郑炜孙 发表于 2023-5-12 15:52
(我又来了)

看这配置文件,是不支持循环的。所以每个人都检测是做不到的

害,不会代码,学不来QAQ

第一页 上一页 下一页 最后一页