您好,欢迎来到气泡游戏网!

气泡游戏网
手机应用中心 热门攻略 轩辕传奇 气泡问问 疾风之刃 枪神纪 天堂2M 救世者之树 上古世纪 黑色沙漠MOBILE 未来战 冒险岛M(楓之谷 M) 传说对决 瓦尔海姆 鬼谷八荒 怪物猎人系列

当前位置:首页 > 攻略库 > 魔兽世界 > 正文

《魔兽世界(WOW)台服》【问题】宏/巨集一问 买东西的BUG

更新时间:1283710059   |   来源:巴哈姆特

zephik (zephki) #1 2010-09-06 02:07:39
/script m={"致伤毒药 VII"}n={20}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do if GetMerchantItemInfo(j):find(m[i])then for k=1,ceil(t/20) do BuyMerchantItem(j,floor(t/20)~=0 and 20 or t)t=t-20;end break;end end end end   

这个是在精华区看到的

现在说一下 出现的BUG
如果吧致伤毒药 VII 改成其他东西  
例如 :符文布
如果NPC又卖 次序是1.符文布卷,2.符文布 他会先买符文布卷

即是只要M={"A"}  NPC 卖的东西 名字有"AB"跟 "A" 巨集会帮你买"AB"
有方法A的名字完全等于A才去买吗 ?????????


请问有高手可以帮帮我

小裕: 09-06 10:54

好奇问....为何要用巨集买??

trustnone (坐亡者) #2 2010-09-06 18:33:13
※ 引述《zephik (zephki)》之铭言
> /script m={"致伤毒药 VII"}n={20}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do if GetMerchantItemInfo(j):find(m[i])then for k=1,ceil(t/20) do BuyMerchantItem(j,floor(t/20)~=0 and 20 or t)t=t-20;end break;end end end end
> 这个是在精华区看到的
> 现在说一下 出现的BUG
> 如果吧致伤毒药 VII 改成其他东西
> 例如 :符文布
> 如果NPC又卖 次序是1.符文布卷,2.符文布 他会先买符文布卷
>
> 即是只要M={"A"}  NPC 卖的东西 名字有"AB"跟 "A" 巨集会帮你买"AB"
> 有方法A的名字完全等于A才去买吗 ?????????
>
> 请问有高手可以帮帮我

>

改成这样看看
/script m={"致伤毒药 VII"}n={20}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do x=GetMerchantItemInfo(j); if (x==m[i]) then for k=1,ceil(t/20) do BuyMerchantItem(j,floor(t/20)~=0 and 20 or t)t=t-20;end break;end end end end
暂时账号没打算充值试不了
不保証能正常运作
lmvd (冰语) #3 2010-09-11 16:11:49
※ 引述《zephik (zephki)》之铭言
> /script m={"致伤毒药 VII"}n={20}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do if GetMerchantItemInfo(j):find(m[i])then for k=1,ceil(t/20) do BuyMerchantItem(j,floor(t/20)~=0 and 20 or t)t=t-20;end break;end end end end
> 这个是在精华区看到的
> 现在说一下 出现的BUG
> 如果吧致伤毒药 VII 改成其他东西
> 例如 :符文布
> 如果NPC又卖 次序是1.符文布卷,2.符文布 他会先买符文布卷
>
> 即是只要M={"A"}  NPC 卖的东西 名字有"AB"跟 "A" 巨集会帮你买"AB"
> 有方法A的名字完全等于A才去买吗 ?????????
>
> 请问有高手可以帮帮我

这巨集的点子还不错说
先回答你的问题吧
巨集中GetMerchantItemInfo(j):find(m[i])
这个是指:如果GetMerchantItemInfo(j)中,有包含m[i]时为真
所以在扫到符文布卷的时候,就成立了
把这个改成 GetMerchantItemInfo(j)==m[i]
if 符文布卷==符文布,不成立,应该就行了
当然,这样子的话,买的东西就要打正确的全名,一点都不能漏

另外,这个巨集不直接适用买一次不只一个的情况
比方箭一次买200枝,一格可以放1000枝,所以后我小改了一下
/run local m,n,i,j,k,t={"劣质箭"},{4000}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do if GetMerchantItemInfo(j)==m[i] then for k=1,ceil(t/1000) do BuyMerchantItem(j,t>1000 and 5 or floor(t/200))t=t-1000 end break end end end end
如果买一次不是200个,请改红色的地方
如果包包一格不是可以放1000个,请改蓝色的地方
至于紫色的5,则是1000/200,即是买几次可以放满一格包包

另外不得不说一下(因为有点意料之外) BuyMerchantItem(j,0)会买一次唷....
所以,假设包包里劣质箭剩123枝
点一次巨集会变成3923(不超过4000但最接近4000的购买枝数)
再点一次会变成4123(因为BuyMerchantItem(j,0)仍然会买一次)
再点就不会变了(因为t>0不成立了)
最后...因为是m,n阵列,所以可以变化成
/run local m,n,i,j,k,t={"劣质箭","锐锋箭"},{4000,7000}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do if GetMerchantItemInfo(j)==m[i] then for k=1,ceil(t/1000) do BuyMerchantItem(j,t>1000 and 5 or floor(t/200))t=t-1000 end break end end end end
但是...字数好像快暴了...
有兴趣的可以玩一下吧

补加一下,后来想想,虽然一次BuyMerchantItem的上限是5
但也不一定要用5去买,所以改一下...
用1去买虽然要比较多次(也是一瞬间),但巨集字元可以省很多...
/run local m,n,i,j,k,t={"劣质箭"},{4000}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do if GetMerchantItemInfo(j)==m[i] then for k=1,ceil(t/200)-1 do BuyMerchantItem(j,1)end break end end end end
那个-1就是决定原本123枝会变成3923(不超过4000但最接近4000的购买枝数)
还是变成4123(超过4000中最接近4000的购买枝数)
trustnone (坐亡者) #4 2010-09-12 11:13:12
※ 引述《lmvd (冰语)》之铭言
> 补加一下,后来想想,虽然一次BuyMerchantItem的上限是5
> 但也不一定要用5去买,所以改一下...
> 用1去买虽然要比较多次(也是一瞬间),但巨集字元可以省很多...
> /run local m,n,i,j,k,t={"劣质箭"},{4000}for i=1,#m do t=n[i]-GetItemCount(m[i])if t>0 then for j=1,99 do if GetMerchantItemInfo(j)==m[i] then for k=1,ceil(t/200)-1 do BuyMerchantItem(j,1)end break end end end end
> 那个-1就是决定原本123枝会变成3923(不超过4000但最接近4000的购买枝数)
> 还是变成4123(超过4000中最接近4000的购买枝数)

很少有人会需要同时买几种品质的箭矢
所以若依原设计去修改为买箭矢便会有多余的部份出现
若真的希望设计能一巨集通用的话可改成这样
/run
local m,n,i,j,k,t={"劣质箭","清凉的泉水"},{4000,100}
for i=1,#m do
  t=n[i]-GetItemCount(m[i])
  if t>0 then
    for j=1,99 do
      x,y,y,z=
GetMerchantItemInfo(j)
      if x==m[i] then
        for k=1,floor(t/z) do
          BuyMerchantItem(j,1)
        end
        break
      end
    end
  end
end

/run或/script后跟随的其实是lua的程式码
真正使他难懂的地方在要一句完成 加上断句后便会发现巨集其实一点也不神秘 就如上面的解读方法一样
若游戏中使用
则先把所有断句移除即可使用
/run local m,n,i,j,k,t={"劣质箭","清凉的泉水"},{4000,100} for i=1,#m do t=n[i]-GetItemCount(m[i]) if t>0 then for j=1,99 do x,y,y,z=GetMerchantItemInfo(j) if x==m[i] then for k=1,floor(t/z) do BuyMerchantItem(j,1) end break end end end end

写巨集查API作用必不可少的网站:
http://www.wowwiki.com/API_GetMerchantItemInfo

看较旧的 2 则留言

冰语: 09-14 06:02

如果有人看完发现其实可以写个买齐所需消耗品的巨集,就会开始去思考这些了,这才是我要的效果><

冰语: 09-14 05:55

这是我留的伏笔,是打算给想研究的人去思考的,怎幺让不同数量的东西写在一个巨集里

冰语: 09-14 06:13

所以为什幺我拿箭去举例? 当然希望人多想想怎幺修改甚至完备巨集,这是一个好的练点子呀 ^_^

精彩推荐

Wonderful recommendation

更多

关于我们 | 商务合作 | 广告服务 | 法律声明 | 内容导航 | 游戏帮助 | 问题反溃

本站所有软件,来自于互联网或网友上传,版权属原著所有,如有需要请购买正版。如有侵权,敬请来信联系我们,我们立刻删除。

抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活

Copyright 2019-2025 by 鲁ICP备2024066534号-1 成都市互联网举报中心