游戏风暴

主站(中国)
网站地图
RSS订阅
高级搜索
收藏本站
诛仙机战 征途魔域问道劲舞团魔兽世界热血江湖 天龙八部武林外传跑跑卡丁车梦幻西游卓越之剑游戏下载论坛 博客
热门关键字: 诛仙  魔兽世界 攻略  魔兽世界  攻略  魔兽世界+攻略
 
您的位置:游戏风暴>魔兽世界>经验心得> 正文

魔兽游戏中最方便的搜索物品宏(支持TBC)

发布时间:2008-03-09 作者:娱乐综艺 来源:
编者按:本文的要讲述的话题是魔兽游戏中最方便的搜索物品宏(支持TBC),从属于栏目经验心得-魔兽世界-游戏风暴。如果你感兴趣,请继续阅读;否则可以选择右边推荐的其他文章。编者祝您健康!

魔兽游戏中最方便的搜索物品宏(支持TBC)



初始化搜索数据的宏
/run i_m={};i_m.id={};i_m.nm={};t_i=0;for i=1,50000 do local nm=GetItemInfo(i);if (nm) then t_i=t_i+1;i_m.id[t_i]=i;i_m.nm[t_i]=nm;end end


用来显示物品链接的宏
/run function SI_M(s) local _,lnk=GetItemInfo("item:"..s);if (lnk) then local o=s..": "..lnk;DEFAULT_CHAT_FRAME:AddMessage(o);return 1;end return 0;end


用来搜索物品的宏
/run function FI_M(str) local sum=0;for i=1,t_i do if (string.find(i_m.nm[i],str)) then sum=sum+SI_M(i_m.id[i]..":0:0:0:0:0:0:0");end end DEFAULT_CHAT_FRAME:AddMessage("搜索''"..str.."'', 共查到"..sum.."件物品");end


以上三个宏在进入游戏后按顺序执行过一遍就可以用下面的宏命令搜索物品。


/run FI_M("复仇角斗士的皮甲");
/run FI_M("骑乘虚空鳐");
/run FI_M("战斗大师");


下面对以上三条宏分别解释一下功能


第一条宏
/run i_m={}; --初始化全局变量i_m设置为空数组;
i_m.id={}; --初始化全局变量i_m的id值设置为空数组,用来存放魔兽世界所有物品的ID值;
i_m.nm={}; --初始化全局变量i_m的nm值设置为空数组,用来存放魔兽世界所有物品的名称;
t_i=0; --初始化全局变量t_i值为0,用来存放魔兽世界所有物品的总数;
for i=1,50000 do --循环50000次,
local nm=GetItemInfo(i); --用API函数GetItemInfo从魔兽世界客户端物品数据库缓存中取得物品名,保存到nm中;
if (nm) then --如果物品ID为i的物品存在,
t_i=t_i+1; --物品的总数增加1;
i_m.id[t_i]=i; --i_m.id数组保存物品的ID值为i;
i_m.nm[t_i]=nm; --i_m.nm数组保存物品的名称为nm;
end --if语句结束
end --for循环结束。


第二条宏
/run function SI_M(s) --定义函数SI_M(ShowItem_Macro),用作显示物品链接的功能,参数是物品链接相关的8个数值组成的字符串,格式为"x:x:x:x:x:x:x:x"
local _,lnk=GetItemInfo("item:"..s); --为_,lnk分别赋值为API函数GetItemInfo返回的前两个值,分别是物品的名称和物品链接;
if (lnk) then --如果物品链接存在,
local o=s..": "..lnk; --组合物品链接,s..": "只是物品链接之前显示的物品ID值,冒号后面才是物品链接lnk;
DEFAULT_CHAT_FRAME:AddMessage(o); --在默认的聊天框中显示刚才组合的字符串,格式为“物品ID : 物品链接”;
return 1; --返回一个数值1,外部调用此函数的时候,查找到的链接数累加1;
end --if语句结束
return 0; --返回一个数值0,外部调用此函数的时候,查找的链接数累加0;
end --函数定义结束。


第三条宏
/run function FI_M(str) --定义函数FI_M(FindItem_Macro),用作搜索物品的功能,参数是查询物品链接所用的字符串
local sum=0; --初始化变量sum用来保存搜索到的物品个数;
for i=1,t_i do --循环t_i次,循环的次数根据第一条宏执行后统计的总数而定
if (string.find(i_m.nm[i],str)) then --如果找到一个符合查询要求str的物品i_m.nm[i]
sum=sum+SI_M(i_m.id[i]..":0:0:0:0:0:0:0"); --调用由SI_M函数显示一条合成的物品链接字符串,返回的值累加到sum中;
end --if语句结束
end --for循环结束
DEFAULT_CHAT_FRAME:AddMessage("搜索''"..str.."'', 共查到"..sum.."件物品"); --在默认的聊天框中显示搜索结果;
end --函数定义结束。


下面说明一下查询字符串的用法


基本命令格式:
/run FI_M("复仇角斗士的皮甲");
/run FI_M("骑乘虚空鳐");
/run FI_M("战斗大师");


使用这个命令
/run FI_M("复仇角斗士");
可以查询出以下结果:
------------------------------------------------------
33700:0:0:0:0:0:0:0 : [复仇角斗士的皮甲手套]
33701:0:0:0:0:0:0:0 : [复仇角斗士的皮甲头盔]
33702:0:0:0:0:0:0:0 : [复仇角斗士的皮甲护腿]
33703:0:0:0:0:0:0:0 : [复仇角斗士的皮甲护肩]
33704:0:0:0:0:0:0:0 : [复仇角斗士的皮甲外套]
搜索''复仇角斗士的皮甲'', 共查到5件物品
------------------------------------------------------


使用这个命令
/run FI_M("骑乘虚空鳐");
可以查询出以下结果:
------------------------------------------------------
32314:0:0:0:0:0:0:0 : [绿色骑乘虚空鳐]
32316:0:0:0:0:0:0:0 : [紫色骑乘虚空鳐]
32317:0:0:0:0:0:0:0 : [红色骑乘虚空鳐]
32318:0:0:0:0:0:0:0 : [银色骑乘虚空鳐]
32319:0:0:0:0:0:0:0 : [蓝色骑乘虚空鳐]
搜索''骑乘虚空鳐'', 共查到5件物品
------------------------------------------------------


使用这个命令
/run FI_M("战斗大师");
可以查询出以下结果:
------------------------------------------------------
34576:0:0:0:0:0:0:0 : [战斗大师的残暴]
34577:0:0:0:0:0:0:0 : [战斗大师的堕落]
34578:0:0:0:0:0:0:0 : [战斗大师的决心]
34579:0:0:0:0:0:0:0 : [战斗大师的勇猛]
34580:0:0:0:0:0:0:0 : [战斗大师的坚定]
搜索''战斗大师'', 共查到5件物品
------------------------------------------------------


还可以使用这样的字符串搜索:
/run FI_M("图鉴:(.+)水玉");
可以查询出以下结果:
------------------------------------------------------
24217:0:0:0:0:0:0:0 : [图鉴:坚硬水玉]
24218:0:0:0:0:0:0:0 : [图鉴:辐光水玉]
24219:0:0:0:0:0:0:0 : [图鉴:眩光水玉]
24220:0:0:0:0:0:0:0 : [图鉴:裂纹水玉]
33783:0:0:0:0:0:0:0 : [图鉴:稳固水玉]
搜索''图鉴:(.+)水玉'', 共查到5件物品
------------------------------------------------------


如果换成
/run FI_M("图鉴:(.-)水玉");
可以查询出以下结果:
------------------------------------------------------
24182:0:0:0:0:0:0:0 : [图鉴:水玉猫头鹰]
24217:0:0:0:0:0:0:0 : [图鉴:坚硬水玉]
24218:0:0:0:0:0:0:0 : [图鉴:辐光水玉]
24219:0:0:0:0:0:0:0 : [图鉴:眩光水玉]
24220:0:0:0:0:0:0:0 : [图鉴:裂纹水玉]
33783:0:0:0:0:0:0:0 : [图鉴:稳固水玉]
搜索''图鉴:(.-)水玉'', 共查到6件物品
------------------------------------------------------


(.+)可以代替一个或多个字符。如果想代替零个或多个字符请用(.-)


由于这个搜索功能是使用的Lua编程语言的string类的find函数功能,所以可以使用模式字符串。


下面的表列出了Lua支持的所有字符类:
. 任意字符
%a 字母
%c 控制字符
%d 数字
%l 小写字母
%p 标点字符
%s 空白符
%u 大写字母
%w 字母和数字
%x 十六进制数字
%z 代表0的字符


Lua中的模式修饰符有四个:
+ 匹配前一字符1次或多次
* 匹配前一字符0次或多次
- 匹配前一字符0次或多次
? 匹配前一字符0次或1次


其实以上列出的Lua模式字符串在本搜索中很少能用到,能用的也只有(.+)和(.-),所以可以不必担心必须了解Lua语言。


使用这个命令的前提是 被搜索的物品必须是客户端缓存数据库中已存在的物品,换句话说就是你在使用这台电脑时曾经见过的物品。由于燃烧的远征2.0版本的更新,以前缓存的物品已经全部不存在了,所以查出的物品都是你在2.0版本之后出现过的物品。当然随着你经常见到新的物品,你电脑里缓存的物品数据越来越多,能查到的东西也越来越多,那么,使用这套宏就像是在使用一个高效率的物品查看器,想发什么物品的链接就能发。



↑ 上一篇:虚空龙声望的飞行任务小窍门
下一篇:  ↓

相关文章

2008-03-09 虚空龙声望的飞行任务小窍门
1970-01-01
2008-03-09 英雄能源储藏室箱子开2个公正牌子的方法
2008-03-09 海加尔山任务链及钥匙
2008-03-09 大家可能会忽视的问题
2008-03-09 江湖(魔法冷兵器之魔兽世界)采集通则
2008-03-09 2.33ZAM山猫最新跳墙BUG
2008-03-09 畅想80级终级天赋,战士太逆天
2008-03-09 提高操作水平
2008-02-07 2.4版补丁天赋说明

本类热门 Hot

2007-08-02 盗贼TBC的升级建议
2007-08-02 资料片开服赚钱大法!!
2007-08-02 魔兽世界十大经典声音
2007-08-02 风暴前夕荣誉值最快获得方法(BL版)
2007-08-02 我的战场守则
2007-08-02 部落大战场分离boss方法
2007-08-02 战场荣誉讨论
2007-08-02 荣誉飙升之终极绝招
2007-08-02 2.0的10个小变化 没发现的要速去实验啦!
2007-08-02 玩魔兽TBC的心得
2007-08-02 节约成本,面向TBC
2007-08-02 ALX中的运动战、双运动战、三点联防
2007-08-02 用野队战胜团队,战场指挥必读。
2007-08-02 竞技场2V2冲龙指南~更新完毕~偏长:p
2007-08-02 奥山战场荣誉刷法完全手册(《风暴前夕》完
2007-08-02 关于战歌的一个假想
2007-08-02 奥山战场节日开始 附奥山荣誉点数获得详解
2007-08-02 TBC高端副本职业定位

图片新闻 Commend

黑暗神殿最终BOSS伊利丹·怒风攻略 -经验心得
黑暗神殿最终BOSS伊利丹·
战胜逐日者只需要做到以下几点-风暴要塞凯尔萨斯王子 -经验心得
战胜逐日者只需要做到以下
蹲守马戏团 -经验心得
蹲守马戏团
捉拿钳子先生攻略完全版 -经验心得
捉拿钳子先生攻略完全版
奥山其实部落也可以这样偷偷摸到雷矛急救! -经验心得
奥山其实部落也可以这样偷
卡拉赞 -经验心得
卡拉赞
2345 Rating 5v5 Team 法师竞技场杂谈 -经验心得
2345 Rating 5v5 Team 法
高阶占星师索拉里安攻略简介 -经验心得
高阶占星师索拉里安攻略简
gamewind.net.cn游戏风暴