北大侠客行MUD论坛

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

[Mushclient]miniwindow的問題

[复制链接]
发表于 2013-7-21 06:31:19 | 显示全部楼层 |阅读模式
大家好小弟最近剛接觸lua和mush
在mush的官網,有一個是簡單的miniwindow
將身上的物品inventory 掛成一個miniwindow

因為金庸類型mud的maze,可以看到mazemap
圖片

像這張圖一樣

花了很久的時間,發現為什麼miniwindow的顯示有問題
在原始alias裡有一行是local line, wildcards, styles = wait.match ("*")
才發現一直抓不到mazemap的─
導致格式都錯誤


想請問高手,該如何修改這一行呢?


這個簡單的alias
只要修改三個地方就可以簡單顯示你要固定顯示的miniwindow
1.  Send "inventory"
2.local x = wait.match ("You are carrying:", 10)
3.if not string.match (line, "^     ") then
看不懂的,我再說明,只希望有高手可以幫忙我,感恩

北大侠客行MUD,中国最好的MUD

本帖子中包含更多资源

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

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-7-21 14:12:45 | 显示全部楼层
本帖最后由 hijacker 于 2013-7-21 02:18 PM 编辑

-- wait.match: we call this to wait for a trigger (not a regexp)
不知道是不是这个原因,要不要把wait.match换成wait.regexp试试?说真的,几乎无法搞懂楼主的表述。。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-7-21 15:02:38 | 显示全部楼层
看了你的截图,mazemap 的显示中不仅仅有制表符,还有颜色控制符,

这些颜色控制符如果不进行特殊处理,在miniwindow中无法正确显示。

所以应该并不是抓取的问题,而是颜色控制字符如何处理的问题。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2013-7-21 21:57:30 | 显示全部楼层
官網原始link
http://www.mushclient.com/forum/bbshowpost.php?id=9965&page=1
抱歉,忘了貼上來


  1.   
  2.    match="inv"
  3.    enabled="y"
  4.    send_to="12"
  5.    sequence="100"
  6.   >
  7.   

  8. require "wait"

  9. wait.make (function ()  -- coroutine starts here


  10. local win = GetPluginID () .. ":inventory"
  11. local font = "f"

  12. if not WindowInfo (win, 1) then
  13.   WindowCreate (win, 0, 0, 0, 0, 6, 0, 0)
  14.   WindowFont (win, font, "Lucida Console", 9)  
  15. end -- if

  16. -- request inventory

  17. Send "inventory"


  18. -- wait for inventory to start

  19. local x = wait.match ("You are carrying:", 10)

  20. if not x then
  21.   ColourNote ("white", "blue", "No inventory received within 10 seconds")
  22.   return
  23. end -- if

  24. local inv = {}
  25. local max_width = WindowTextWidth (win, font, "Inventory")

  26. -- loop until end of inventory

  27. while true do
  28.   local line, wildcards, styles = wait.match ("*")

  29.   -- see if end of inventory

  30.   if not string.match (line, "^     ") then
  31.     break
  32.   end -- if

  33.   -- save inventory line
  34.   table.insert (inv, styles)
  35.   -- work out max width
  36.   max_width = math.max (max_width, WindowTextWidth (win, font, line))

  37. end -- while loop

  38. local font_height = WindowFontInfo (win, font, 1)

  39. local window_width = max_width + 10
  40. local window_height = font_height * (#inv + 2) + 10

  41. -- make window correct size

  42. WindowCreate (win, 0, 0, window_width, window_height, 6, 0, ColourNameToRGB "#373737")
  43. WindowRectOp (win, 5, 0, 0, 0, 0, 5, 15 + 0x1000)

  44. -- heading line

  45. WindowText (win, font, "Inventory", 5, 5, 0, 0, ColourNameToRGB  "yellow")

  46. -- draw each inventory line

  47. local y = font_height * 2 + 5

  48. for i, styles in ipairs (inv) do

  49.   local x = 5
  50.   for _, style in ipairs (styles) do
  51.     x = x + WindowText (win, font, style.text, x, y, 0, 0, style.textcolour)
  52.   end -- for
  53.   y = y + font_height

  54. end -- for each inventory item

  55. WindowShow (win, true)


  56. end)   -- end of coroutine


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

本版积分规则

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

GMT+8, 2024-11-28 01:14 PM , Processed in 0.012350 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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