北大侠客行MUD论坛

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

[關於mushclient]匹配模式

[复制链接]
发表于 2013-7-28 21:24:20 | 显示全部楼层 |阅读模式
  1. getitem=function(s)
  2.         function isin(s,t)
  3.                 for i, v in ipairs(t) do
  4.                         if(v==s)then
  5.                                 return true
  6.                         end -- if
  7.                 end -- for
  8.     end -- isin
  9.         local item_table = {"補天石","冰蠶絲","玄冰寒鐵","龍血","金塊","烏金絲","青龍彩晶","名號:.*","武曲","文曲","晶砂","(.*)骷髏\頭",".*寶石.*","丹","符文","天隕","冰柱","寒鋼","丸"} --骷髏頭有吃字
  10.         if isin (s,item_table) then
  11.                 Execute("get "..s.."")
  12.         end -- if
  13. end -- getitem
复制代码

以上是用來觸發掉落物品的

mud訊息如下:
物品中文                 = 物品英文

觸發
^(\S+)\s+\=.*$


我的問題是可以正確抓到%1
也可以比對到item_table裡,但是因為有些item的中文名字會有變動
譬如會有
名號:XXXX   名號:yyyy之類的


我以為是要改成"名號(%S+)"
但是比對不出來,想請問高手
謝謝大家
小弟初學mushclient和lua

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-7-28 23:08:12 | 显示全部楼层
自問自答第一次的v==s只是找一不一樣
有人幫我提示用string.find
string.find就直接找到部份相同就可以了

  1. getitem=function(s)
  2.         function isin(s,t)
  3.                 for i, v in ipairs(t) do
  4.                         if string.find(s,v)then
  5.                            return true
  6.                         end -- if
  7.                 end -- for
  8.     end -- isin
  9.         local item_table = {"補天石","冰蠶絲","玄冰寒鐵","龍血","金塊","烏金絲","青龍彩晶","名號","武曲","文曲","晶砂","骷髏\頭","寶石","丹","符文","天隕","冰柱","寒鋼","丸"}
  10.         if isin (s,item_table) then
  11.            Execute("get "..s.."")
  12.         end -- if
  13. end -- getitem
复制代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 06:58 AM , Processed in 0.010009 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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