《剑网3》:如何使用宏 宏内置语法浅析

2010-11-06 4693

宏这个东西,主要作用有哪些?

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都是根据别人写的插件加以猜测得出的:)专业玩家网为玩家提供最新最全的游戏资讯,职业玩家的首选网站。

 

免责声明:部分内容转自其他媒体,转载目的在于为游戏工作室传递更多信息,如因作品内容、版权和其他问题请 联系客服