北大侠客行MUD论坛

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

求助,关于mudlet的使用

[复制链接]
发表于 2024-4-20 00:33:46 | 显示全部楼层 |阅读模式
如何获得比较原始的当前行的ansi或相关信息?

mush有getstyleinfo,当作插件可以获取到原始的包或想对原始的包信息。

mudlet我爬了一圈wiki,只有得到如下信息
  • 一个全局的line变量,纯文本
  • GetTextFormat函数,以光标位置为单位的样式获取
  • isAnsiFgColor/isAnsiFgColor 判断当前位置的
  • sendSocket,一个可以发送原始数据的方法


都是以光标/显示行的位置为单位的函数,没有以样式为单位过去信息的方法。

由于我会需要
  • 将样式信息标准化甚至格式化为字符串形式
  • 自己维护若干行的相应信息
  • 以样式为单位进行触发


没有在mudlet找到相关的信息,希望有谁能给我个方向。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 00:40:41 | 显示全部楼层
mudlet 目前只能通过移动光标至过去的某行,再用类似GetTextFormat函数来获取过去信息,但我一直觉得GetTextFormat在最后一个字符的获取上有问题。可能是我用的不对
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 00:54:52 | 显示全部楼层
根据资深人士的反馈,mudlet 没有这个功能。

杰哥可以开骂了。

这方面做得最好的目前是 PaoTin++,就连 TinTin++ 都不如 PaoTin++
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 01:01:33 | 显示全部楼层
我也有类似需求,写了个函数获取一行或几行间字符的属性,代码如下:
function get_color_string(from_line, to_line)
  TOOL.colors = {}
  local line,len,char,fmt,key

  for i=from_line,to_line do
    moveCursor(1, i)
    line = getCurrentLine()
    len = utf8.len(line)

    -- 不知道为什么,最后一个字的fmt取不出来,需要在最后插入一个字符
    moveCursor(len, i)
    insertText(" ")

    for j=0,len-1 do
      selectSection(j, 1)
      char = getSelection()
      fmt = getTextFormat()
      if fmt then
        key = string.format("%d-%d-%d-%d-%d-%d",
          fmt.foreground[1],fmt.foreground[2],fmt.foreground[3],
          fmt.background[1],fmt.background[2],fmt.background[3])
        table.insert(TOOL.colors, {key, char})
      end
    end

    -- 插入一个换行标记
    table.insert(TOOL.colors, {"255-255-255-255-255-255", "\n"})
  end

  return TOOL.colors
end
其中函数参数from_line, to_line是行数,可以在触发器中用getLineNumber()获取,返回构造的字符和属性的列表。

例如这行:

返回:
{ { "0-255-255-0-0-0", "【" }, { "0-255-255-0-0-0", "闲" }, { "0-255-255-0-0-0", "聊" }, { "0-255-255-0-0-0", "】" }, {
"255-255-255-128-128-0", "☆" }, { "255-255-255-128-128-0", "句" }, { "255-255-255-128-128-0", "比" }, { "255-255-255-128-
128-0", "字" }, { "255-255-255-128-128-0", "栉" }, { "255-255-255-128-128-0", "☆" }, { "192-192-192-0-0-0", " " }, { "180-
0-0-0-0-0", "欧" }, { "180-0-0-0-0-0", "阳" }, { "180-0-0-0-0-0", "摇" }, { "0-255-0-0-0-0", "(" }, { "0-255-0-0-0-0", "Y"
}, { "0-255-0-0-0-0", "a" }, { "0-255-0-0-0-0", "o" }, { "0-255-0-0-0-0", "o" }, { "0-255-0-0-0-0", "u" }, { "0-255-0-0-
0-0", ")" }, { "0-255-255-0-0-0", ":" }, { "0-255-255-0-0-0", " " }, { "0-255-255-0-0-0", "估" }, { "0-255-255-0-0-0",
"计" }, { "0-255-255-0-0-0", "至" }, { "0-255-255-0-0-0", "少" }, { "0-255-255-0-0-0", "1" }, { "0-255-255-0-0-0", "0" },
{ "0-255-255-0-0-0", "0" }, { "0-255-255-0-0-0", "天" }, { "0-255-255-0-0-0", "," }, { "0-255-255-0-0-0", "很" }, { "0-
255-255-0-0-0", "可" }, { "0-255-255-0-0-0", "能" }, { "0-255-255-0-0-0", "得" }, { "0-255-255-0-0-0", "1" }, { "0-255-255-
0-0-0", "年" }, { "192-192-192-0-0-0", " " }, { "192-192-192-0-0-0", " " }, { "255-255-255-0-128-0", "◆" }, { "255-255-
255-0-128-0", "主" }, { "255-255-255-0-128-0", "站" }, { "255-255-255-0-128-0", "◆" }, { "255-255-255-255-255-255", "\n"
} }

有了这个函数,就可以在任务中获取各种颜色特别的显示,比如公孙止、韩员外等就是统计颜色种类最少的字符。

点评

dtp
真是辛苦你们了。够难为的。  发表于 2024-4-20 01:03 AM
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 01:02:57 | 显示全部楼层
炮爷有打广告的嫌疑,嘿嘿。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 01:03:19 | 显示全部楼层
真是辛苦你们了。够难为的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 01:03:49 | 显示全部楼层
holygb 发表于 2024-4-20 01:01 AM
我也有类似需求,写了个函数获取一行或几行间字符的属性,代码如下:
function get_color_string(from_line ...

中间的贴图怎么不见了?只能贴个文字
【闲聊】☆句比字栉☆ 欧阳摇(Yaoou): 估计至少100天,很可能得1年  ◆主站◆
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 01:04:33 | 显示全部楼层
nny 发表于 2024-4-20 01:02 AM
炮爷有打广告的嫌疑,嘿嘿。

倒也不全对,杰哥说了,要支持 PaoTin++ 的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 01:17:40 | 显示全部楼层
https://forums.mudlet.org/viewtopic.php?t=5979
我能找到的最官方的解释。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-4-20 01:18:37 | 显示全部楼层
holygb 发表于 2024-4-20 01:03 AM
中间的贴图怎么不见了?只能贴个文字
【闲聊】☆句比字栉☆ 欧阳摇(Yaoou): 估计至少100天,很可能得1年  ...

哈哈,你这个例子举得好,竟然是我的闲聊
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-1 10:29 AM , Processed in 0.010482 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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