Эта статья посвящена MExp (Massge Exp) то как не труд отловить
полученный опыт героем. Да и создать плавающий текст рядом с самим
героем видный только ему (а точнее его владельцу;)). Просто каждую
секунду записываем текущий опыт героя на его хендл через хеш таблицу.
При записи проверяем его прошлое значение, если есть разница то
естественно вернуть её нам. А там уж мы создадим плавающий текст. Code globals hashtable Mexp_hash = InitHashtable() endglobals function act takes nothing returns nothing local unit u = GetEnumUnit() local integer a = 0 if IsUnitType(u, UNIT_TYPE_HERO) == true then set a = LoadInteger(Mexp_hash, GetHandleId(u),1) if a != GetHeroXP(u) then set a = GetHeroXP(u) - a // сдеся делайте что хотите, переменная "а" и есть полученный опыт. endif call SaveInteger(Mexp_hash,GetHandleId(u),1,GetHeroXP(u)) endif set u = null endfunction
function acionsMexp takes nothing returns nothing local rect r = GetPlayableMapRect() local group g = GetUnitsInRectMatching(r, null) call ForGroup(g, function act) call GroupClear(g) call DestroyGroup(g) set r = null set g = null endfunction
function InitTrig_exp takes nothing returns nothing set gg_trg_exp =CreateTrigger() call TriggerAddAction(gg_trg_exp, function acionsMexp) call TriggerRegisterTimerEventPeriodic(gg_trg_exp, 1) endfunction Да и триггер должен называться exp)
|