jass基础-回评2-战斗力显示问题

#include "../../jass/BlizzardAPI.j"
library demo initializer test
// 1.数组定义了 0~10,11个数,用随机取其中n个,且n小于11大于0,如何保证每次取的n个数不同/唯一?,
// 是否有办法在取值后临时排除被取的数,不加入后续取值
// 2.在控制台显示战斗力,战斗力随着属性变化而变化
globals
integer powerUI
integer powerTextUI
real power = 0
unit selectedUnit
integer selectCount = 0
endglobals
function calPower takes nothing returns nothing
local real hp = GetUnitState(selectedUnit, ConvertUnitState(1))
local real atk = GetUnitState(selectedUnit, ConvertUnitState(21))
local integer str = GetHeroStr(selectedUnit, true)
set power = hp * 1.5 + atk * 2 + str * 5
call BJDebugMsg("血量:" + R2S(hp))
call BJDebugMsg("攻击:" + R2S(atk))
call BJDebugMsg("力量:" + I2S(str))
call BJDebugMsg("----------------------")
endfunction
function doSomething takes nothing returns nothing
set powerUI = DzCreateFrameByTagName("TEXT", "", DzGetGameUI(), "", 0)
call DzFrameSetAbsolutePoint(powerUI, 6, 0.25, 0.15)
call DzFrameSetSize(powerUI, 0.04, 0.02)
call DzFrameSetText(powerUI, "战斗力:")
set powerTextUI = DzCreateFrameByTagName("TEXT", "", powerUI, "", 0)
call DzFrameSetPoint(powerTextUI, 6, powerUI, 6, 0.04, 0)
call DzFrameSetSize(powerTextUI, 0.1, 0.02)
call DzFrameSetText(powerTextUI, R2S(power))
call DzFrameShow(powerUI, false)
endfunction
function resetCount takes nothing returns nothing
local timer tm = GetExpiredTimer()
set selectCount = 0
call DestroyTimer(tm)
set tm = null
endfunction
function selectAction takes nothing returns nothing
local timer tm = CreateTimer()
set selectedUnit = GetTriggerUnit()
set selectCount = selectCount + 1
if selectCount > 1 then
call DzFrameShow(powerUI, false)
call TimerStart(tm, 0.1, false, function resetCount)
return
endif
call calPower()
call DzFrameShow(powerUI, true)
call DzFrameSetText(powerTextUI, R2S(power))
call TimerStart(tm, 0.1, false, function resetCount)
set tm = null
endfunction
function aaaa takes nothing returns nothing
local timer tm = GetExpiredTimer()
call calPower()
call DzFrameSetText(powerTextUI, R2S(power))
call DestroyTimer(tm)
set tm = null
endfunction
function addAttr takes nothing returns nothing
local timer tm = CreateTimer()
call TimerStart(tm, 0.1, false, function aaaa)
set tm = null
endfunction
function triggerInit takes nothing returns nothing
local trigger t = CreateTrigger()
local trigger t2 = CreateTrigger()
local trigger t3 = CreateTrigger()
local trigger t4 = CreateTrigger()
local trigger t5 = CreateTrigger()
call TriggerRegisterTimerEventSingle(t, 0)
call TriggerAddAction(t, function doSomething)
call TriggerRegisterPlayerSelectionEventBJ(t2, Player(0), true)
call TriggerAddAction(t2, function selectAction)
call TriggerRegisterPlayerUnitEvent(t3, Player(0), EVENT_PLAYER_UNIT_PICKUP_ITEM, null)
call TriggerAddAction(t3, function addAttr)
call TriggerRegisterPlayerUnitEvent(t4, Player(0), EVENT_PLAYER_UNIT_DROP_ITEM, null)
call TriggerAddAction(t4, function addAttr)
call TriggerRegisterPlayerUnitEvent(t5, Player(0), EVENT_PLAYER_HERO_LEVEL, null)
call TriggerAddAction(t5, function addAttr)
set t = null
endfunction
function gameInit takes nothing returns nothing
local unit u = CreateUnit(Player(0), 'hfoo', - 100, - 100, 0)
local unit u1 = CreateUnit(Player(0), 'Hpal', - 100, - 100, 0)
local unit u2 = CreateUnit(Player(0), 'Hamg', - 100, - 100, 0)
local unit u3 = CreateUnit(Player(0), 'Hamg', - 100, - 100, 0)
local unit u4 = CreateUnit(Player(0), 'Hamg', - 100, - 100, 0)
call CreateItem('cnob', 0, 0)
call CreateItem('cnob', 0, 0)
call CreateItem('cnob', 0, 0)
call CreateItem('cnob', 0, 0)
call CreateItem('cnob', 0, 0)
call CreateItem('cnob', 0, 0)
call CreateItem('cnob', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tst2', 0, 0)
call CreateItem('tgxp', 0, 0)
call CreateItem('tgxp', 0, 0)
call CreateItem('tgxp', 0, 0)
call CreateItem('tgxp', 0, 0)
call CreateItem('tgxp', 0, 0)
call CreateItem('tgxp', 0, 0)
call CreateItem('tgxp', 0, 0)
call FogEnable(false)
call FogMaskEnable(false)
endfunction
function test takes nothing returns nothing
call gameInit()
call triggerInit()
endfunction
endlibrary