这个是完整的初始化,放在魔蜂的第一个脚本里。
[Lua] 纯文本查看 复制代码 ------------初始化----
local myUnit = {}
function myUnit:New(unit)
local s = {}
setmetatable(s,self)
self.__index = self
s.name = GetUnitName(unit)
s.lv = UnitLevel(unit)
s.hp = UnitHealth(unit)
s.maxHp = UnitHealthMax(unit)
s.mp = UnitMana(unit)
s.maxMp = UnitManaMax(unit)
s.php = (s.hp / s.maxHp)*100
s.pmp = (s.mp / (s.maxMp > 0 and s.maxMp or 1)) * 100
s.Skill = {}
return s
end
local Tbl = BeeUnitBuffList("target")
local buff = BeeUnitBuffList("player")
local me = myUnit:New("player")
local tar = myUnit:New("target")
local boss = BeeUnitClassification("target","worldboss") ---判断boss
local HQTime = BeePlayerBuffTime("荷枪实弹")
local bysc = "圣盾术,保护之手,寒冰屏障,威慑,消散,致盲,旋风,暗影斗篷"
local NeedBreak = "愤怒,星火术,火球术,奥术冲击,奥术飞弹,闪电箭,生命吸取,恐惧,圣光术,快速治疗,强效治疗术,神圣新星,治疗之触,愈合,治疗波,滋养,苦修,变形术,寒冰箭,心灵震爆,混乱之箭,治疗链,烧尽,旋风,根须缠绕"
local bykj = "激怒,狂暴"
local xyqs = "圣盾术,保护之手,寒冰屏障"
local LRZD = BeeUnitAffectingCombat()
local TarZD = BeeUnitAffectingCombat("target")
function update_var(var,new_var)
var.value = new_var
end
local me = me or myUnit:New("player")
local tar = tar or myUnit:New("target")
update_var(me,myUnit:New("player"))
update_var(tar,myUnit:New("target")) 这是在初始化下面的保命脚本中的一句
[Lua] 纯文本查看 复制代码 if LRZD and me.hp<50 and BeeSpellCoolDown("假死")==0 and BeeSpellCD("威慑")>0 and BeePlayerBuffTime("威慑")<1 and BeeIsRun("假死") then
BeeRun("/cast 假死");BeeRun("/StopAttack()")
end
这句话是不会报错的,LRZD在初始化里有赋值,但如果把LRZD去掉,那就会报错。
函数update_var你说没看明白,可后面的作用你说的很清楚了,大佬你是真懂。local me = me or myUnit:New("player"),这句话让有me对象就用,不再新建对象,然后update_var用来更新成员属性,这样是不是提高了内存的使用效率,不造成不断回收对象或者内存碎片化。这都是大佬vshrd教的 ,我是一边学一边写一边悟,利用掌握的那么点知识尽量完善(大佬一点评,马上想如何改进,还能略微动动手,我觉得我也不容易)。可大佬所说泛型for没写完,这个不太清楚(不懂),以及其他问题,也请大佬多指教。
还有一个就是对象me里的属性值,在写的时候其实也觉得有些属性是没有必要每帧更新的,大佬说的那些都有同感,但因是初写,把想到的属性先搞进去以便学习实践,写那么多也觉得这方法牛啊。
综上,我觉得这个奇怪的问题还是没有一个很好的答案
|