游戏首页 网络游戏 电视游戏 单机游戏 在线小游戏 动漫地带 新闻 下载 图库 视频 专题 电子杂志 投稿 帮助 论坛
 奇迹世界 | 激战 | RF| 魔兽世界 | 泡泡堂 | 三国无双BB | 跑跑卡丁车 | 三国志11 | 极品飞车10 | PS3 | Wii | PSP | 东京电玩展
 三国无双4 | MM换装 | 圣诞 | 赛车小游戏 | 仙剑奇侠传4 | 最终幻想12 | 动漫资料库 | 游戏大杂烩 | 女性向 | 火影 | 网球王子
 
 
资料片新副本
地狱火堡垒
地狱火城墙 鲜血熔炉
破碎大厅 玛瑟里顿的巢穴
时光之穴
旧希尔斯布莱德 黑暗沼泽
海加尔山  
奥金顿
法力陵墓
塞泰克大厅 暗影迷宫
盘牙湖泊
奴隶围栏 幽暗沼泽
蒸汽地窖 毒蛇神殿
风暴要塞
能量舰 生态船
禁魔监狱 风暴之眼
卡拉赞 祖阿曼
卡拉赞攻略 祖阿曼攻略
格鲁尔的巢穴 黑暗神庙
格鲁尔巢穴攻略 黑暗神庙攻略
太阳井之岛
魔导师平台 太阳井高地
专业/辅助技能研究
珠宝加工 工程学
附魔

锻造

采矿 草药学
剥皮 制皮
裁缝 炼金术
烹饪 急救
钓鱼  
坐骑介绍
德莱尼坐骑 血精灵坐骑
特殊坐骑 职业特殊坐骑
飞行坐骑 兽人坐骑
矮人坐骑 亡灵坐骑
暗夜精灵坐骑 巨魔坐骑
侏儒坐骑 牛头人坐骑
人类坐骑  
您现在的位置:首页 >> 魔兽中最方便的搜索物品宏
 
魔兽中最方便的搜索物品宏
2008-03-04 16:54:25  21CN博客  stuart17173
搜索更多 魔兽 的资讯

  初始化搜索数据的宏
  /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版本之后出现过的物品。当然随着你经常见到新的物品,你电脑里缓存的物品数据越来越多,能查到的东西也越来越多,那么,使用这套宏就像是在使用一个高效率的物品查看器,想发什么物品的链接就能发。

 
相关新闻 21CN新闻快速订阅
- 探索你所不知道的魔兽世界  2008-03-04 16:13:36
- 魔兽的记忆不会腐坏  2008-03-04 16:09:20
- 魔兽玩家众生相  2008-03-04 15:03:15
- 魔兽世界猎人珠宝总汇  2008-03-04 14:45:44
- 魔兽世界自杀完全手册  2008-03-04 14:18:09
- 魔兽MT战士全面教程  2008-03-04 12:12:56
下一篇:大脚请从官方网站上下载
 
 

经营许可证编号:粤ICP证010001 不良信息举报电话:020-38733114

世纪龙信息网络有限责任公司版权所有 服务声明