0
焦点头条

官方内置宏语法攻略

2014-02-23 07:56| 查看: 5159 |作者: 小雪+陈雨




使用装备的道具
有些装备是能够使用的,例如:圣士腰坠,东海珠坠等,那么在一键爆发的时候可以将这些加入其中增强爆发能力。语句如下:
/script OnUseItem(CharacterPanel.m_nObjectType,9,CharacterPanel_GetItemBox(INVENTORY_INDEX.EQUIP,9,true))
如果要跟其他语句一起使用的话,最好加入一个判断物品冷却的句子:
/script bCool, nLeft, nTotal, bBroken=GetClientPlayer.GetItemCDProgress(INVENTORY_INDEX.EQUIP,9)
宣告4个变量,第一个是冷却,第二个是剩余,第三个是总量,第四个是是否损坏
进行判断:
/script if not bCool then OnUseItem(CharacterPanel.m_nObjectType,9,CharacterPanel_GetItemBox(INVENTORY_INDEX.EQUIP,9,true)) end
这是一个使用腰坠部位装备的宏命令,至于这个语句为什么是这样,我也不很明白,解释不清楚。列表如下
0=武器
1=藏剑重剑
2=暗器
3=衣服
4=帽子
5=项链
6=左戒指
7=右戒指
8=腰带
9=腰坠
10=裤子
11=鞋子
12=袖子
22=飞镖
至于是如何得知的,其实是人工整理的
/script N=GetClientPlayer()
/script EquipPoslist={0,2,3,4,5,6,7,8,9,10,11,12,13,23,24}
/script for _,i in pairs(EquipPoslist) do item=GetPlayerItem(N,INVENTORY_INDEX.EQUIP,i) OutputMessage("MSG_SYS",GetItemNameByItem(item)) end
通过这个命令,返回名字来对比,这个判断的在某些情况下会用到,后面会介绍。

更换装备:
/script OnExchangeItem(i, j, INVENTORY_INDEX.EQUIP, nEquipPos)
这个原理跟上面使用物品的是一样的,就不再解释

通过装备名字来更换装备:
/script function Equip(szName)
N=GetClientPlayer()
for i=1,5 do
if N.GetBoxSize(i)>0 then
for j=0,N.GetBoxSize(i)-1 do
item=N.GetItem(i,j)
if GetItemNameByItem(item)==szName then
eRetCode, nEquipPos = N.GetEquipPos(i, j)
if eRetCode == ITEM_RESULT_CODE.SUCCESS then
OnExchangeItem(i, j, INVENTORY_INDEX.EQUIP, nEquipPos)
end 
end
end
end
end
end
基本上是差不多的,就是多了一个eRetCode, nEquipPos = N.GetEquipPos(i, j)的判断,eRetCode个人感觉应该是能否更换装备(战斗中无法更换武器外的装备),nEquipPos是装备位置。

判断当前装备:
/script N=GetClientPlayer()
/script item=GetPlayerItem(N,INVENTORY_INDEX.EQUIP,0)
/script if GetItemNameByItem(item)=="九霄双剑" then OutputMessage("MSG_SYS","有") else OutputMessage("MSG_SYS","没有") end
红色部分为执行语句,可以修改。

延伸思路:
使用回春妙手时换武器,然后使用其他技能时换回来
/script N=GetClientPlayer()
/script wq=GetPlayerItem(N,INVENTORY_INDEX.EQUIP,0)
/script a,b,c=N.GetSkillCDProgress(52,2)
/script function Equip(szName)
for i=1,5 do
if N.GetBoxSize(i)>0 then
for j=0,N.GetBoxSize(i)-1 do
item=N.GetItem(i,j)
if GetItemNameByItem(item)==szName then
eRetCode, nEquipPos = N.GetEquipPos(i, j)
if eRetCode == ITEM_RESULT_CODE.SUCCESS then
OnExchangeItem(i, j, INVENTORY_INDEX.EQUIP, nEquipPos)
end 
end
end
end
end
end
/script 
if c==0 then
if GetItemNameByItem(wq)=="长恨" then OnUseSkill(52,2)
else Equip("长恨")
end
else 
Equip("九霄双剑")
end
如果回春妙手可用,然后如果武器不是长恨的话则切换武器为长恨,如果武器是长恨的话则使用回春妙手
如果回春妙手处于冷却,则切换武器为九霄双剑

收藏 分享 邀请

发表评论

关注订阅号"剑网3PVE"
获取第一手剑三资讯

关闭
您当前使用的浏览器版本过低,网站部分功能可能失效,请更换合适的浏览器。了解更多
返回顶部