|
默认有7个必然创建但在对战不被使用的sound handle
制作一个音效与空白夹杂的大音效,写函数通过自己定义的事件对应到音效的某一时刻。通过默认每30秒一次的触发清理2个周期以前播放的音效,而后可以再使用。
用该地图代替原版去看一盘标准录像。
或者与人对战。对手选人族。就会听到造的兵是什么。
声音大杂烩
音效1 + 空白 + 音效2 + 空白....
------------ ------------
1分钟 1分钟 .....
global sound lastusedsound //最后使用的音效
sound s1 //代表可以使用的7个sound handle,使用文件一样,都为大杂烩音效
...
sound s7
integer S1_period = 比如 18 //s1 handle最后一次播放是在哪个30秒时期
...
integer s7_period
integer playperiod = 比如18 //每次30秒触发自增
function GetAvailableSound takes nothing returns sound //在s1-s7轮询
local sound available
if playperiod == 0 then
return s1
endif
if lastusedsound == s1 then
set available = s2
elseif...
...
endif
call StopSound(available)
set lastusedsound = available
return available
endfunction
function SetSoundPlayPeriod takes sound s returns nothing
if s == s1 then
set s1_period = playperiod //设定s1是在现在的30秒范围内播放的
elseif..
..
endif
endfunction
function SetSoundPlayPosById takes sound s, integer i returns nothing
if i == 'Hamg' then //如果是某兵种
call SetSoundPlayPosition(s, ....) //每个兵种对应1分钟
elseif..
...
endif
endfunction
//应用//////
local sound nowplaying
set unitid = ... //得到造的兵
set nowplaying = GetAvailableSound()
call startsound(nowplaying)
call SetSoundPlayPeriod(nowplaying)
call SetSoundPlayPosById(nowplaying,unitid) |
|