0
焦点头条

官方内置宏语法攻略

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



关于物品
很早以前其实就研究了这个东西,不过纠结于不太明白原理而没有放出来,现在虽然还是不太懂,但我尽量解释,不懂的地方可以回帖或者PM我。

关于使用物品
使用物品其实就只有一个简单的命令
/script OnUseItem(X,Y)
在这里X代表要使用的物品处于第几个背包,Y则是代表物品处于背包的第几格。
注意,这里的Y值是从0开始算的,也就是说16格包包对应的格子号为0到15,不是1到16.
对于使用整合背包的同学们,还请调换成基础背包模式,就是一个一个背包分开那种。

通过物品名称来使用物品
先看下下面这个函数封装:
/script function Use(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)
bCool, nLeft, _, _=N.GetItemCDProgress(i,j)
if GetItemNameByItem(item)==szName and (not bCool or nLeft==0) then
OnUseItem(i,j,BigBagPanel_GetItemBox(i,j))
end
end
end
end
end
/script Use("上品活络丸")

1.建立一个为Use的函数
2.申请一个为N的变量,这个变量代表当前玩家
3.建立一个i的循环,这个循环从1开始,会重复执行5次(一共有5个包)
4.将i值当做玩家当前背包格子,如果i>0,则执行(注:i在这里是什么作用的问题,在这个循环里,i从1开始执行,那么第一次的N.GetBoxSize(1)就是获取第一个包的格子数量,那么第二次执行的时候就是N.GetBoxSize(2)就是获取第二个包的格子数量,以此类推直到第五个包。当返回格子为0的时候,代表没有装备包包栏上没有装备包包,那么这个循环就会终止。例如装备了2个包包,加上本来的那个一共3个包包,那么他就会在第4次执行的时候返回0,然后在这里停下来,因为第4个包包没有装备上去。)
5.建立一个为j的循环,这个循环从0开始,会重复执行i值-1次(i这个值是返回包包格子数量,但是从使用物品的原理上来看,Y也就是现在的j是从0开始的,那么在这里要从第一格开始循环就要减去1,因为是从0开始循环的。例如包包装备栏左起第二个是16格包,那么N.GetBoxSize(2)=16,j=15,范围从0到15,符合前面Y的要求。)
6.申请一个item的变量,这个变量作用是获取道具的i,j值
7.申请4个变量,这4个变量作为判断物品状态,后两个值为空,第一个值为冷却时间,第二个值为剩余数量
8.如果,获取item的名字等于我们所输入的名字,且物品不在冷却以及还有剩余的时候,则执行
9.获取i,j值,并使用位于i,j的物品

其实有些地方我依旧不是很明白,例如说关于语句为什么这么用,但是大体上设计方向是:
通过输入物品名字,达到使用该物品的效果。
问题:使用物品只能通过坐标使用(见上)
解决方案:通过对每一个格子的物品进行校对,来获取坐标值,当物品名字等于我们所输入的物品名字时候,这时返回i值跟j值,通过这个坐标值来使用相应物品。例如:当i循环到第4次,j循环到第8次的时候,发现名字吻合,那么这时的i值就等于4,j值等于8,也就是说使用第4个包包的第9格物品。

以上原理不喜欢研究的可以不用去弄懂,直接复制这个函数,并且修改物品名字就好了。


收藏 分享 邀请

发表评论

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

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