北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 19|回复: 0

北大侠客行Vscode版-js机器人示例讲解-自动记录倒计时

[复制链接]
发表于 昨天 10:16 PM | 显示全部楼层 |阅读模式
执行 jq 的时候自动把倒计时的任务和任务的时间加到主界面的右下角
通过 action 把任务名称和倒计时的中文名称获取到,然后调用一个函数把中文的时间改成数字秒,最后设置4个倒计时计算器的第一个


        let self = this;
        api.action(/│主\s+([\u4e00-\u9fa5+).+?│仍需([\u4e00-\u9fa5+)才能接到下个任务/, function (arg) {
            api.echo(arg[1] + ' ' + arg[2] + ' ' + self.chineseToSeconds(arg[2]))
            api.timer(1, arg[1], self.chineseToSeconds(arg[2]), true, 'ss')
        })

  1. parseChineseNumber: function (str) {
  2.         const digits = { "零": 0, "一": 1, "二": 2, "三": 3, "四": 4, "五": 5, "六": 6, "七": 7, "八": 8, "九": 9 };
  3.         let result = 0;
  4.         let temp = 0;
  5.    
  6.         if (str.includes("十")) {
  7.             const parts = str.split("十");
  8.             const tens = parts[0] === "" ? 1 : digits[parts[0]];
  9.             const ones = parts[1] ? digits[parts[1]] : 0;
  10.             result = tens * 10 + ones;
  11.         } else {
  12.             for (let i = 0; i < str.length; i++) {
  13.                 if (digits[str[i]] !== undefined) {
  14.                     temp = temp * 10 + digits[str[i]];
  15.                 }
  16.             }
  17.             result = temp;
  18.         }
  19.    
  20.         return result;
  21.     },
  22.     chineseToSeconds: function (timeStr) {
  23.         const timeUnits = {
  24.             "秒": 1,
  25.             "分钟": 60,
  26.             "分": 60,
  27.             "小时": 3600,
  28.             "时": 3600
  29.         };
  30.    
  31.         let totalSeconds = 0;
  32.         let buffer = "";
  33.    
  34.         for (let i = 0; i < timeStr.length; i++) {
  35.             let char = timeStr[i];
  36.             let unit = char;
  37.    
  38.             if (i + 1 < timeStr.length) {
  39.                 const twoCharUnit = char + timeStr[i + 1];
  40.                 if (timeUnits[twoCharUnit]) {
  41.                     unit = twoCharUnit;
  42.                     i++;
  43.                 }
  44.             }
  45.    
  46.             if (timeUnits[unit]) {
  47.                 const num = this.parseChineseNumber(buffer);
  48.                 totalSeconds += (num || 1) * timeUnits[unit];
  49.                 buffer = "";
  50.             } else {
  51.                 buffer += char;
  52.             }
  53.         }
  54.    
  55.         if (buffer.length > 0) {
  56.             totalSeconds += this.parseChineseNumber(buffer);
  57.         }
  58.    
  59.         return totalSeconds;
  60.     }
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2025-5-15 11:30 AM , Processed in 0.012878 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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