LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 37462|回复: 154

GH20161027函数说明书

   关闭 [复制链接]
发表于 2016-10-27 19:11:01 | 显示全部楼层 |阅读模式
GhostHand
目录 [隐藏]
1        简介
2        库函数说明
2.1        施法类函数
2.1.1        快捷施法
2.1.1.1        castInsta(unit,spellid)/csi(unit,spellid)
2.1.1.2        castLong(unit,spellid)/csl(unit,spellid)
2.1.1.3        castSp(unit,spell)
2.1.1.4        rm(macro)
2.1.2        
2.1.2.1        castGround(Unit,SpellID,maxDistance[,MovementCheck])
2.1.2.2        cg(Unit,SpellID,maxDistance[,MovementCheck])
2.1.2.3        castSpell(Unit,SpellID[,FacingCheck,MovementCheck,SpamAllowed,KnownSkip,DeadCheck,DistanceSkip,usableSkip])
2.1.2.4        cs(Unit,SpellID[,FacingCheck,MovementCheck,SpamAllowed,KnownSkip,DeadCheck,DistanceSkip,usableSkip])
2.1.2.5        
2.1.2.6        noLos();
2.1.2.7        castHeal(spellid,percent[,maxRange,MovementCheck])
2.1.2.8        ch(spellid,percent[,maxRange,MovementCheck])
2.1.2.9        castCursor(spellid)
2.1.2.10        castForm(num)
2.1.2.11        cancelForm()
2.1.2.12        cancelBuff(buffid)
2.2        get类函数
2.2.1        数值类
2.2.1.1        getHP(Unit)
2.2.1.2        getMana(Unit)
2.2.1.3        getRage()
2.2.1.4        getCombo()
2.2.1.5        getRunes()
2.2.1.6        getRunicPower()
2.2.1.7        getSoulShards()
2.2.1.8        getFocus()
2.2.1.9        getEnergy()
2.2.1.10        getLunarPower()
2.2.1.11        getChi()
2.2.1.12        getHolyPower()
2.2.1.13        getInsanity()
2.2.1.14        getMaelstorm()
2.2.1.15        getArcanePower()
2.2.1.16        getFury()
2.2.1.17        getPain()
2.2.1.18        getPosition(unit)
2.2.1.19        getDistance(Unit1,Unit2)
2.2.1.20        di(u1,u2)
2.2.1.21        getCharges(spellID)
2.2.1.22        getSpellCD(SpellID)
2.2.1.23        getNumInSpell(spellid)
2.2.2        天赋判断类
2.2.2.1        getTalent(Row,Column)
2.2.2.2        getPvpTalent(Row,Column)
2.2.2.3        getTalentp(Row,Column)
2.2.3        buff/debuff相关判断
2.2.3.1        getBuffDuration(Unit,BuffID[,Source])
2.2.3.2        getBuffRemain(Unit,BuffID[,Source])
2.2.3.3        be(Unit,BuffID,Source)
2.2.3.4        getBuffStacks(unit,BuffID[,Source])
2.2.3.5        bs(unit,BuffID[,Source])
2.2.3.6        getDebuffDuration(Unit,DebuffID[,Source])
2.2.3.7        getDebuffRemain(Unit,DebuffID[,Source])
2.2.3.8        de(Unit,BuffID,Source)
2.2.3.9        getDebuffStacks(unit,DebuffID[,Source])
2.2.3.10        ds(unit,BuffID[,Source])
2.2.3.11        getNumInDebuff(Unit,debuffid[,source])
2.2.4        
2.2.4.1        getLastSpell()
2.2.4.2        getLastTarget()
2.2.4.3        getGCD()
2.2.4.4        getGcd();
2.2.4.5        getTimeToDie(unit)
2.2.4.6        getCombatTime(unit)
2.3        can类函数
2.3.1        
2.3.1.1        canAttack(Unit1,Unit2)
2.3.1.2        ca(u1,u2)
2.3.1.3        canInterrupt(Unit,Interrupt[,Time])
2.3.1.4        amac(Unit,Interrupt[,Time])
2.3.1.5        canCast(SpellID[,KnownSkip,MovementCheck])
2.3.1.6        canPD(unit)
2.4        is类函数
2.4.1        判断类
2.4.1.1        isLooting()
2.4.1.2        isAlive(Unit)
2.4.1.3        isPlayer(Unit)
2.4.1.4        isEnemy(Unit)
2.4.1.5        isBoss(Unit)
2.4.1.6        isDummy(Unit)
2.4.1.7        isInCombat(Unit)
2.4.1.8        isMoving(Unit)
2.4.1.9        isOnBus()
2.4.1.10        isLongTimeCCed(Unit)
2.4.1.11        isSlow(Unit)
2.4.1.12        isStun(Unit)
2.4.1.13        isLock(Unit)
2.4.1.14        isInvincible(Unit)
2.4.1.15        isInv(Unit)
2.4.1.16        isMagicinv(Unit)
2.4.1.17        isHealer(unit)
2.4.1.18        isMelee(unit)
2.4.1.19        isTotem(unit)
2.4.1.20        isTyping()
2.4.2        buff表判断
2.4.2.1        isBuffed(UnitID,{BuffID}[,TimeLeft,Filter])/ib(UnitID,{BuffID}[,TimeLeft,Filter])
2.4.2.2        isDeBuffed(UnitID,{DebuffID},TimeLeft,Filter)/id(UnitID,{DebuffID},TimeLeft,Filter)
2.4.3        治疗列表
2.4.3.1        ht表
2.4.3.2        getLowestAllies([radius])
2.5        高级函数
2.5.1        获取类
2.5.1.1        GetEnemy([center,]radius[,fliter])
2.5.1.2        getEnemy(radius)
2.5.1.3        getOneEnemy(radius,filterfunction)
2.5.1.4        getFriend(radius)
2.5.1.5        getEnemyAround(unit,radius)
2.5.1.6        getNumProjectile(unit,radius)
2.5.1.7        getNumEnemies(Unit,Radius)
2.5.1.8        getNumEnemiesp(Unit,Radius)
2.5.1.9        shouldAoe([center])
2.5.2        敌对列表相关
2.5.2.1        makeEnemiesTable([radius])
2.5.2.2        mk([radius])
2.5.2.3        enemiesTable
2.5.2.4        getET()
2.5.2.5        AutoTaunt(spellid,radius)
2.5.2.6        WiseAoe(spellid,maxcount,radius,nearbyradius)
2.5.2.7        getEnemyHealer(radius)
2.5.2.8        getEnemyMelee(radius)
2.5.2.9        getEnemiesAngle(radius,angle)
2.5.2.10        getEnemiesAnglep(radius,angle)
2.5.2.11        getNumTargeting(unit,radius)
2.5.3        强化API判断
2.5.3.1        UnitTarget(unit)
2.5.3.2        UnitCreator(unit)
2.5.3.3        UnitBoundingRadius(unit)
2.5.3.4        UnitCombatReach(unit)
2.5.3.5        UnitHeight(unit)
2.5.3.6        ObjectPointer(unit)
2.5.4        面对类
2.5.4.1        FaceUnit(unit)
2.5.4.2        getFacing(Unit1,Unit2,Degrees)
2.5.5        移动类
2.5.5.1        MoveTo(pos)
2.5.5.2        petMoveTo(pos)
2.6        其他类函数
2.6.1        自动驱散类
2.6.1.1        MagicDispel(spellid)
2.6.1.2        DiseaseDispel(spellid)
2.6.1.3        CurseDispel(spellid)
2.6.1.4        PoisonDispel(spellid)
2.6.2        has类函数
2.6.2.1        hasPet()
2.6.2.2        hasEquiped(itemid)
2.6.2.3        hasItem(itemid)
2.6.2.4        hasItemEnchant(itemID)
2.6.2.5        hasEmptySlots()
2.6.2.6        hasCasted(Unit,Interrupt)
2.6.2.7        hasThreat([unit,playerUnit])
2.6.2.8        AntiAfk()
2.6.2.9        useItem(itemID)
2.6.2.10        destroyItem(itemID)
2.6.2.11        autoCastCursor()
2.6.2.12        goFish()
2.6.2.13        getLoot([radius])
2.6.2.14        showTreasure(radius)
3        脚本写作提示
3.1        快速教学
3.1.1        最简单的施法
3.1.2        优先级下的施法
3.1.3        AOE技能
3.2        进阶技巧
3.2.1        自己存在某buff才丢某个技能
3.2.2        目标有自己的某个debuff,我才对他丢某个技能
3.2.3        循环简介
3.3        脚本结构优化
3.3.1        使用局部变量local
3.3.2        避免将函数体定义作为其他函数的参数来使用
3.3.3        避免使用table.insert()
4        脚本实例
4.1        惩戒骑简单输出脚本
5        附录
5.1        更新日志
5.1.1        公测版V18
5.1.2        公测版V28
5.1.3        公测版V18
5.1.4        V24
5.1.5        V23
5.1.6        v12
5.1.7        v5
5.1.8        v4
5.2        Lua5.1手册
5.3        Titan知识库
5.4        插件中剔除的函数
5.4.1        Keyin(Key/asciinum)
6        鸣谢
6.1        插件启发
6.2        Titan支持
6.3        个人感谢
简介
<img src="http://i.imgur.com/5zRZa1i.jpg" />

该库默认命名空间:GH。函数名称继续沿用老版本基于Firehack的GodHand/BadBoy的函数名称,在之前效率和内容上进行了改进/优化,力求带给开发者和使用者最完备的体验。

对于PVP的各种特定技巧也给出了很多接口函数。由于Titan具有强大的独立命名空间,本库也为很多常用函数增加了简称,便于大家编写脚本。

库函数说明
部分常用函数有简称,见斜杠后的简短名称。函数使用时需要带上命名空间GH. 如: GH.csi("target",110) GH.csl("target",123)

施法类函数
一般用于释放各种技能/宏,为了避免客户端技能翻译问题,采用唯一对应的技能id施法。

快捷施法
castInsta(unit,spellid)/csi(unit,spellid)
对unit释放spellid的顺发法术/近战攻击技能。

<code>GH.csi("target",123)
</code>
对当前目标释放法术id为123的顺发法术的技能。

castLong(unit,spellid)/csl(unit,spellid)
对unit释放spellid的读条法术,需要站在原地不动才会放。

<code>GH.csl("target",2233)
</code>
对当前目标释放法术id为2233的读条法术。

castSp(unit,spell)
对unit释放spellid的技能,无视任何判断。

rm(macro)
释放宏macro。

如:GH.rm("/cast 寒冰箭")

castGround(Unit,SpellID,maxDistance[,MovementCheck])
cg(Unit,SpellID,maxDistance[,MovementCheck])
对Unit释放aoe绿圈SpellID的技能,最大距离为maxDistance。MovementCheck缺省为false,true的时候只判断需要站定读条的aoe技能。

<code>GH.cg("target",1000,30)
</code>
对当前目标释放法术id是1000的aoe技能,这个技能最大射程为30码,移动时候也会施法。

castSpell(Unit,SpellID[,FacingCheck,MovementCheck,SpamAllowed,KnownSkip,DeadCheck,DistanceSkip,usableSkip])
cs(Unit,SpellID[,FacingCheck,MovementCheck,SpamAllowed,KnownSkip,DeadCheck,DistanceSkip,usableSkip])
对Unit释放SpellID的技能。它需要满足以下条件才会释放:

FacingCheck,面对检查,如果为true,无需面向unit就可以放技能。默认为false。

MovementCheck,移动检查,如果为true,必须站定才能施法。默认为false。

SpamAllowed,连续施法,如果为true,会无延迟尝试释放这个技能。默认为false,有内置1秒的延迟才会接受下次释放。

KnownSkip,技能书掌握检查,如果为true会无视这个检查,一般用默认false。

DeadCheck,unit死亡检查,默认为false。如果是复活术之类的技能请写成true。

DistanceSkip,距离检查跳过,默认为false,会自动检查是不是目标在射程内,写成true会跳过这个检查,一般用不到。如果是宝宝的恶魔掌握这种内含技能或者是牧师的虚空箭,需要写为true。

usableSkip,技能是否可用检查,一般用不到。如果是宝宝的恶魔掌握这种内含技能或者是牧师的虚空箭,需要写为true。

<code>GH.cs("target",30108,true,true)
</code>
对目标释放痛苦无常,目标在你背后也会施法,必须是站定状态。

noLos();
调用此函数会关闭LoS视线检测,等同于令DistanceSkip为true。 会使你脚本里的所有施法全部无视距离和视野判断。

<code>
--无视脚本内的距离检测,慎用可能会导致卡技能
GH.noLos()
GH.cs("target",123,false,false)
</code>
castHeal(spellid,percent[,maxRange,MovementCheck])
ch(spellid,percent[,maxRange,MovementCheck])
对自己周围少于percent的目标施放spellid的治疗技能。最大范围maxRange默认是40,MovementCheck同castSpell,默认false。

<code>GH.ch(17,85,40,false)
</code>
对自己周围血量低于85%的目标施放真言术盾。最大范围40码,移动中也会丢。

castCursor(spellid)
在鼠标位置释放spellid的绿圈技能。

castForm(num)
释放第num个(德鲁伊/圣骑士圣印)形态。

<code>
--释放第三个形态
GH.castForm(3)
</code>
cancelForm()
<code>
--取消形态
GH.cancelForm()
</code>
取消当前的形态。

cancelBuff(buffid)
取消自己身上buffid的buff。

<code>
--取消自己身上的115号buff
GH.cancelBuff(115)
</code>
get类函数
一般用于获取各种数值,或者判断某个天赋/雕纹/buff/debuff。

数值类
getHP(Unit)
获取Unit的生命小数百分比。 0到100,百分之50是50。

<code>
--如果自己血量不足30% 就开剑在人在
if GH.getHP("player") <= 30 then
        GH.csi("player",118038)
end
</code>
getMana(Unit)
获取Unit的魔法值(蓝)小数百分比。 0到100,百分之50是50。

<code>
--如果自己蓝量不足30% 就喝蓝瓶
if GH.getMana("player") <= 30 then
        GH.rm("/use 破碎法力药水")
end
</code>
getRage()
获取自己的怒气,数值。 可以是15、110等等。

<code>
--怒气判断丢技能,50怒气以上对目标丢猛击
local rage = GH.getRage()
if rage > 50 then
        csi("target",1464)
end
</code>
getCombo()
获取自己的连击点数。

getRunes()
获取自己的符文个数(DK)。

getRunicPower()
获取自己的符文能量(DK)。

getSoulShards()
获取自己的灵魂碎片数量(SS)。

getFocus()
获取自己的集中值(猎人)。

getEnergy()
获取自己的能量(猎人/野德/武僧)。

getLunarPower()
获取自己的咕咕能量(咕咕)。

getChi()
获取自己的真气点数数量(武僧)。

getHolyPower()
获取自己的神圣能量(惩戒骑)。

getInsanity()
获取自己的狂乱值(暗牧)。

getMaelstorm()
获取自己的漩涡值(元素/增强萨满)。

getArcanePower()
获取自己的奥术能量(奥法)。

getFury()
获取自己的狂怒值(浩劫恶魔猎手)。

getPain()
获取自己的痛苦值(复仇恶魔猎手)。

getPosition(unit)
返回unit的x,y,z坐标。

getDistance(Unit1,Unit2)
di(u1,u2)
获取Unit1与Unit2之间的距离。

getCharges(spellID)
获取spellid的充能层数,如:2层cd的冲锋。

getSpellCD(SpellID)
获取spellid技能的冷却时间。

getNumInSpell(spellid)
获取spellid的说明内数字。

天赋判断类
getTalent(Row,Column)
判断第Row行,第Column列的天赋是不是启用了,启用了返回true,否则返回false。

getPvpTalent(Row,Column)
getTalentp(Row,Column)
判断第Row行,第Column列的PVP天赋是不是启用了,启用了返回true,否则返回false。

buff/debuff相关判断
getBuffDuration(Unit,BuffID[,Source])
返回Unit 身上存在的由source释放的BuffID的总持续时间。

getBuffRemain(Unit,BuffID[,Source])
be(Unit,BuffID,Source)
返回Unit身上存在的由source释放的BuffID的剩余时间。不存在为0,永久buff为小于0的值。

getBuffStacks(unit,BuffID[,Source])
bs(unit,BuffID[,Source])
返回Unit身上存在的由source释放的BuffID的层数。不存在为0。

getDebuffDuration(Unit,DebuffID[,Source])
返回Unit身上存在的由source释放的DebuffID的总持续时间。

getDebuffRemain(Unit,DebuffID[,Source])
de(Unit,BuffID,Source)
返回Unit身上存在的由source释放的DebuffID的剩余时间。不存在为0,永久buff为小于0的值。

getDebuffStacks(unit,DebuffID[,Source])
ds(unit,BuffID[,Source])
返回Unit身上存在的由source释放的DebuffID的层数。不存在为0。

getNumInDebuff(Unit,debuffid[,source])
返回Unit身上存在的由source释放的DebuffID的文字信息内的所有数字,存在返回的table里,无数字为-1。

getLastSpell()
获取上一次释放法术的法术id。

getLastTarget()
获取上一次释放法术的unit。

getGCD()
getGcd();
获取自己的公共冷却时间。

getTimeToDie(unit)
获取目标的预估死亡时间。

getCombatTime(unit)
获取自己进入战斗的时间。

can类函数
一般用于能够类别判断。

canAttack(Unit1,Unit2)
ca(u1,u2)
如果Unit1可以攻击Unit2,返回true。

canInterrupt(Unit,Interrupt[,Time])
amac(Unit,Interrupt[,Time])
获得Unit正在施放的法术名称,Interrupt为非0,只返回可以打断的技能。Time为施法延迟,默认为0.4。

canCast(SpellID[,KnownSkip,MovementCheck])
如果可以释放SpellID的法术,返回true,参数意义同castSpell。

canPD(unit)
如果敌对目标身上有可供驱散的魔法buff,返回true。

is类函数
一般用于单体各种判断。

判断类
各种各样的判断,一般不死true就是false。

isLooting()
如果自己在拾取物品的状态,返回true。

isAlive(Unit)
如果Unit是活着的,返回true。

isPlayer(Unit)
如果Unit是玩家,返回true。

isEnemy(Unit)
如果Unit是敌对的,返回true。

isBoss(Unit)
如果Unit是副本Boss/假人Boss,返回true。

isDummy(Unit)
如果Unit是假人Boss,返回true。

isInCombat(Unit)
如果Unit在战斗状态,返回true。

isMoving(Unit)
如果Unit在移动,返回true。

isOnBus()
如果自己在坐骑上,返回true。

isLongTimeCCed(Unit)
如果Unit被群体控制技能控制,返回true。

isSlow(Unit)
如果目标被减速返回true和剩余时间。仅pvp生效。

isStun(Unit)
如果目标被昏迷返回true和剩余时间。仅pvp生效。

isLock(Unit)
如果目标被定身返回true和剩余时间。仅pvp生效。

isInvincible(Unit)
isInv(Unit)
如果目标免疫物理攻击返回true。仅pvp生效。

isMagicinv(Unit)
如果目标免疫魔法攻击返回true。仅pvp生效。

isHealer(unit)
如果目标是治疗职业,返回true。仅pvp生效。

isMelee(unit)
如果目标是近战职业,返回true。仅pvp生效。

isTotem(unit)
如果目标是图腾,返回true。

isTyping()
如果自己在输入状态(有活跃的聊天窗口),返回true。

buff表判断
isBuffed(UnitID,{BuffID}[,TimeLeft,Filter])/ib(UnitID,{BuffID}[,TimeLeft,Filter])
如果unit身上有{BuffID}内的某个buff超过Timeleft存在,返回true。Timeleft默认为0。

isDeBuffed(UnitID,{DebuffID},TimeLeft,Filter)/id(UnitID,{DebuffID},TimeLeft,Filter)
如果unit身上有{DebuffID}内的某个buff超过Timeleft存在,返回true。Timeleft默认为0。

治疗列表
ht表
所有队友存储在一个名为ht的表内,老版本GodHand/BadBoy的nNova结构也兼容。

用ht.unit 访问每个队友。

getLowestAllies([radius])
获取radius范围内,一个最低血量的队友和他的hp百分比。 radius默认为40码。 lowAllies,lowp = getLowestAllies()

高级函数
获取类
GetEnemy([center,]radius[,fliter])
返回center周围radius内的敌对目标表。center不写就是自己为中心。可以自行引入过滤函数filter。

getEnemy(radius)
返回自己radius周围的敌对目标表。例如:local tgtable = getEnemy(40)

getOneEnemy(radius,filterfunction)
返回自己radius周围且满足filterfunction(unit)返回true的一个敌对目标。

getFriend(radius)
返回自己radius周围的友好目标表。

getEnemyAround(unit,radius)
返回unit周围radius周围的敌对目标表。

getNumProjectile(unit,radius)
返回radius范围内的目标是unit的飞行物体个数

getNumEnemies(Unit,Radius)
获取Unit周围Radius内的敌对目标个数,去掉了图腾的干扰,返回数量。一般用在aoe判断里。

getNumEnemiesp(Unit,Radius)
获取Unit周围Radius内的敌对玩家个数,去掉了图腾的干扰,返回数量。一般用在aoe判断里。 仅PVP生效。

shouldAoe([center])
等同于getNumEnemies(center,8) >= 3; 默认是自己为中心。

敌对列表相关
使用以下函数前需要先调用makeEnemiesTable([radius])进行初始化,减少内存使用,提高效率。

makeEnemiesTable([radius])
mk([radius])
创建一个敌对表,内涵周围radius范围的所有敌对目标,按照血量百分比由小到大排序,方便进行选取。通过enemiesTable/et访问里边的每个unit。 例如:et[3].unit就是自己周围血量第三少的unit。

enemiesTable
getET()
getET() = {{name,isCC,facing,threat,unit,distance,hp,x,y,z},...,{name,isCC,facing,threat,unit,distance,hp,x,y,z}}

AutoTaunt(spellid,radius)
自动用spellid的嘲讽技能,嘲讽自己radius范围内的小怪。

WiseAoe(spellid,maxcount,radius,nearbyradius)
只能aoe施法最大化,spellid是技能id,maxcount是满足周边的目标个数,radius是技能的范围,nearbyradius是周边玩家的个数。 仅PVP生效。

getEnemyHealer(radius)
返回一个附近radius范围内敌对治疗的表。 仅PVP生效。

getEnemyMelee(radius)
返回一个附近radius范围内敌对近战的表。 仅PVP生效。

getEnemiesAngle(radius,angle)
返回自己面前angel角度内,radius范围内的扇形区域敌对目标个数。

getEnemiesAnglep(radius,angle)
返回自己面前angel角度内,radius范围内的扇形区域敌对玩家个数。 仅PVP生效。

getNumTargeting(unit,radius)
返回radius范围内,目标是unit的敌对玩家个数。 仅PVP生效。

强化API判断
UnitTarget(unit)
返回unit的目标。 (unit类型)

UnitCreator(unit)
返回unit的创造者。 (unit类型)

UnitBoundingRadius(unit)
返回unit的模型半径。

UnitCombatReach(unit)
返回unit的战斗半径。

UnitHeight(unit)
返回unit的模型高度。

ObjectPointer(unit)
获取unit的unit类型指针/unitid。

面对类
FaceUnit(unit)
面对unit。

getFacing(Unit1,Unit2,Degrees)
如果Unit1在Unit2面前的左右Degrees角度内,返回true。

移动类
MoveTo(pos)
自己移动到位置pos。

petMoveTo(pos)
宠物移动到位置pos。

其他类函数
自动驱散类
MagicDispel(spellid)
用spellid单体技能驱散团队成员身上的魔法。

DiseaseDispel(spellid)
用spellid单体技能驱散团队成员身上的疾病。

CurseDispel(spellid)
用spellid单体技能驱散团队成员身上的诅咒。

PoisonDispel(spellid)
用spellid单体技能驱散团队成员身上的中毒。

has类函数
hasPet()
如果玩家有宠物,返回true。

hasEquiped(itemid)
如果玩家身上装备有itemid的装备,返回true。

hasItem(itemid)
如果玩家背包内有itemid的物品,返回true。

hasItemEnchant(itemID)
如果自己的武器有itemID的附魔效果,返回true。

hasEmptySlots()
返回自己包裹的空格数量。

hasCasted(Unit,Interrupt)
获得Unit正在施放的法术名称和已经读条的时间,Interrupt为非0,只返回可以打断的技能。。

hasThreat([unit,playerUnit])
返回对于unit,playerunit的仇恨值。 unit默认为"target" playerunit默认为自己。

AntiAfk()
重置afk计时器,不会因为挂机掉线。

useItem(itemID)
使用itemID的物品。

destroyItem(itemID)
摧毁itemID的物品。

autoCastCursor()
自动将所有未使用castGround/cg的aoe技能丢在鼠标位置。

goFish()
自动钓鱼。

getLoot([radius])
自动拾取radius距离内的尸体物品,默认是20码。

showTreasure(radius)
显示radius范围内的所有宝箱/矿物/草药名称

脚本写作提示
快速教学
这里会给出一些脚本写作的简单方法。

最简单的施法
<code>GH.csi("target",123)
</code>
这样就会对目标释放技能id为123的技能。

优先级下的施法
<code>GH.csi("target",1)

GH.csi("target",2)

GH.csi("target",3)
</code>
如果技能优先级是1 > 2 > 3,这样写就会按照优先1然后2最后3的顺序,分别对目标卡cd丢1,2,3技能了。

AOE技能
<code>GH.mk(40); --初始化敌对列表,使得计数函数工作。

if GH.getNumEnemies("target",8)>=4 then

  GH.cg("target",1234,30)

end
</code>
这样写就会对30码范围内的目标丢1234的绿圈技能了。

进阶技巧
自己存在某buff才丢某个技能
<code>if GH.be("player",某buffid) > 0 then

GH.csi("target",某个技能id)

end
</code>
目标有自己的某个debuff,我才对他丢某个技能
<code>if GH.de("target",某debuffid,"player") > 0 then

GH.csi("target",某个技能id)

end
</code>
循环简介
<code>local tl = getEnemy(40)
for i = 1,#tl do
    local t1 = tl
    if GH.di(t1,"player") < 6 and GH.getHP(t1)< 20 then
    csi(t1,1234)
    end
end
</code>
以上可以实现对周围40码范围内的少血20%目标丢1234技能。

脚本结构优化
<a href="http://www.cnblogs.com/lovevivi/p/3284643.html" title="lua效率优化参考">http://www.cnblogs.com/lovevivi/p/3284643.html</a>

使用局部变量local
避免将函数体定义作为其他函数的参数来使用
避免使用table.insert()
脚本实例
惩戒骑简单输出脚本
<code>local zj = "player" --自己的引用
local tg = "target" --目标的引用
local fz = "focus" --焦点目标的引用
local cs = GH.castSpell;  --施法函数的引用
local de = GH.getDebuffRemain --debuff剩余时间
local be = GH.getBuffRemain --buff剩余时间
local ho = GH.getHolyPower() --圣能个数
local tgstg = GH.UnitTarget; --目标的目标
local di = GH.getDistance --距离函数
local insi = GH.InLineOfSight --视野判断 可以无视
local mk = GH.makeEnemiesTable --创建敌对框体函数的引用
local am = GH.canInterrupt; --是否在读条
local et = GH.enemiesTable; --敌对单位表的引用
local nNova = GH.ht; --治疗单位表的引用
----------------------------------------------------------
mk(40);  --创建敌对框体
GH.AnitAfk(); --重置afk计时器,防止掉线
GH.goFish();     --钓鱼函数 不是钓鱼环境请删掉或注解掉
local slow,slowtime = GH.isSlow(zj) --自己减速与否,时间的判断
if GH.isInCombat(zj) and GH.canAttack(tg,zj) and not GH.isInv(tg) then
    if not GH.isSlow(tg) and di(tg,zj) > 12 and GH.isPlayer(tg) then--如果目标没有被减速并且目标是玩家 就给他上减速
        if cs(tg,183218,false,false) then
            return
        end
    end
    --自由
    if GH.isLock(zj) or (slowtime and slowtime > 4 )then
        if cs(zj,1044) then
            return
        end
    end

    `--打断`
    if am(tg,1) then
        if cs(tg,62124,false,false) then
            return;
        end
        end
    `--审判`
        if cs(tg,20271,false,false) then
            return;
        end
    if ho >= 3 then
        --tc
        if cs(tg,213757,false,false) then
            return;
        end
    end
    `-- 五豆的情况`
    if ho == 5 then
        if GH.getHP(zj) < 50 then  --血量低于50%
        --奶打
            if cs(tg,215661,false,false) then
                return;
            end

        else
            --裁决
            if cs(tg,85256,false,false) then
                return;
            end
        end
    end
    if ho < 5 then

        if ho < 3 then
            --愤怒之剑
            if cs(tg,184575,false,false) then
                return;
            end

        end
        --十字军打击
        if cs(tg,35395,false,false) then
            return;
        end
        -----
        --裁决填充
        if cs(tg,85256,false,false) then
            return;
        end

    end
end
</code>
本脚本可以实现一些简单的卡cd单体输出,日常钓鱼等等、仅供测试。自行删减需要的部分。

附录
更新日志
公测版V18
2016-9-28 修复castForm(num)。

公测版V28
2016-10-10 修复自动拾取,更名为getLoot()。 修复isInPvP(),判断是否在战场/竞技场内。

公测版V18
2016-9-27 修复诸多测试中反馈的问题,解决掉帧问题。

V24
2016-9-19 修复目标的目标相关的函数问题。

V23
2016-9-13 修复若干小bug,整合部分函数。

v12
2016-9-11 修复诸多LoS的bug。

v5
2016-9-7 补充了遗漏的isBoss判断。

v4
2016-9-7 修改海拉释这种空中/水中boss,对它放法术卡技能卡距离的bug。

Lua5.1手册
<a href="http://www.codingnow.com/2000/download/lua_manual.html" title="lua 5.1 手册">http://www.codingnow.com/2000/download/lua_manual.html</a>

Titan知识库
<a href="https://wiki.luacn.net/" title="泰坦知识库">https://wiki.luacn.net/</a>

插件中剔除的函数
Keyin(Key/asciinum)
由于循环脚本可以自定义插入技能,去掉了原有插件里的按键判断。

鸣谢
插件启发
l0l1dk for Firehack,CuteOne for BadBoy.

Titan支持
Titan制作团队.

个人感谢
稻草

Etox

有时右逝

Seven

你看的见我么

萨隆尼

Luacn.net 论坛的大力支持.

回复

使用道具 举报

发表于 2016-10-27 19:34:54 | 显示全部楼层
我感觉我是第一个 脸应该不行
回复 支持 1 反对 0

使用道具 举报

发表于 2016-10-27 19:35:09 | 显示全部楼层
来一波金币,看看今天脸咋样~
回复 支持 0 反对 1

使用道具 举报

发表于 2016-10-27 19:34:09 | 显示全部楼层
来一波金币。
回复 支持 反对

使用道具 举报

发表于 2016-10-27 19:34:28 | 显示全部楼层
我来看看今天的RP                     
回复 支持 反对

使用道具 举报

发表于 2016-10-27 19:34:36 | 显示全部楼层
这是什么东西.!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2016-10-27 19:34:48 | 显示全部楼层
抢金币,顺便,让我学到天荒地老吧
回复 支持 反对

使用道具 举报

发表于 2016-10-27 19:34:50 | 显示全部楼层
我要暴击  我要暴击 我要暴击
回复 支持 反对

使用道具 举报

发表于 2016-10-27 19:35:07 | 显示全部楼层
我竟然不是第一个,速度还是比大神慢啊
回复 支持 反对

使用道具 举报

发表于 2016-10-27 19:35:08 | 显示全部楼层
我来 看来你的,不知道这回怎么样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2024-4-19 10:22 PM , Processed in 0.074426 second(s), 31 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表