台服dnf吧 关注:123,614贴子:2,049,163

dp插件增加通关时间提示

只看楼主收藏回复

用补丁大合集或者其他内辅跳过翻牌的话会看不到通关时间,可以通过dp插件来增加通关时间的提示,不过副本时长和地图时长的两个函数get不到正确数值(也许是姿势不对),所以改用系统时间差和来计算。该方法计算的通关时间是点击进入副本到击杀boss的实际时间,而游戏系统内的通关时间貌似是不计算加载副本以及过图的短暂加载时间,因此该方法获取的通关时间会比游戏系统计算的大。


IP属地:广东1楼2022-08-21 03:26回复
    ---@type DP
    local dp = _DP
    ---@type DPXGame
    local dpx = _DPX
    local game = require("df.game")
    local logger = require("df.logger")
    local luv = require("luv")
    local world = require("df.game.mgr.world")
    logger.info("opt: %s", dpx.opt())
    -- see dp2/lua/df/doc for document !
    local item_handler = { }
    player_01 = 0
    local function playerlogin(_user)
    player_01 = game.fac.user(_user)
    player_01:SendNotiPacketMessage(string.format("dp插件已开启功能 : [地下城通关时间提示]"))
    end
    dpx.hook(game.HookType.Reach_GameWord, playerlogin)
    local function EndDungeonTime(fnext, type, _party, param)
    if type == game.GameEventType.PARTY_DUNGEON_START then
    Joinmaptime = dp.mstime()
    player_01:SendNotiPacketMessage(string.format("进入地下城······"))
    end
    if type == game.GameEventType.PARTY_DUNGEON_CLEAR then
    local Clearmaptimemms = 0
    local party = game.fac.party(_party)
    local dungeon = party:GetDungeon()
    local dungeonname = dungeon:GetName()
    local Endmaptime = dp.mstime()
    local Clearmaptime = Endmaptime - Joinmaptime
    local Clearmaptimemin = math.modf(Clearmaptime/1000/60)
    local Clearmaptimes = math.modf(Clearmaptime/1000)
    for i = 1,Clearmaptimemin do
    if Clearmaptimes >= 60 then
    Clearmaptimes = Clearmaptimes - 60
    end
    end
    local Clearmaptimemmsf = Clearmaptime/1000
    while Clearmaptimemmsf >= 1 do
    Clearmaptimemmsf = Clearmaptimemmsf -1
    end
    if Clearmaptimemmsf < 1 then
    Clearmaptimemms = math.modf(Clearmaptimemmsf*100)
    end
    logger.info("通关副本: %s,通关时长: %d", dungeonname,Clearmaptime)
    player_01:SendNotiPacketMessage(string.format(" [%s]地下城通关时长 : %d分%d秒%d", dungeonname,Clearmaptimemin,Clearmaptimes,Clearmaptimemms))
    end
    return fnext()
    end
    dpx.hook(game.HookType.GameEvent, EndDungeonTime)


    IP属地:广东3楼2022-08-21 03:27
    回复
      2025-12-25 21:58:51
      广告
      不感兴趣
      开通SVIP免广告
      /s/16删除n6k_PgiO删除xNBHoSbL删除bK6rQ
      3ax8


      IP属地:广东4楼2022-08-21 03:28
      收起回复
        技术贴必赞


        IP属地:江苏来自iPhone客户端5楼2022-08-21 03:58
        回复


          IP属地:广东来自Android客户端6楼2022-08-21 07:25
          回复
            关注点赞。终于看到这个了,大佬能再具体点操作么,写入那个lua就可以是吗?


            IP属地:广东来自Android客户端7楼2022-08-21 07:35
            收起回复


              IP属地:湖南来自Android客户端8楼2022-08-21 08:14
              回复


                IP属地:广东来自Android客户端9楼2022-08-21 10:55
                回复
                  2025-12-25 21:52:51
                  广告
                  不感兴趣
                  开通SVIP免广告
                  Hook客户端不就行了


                  IP属地:辽宁来自Android客户端10楼2022-08-21 12:48
                  收起回复
                    🐮


                    IP属地:河北来自iPhone客户端11楼2022-08-21 13:35
                    回复
                      可以展开讲讲?写进pvf吗


                      来自Android客户端12楼2022-08-21 14:08
                      回复
                        太牛了 虽然我看不懂


                        来自Android客户端13楼2022-08-22 11:25
                        回复
                          发现一个有趣的 虽然有全服公告 但是不显示角色名字或者ID


                          IP属地:黑龙江14楼2022-09-08 11:54
                          收起回复
                            local function playerlogin(_user)
                            player_01 = game.fac.user(_user)
                            player_01_name = game.fac.user(_user):GetCharacName()
                            play_01_id = player_01:GetCharacNo()
                            player_01:SendNotiPacketMessage(string.format("dp插件已开启, 输入//dp查看功能。"))
                            player_01:SendNotiPacketMessage(string.format("欢迎您[%s],角色ID[%d]",player_01_name,play_01_id), 14)
                            end
                            dpx.hook(game.HookType.Reach_GameWord, playerlogin)
                            local function EndDungeonTime(fnext, type, _party, param)
                            if type == game.GameEventType.PARTY_DUNGEON_START then
                            Joinmaptime = dp.mstime()
                            player_01:SendNotiPacketMessage(string.format("进入地下城······"))
                            end
                            if type == game.GameEventType.PARTY_DUNGEON_CLEAR then
                            local Clearmaptimemms = 0
                            local party = game.fac.party(_party)
                            local dungeon = party:GetDungeon()
                            local dungeonname = dungeon:GetName()
                            local Endmaptime = dp.mstime()
                            local Clearmaptime = Endmaptime - Joinmaptime
                            local Clearmaptimemin = math.modf(Clearmaptime/1000/60)
                            local Clearmaptimes = math.modf(Clearmaptime/1000)
                            for i = 1,Clearmaptimemin do
                            if Clearmaptimes >= 60 then
                            Clearmaptimes = Clearmaptimes - 60
                            end
                            end
                            local Clearmaptimemmsf = Clearmaptime/1000
                            while Clearmaptimemmsf >= 1 do
                            Clearmaptimemmsf = Clearmaptimemmsf -1
                            end
                            if Clearmaptimemmsf < 1 then
                            Clearmaptimemms = math.modf(Clearmaptimemmsf*100)
                            end
                            logger.info("通关副本: %s,通关时长: %d", dungeonname,Clearmaptime)
                            player_01:SendNotiPacketMessage(string.format(" [%s]已通关[%s]地下城 : %d分%d秒%d",player_01_name, dungeonname,Clearmaptimemin,Clearmaptimes,Clearmaptimemms), 14)
                            end
                            return fnext()
                            end
                            dpx.hook(game.HookType.GameEvent, EndDungeonTime)


                            IP属地:广东15楼2022-09-09 00:31
                            收起回复
                              2025-12-25 21:46:51
                              广告
                              不感兴趣
                              开通SVIP免广告
                              2.7.6加入这个,服务端会持续报错吗?


                              IP属地:山东16楼2022-10-20 14:53
                              收起回复