楼主: 飞翔熊猫

[有爱科普组] 通过lua来实现类似于暴雪的点卡计时。

[复制链接]

1235

时沙

0

精华

0

主题

声望: 122   虚弱: 0

Lv.4(锻造者)

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)

发表于 2024-10-15 10:13:07 | 显示全部楼层
感谢大佬分享,谢谢!~
回复

使用道具 举报

发表于 2024-10-15 10:13:40 | 显示全部楼层
这个厉害了,感谢分享
回复

使用道具 举报

1049

时沙

35

精华

73

主题

声望: 24159   虚弱: 0

版主

至尊版萌新

灵蛇献瑞(尚美制作)信仰战今天也只能打恢复的增强萨吟游牧师潜行者积少成多炉石雷施划水武僧搓水法爷小咕跑路骑士孝顺骑士登山猎手炉石天马比格沃斯先生希尔瓦娜斯·风行者

 楼主| 发表于 2024-10-15 10:32:03 | 显示全部楼层
很多人反馈需要增加一个游戏里面使用以后增加剩余时间的道具,很简单,以下是lua的具体代码:
  1. -- 配置表:物品ID与增加的游戏时间(以秒为单位)的映射
  2. local ItemTimeConfig = {
  3.     [2454] = 3600,  -- 物品ID 2454 增加 1 小时
  4.     [2455] = 7200,  -- 物品ID 2455 增加 2 小时
  5.     [2456] = 1800,  -- 物品ID 2456 增加 30 分钟
  6.     -- 你可以在这里添加更多的物品ID和对应的时间
  7. }
  8. -- 辅助函数:将秒数转换为“xx天xx小时xx分钟xx秒”格式
  9. local function FormatTime(seconds)
  10.     local days = math.floor(seconds / 86400)
  11.     seconds = seconds % 86400
  12.     local hours = math.floor(seconds / 3600)
  13.     seconds = seconds % 3600
  14.     local minutes = math.floor(seconds / 60)
  15.     seconds = seconds % 60
  16.     local timeString = ""
  17.     if days > 0 then
  18.         timeString = timeString .. days .. "天"
  19.     end
  20.     if hours > 0 then
  21.         timeString = timeString .. hours .. "小时"
  22.     end
  23.     if minutes > 0 then
  24.         timeString = timeString .. minutes .. "分钟"
  25.     end
  26.     timeString = timeString .. seconds .. "秒"
  27.     return timeString
  28. end
  29. -- 玩家使用指定物品的事件处理函数
  30. local function OnItemUse(event, player, item, target)
  31.     local usedItemId = item:GetEntry()
  32.     -- 检查使用的物品是否在配置表中
  33.     if ItemTimeConfig[usedItemId] then
  34.         local additionalTime = ItemTimeConfig[usedItemId]
  35.         local accountId = player:GetAccountId()
  36.         -- 查询数据库,获取玩家的剩余游戏时间
  37.         local result = CharDBQuery("SELECT remainingTime FROM WYtime WHERE id = " .. accountId)
  38.         if result then
  39.             -- 获取当前剩余时间
  40.             local remainingTime = result:GetUInt32(0)
  41.             -- 增加额外时间
  42.             remainingTime = remainingTime + additionalTime
  43.             -- 更新数据库中的剩余时间
  44.             CharDBExecute("UPDATE WYtime SET remainingTime = " .. remainingTime .. " WHERE id = " .. accountId)
  45.             -- 格式化新剩余时间
  46.             local formattedTime = FormatTime(remainingTime)
  47.             -- 向玩家发送消息,通知剩余游戏时间已增加
  48.             player:SendBroadcastMessage("你使用了时间点卡,游戏时间增加了 " .. FormatTime(additionalTime) .. "。你现在有 " .. formattedTime .. " 的游戏时间。")
  49.         else
  50.             -- 如果没有玩家数据,插入初始数据并增加时间
  51.             local currentTime = os.time()
  52.             local initialTime = additionalTime  -- 新增时间作为初始时间
  53.             local accountName = player:GetAccountName()
  54.             CharDBExecute("INSERT INTO WYtime (id, accountName, inTime, remainingTime) VALUES (" .. accountId .. ", '" .. accountName .. "', " .. currentTime .. ", " .. initialTime .. ")")
  55.             -- 格式化初始时间
  56.             local formattedInitialTime = FormatTime(initialTime)
  57.             -- 向玩家发送消息,通知新增的游戏时间
  58.             player:SendBroadcastMessage("你是新玩家,已获得 " .. formattedInitialTime .. " 的初始游戏时间。")
  59.         end
  60.     end
  61. end
  62. -- 注册物品使用事件
  63. for itemId, _ in pairs(ItemTimeConfig) do
  64.     RegisterItemEvent(itemId, 2, OnItemUse)  -- 玩家使用物品事件,参数2表示物品使用时触发
  65. end
复制代码
[lgzt=red,yellow,blue,black,green,red]非常性感[/lgzt]
回复

使用道具 举报

1049

时沙

35

精华

73

主题

声望: 24159   虚弱: 0

版主

至尊版萌新

灵蛇献瑞(尚美制作)信仰战今天也只能打恢复的增强萨吟游牧师潜行者积少成多炉石雷施划水武僧搓水法爷小咕跑路骑士孝顺骑士登山猎手炉石天马比格沃斯先生希尔瓦娜斯·风行者

 楼主| 发表于 2024-10-15 10:33:38 | 显示全部楼层
月干 发表于 2024-10-15 09:44
感谢大佬分享,可以加个道具使用后增加点卡时间

搞定了,看置顶回复
[lgzt=red,yellow,blue,black,green,red]非常性感[/lgzt]
回复

使用道具 举报

1049

时沙

35

精华

73

主题

声望: 24159   虚弱: 0

版主

至尊版萌新

灵蛇献瑞(尚美制作)信仰战今天也只能打恢复的增强萨吟游牧师潜行者积少成多炉石雷施划水武僧搓水法爷小咕跑路骑士孝顺骑士登山猎手炉石天马比格沃斯先生希尔瓦娜斯·风行者

 楼主| 发表于 2024-10-15 10:33:57 | 显示全部楼层
sangkun 发表于 2024-10-15 09:49
同时增加个 生成卡表就好了

搞定了,看置顶回复
[lgzt=red,yellow,blue,black,green,red]非常性感[/lgzt]
回复

使用道具 举报

246

时沙

0

精华

0

主题

声望: 98   虚弱: 0

Lv.2(潜行者)

炉石假死猎人

发表于 2024-10-15 10:37:38 | 显示全部楼层
感谢分享,学习一下
回复

使用道具 举报

152

时沙

0

精华

0

主题

声望: 60   虚弱: 0

Lv.2(潜行者)

发表于 2024-10-15 11:31:35 | 显示全部楼层
学习一下,感谢大神
回复

使用道具 举报

561

时沙

0

精华

7

主题

声望: 1264   虚弱: 0

Lv.4(锻造者)

小菜鸡学知识

灵蛇献瑞(尚美制作)炉石

发表于 2024-10-15 11:37:04 | 显示全部楼层
飞翔熊猫 发表于 2024-10-15 10:33
搞定了,看置顶回复

首先感谢 大佬的 效率和付出

我不懂LUA 但是应该这是已经两个独立的LUA了吧 会不会加重服务器读写我也不懂 支持猜测

是不是 整合成一个LUA 更完美  只是问问  不要介意 感谢付出
回复

使用道具 举报

发表于 2024-10-15 11:49:42 | 显示全部楼层
“当玩家登录时,如果他们的剩余时间不足,就会被踢下线;”
是不是倒计时?不然没点卡了,使用点卡物品的机会都没有!
回复

使用道具 举报

1365

时沙

0

精华

11

主题

声望: 2695   虚弱: 0

Lv.5(无冕者)

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)金兔迎春(尚美制作)炉石假死猎人今天也只能打恢复的增强萨潜行者

发表于 2024-10-15 12:08:33 | 显示全部楼层
谢谢分享
[发帖际遇]: gaiyin为牛头人酋长贝恩捉虱,获得小费66 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

快速回复 返回顶部 返回列表