《剑网3》:如何使用宏 宏内置语法浅析
宏这个东西,主要作用有哪些?
1、节约键位
(在wow里技能很多,键位是完全不够用的。比方说我把“召唤水元素”和“水元素”自身技能“冰冻术”写成一个宏,当没有水元素的时候按这个键就召唤,当水元素存在的时候按这个键就使用水元素的冰冻术,这样可以大量节约键位,及减少大脑条件反射的复杂程度)
2、自动化判断
(这一点是各位关注宏命令的地方,你可以设置一个条件,达成条件则执行某个动作,否则的话可以执行另一个动作。比方说我是太虚纯阳,我的蓝小于70%了并且气超过4个了就自动抱元回蓝。条件可以是多种多样的,自动化判断在一定程度上降低了游戏的复杂程度,同时也造成了不平衡。比如说一个完成度很高的无脑宏可以控制自己不ot的情况下最大输出,而人本身做到这点很难,所以暴雪公司在2.0版本里的wow里就对宏功能进行弱化,让判断语句无法触发技能,也无法使用物品。这样可以最大程度上保证宏不影响游戏平衡性。可惜的是金山没有限制宏的权限,同时让所有宏的函数可以互通,简单的说,宏配合一些按键软件是可以制作出外gua的~)
3、获取具体数据
(你在打boss的时候需要通过zrecount这样的插件才能数据化自己的战斗记录,或者查看自己的当前仇恨。宏可以帮助你获得游戏内的具体数据,因为宏和插件一样基于lua语法,基于jx3 api)
为什么jx3里的宏不支持/cast一类的语法?
因为目前的宏命令根本就是个半成品,/cast实际上就是对onuseskill这个命令的封装,至于什么时候jx3团队才能开能给一个完整的宏命令系统我也不知道,我对西山居的能力现在很怀疑了。
如果我现在想要写一个可以用的宏,需要如何曲线救国?
使用 /script 命令,你可以把一个宏当做插件内一个函数,绑定过快捷键后,每次按下去都执行一次这个函数。
可以描述一下宏命令那些复杂的命令都是什么意思么?
额~ 说不可以会被丢西瓜皮吧?
那我就简单介绍一个宏命令每行的作用吧~游戏工作室想要更快速的游戏出货,比价器无疑是最快的途径,专业玩家率先推出了最终幻想14比价器<
太虚纯阳:凭虚、转乾坤(作用:如果凭虚没有cd则用凭虚,如果凭虚cd则用转乾坤,主要用于快速解定身和节约键盘位)
/script n = getclientplayer();
申请一个变量叫n,并且获得当前客户端玩家,并赋值于n, 简单的说,就是你当前的人物状态就是n
/script fight=n.bfightstate;
申请一个变量叫fight,并且获得n(你)的战斗状态,如果战斗中,fight将会是true,如果不在战斗中,将会是false
/script px1,px2,px3=n.getskillcdprogress(355,n.getskilllevel(355));
申请3个变量px1,px2,px3,然后获得n(你)当前技能编号为355(凭虚)技能的冷却时间,第一个参数px1我不清楚含义,第二个公共冷却所剩时间(毫秒),第三个是凭虚技能冷却所剩时间(毫秒)
/script if px3==0 and fight==true then onuseskill(355,n.getskilllevel(355)) end;
如果凭虚御风cd时间到了,并且在战斗中,则释放凭虚御风,释放成功则会终止这个函数继续运行,因为公共冷却内无法运行别的技能
/script if fight==true then onuseskill(372,n.getskilllevel(372)) end;
如果在战斗中,则释放技能id为372的技能,为转乾坤(如果凭虚释放失败,才会尝试运行这一行,由于运行时有一些效率上的bug,我没有采用if else判断)
我如何取得技能或者物品id?
在游戏内把鼠标放在某个技能或物品上,按住alt键,会出现该技能或物品的调试信息,包含了id一类的信息~
我想获得更多的api或者内置lua的属性介绍~
在系统菜单里显示信息
outputmessage("msg_sys", "这是输出内容!!! \n");
获取角色:
getclientplayer() --获得玩家自己
getclientplayer().gettarget() --return 目标dwtype 目标dwid
getplayer(dwid) --获取指定dwid的人物对象,只针对玩家(包括自己)
getnpc(dwid) --获取指定dwid的npc对象,只针对npc
gettargethandle(dwtype, dwid) --获取指定dwid的对象,包括玩家和npc
selecttarget(dwtype, dwid) --选择(dwtype, dwid)对象为目标
getclientplayer().dwid--人物的id号
getclientplayer().gettarget()--获得当前人物的目标
getclientplayer().getboxsize(dwbagindex);--人物的包包大小
getclientplayer().getitem(dwbagindex, dwx); --获得包包的指定物品
item.nquality --物品品质
item.bcanstack --是否可以叠加
item.nstacknum--叠加数量
sellitemtoshop(dwbagindex, dwx, ncount);--卖物品到商店
shoppanel.bcanrepair -- 商店是否能修理
getclientplayer().castskill(nskillid, nskilllevel)--角色发技能
getrepairallitemsprice(shoppanel.nnpcid, shoppanel.nshopid)--修理费用
repairallitems(shoppanel.nnpcid, shoppanel.nshopid)--修理所有物品关注专业玩家,玩游戏赚钱不再是梦想.
--------------------------下页介绍如何获取对方数据--------------------------
角色属性:
dwid --人物id
szname --人物名字
dwschoolid --门派编号
nlevel --人物等级
dwmapid所在地图id
ncurrentlife --当前生命
nmaxlife --最大生命
ncurrentmana --当前内力
nmaxmana --最大内力
ncurrentstamina --当前精力
nmaxstamina --最大精力
bstall --是否在摆摊状态
bfightstate --是否在战斗中,true为战斗状态,false为非战斗状态
bonhorse --是否在马上
naccumulatevalue纯阳气的个数,半个气为1,也就是0-10之间的数,比如7就是3个半气~
nroletype角色类型
ndivingcount
nmovestate --人物动作姿态 不光是移动
释放技能:
onuseskill(技能id,n.getskilllevel(技能id))
判断自身buff:
/script for _, pb in pairs(getclientplayer().getbufflist()) do
if pb.dwid==buff的id then 执行语句 end
end;
由于我不是插件开发组的人,所以无法直接获得jx3的api
这些api都是根据别人写的插件加以猜测得出的:)专业玩家网为玩家提供最新最全的游戏资讯,职业玩家的首选网站。